mackerelでLXC毎のCPU利用率を記録する
mackerelでユーザメトリックのグラフを作れるので、先日作ったlxc-cpu-usageを 利用してホスト上で稼働しているコンテナのCPU利用率を表示させる様にしてみました。
mackerelでは、ユーザ定義のメトリックを送出するのには
# /etc/mackerel-agent/mackerel-agent.conf [plugin.metrics.vmstat] command = "ruby /path/to/vmstat-metrics.rb" type = "metric"
といった内容を設定ファイルに追記する必要があって、
ここで [plugin.metrics.****]
が項目名、command
の部分が実際にメトリックを取得するコマンドになって、
Mackerelのドキュメントを参照すると、このコマンドの出力は以下のフォーマットで出力されることが期待されています。
{メトリック名}\t{メトリック値}\t{エポック時間}
ということで、lxc-cpu-usage
のコマンドを拡張して以下の様な形でオプションを渡せる様にしました。*1
$ lxc-cpu-usage --name="remp001|storyboards001|castory001|mongo001|manage001" --metric storyboards001 0.09 1401521140636 remp001 0.17 1401521140647 mongo001 0.53 1401521140652 castory001 0.02 1401521140659 manage001 0.12 1401521140669
--name
のパラメータとして"|"区切りで複数のコンテナ名を渡せる様に対応して、 --metric
でタブ区切りでコンテナ名, CPU利用率, エポック時が表示される様になっています。
これを利用して、Mackerelの設定ファイルを以下の様に追記します。
# /etc/mackerel-agent/mackerel-agent.conf [plugin.metrics.lxc] command = "lxc-cpu-usage --name='remp001|storyboards001|manage001|castory001|mongo001' --metric" type = "metric"
Mackerel agentをRestart
$ sudo /etc/init.d/mackerel-agent restart * Restarting mackerel-agent ...done.
しばらくするとMackerel上で各コンテナのCPU利用率が確認できる様になります。
とてもあっさりと任意のメトリックが追加できて便利。