zabbix-senderが使えない環境でもhttpでデータを送る
通常zabbix-serverに対してデータをpushするときはzabbix-senderを使用します. しかし環境によってはzabbix-senderをインストール出来ないこともあります.
そういった場合には直接クライアントがzabbix-serverとtcp接続を行い通信してもよいのですが, 今回はクライアント側の実装をシンプルにしたかったのでhttpでやり取りできるようにproxy-serverの参考実装を作ってみました. クライアントからhttpでjsonデータを送り, それを受け取ってzabbix-serverへtcp接続して受け渡すようにしています.
go run main.go
などで立ち上げ, jsonをpostしてあげるとzabbix-serverからのレスポンスが返ってきます.
$ go run main.go
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
⇨ http server started on [::]:1323
$ curl -s -X POST -H 'Content-Type: application/json' -d '{"host":"sender-test","key":"sender.test","value":"100"}' http://127.0.0.1:1323/
ZBXDZ{"response":"success","info":"processed: 1; failed: 0; total: 1; seconds spent: 0.000030"}%