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

Embed Size (px)

DESCRIPTION

[mruby embedded loadable module for zabbix agent] https://github.com/BlueSkyDetector/mruby_module_for_zabbix_agent で作ったものの説明。

Citation preview

  • 1.Ruby zabbix agent loadable module loadable module C + mruby Takanori Suzuki twitter: @BlueSkyDetector

2. Loadable Module http://blog.zabbix.com/zabbix-2-2-features-part-10-support-of-loadable-modules/2379/ 3. Zabbix 2.2 4. Zabbix dummy.ping1 5. UserParameter 6. UserParameter 7. 8. 9. 10. C .so 11. zbx_module_init() zbx_module_uninit() 12. zabbix_agentd.conf LoadModulePath LoadModule 13. mruby 14. mruby = ruby ruby ruby 15. mruby = ruby ruby ruby () 16. 17. Github mruby loadable module https://github.com/BlueSkyDetector/mruby_module_for_zabbix_agent 18. mruby.string[ruby] mruby.file[ruby] ruby mruby_module.so 19. $ zabbix_get -s localhost-k 'mruby.string[1234 * 4]' 4936.000000 mruby_module.so 20. $ zabbix_get -s localhost-k 'mruby.file[hello.rb]' Hello World mruby_module.so 21. mruby.file loadable module ruby 22. 23. 24. zbx_module_init() zbx_module_run() return zbx_module_uninit() ruby 25. init Userdata class for mruby https://github.com/matsumoto-r/mruby-userdata ruby thanks to @matsumoto-r 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. $ zabbix_get -s localhost-k "mruby.file[sample.rb]" hello world test_user01 30 ruby 28. () 29. Any question?