Mackerel

【Mackerel】mackerel-plugin-muninを使ってMuninのプラグインが動かない時!

はじめに

こんにちは!

やっと肌寒さを感じ長袖化しましたが、すんなりズボンが通ってくれて一安心しました。

半袖大好きエンジニア森屋でございます!

今回は、「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ですが、考え無しに突っ込んだ結果、泣きを見ました。

しかし結果としてはデバッグログを出すことで解消することができたので、やはり良いツールですね。

お読みくださり、ありがとうございました。

ではまた!

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA