使用するソフトウェアの概要確認
とりあえずインストールしてみたものの、それぞれがどのようなソフトウェアで何をするためのものなのかまだわからないです。そこで、それぞれ軽く触りながら概要を確認していきます。
・メトリクスとは?
まず、これらのツールを使用していると頻繁に出てくる「メトリクス」という言葉があります。これは、測定したデータを定量化し、分析や評価を行いやすいように加工したもののことです。具体例で言うと気温を定期的に測ったデータだったり、計算機のCPUの使用率をまとめたデータのことです。
例えば、計算機のCPU使用率をモニタリングしたいとします。Linuxで情報を取得する場合、sarを使用します。
※ sar(sysstat)はとても便利なのですが、標準ではインストールされていないため別途インストールが必要です。vmstatなど別のコマンドでも同様のことをする方法はあります。
[chiyama@docker ~]$ sar -u 1 1
Linux 3.10.0-957.1.3.el7.x86_64 (docker.XXX.XXX.XXX) 02/18/2019 _x86_64_ (8 CPU)
03:47:21 PM CPU %user %nice %system %iowait %steal %idle
03:47:22 PM all 5.24 0.37 12.61 0.00 0.00 81.77
Average: all 5.24 0.37 12.61 0.00 0.00 81.77
[chiyama@docker ~]$
これでも人間が確認するには十分ですが、定期的に観測してデータベースに登録し、後から集計するには向いていないです。そこで、得られた情報を加工して、ユーザーCPU時間だけを取得します。
[chiyama@docker ~]$ sar -u 1 1 | tail -n 1 | awk '{print $4}'
4.64
[chiyama@docker ~]$
これで、単なる4.64という数値になりましたね。このような数値を溜めておけば、グラフ化したり何か問題があったときに警告を出すことも簡単にできます。
・Graphiteの概要
Graphiteはメトリクスを蓄積・グラフ化するためのソフトウェアです。
メトリクスを蓄積する方法はいろいろありますが、最も簡単なのはソケット経由でGraphiteにデータを送る方法です。
先ほど取得したユーザーCPU時間の情報を1秒ごとに送る場合、以下のようになります。
[chiyama@docker ~]$ while true; do sar -u 1 1 | tail -n 1 | awk '{printf "user_cpu:%s|c\n", $4}' | nc -w 1 -u 127.0.0.1 8125; done
このコマンドを実行しながら、前回行なったHTCondor上でのレンダリング処理を実行してみます。
結果をGraphiteの画面で確認します。Metricsからstats/user_cpuを選ぶと以下のグラフが表示されます。
見ての通り、レンダリング中に値が高くなっていることがわかります。このようにして、Graphiteを用いることで簡単にメトリクスの蓄積とグラフ化を行うことができます。
・Grafanaの概要
Graphiteに限らず、各種バックエンドに蓄積されたメトリクスをイケてる感じに可視化してくれるのがGrafanaです。先ほど収集したGraphiteのデータをGrafanaで可視化してみます。
以降はGrafanaにログイン済であることが前提になります。
まず、Data SourcesとしてGraphiteを登録します。
Choose data source typeからGraphiteを選びます。
Graphiteの設定画面になるので、URLを入力(今回の場合、9080番ポートでアクセスできるようにしているのでそれも指定しています)し、AccessはBrowserを指定します。
これでGrafanaからGraphiteの情報にアクセスする準備ができました。
続いてダッシュボードを作成します。
New PanelでGraphを選びます。
Metricsでstats.user_cpuを選びます。
Save Asで名前をつけて保存します。
これで、Grafana上でGraphiteのデータを可視化することができました。