目次
はじめに
こんにちは!
突然ですが、腹筋ローラーってご存知でしょうか。
あれで腹筋をいじめすぎた結果、腰に負担が回り、先週は腰痛を起こしていたのですが、テレワークの有難みを感じる機会となりました。
腹筋ローラー大好きエンジニア森屋でございます!(もう使うのやめます)
今回は、前の記事にてうやむやになっていた、Muninプラグインでエラーが出る件の解決編となっています。
前回も解決編ちゃうかったんかい!という感じですが、その後わかったことがあるので報告させてください。
前回のおさらい
- Muninをyumで入れた際に入ったプラグインを、「mackerel-plugin-munin」を使ってMackerelに転用したところ、いくつかメトリックが取れなかった
- シバン(スクリプトの頭に書くやつ)を「#!/bin/sh」から「#!/bin/bash」に変えたら動いた
今回の発見に至った経緯
後日、Muninプラグインの頭の方で「set -e」が宣言されている場合、シバンを変えてもエラーが出るということに気が付きました。
なお、シェルスクリプト中で「set -e」が入っていると、些細なものでも異常が出た時点で処理が停止します。
そこで、スクリプトの中身を改めて精査したところ、以下の行における「$MUNIN_LIBDIR」の環境変数の部分でエラーとなっていました。
$MUNIN_LIBDIR/plugins/plugin.sh
環境変数を無視し、以下のコマンドでMackerelの動作を再現した場合、エラーとなります。
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:
---------------------------------------
そこで、以下の様に環境変数を与えてやると、ちゃんと動くことを確認しました。
MUNIN_LIBDIR=/usr/share/munin mackerel-plugin-munin -plugin=/etc/munin/plugins/vmstat -plugin-conf-d=/etc/munin/plugin-conf.d
---------------------------------------
munin.vmstat.sleep 0 XXXXXXXXXX(Unixtime)
munin.vmstat.wait 1 XXXXXXXXXX(Unixtime)
---------------------------------------
トラブルシュート
(前の記事で解説した部分は省略してますので、本記事だけでは説明不足な部分があると思います)
前回の解消法からして、環境変数が無くとも問題なく動いていそうではあるものの、放ってもおけないので対処法を検討しました。
要は、Mackerelエージェントに環境変数を渡せばミッションクリアです。
しかし記法がわからず、色々周り道をした結果、以下の情報に辿り着くことができました。
https://mackerel.io/ja/docs/entry/spec/agent (まさかの公式ヘルプページ!)
すっかり見落としていたのですが、「env」行について言及されていましたね…さすがMackerel。
というわけで、mackerel-agent.confを編集し、以下の様にenv行を足すことで、無事グラフが表示されてエラー解消です!
[plugin.metrics.vmstat]
command = ["mackerel-plugin-munin", "-plugin=/etc/munin/plugins/vmstat", "-plugin-conf-d=/etc/munin/plugin-conf.d"]
env = { "MUNIN_LIBDIR" = "/usr/share/munin" }
まとめ
困ったときは、ちゃんとヘルプを見ないとですね!
当たり前のことなのですが、疎かになっちゃう時もあります。
一通り悩んで席を立ち、トイレから戻る時に「はっ!ちゃんとヘルプ見よう!」てなり解決しました。
以上です。お読みくださり、ありがとうございました。
ではまた!
テクニカルサポートとして、日々お客様の悩み事解決を支援しております。
スーパーエンジニアになるべく、日々、自宅でのウェイトトレーニングに励んでいます。
LINK
クラウドベリージャム:プロフィールページ