pythonでzabbix apiを使ってみる

16
PythonZabbixAPIを使ってみる Python東海 26回勉強会 2015/1/31 @2box2bo

Upload: yoshitaka-tsubouchi

Post on 16-Jul-2015

482 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Pythonでzabbix apiを使ってみる

PythonでZabbixAPIを使ってみる

Python東海 第26回勉強会

2015/1/31 @2box2bo

Page 2: Pythonでzabbix apiを使ってみる

お前だれよ• 名前:坪内 由孝

@2box2bo• ブログ:http://www.zumwalt.info/blog • お仕事:地方えすあいあーのインフラ屋

1級あひる釣り師 • 所属:(☝ ՞ਊ ՞)☝ウィーンなユーザー会

(Ejectコマンドユーザー会) Python東海 Ingress 緑組 L10へたれagent

• 最近のあれ:なんちゃら2003をなんちゃら2012にちぎっては投げちぎっては投げ…

Page 3: Pythonでzabbix apiを使ってみる

Zabbixってなんぞ?• ラトビアのZABBIX SIA社が作ったOSSな監視ツール

• 最新Verは2.4系。ただしサポート期間が短い

長期間サポートは2.2系。次のVerは3系。

• 商用サポートもあります http://www.zabbix.com/jp/

• 監視エージェントはLinux、WIndows等だいたいのOS用のが提供されている

• 気合があればなんでも監視できる。

Page 4: Pythonでzabbix apiを使ってみる

ZabbixのAPI• 監視アイテム、ホスト等の登録、参照、削除等Webからできることはだいたいできる

• APIのドキュメントもある

https://www.zabbix.com/documentation/2.2/manual/api

• Python向けライブラリもある

https://github.com/baniuyao/ZabbixPythonApihttps://github.com/gescheit/scripts/tree/master/zabbixhttps://github.com/lukecyca/pyzabbixhttps://github.com/gnetsman/zabbix_api

Page 5: Pythonでzabbix apiを使ってみる

APIの使い方 基本• jsonをPOSTで投げればOK

• 初回にauth_keyを取得し、以後は取得したキーを使う

• ドキュメントにだいたいの事は書いてある

Page 6: Pythonでzabbix apiを使ってみる

APIの使い方 ログイン# coding: UTF-8!import jsonimport urllib2# ZABBIXサーバーのAPIアクセスURLzbxsv = “http://127.0.0.1/zabbix/api_jsonrpc.php" # リクエストヘッダheaders = {"Content-Type":"application/json-rpc"}# ZABBIX API アクセスユーザーzbx_usr = "admin"# ZABBIX API アクセスユーザーパスワードzbx_upw = "zabbix"# POSTする認証用json を生成post_data = json.dumps({'jsonrpc':'2.0','method':'user.login','params':{'user':zbx_usr,'password':zbx_upw},'auth':None,'id': 1})# リクエストを生成request = urllib2.Request(zbxsv, post_data, headers)# リクエストを送信して結果受け取りcontents = urllib2.urlopen(request)# 結果の中身を読み取るcontents_str = contents.read()# キー [result] にAPIの戻り値が入ってますprint contents_str

Page 7: Pythonでzabbix apiを使ってみる

APIの使い方 ホスト一覧の取得# ホスト一覧を取得するjson post_data = json.dumps({'jsonrpc':'2.0', 'method':'host.get', 'params':{ "output":"extend"}, 'auth':zbx_auth, 'id':1}) # リクエストを生成 request = urllib2.Request(zbxsv, post_data, headers) # リクエストを送信して結果受け取り contents = urllib2.urlopen(request) # 結果の中身を読み取る contents_str = contents.read() contents_dict = json.loads(contents_str) for host in contents_dict["result"]: print host[“name”], host[“hostid”]

Page 8: Pythonでzabbix apiを使ってみる

APIの使い方 監視アイテムの登録item_key = "testkey." + str(time.time()) # ホスト一覧を取得するjson post_data = json.dumps({ "jsonrpc": "2.0", "method": "item.create", "params": { "name": item_key, "key_": item_key, "hostid": "10107", "type": 2, "value_type": 3}, "auth":zbx_auth, "id": 1}) !# リクエストを生成 request = urllib2.Request(zbxsv, post_data, headers) # リクエストを送信して結果受け取り contents = urllib2.urlopen(request) # 結果の中身を読み取る contents_str = contents.read() contents_dict = json.loads(contents_str) print contents_str

Page 9: Pythonでzabbix apiを使ってみる

まじめな話はここまで これで何がしたかったか

Page 10: Pythonでzabbix apiを使ってみる

あひる焼きカウンタを作る!

Page 11: Pythonでzabbix apiを使ってみる

あひる焼きとは?• ツイッターで@ahiru3net を焼くこと。

KernelVM北陸あたりから始まった謎の儀式

• @ahiru3net のフォロワーが「あひる焼き」とつぶやけば謎リプライが返ってくる。

• いつかBOT落としたい

Page 12: Pythonでzabbix apiを使ってみる

あひる焼きカウンター 構想• ついったの「あひる焼き」を数える

• 毎時、日次のアカウント毎の結果をZabbixに記録

• Zabbixでグラフ化してあひる焼きの見える化

• 適当についったにグラフを流す

Page 13: Pythonでzabbix apiを使ってみる

が、途中までしかできてない!

けど実演

Page 14: Pythonでzabbix apiを使ってみる

あひる焼きカウンタ 今後の課題• あひる焼きしてない既存ユーザーに0を入れる

• グラフ付ツイートをする

• 140文字制限対応

• あひる焼きカウンタページの作成

Page 15: Pythonでzabbix apiを使ってみる

おまけ?

Page 16: Pythonでzabbix apiを使ってみる

今後のPython東海について• もくもく会と勉強会を3~4ヶ月に1回は開催していきた。

→ 次回開催は…5~6月?

• 開催場所についていい場所あったら教えてください。

• 何かのハンズオンもありか?(RaspberryPiとか)