Zabbix API の Ruby 用ライブラリ、SkyZabbix を Gem としてリリースしました!
インストール
一般的なGemと同様に、Bundler
で管理するのが簡単です。
Gemfile
に以下のように追記してください。
1 2 3 4 | # Zabbix 2.2 を使用している場合 gem 'sky_zabbix' , '~> 2.2.0' # Zabbix 2.4 を使用している場合 gem 'sky_zabbix' , '~> 2.4.0' |
そして、bundle install
を実行してください。
使い方
client
オブジェクトを生成し、ログインすることで各APIメソッドを呼び出すことができるようになります。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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サーバーとクライアントがネットワーク的に遠い場合大きな速度の改善を見込むことが出来ます。
1 2 3 4 5 6 7 8 | 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日クロスサイトスクリプティングとは?