概要
Munin のメモリのグラフを Zabbix でも監視できないかなと思って調べていたら記事を見つけたのでやってみました
Zabbix 2.4 で実施しているのでスクリプトを Zabbix 2.4 に対応するように修正しています
環境
- CentOS 6.6 64bit Final
- Zabbix 2.4.5
- Munin 2.0.25
- Python 2.6.6
各種インストール
Munin インストール
とりあえずこれでhttp://hostname/munin
に ID/PW でアクセスできることを確認しましょう
今回 munin は使いませんがメモリの使用量が munin で問題なく取得できていることを確認してください
今回利用するメモリ使用量を取得するプラグインは以下にシンボリックリンクとしてあります
/etc/munin/plugins/memory
Zabbix インストール
ここを参考にインストールしています
今回は Munin も Zabbix (MySQL も) すべて同一ホストにインストールしています
インストールが完了したらとりあえずZabbix Server
自体が監視できていればOKです
スクリプト設定
公開されている python スクリプトは指定したテンプレートに対してアイテムおよびグラフを登録してくれます
今回は Zabbix 2.4 でも動作するようにスクリプトを修正しています
テンプレート登録
Zabbix の UI にアクセスしてテンプレートを一つ登録してください
今回は「Template_Munin_Memory」というテンプレートを作成した体で話を進めます
zabbix_agentd.conf 修正
echo 'UserParameter=munin[*],/etc/munin/plugins/$1 |grep "^$2.value" |cut -d " " -f2' > /etc/zabbix/zabbix_agentd.d/userparameter_munin_plugin.conf
echo 文で conf ファイルを1つ作成します
作成したらservice zabbix-agent restart
で再起動しましょう
スクリプト修正
適当なディレクトリに移動してスクリプトを取得しましょう
- cd work
- git clone git://github.com/oopsops/scripts.git
- cd scripts/zabbix
zabbix_munin_plugin.py 修正
- 39 - 40行目 : Zabbix にアクセスするための ID/PW に変更します
39,40c39,40
< username = "Admin"
< password = "zabbix"
---
> username = "Your ID"
> password = "Your PW"
65c65
< for x in range(1,6):
---
> for x in range(1,7):
- 71行目 : graph.create の際に templateid を送信しないようにする
71c71
< createdgraphids = zapi.graph.create([{'gitems': (gitems) ,'name': (graph_title),'width':'900','height':'200','yaxismin':'
0.0000','yaxismax':'3.0000','templateid':'0','show_work_period':'1','show_triggers':'1','graphtype':'0','show_legend':'1','
show_3d':'0','percent_left':'0.0000','percent_right':'0.0000','ymin_type':'0','ymax_type':'0','ymin_itemid':'0','ymax_itemi
d':'0'}])["graphids"][0]
---
> createdgraphids = zapi.graph.create([{'gitems': (gitems) ,'name': (graph_title),'width':'900','height':'200','yaxismin':'
0.0000','yaxismax':'3.0000','show_work_period':'1','show_triggers':'1','graphtype':'0','show_legend':'1','show_3d':'0','per
cent_left':'0.0000','percent_right':'0.0000','ymin_type':'0','ymax_type':'0','ymin_itemid':'0','ymax_itemid':'0'}])["graphi
ds"][0]
zabbix_api.py 修正
- 201 - 206 行目: user.login method の場合に auth パラメータを付与しないようにする
201,206c201,213
< obj = {'jsonrpc': '2.0',
< 'method': method,
< 'params': params,
< 'auth': self.auth,
< 'id': self.id
< }
---
> if method == "user.login":
> obj = {'jsonrpc': '2.0',
> 'method': method,
> 'params': params,
> 'id': self.id
> }
> else:
> obj = {'jsonrpc': '2.0',
> 'method': method,
> 'params': params,
> 'auth': self.auth,
> 'id': self.id
> }
- 230 行目 : user.authenticate を user.login に変更する
230c237
< obj = self.json_obj('user.authenticate', {'user': l_user,
---
> obj = self.json_obj('user.login', {'user': l_user,
修正箇所は以上です
とりあえず自分は上記のみで動作しましたが、他にも Zabbix Server のホスト名を記載する部分もあったので環境によってはまだ修正が必要な箇所があるかもしれません
スクリプト実行
- chmod 755 zabbix_munin_plugin.py
- ./zabbix_munin_plugin.py memory Template_Munin_Memory
でエラーがでなければOKです
エラーの場合は Exception の内容を確認して上記スクリプトを更に修正する必要があります
各種調整
スクリプトの動作が完了するとテンプレートにアイテムが13個とグラフ1個が追加されます
以下手動での操作ですがやったほうが良さそうな点を紹介します
グラフ修正
committed
active
inactive
vmalloc_used
mapped
上記はあってもいいのですが積算グラフにすることで縦軸が合わなくなります
Munin のグラフは積算+折れ線グラフでメモリ使用量を表示しており上記のアイテムは折れ線グラフで表示している項目になるため Zabbix では削除しないと縦軸の値が合いません
なので、やるとしたら別途、ノーマルタイプの折れ線グラフを作成して、そちらに移行するといいと思います
完成するとこんな感じになります
色はzabbix_munin_plugin.py
内でランダムで生成しているので必要に合わせて変更してください
最後に
munin-node を使って Zabbix で Munin ってぽいメモリ監視をすることができました
Python スクリプトも使っているので、スクリプトの実行で失敗しまくる場合は、素直に Munin を使いましょう
Tips
- Zabbix 2.0.3 でも実施してみましたが Color を作成する for 文のところだけ変更すれば動作しました