顧客が本当に欲しかったJenkinsのdatadog監視のやり方
今までのjenkinsジョブ監視の問題点
JenkinsにDatadog plugin入れると自動的にjobのeventが流れてくるので、そのeventのタグを見て監視してました。10分間
の間にresult:failure
のタグがついたジョブの数が合計1
より大きかったらslackに通知するという感じです。
これの何が問題かというと、10分間たてば何もしなくてもrecoverdになってしまうということです。 なので、バッチがこけたことはわかるけど、recoverdが出てしまって勘違いしてそのままになってしまうこともありえます。
顧客が本当に欲しかったものを手に入れるには
Datadogにはcustom check
というmonitorがあってそれだとjenkinsのjobが失敗したらtrigger、成功したらrecoverという普通にやりたいことができるやつがあるのを発見しました。
あります。ただ、設定してみても、一向にNo Data
で全くひっかからない・・
で、ググりまくってたらこんなのをみっけた。要はjenkins.job.status
というタグをJenkinsのjobの設定画面で毎回書けってことだった。。defaultでいれておいてくれよという感じだがしょうがない😢
さらにちょっと注意
そして、さらにこのままだと、Jenkinsのジョブが実行されたブランチごととか実行されたnodeごとにalertが管理されるようになってしまいます。 どういうことかというと、あるAというブランチがBというslave nodeでジョブが実行されて失敗したあと、Cというslave nodeで成功した場合に、alertがrecoverdされないということです。
たいてい、どこのnodeで実行されたとかは関係ないのでjobが成功したらrecoverdされて欲しいわけです。
そこで、jobごとのグルーピングをするために、
Trigger a separate alert for each [ ] reporting your check
というのがこっそり用意されていて、
そこにjob
と入れることでどこで実行されようとjob単位でalertしてくれるようになります。
これで我々は顧客が本当に欲しかったものを手に入れることができました。