AWS Lambda(Python)からZabbix Senderでメトリクス値を送るスクリプト

Lambda Pythonの二つ目の記事で、今度はZabbixに値を送信する内容になります。

普段はZabbix Agentを使っていたのですが、それだと Server => Agent:10050 への通信が発生してしまうので、それに無理に対応するのはウマくないと判断し、Zabbix Senderと同じ手法をとりました。



使い方

Zabbix プロトコルのドキュメントはこの辺で。
  • 3 Passive and active agent checks [Zabbix Documentation 2.4]
  • Docs/protocols/zabbix agent/2.4 – Zabbix.org
  • Docs/protocols/zabbix sender/2.0 – Zabbix.org

  • Lambdaに以下の様な構成でzipをアップロードします。
    __init__.py は空ファイルです。

    AlertMetricSender.py は例えばこんな感じ。

    そして、Lambda -> Configuration -> Handler を
    AlertMetricSender.lambda_handler として実行させます。

    Senderとして扱うので、Zabbix Server側のアイテム設定では『Zabbixトラッパー』を選択しておきます。

    Agentと違って死活監視がないため、ここでは healthcheck アイテムを作って、こんなトリガー {GedowTemplate:healthcheck.nodata(600)}=1 を設定することで死活監視代わりとしています。

    modules/ZabbixSender.py



    これを使って、例えばAutoScalingGroupの各種CPU利用率や、オンデマンド&スポット価格などを送って比率条件でトリガーしたりします。インスタンス毎のデータではない管理データを送るのに、管理サーバーが不要になるので簡素化できます。

    続きます。