狠狠撸

狠狠撸Share a Scribd company logo
PythonでZabbixAPIを使ってみる
Python東海 第26回勉強会
2015/1/31
@2box2bo
お前だれよ
? 名前:坪内 由孝?
@2box2bo?
? ブログ:http://www.zumwalt.info/blog
? お仕事:地方えすあいあーのインフラ屋?
1級あひる釣り師
? 所属:(? ?? ?)?ウィーンなユーザー会?
(Ejectコマンドユーザー会) ?
Python東海?
Ingress 緑組 L10へたれagent
? 最近のあれ:なんちゃら2003をなんちゃら2012にちぎっ
ては投げちぎっては投げ…
Zabbixってなんぞ?
? ラトビアのZABBIX SIA社が作ったOSSな監視ツール
? 最新Verは2.4系。ただしサポート期間が短い?
長期間サポートは2.2系。次のVerは3系。
? 商用サポートもあります http://www.zabbix.com/jp/
? 監視エージェントはLinux、WIndows等だいたいのOS用のが
提供されている
? 気合があればなんでも監視できる。
ZabbixのAPI
? 監視アイテム、ホスト等の登録、参照、削除等Webからでき
ることはだいたいできる
? APIのドキュメントもある?
https://www.zabbix.com/documentation/2.2/manual/api
? Python向けライブラリもある?
https://github.com/baniuyao/ZabbixPythonApi?
https://github.com/gescheit/scripts/tree/master/zabbix?
https://github.com/lukecyca/pyzabbix?
https://github.com/gnetsman/zabbix_api
APIの使い方 基本
? jsonをPOSTで投げればOK
? 初回にauth_keyを取得し、以後は取得した
キーを使う
? ドキュメントにだいたいの事は書いてある
APIの使い方 ログイン
# coding: UTF-8	
!
import json	
import urllib2	
?
# ZABBIXサーバーのAPIアクセスURL	
zbxsv = “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
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 ]
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
まじめな話はここまで
これで何がしたかったか
あひる焼きカウンタを作る!
あひる焼きとは?
? ツイッターで@ahiru3net を焼くこと。
KernelVM北陸あたりから始まった の儀式
? @ahiru3net のフォロワーが「あひる焼き」と
つぶやけば リプライが返ってくる。
? いつかBOT落としたい
あひる焼きカウンター 構想
? ついったの「あひる焼き」を数える
? 毎時、日次のアカウント毎の結果をZabbixに
記録
? Zabbixでグラフ化してあひる焼きの見える化
? 適当についったにグラフを流す
が、途中までしかできてない!
けど実演
あひる焼きカウンタ 今後の課題
? あひる焼きしてない既存ユーザーに0を入れる
? グラフ付ツイートをする
? 140文字制限対応
? あひる焼きカウンタページの作成
おまけ?
今後のPython東海について
? もくもく会と勉強会を3~4ヶ月に1回は開催し
ていきた。?
→ 次回開催は…5~6月?
? 開催場所についていい場所あったら教えてくだ
さい。
? 何かのハンズオンもありか?(RaspberryPiとか)

More Related Content

Pythonて?zabbix apiを使ってみる