2014年9月19日金曜日

判ったつもりのmunin wildcard plugin

munin node は基本的にlocalhost内部からしかデータを取れず、sshで接続できないような所からのデータは、pluginを書いて間接的に取り出すしかないらしい。amazon RDS とか amazon ELB とか。
http://munin-monitoring.org/wiki/HowToWritePlugins

複数台対応の場合はwildcard pluginを書くしかないらしいのですが、いきなりスクリプトソースしかなくて、オフィシャルドキュメントですら「手段」の話までbreak downしちゃてるので、要するにどうやるの?が判らなかったのですが、ようやく解読できました。

http://munin-monitoring.org/wiki/PluginWildcard

  • munin pluginはファイル名自身が全て
    • 引数を取ることは出来ない。
      • 厳密には後述のwildcard configのために"config"文字列をとる場合はある
    • 引数を取らない場合は、標準出力にいきなり結果を返す
      • munin-node経由であれば、マスタにそれが返る
    • 全く同じ機構で、複数の接続先がある場合は、wildcard pluginを使うしかない
    • plugin-confは、特定のファイル名のpluginに対して、環境変数等の初期値の設定に使う
      • env.user は、実行アカウント指定
      • env.* は、環境変数の初期値指定
      • つまりpluginの機能が要らない場合、confをコメントアウトしても意味なかったという、、
        • munin-node.confのignoreを使うらしい
  • wildcard plugin
    • 本体スクリプトはファイル名の末尾が下線で終わらなければならない
      • munin-node-configは、そのファイル名に反応して、「ああwildcard pluginデスネ」と解釈する※らしい
    • 例えばSATA HDDのSMART情報をとるpluginの場合 http://munin-monitoring.org/wiki/PluginPortrait/smart_ http://munin-monitoring.org/browser/munin/plugins/node.d/smart_.in
      • smart_が本体で
        • 前述のconfigを返す場合がある
      • smart_sdaとsmart_sdbでsymlinkを張る
        • SATA HDDの場合は、/devを見れば必要な情報を引っ張れるので、手動に頼らなくても適切なファイル名を作れる可能性がある。それが(auto) config
        • smart_sdaとしてスクリプトを実行する場合、末尾hdaを切り出して「sdaへの処理デスネ」と解釈する※らしい
    • 系列ひっくるめて環境変数を与える場合は
      • 前述のsmart_の場合は、plugin-conf.d/* で [smart_*]で指定する
      • 標準のMySQL系が [MySQL*] になってるのは、個々のパラメタ毎に複数プラグイン構成になってるからで、認証情報は共通だという前提による。