Successfully reported this slideshow.
Your SlideShare is downloading. ×

Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 29 Ad

More Related Content

Slideshows for you (20)

Similar to Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った (20)

Advertisement

Recently uploaded (20)

Advertisement

Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った

  1. 1. Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った Takanori Suzuki twitter: @BlueSkyDetector
  2. 2. Loadable Module http://blog.zabbix.com/zabbix-2-2-features-part-10-support-of-loadable-modules/2379/
  3. 3. Zabbix 2.2から サポートされた 機能の一つ
  4. 4. ライブラリファイル 追加でZabbixに 独自の新規キーを 追加できる機能 dummy.pingキーで1を返すとか 好きなキーを追加して値を返す処理を 書ける
  5. 5. 独自の新規キーを 追加する機能といえば UserParameter
  6. 6. UserParameter と比べメリットは?
  7. 7. 監視時に毎回外部プロ セスを起動せず、 同じプロセスで変数な どを再利用して動作す るので
  8. 8. 動作が早い & データをキャッシュ しておける
  9. 9. 作るには?
  10. 10. C言語などで共有ライ ブラリ.soファイルを 作成する必要がある
  11. 11. zbx_module_init()… プロセス起動時の処理 キーと紐付けた任意の関数… 監視実行時の処理 zbx_module_uninit()… プロセス終了時の処理 実行されるコード
  12. 12. zabbix_agentd.conf LoadModulePath… モジュールのディレクトリ LoadModule… モジュールのファイル名 設定方法
  13. 13. ところでmrubyとは?
  14. 14. mruby = 組み込み向けruby 組み込み機器用のruby や アプリへ組み込めるruby
  15. 15. mruby = 組み込み向けruby 組み込み機器用のruby や アプリへ組み込めるruby (今回はこっち)
  16. 16. というわけで
  17. 17. Github にあります 入力をmrubyで評価 する loadable module を作った https://github.com/BlueSkyDetector/mruby_module_for_zabbix_agent
  18. 18. mruby.string[rubyコード] mruby.file[rubyファイル] でrubyコードが実行 できる mruby_module.so
  19. 19. $ zabbix_get -s localhost -k 'mruby.string[1234 * 4]' 4936.000000 とかできる mruby_module.so
  20. 20. $ zabbix_get -s localhost -k 'mruby.file[hello.rb]' Hello World とかできる mruby_module.so
  21. 21. mruby.file で loadable module と 似たものを ruby でも書ける
  22. 22. 監視時に毎回外部プロ セスを起動せず、 同じプロセスで変数な どを再利用して動作す るので
  23. 23. 動作が早い & データをキャッシュ しておける
  24. 24. zbx_module_init()… プロセス起動時の処理 zbx_module_run()… 監視実行時の処理 return値が監視結果となる zbx_module_uninit()… プロセス終了時の処理 実行されるrubyコード
  25. 25. init で作成したデータは Userdata class for mruby で共有する。 https://github.com/matsumoto-r/mruby-userdata 実行されるrubyコード thanks to @matsumoto-r
  26. 26. 実行されるrubyコード class Something def call() u = Userdata.new return "hello world " + u.name + " " + u.age.to_s end end def zbx_module_init() u = Userdata.new u.name = "test_user01" u.age = 30 return 'init world' end def zbx_module_run() return Something.new.call() end def zbx_module_uninit() return 'uninit world' end sample.rb
  27. 27. $ zabbix_get -s localhost -k "mruby.file[sample.rb]" hello world test_user01 30 実行されるrubyコード
  28. 28. デモ (時間があれば)
  29. 29. Any question?

×