深遠な理由によりzabbix-client 0.0.1をリリースしました。 https://github.com/winebarrel/zabbix-client
これは何?
Zabbix APIのRubyクライアントです。 既存のRubyクライアントはいろいろあるんですが、ちょっと使いにくいので車輪の再発明をしました。
使い方
以下のような感じです。
require 'zabbix/client' client = Zabbix::Client.new('http://localhost/zabbix/api_jsonrpc.php') client.user.login(user: 'Admin', password: 'zabbix') p client.apiinfo.version #=> "2.0.12" p client.template.getobjects(:host => ['Template OS Linux']) #=> [{"hostid"=>"10001", # "proxy_hostid"=>"0", # "host"=>"Template OS Linux", # ...
うっすーいラッパーでほとんどそのままJSON-RPCで投げてます。エラーチェックもサーバ任せ。 なのでAPIリファレンスをみればそのまま開発できると思います。
なんで作ったの?
前述の通り既存のライブラリは結構あります。 たぶん今使うんだったら、zabbixapiかzbxapiだと思いますが、どっちも抽象化が微妙で使いにくい…
だいたいはZabbixのJSON-RPCと同じなんですが、Ruby側でメソッドやクラスが定義されているので、リファレンスを見つつ、ライブラリのソースコードを読みつつ、、、が辛い!
その点、zabbix-clientはただJSON投げるだけ。
たとえば、client.template.getobjects(:host => ['Template OS Linux'])
も以下のJSONに変換して投げるだけ。
{ "jsonrpc": "2.0", "method": "template.getobjects", "params": { "host": [ "Template OS Linux" ] }, "auth": "...", "id": 1 }
メソッドがあろうがなかろうがRuby側では知ったこっちゃない!
ので、APIリファレンスにあることがすべてです。
あと、zabbixapiはzabbixのバージョンによってgemのバージョンを分けないといけないのが辛かったり、zbxapiはそもそもリリースされてるバージョンがまともに動かなかったり(これはちょっと…Ruby 1.8とかでは動いたんだろうか?)
車輪の再々々々々々発明は微妙な気もしますが興味があれば Please try it out! です。