えー, 今から思い返すと非常にお恥ずかしい話なんですが, mackerel-agent-pluginsを使おうとした時に, 勘違いというか横着で30分くらい詰まってしまったので, 恥を晒すつもりでブログに書きます...
Mackerelには, mackerel-agent-pluginsという公式のプラグインが用意されており, これを利用すると例えばAWSのRDSやElastiCacheをカスタムメトリックの形で取得出来るようになります.
このプラグインは, mackerel-agentのインストールが済んでいるのであれば, CentOSやAmazon Linuxであればyum install mackerel-agent-plugins
でインストールすることが出来, インストールも非常に簡単です.
というわけで早速使ってみよう! と決意したので, Amazon Linuxにmackerel-agentとmackerel-agent-pluginsを導入し, README.mdに従って次のようにmackerel-agent.conf
を書きました,
[plugin.metrics.aws-rds] command = "mackerel-plugin-aws-rds -identifier=our_database"
コマンドが正しく動くかどうか確認する為に, ec2-user
でmackerel-plugin-aws-rds -identifier=our_database
とか動かしてみるとちゃんとパラメータを出力してくれるし, 後はmackerel-agentからこのコマンドを呼び出すだけだな! と思って設定ファイルを適用しても... 何故かMackerelには一向に表示されません.
30分悩んだ後, 「もしや...」と思ってsudo which mackerel-plugin-aws-rds
とかやってみると...
[ec2-user@hogehoge ~]$ sudo which mackerel-plugin-aws-rds which: no mackerel-plugin-aws-rds in (/sbin:/bin:/usr/sbin:/usr/bin)
はい. mackerel-agentはroot
で動いているので, mackerel-plugin-aws-rds
が見つけられなかったんですね.
[ec2-user@hogehoge ~]$ which mackerel-plugin-aws-rds /usr/local/bin/mackerel-plugin-aws-rds
手元の場合, mackerel-agent-plugin-aws-rds
は/usr/local/bin
下に配置されているので, mackerel-agent.conf
を次のように書き換えればすんなり動いてくれました.
[plugin.metrics.aws-rds] command = "/usr/local/bin/mackerel-plugin-aws-rds -identifier=our_database"
ドキュメントには, ちゃんと,
[plugin.metrics.aws-rds] command = "/path/to/mackerel-plugin-aws-rds -identifier=mysql01"
のように, フルパスで書け! と書かれているのに... 横着してしまったが故に30分を無駄にしてしまったお話でした.