目次
はじめに
こんにちは!
やっと肌寒さを感じ長袖化しましたが、すんなりズボンが通ってくれて一安心しました。
半袖大好きエンジニア森屋でございます!
今回は、「mackerel-plugin-muninってMuninのプラグインをラッパーしてくれるみたいだけど、どんなもんなの?」と思って一通り試してみたら、動かない子が居ましたので、トラブルシュートします。
またまたニッチな話ですが、誰かの助けになればと思います。
Munin構成について
OSやバージョン等、少なからず影響はあるかもしれませんが、今回確認したのはプラグイン固有の問題なのでMuninバージョンだけ。
munin-node-2.0.33-1.el7.noarch
munin-common-2.0.33-1.el7.noarch
※epel-release経由で、yumインストールした際にデフォルトで入ったものを確認の対象としました
(前提知識)mackerel-plugin-muninについて
mackerel-plugin-munin -h
---------------------------------------
Usage of mackerel-plugin-munin:
-name string
Graph name
-plugin string
Munin plugin path
-plugin-conf-d string
Munin plugin-conf.d path
-tempfile string
Temp file name
---------------------------------------
いくつかオプションがありますが、基本は以下の様な書き方で十分です。mackerel-agent.confに追記します。
[plugin.metrics.vmstat]
command = ["mackerel-plugin-munin", "-plugin=/etc/munin/plugins/vmstat", "-plugin-conf-d=/etc/munin/plugin-conf.d"]
発生したトラブル
複数のプラグインが対象ですが、ここでは「vmstat」のプラグインを例に扱います。
さきほどの記法でvmstatをmackerel-plugin-muninでラッパーしてもらったのですが、以下のエラーが出力されました。
2020/MM/DD hh:mm:ss INFO <metrics.plugin> command mackerel-plugin-munin -plugin=/etc/munin/plugins/vmstat -plugin-conf-d=/etc/munin/plugin-conf.d outputted to STDERR: "2020/MM/DD hh:mm:ss exit status 1: \n"
原因が詳しく書かれていませんが、とにかく失敗した様です。手動でも実行してみましょう
mackerel-plugin-munin -plugin=/etc/munin/plugins/vmstat -plugin-conf-d=/etc/munin/plugin-conf.d
---------------------------------------
2020/MM/DD hh:mm:ss exit status 1:
---------------------------------------
同じ結果が出ます。
トラブルシュート
こういった、原因がさっぱりわからない時、Mackerelエージェントにはデバッグログ出力機能が使えます。
以下の行をmackerel-agent.confに追記し、Mackerelエージェントをリスタートしましょう。
verbose = true
すると出力内容が増え、以下の様になりました。
2020/MM/DD hh:mm:ss agent.go:102: DEBUG <agent> Failed to fetch meta information from plugin &{0x9521440 <nil>} (non critical); seems that this plugin does not have meta information: while reading the first line of command mackerel-plugin-munin -plugin=/etc/munin/plugins/vmstat -plugin-conf-d=/etc/munin/plugin-conf.d: EOF
どうやら、メタ情報がないよ!って怒られてますね。
該当プラグインは、シェルスクリプトで書かれたものです。
メタ情報…?となりましたが、とりあえずスクリプトの1行目に書くシバン(#!/bin/bashとかのやつ)がメタっぽいなと着目しました。
調べを進めると、どうやら同じエラーを出力するプラグイン全てが、「#!/bin/sh」とシバンされていました。そして「#!/bin/bash」のものは正常に動いていることがわかりました。
head -1 /etc/munin/plugins/vmstat
-----------------------------------
#!/bin/sh
-----------------------------------
viで編集しても良いのですけど、私は数が多いのでsedで一斉に変えました。
ちなみに/etc/munin/plugins/配下に置いてあるのは大体のケースでシンボリックリンクだと思います。
sedの-iオプションはファイルを改めて置きなおす形になってしまうので、/usr/share/munin/plugins/にある大元のプラグインを編集した方が良いですね。
sed -i "1 s/\/bin\/sh/\/bin\/bash/g" /usr/share/munin/plugins/vmstat
すると、ログ出力が止み、無事グラフも表示されるようになりました!解消です!
まとめ
Muninプラグインをそのまま流用できて便利なmackerel-plugin-muninですが、考え無しに突っ込んだ結果、泣きを見ました。
しかし結果としてはデバッグログを出すことで解消することができたので、やはり良いツールですね。
お読みくださり、ありがとうございました。
ではまた!
テクニカルサポートとして、日々お客様の悩み事解決を支援しております。
スーパーエンジニアになるべく、日々、自宅でのウェイトトレーニングに励んでいます。
LINK
クラウドベリージャム:プロフィールページ