AWS Lambdaが年内にVPC対応するとかしないとかを受けて、管理系の監視データをサーバーレスにしようかなということで、いくつかスクリプトを書いてみました。
一緒くたにすると見づらいだけなので、この一つ目の記事ではZabbix APIを叩くクラスを貼り付けておきます。また、要望/感想の類は、関連記事の最後の最後で書こうと思います。
ご注意
私はPythonを真面目に書くのはこれが初めてなので、基本ができていなかったり、慣習を知らないまま書いている部分があるかもしれません。なので、全体の構成とかよりは肝心の処理部分やプロトコルだけでも参考にしてもらえればな、という気持ちで共有しております。
使い方
Zabbix APIのドキュメントはこの辺で。Lambdaに以下の様な構成でzipをアップロードします。
__init__.py は空ファイルです。
1 2 3 4 5 |
. ├── AlertApi.py └── modules ├── ZabbixClient.py └── __init__.py |
AlertApi.py は例えばこんな感じ。
1 2 3 4 5 6 |
from modules.ZabbixClient import ZabbixClient def lambda_handler(event, context): client = ZabbixClient("zabbix.example.com", 80, 'Admin', 'zabbix', '/api_jsonrpc.php', 'zabbix.gedowfather') print client.request('host.get', {'output': 'hostid', 'limit': 1 }) |
そして、Lambda -> Configuration -> Handler を
AlertApi.lambda_handler として実行させます。
modules/ZabbixClient.py
これはどこにでも落ちていそうな内容なのでアレですが、Python1発目としては良い練習内容だったので、書いてみた次第です。
続きます。