PerlでZabbix API クライアントモジュールを実装してみた。
ZabbixのAPIを利用して便利な状況は以下のような場合だろうか。
「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。
「汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善」というネタで2011年の12月にIOTシンポジウムで発表してきた。
前回記事(Apache2.4.1のmod_luaをいきなり弄ってフックできる箇所を増やしてみたよ)と前々回記事(Apache 2.4.1のmod_luaでApacheに介入する(mod_rewriteの終焉?))とmod_luaがあればこれまで敷居の高かったApacheモジュール開発も人気が出てくるのではないかと思いだしている。それを促していくためにも、今回は少し使えそうなLuaのライブラリを作った。ライブラリの実装はC言語。C言語のライブラリと簡単に連携できるところもLuaの強みである。
mod_lua、色々触ってみた所、すごい簡単にモジュールっぽい動きが実装できて、可読性も良くて便利。
しかし、個人的にモジュール実装する時に良く使うのは、アクセスログ出力時のフック箇所(ap_hook_log_transaction)である。例えば、リクエスト毎にレスポンス処理前の最終段階であるap_hook_fixupsの段階でrusage()等でリソースの計測始めて、ap_hook_log_transactionの段階で差分を算出し、動的コンテンツ実行に利用したCPU使用時間等を計測する、といった使い方ができる。また、処理始めでカウンターを上げておいて、処理終わってログ書き込む段階でカウンター下げるといった使い方にもap_hook_log_transactionでのフックは便利だったりする。細かい話、コンテンツ処理するhandlerの前後で計ってもいいんだけど、hookに関数登録した方が分かりやすい。
しかし、mod_luaはそこでフックすることができない。これは面白くない。
だったら追加してやろう。ということで実装した。以下パッチ。