しょっぱなからネタバレしておきます。
障害発生時にも漏れなし! Zabbixの監視アラートでRedmine上にチケットを起票する仕組みをつくろう CodeZine:
CodeZineさんのこの記事をやってみました。
そのまま記事にしちゃうと問題ありあり&意味がない&面白くない&貴様!やる気あるのかー!
なので、ここはひとつわたしが困ったところを重点的にレポートしたいと思います。
Q:ZabbixとRedmineと組み合わせちゃうんですか〜?それってすごくないですか〜?
パッと見た感じだと何だかすごいように見えるけれど、細かく分けてみるとそうでもない。
やっていることを分割してみます。
1. RedmineのAPIを利用してチケットを登録するスクリプトを作る。
2. Zabbixが実行できるように/usr/local/binなどの共有ディレクトリに設置する。
3. ZabbixでRedmineにチケット登録したいトリガーを作る。
4. 2.で設置したスクリプトを実行するアクションを作る。
5. トリガーの発動条件をアクションと紐付ける。
こうして見ると敷居はそんなに高くないでしょ?
Q:APIとか使えないっす。
A:うちの過去記事を読んでください。
RedmineのAPIを利用して情報をGETするRubyのスクリプト
GETのスクリプトというと、POST、PUTと利用するライブラリがちょいと違うのでプログラミングには実際はあまり参考にならないのですが、失敗してもエラーが吐かれるだけなのでAPIを弄くりまわすにはちょうどいいです。
弄くりまわしていると、だんだんと何がどうなってて、どこがどうなっているのかがわかってくるので、更新した部分やチケット登録時に入力しておきたい項目の、その部分をPUTするなりPOSTすればOKです。
Q:どんなことができるのかしら?
A:Don’t think, Feel !!
アイデアがあれば何でもできると思います。
Q:実際どんな感じですか?
A:いい質問ですね。では実際にやってみよう。
設定とか細かいところはCodezineさんの記事を読んでいただくこととします。が、テストをするのにMemoryを食わせるというのもめんどくさいので、一番単純で簡単なLoadavarageの上昇をトリガーとします。
ストレステストのスクリプトは、適当にググる師匠に聞いたら出てくると思うので割愛します。
ruby stress.rb 20
こんな感じでダミーの20個のプロセスを立ち上げたりします。
トリガー:1分間のLoadAverageが5以上というものを作っているのでZabbixが反応します。
続いて、紐付いたアクションが実行されます。
スクリプトによって、チケットが登録されました。
説明のところが、無理やり日本語にしたような文章になっていますが、タイプミスです。
これくらいでしょうか。やってみると意外と簡単なんですよね。実は3日ほどかかっている。
OSSでフリーに素晴らしい環境が手に入るようにはなりましたが
Redmineを全員で使ったらカオスになった話 | kwLog:
なんてこともあるようですので、依存は禁物だ。