最近、
閾値の
もう
How to use Google Analytics to Monitor Your Servers (or anything else!) | mojocode.com
同じことを
- 何故 Google Analytics に
記録するか? - データの
記録方法
2.1. 記録する指標に ついて
2.2. 使い方
2.3. 使用環境
2.4. Google Analytics の設定
2.5. 依存ライブラリのインストール
2.6. sysstat のインストール、 記録間隔を 1分に する
2.7. スケジュール設定 - データ可視化
3.1. loadavg1 を取得する
3.2. Google スプレッドシート で可視化
3.3. Google Data Portal での可視化 - 実施後の
感想 - 参考
1. 何故 Google Analytics に 記録するか?
Google Analytics に
Server に
保持すると、 ディスク容量を 消費する
Server 側で保持する こともできますが、 VPS 1台で ブログは 運用しています。
ディクス容量を消費するので これは 避けたかったです。 基本的に
無料で 使える
Google Analytics であればデータは 1年半保持され、 月1千万イベントまで 無料で 使えます。
1年半保時されれば、週、 月単位での 変化が 把握できます。 これを 無料で 実現できるのは メリットかなと 思いました。 デフォルトで
グラフを 描画できる 機能が ある
本来の使い方ではないかもしれませんが、 記録した データを 可視化する ための 機能が あります。
データの設定方法に よっては 何もしなくても 可視化してくれるかもしれませんが、 そこまで 考えなくても カスタムレポート、 Google Data Portal 等で 柔軟な 可視化が 行えます。 1
2. データの 記録方法
作成した
以下に
2.1. 記録する 指標に ついて
以下の
記録する指標 | Event Category | Event Action | Event Label | Event Value |
---|---|---|---|---|
loadavg1 | loadavg | loadavg1 | 計測値 | 0 |
loadavg5 | loadavg | loadavg5 | 計測値 | 0 |
loadavg15 | loadavg | loadavg15 | 計測値 | 0 |
cpu user | cpu-xx | user | 計測値 | 0 |
cpu system | cpu-xx | system | 計測値 | 0 |
cpu iowait | cpu-xx | iowait | 計測値 | 0 |
memory total | memory | total | 計測値 (MB) | 0 |
memory used | memory | used | 計測値 (MB) | 0 |
memory available | memory | available | 計測値 (MB) | 0 |
swap total | swap | total | 計測値 (MB) | 0 |
swap used | swap | used | 計測値 (MB) | 0 |
swap available | swap | available | 計測値 (MB) | 0 |
io rtps | io | rtps | 計測値 | 0 |
io wtps | io | wtps | 計測値 | 0 |
disk total size | filesystem-xx | total | 計測値(MB) | 0 |
disk used size | filesystem-xx | used | 計測値(MB) | 0 |
network rxkB | network-xxx | rxkB | 計測値 | 0 |
network txkB | network-xxx | txkB | 計測値 | 0 |
補足
xxx
、xx
の記載に ついて
filesystem 等は環境に より、 device 数が 変わります。
デバイスごとに複数回記録送信されます。 計測値
について
計測値 には記録した 数値が 設定されます。 Event Value に
ついて
全て0 を 設定しています。 整数の 値のみ 設定可能で、 設定可能な 指標も ありますが、 少数項目で 設定できない 場合も あるため、 一律 0 で Timestamp を
カスタムディメンションと して 記録
イベント送信時にカスタムディメンション 1 に Timestamp を 記録します。
2.2. 使い方
以下、
2.3. 使用環境
以下の
OS
cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
Python の
バージョン python3.6 -V Python 3.6.4
2.4. Google Analytics の 設定
以下、
サーバーの
メトリクス記録用の プロパティを 作成する。
Pageview 等を記録している プロパティでも 記録できますが、 それなりの データ量に なります。
別途、新規で プロパティを 作成し サーバーの メトリクスのみ 記録するように するのを お薦めします。
いか、アナリティクスヘルプの プロパティの 追加手順に なります。
プロパティを設定する - アナリティクス ヘルプ カスタムディメンションの
追加
以下、Timestamp 設定用の カスタムディメンションを 追加します。
カスタムディメンションのIndex 番号は 1です。
2.5. 依存ライブラリの インストール
以下の
* giampaolo/psutil: Cross-platform lib for process and system monitoring in Python
Python で、
スクリプト内でのpsutil
、os
のsubprocess
で
mirumee/google-measurement-protocol: A Python implementation of Google Analytics Measurement Protocol
Measurement Protocol を簡単に 送信するする ための ライブラリです。 カスタム速度、 例外等の エラーの 送付は できません。 今回は イベントの 送付を 行いたかったので 使用しました。 pip で
インストール
いか、コマンドで インストールできます。 pip install psutil pip install google_measurement_protocol
2.6. sysstat の インストール、 記録間隔を 1分に する
yum で
インストールは
sa
インストール後に、/etc/cron.d/sysstat
を
- /etc/cron.d/sysstat
# Run system activity accounting tool every 1 minutes */1 * * * * root /usr/lib64/sa/sa1 1 1 # Run system activity accounting tool every 10 minutes #*/10 * * * * root /usr/lib64/sa/sa1 1 1 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A
スクリプト内では、sadf
とsysstat
にsysstat
を
2.7. スケジュール設定
サーバーに
*/1 * * * * /bin/python3.6 /scripts/server_metrics_2_ga.py -p UA-xxxxxxxx
標準エラーも
*/1 * * * * /bin/python3.6 /scripts/server_metrics_2_ga.py -p UA-xxxxxxxx &>> /var/log/server_metrics_2_ga.log
UA-xxxxxxxx
にはpython3.6 server_metrics_2_ga.py -p UA-xxxxxxxx
3. データ可視化
Google Analytics - Google スプレッドシート アドオン を
全ての
3.1. loadavg1 を 取得する
loadavg1 の
Google Analytics アドオンでReport Configuration
シートに
- View ID
Google Analytics のView ID を 指定します。 - Report Name
シート名になります。 loadavg1
にします。 - Start Date
1ヶ月分のデータを 取得したいので、 30daysAgo
にします。 - End Date
当日を示す today
を入力します。 - Metrics
ga:eventValue
を指定します。 値は 使用しないですが、 必須で 指定する 必要が ある ためです。 - Dimensions
ga:eventLabel,ga:dimension1
を指定します。 dimension1 には Timestamp が 設定されている 想定です。 - Order
Timestamp でソートした 状態に したいので、 ga:dimension1
を指定します。 - Filters
絞り込み 条件です。 ga:eventCategory==loadavg;ga:eventAction==loadavg1
を指定します。 - Segments
未設定です。 Limit
50000件を指定します。 取得可能な 最大値です。 設定イメージ
以下のようになります。
3.2. Google スプレッドシート で 可視化
時間感覚の
3日分の
3.3. Google Data Portal での 可視化
Google Data Portal で
Google Data Portal だと、
期間選択では
4. 実施後の 感想
実施後、
可視化が
面倒
Google Data Portal で描画しましたが、 データソース を Google Analytics AddOn を 使って スプレッドシートに 抽出し 作るので 手間です。
取得したデータを 加工して 1つの データソースに する、 もしくは、 そもそも イベントではなく カスタム指標で 設定すればまとめて 取得が 可能に なります。 アラート機能
Google Analytics のカスタムアラート機能の 組合わせが できると、 リアルタイム性は ないですが 急激な 変化を 検知してくれるので 良いかなと 思います。
これも、カスタム指標と して 設定した 方が 使いやすいかと 思います。 取得する
データ量の 問題
1分おきの サーバー指標取得だと、 1日 1440 回記録されます。 Google Analytics Addon の データ取得件数が 50000 件なので 34 日分しか 取得できません。
これより長い 期間を 保持する 場合は、 Addon だけでは 無理で データ保持の 仕組みを 構築する 必要が あります。
5. 参考
以下、
- CentOS 7 : SysStat インストールと
設定 : Server World - [How to use Google Analytics to Monitor Your Servers (or anything else!) | mojocode.com]
実際に
以上です。
作成した
スクリプトの データ設定方法だと、 Google Analytics 上ではいい 感じに 可視化が できませんでした。 指標と、 ディメンションを 意識した データ設定が 必要に なります。 ↩
コメント