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 が採用されています。
投稿者プロフィール
最新の投稿
- AWS2021年12月2日AWS Graviton3 プロセッサを搭載した EC2 C7g インスタンスが発表されました。
- セキュリティ2021年7月14日ゼロデイ攻撃とは
- セキュリティ2021年7月14日マルウェアとは
- WAF2021年7月13日クロスサイトスクリプティングとは?