Ruby用Zabbix APIライブラリ、SkyZabbixをリリース

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Zabbix API の Ruby 用ライブラリ、SkyZabbix を Gem としてリリースしました!

インストール

一般的なGemと同様に、Bundlerで管理するのが簡単です。
Gemfileに以下のように追記してください。

# Zabbix 2.2 を使用している場合
gem 'sky_zabbix', '~> 2.2.0'
# Zabbix 2.4 を使用している場合
gem 'sky_zabbix', '~> 2.4.0'

そして、bundle installを実行してください。

使い方

clientオブジェクトを生成し、ログインすることで各APIメソッドを呼び出すことができるようになります。

サンプルコード

require 'sky_zabbix'

zabbix_url  = 'http://zabbix.example.com/zabbix/api_jsonrpc.php'
zabbix_user = 'admin'
zabbix_pass = 'zabbix'

# 認証
client = SkyZabbix::Client.new(zabbix_url)
client.login(zabbix_user, zabbix_pass)

# リクエストを送信
client.host.get()
# => [{"hostid" => "10000"}, {"hostid" => "10001"}, ...]

client.host.create(
  host: "HostName",
  interfaces: [{
    type: 1,
    main: 1,
    ip: "192.0.2.1",
    dns: "hoge.example.com",
    port: 10050,
    useip: 0
  }],
  groups: [
    groupid: "1",
  ]
)
# => {"hostids"=>["10119"]}
# また、Zabbix にホストが登録されます。

特徴

全てのメソッドを網羅

SkyZabbix では、Zabbix が提供する全ての API メソッドを使用することが出来ます。
Zabbix のソースコードからメソッド定義の一覧を抽出し、それを元に SkyZabbix のコードを生成しているためです。
そのため、存在しないメソッドを使用していないかなどを、瞬時に判別することが出来ます。

Batch Request

Zabbix の API は、JSON-RPCというJSONを使用した関数呼び出し(Remote Procedure Call)の仕様に沿って実装されています。
この JSON-RPC では、Batch Request という仕様が定義されており、これを使用すると複数の関数呼び出しを1回のリクエストにまとめることが出来ます。
これによりリクエストの回数を減らすことが出来るため、特にZabbixサーバーとクライアントがネットワーク的に遠い場合大きな速度の改善を見込むことが出来ます。

requests = []
# まだリクエストは送信されない
requests.push client.host.build_get()
requests.push client.user.build_get()
requests.push client.hostgroup.build_get()

# ここで1回のリクエストにまとめられて送信される。
host_resp, user_resp, hostgroup_resp = cleint.batch(*requests)

恐らく、この2つの特徴を兼ね備えているRubyのZabbix APIライブラリはSkyZabbixのみです!
Ruby のプログラムから Zabbix API を使用したい場合、このライブラリの使用を検討してみてはいかがでしょうか?
システム自動構築ツール SkyHopperの開発版でも、このSkyZabbix が採用されています。

コメントを残す

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

Time limit is exhausted. Please reload CAPTCHA.