まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

顧客が本当に欲しかったJenkinsのdatadog監視のやり方

今までのjenkinsジョブ監視の問題点

JenkinsにDatadog plugin入れると自動的にjobのeventが流れてくるので、そのeventのタグを見て監視してました。10分間の間にresult:failureのタグがついたジョブの数が合計1より大きかったらslackに通知するという感じです。

f:id:masato47744:20180605224555p:plain

これの何が問題かというと、10分間たてば何もしなくてもrecoverdになってしまうということです。 なので、バッチがこけたことはわかるけど、recoverdが出てしまって勘違いしてそのままになってしまうこともありえます。

顧客が本当に欲しかったものを手に入れるには

Datadogにはcustom checkというmonitorがあってそれだとjenkinsのjobが失敗したらtrigger、成功したらrecoverという普通にやりたいことができるやつがあるのを発見しました。 あります。ただ、設定してみても、一向にNo Dataで全くひっかからない・・

で、ググりまくってたらこんなのをみっけた。要はjenkins.job.statusというタグをJenkinsのjobの設定画面で毎回書けってことだった。。defaultでいれておいてくれよという感じだがしょうがない😢

serverfault.com

f:id:masato47744:20180605224751p:plain

さらにちょっと注意

そして、さらにこのままだと、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してくれるようになります。

f:id:masato47744:20180605224945p:plain

これで我々は顧客が本当に欲しかったものを手に入れることができました。

f:id:masato47744:20180605225323p:plain