zabbix-client 0.0.1

深遠な理由によりzabbix-client 0.0.1をリリースしました。 https://github.com/winebarrel/zabbix-client

これは何?

Zabbix APIRubyクライアントです。 既存の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リファレンスをみればそのまま開発できると思います。

なんで作ったの?

前述の通り既存のライブラリは結構あります。 たぶん今使うんだったら、zabbixapizbxapiだと思いますが、どっちも抽象化が微妙で使いにくい…

だいたいは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! です。