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利用率や、オンデマンド&スポット価格などを送って比率条件でトリガーしたりします。インスタンス毎のデータではない管理データを送るのに、管理サーバーが不要になるので簡素化できます。

    続きます。

    コメントを残す

    メールアドレスが公開されることはありません。

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> <pre class="" title="" data-url=""> <span class="" title="" data-url="">