helen's blog

ずっとおもしろいことしてたいな。

SlackでMackerelのアラートの様子を見る

これは Mackerel Advent Calendar 2019 - Qiita20日目の記事です
アドベントカレンダーに登録したら部屋がきれいになった話にならなくてよかったです

こんなことありませんか?

日中ふと見かけたアラート、作業をして発生させたアラート...
あいつらちゃんと片付けたっけ?って気持ちになって寝付けなくなったりしませんか?

f:id:heleeen:20191216184934p:plain

ちなみにわたしはアラートではあまりないですけど、
乾燥機つけたっけ・・・というのはよく気になって起きて確認しに行ってます

そういえばAWSでこんなリリースがありました

aws.amazon.com

AWS ChatbotがSlackから実行できるようになりました!
SlackからLambdaが起動できるので、
いろんなことができるようになって夢が広がりますね

SlackからMackerelのアラートを見れるようにしよう!

アラートが上がったタイミングではなく、
任意のタイミングでSlackで見れたら便利かもという気持ちになって作りました

サービス名を指定して、
Slack -> Chatbot -> Lambda -> Mackerel とリクエストして、
結果をSlackにPostします

この解説こそ図示するべきかと考えたのですが、
AWS Chatbotのアイコンは配布されていませんでした
まだベータ版ってこともあるのかな

作り方

まずAWS Chatbotの設定をしていきます

f:id:heleeen:20191219001733p:plain

他の選択肢としてはAmazon Chimeがあります

f:id:heleeen:20191219002640p:plain

Slackに飛ばされるので設定します

f:id:heleeen:20191219010334p:plain

あとはLambdaの中身を実装してデプロイし、Slackから実行するだけです

できた

サービス名を指定して、
そのサービスでOpenなアラートを見れるようにしました
https://github.com/heleeen/alert_checker

f:id:heleeen:20191219132729p:plain

アラートがないときはこんな感じです
平和なときはお寿司を食べようっていう気持ちです

f:id:heleeen:20191219132056p:plain

頑張ったところはSlackにPostするためのJson作りです

できあがるまでの頑張り

サービスはアラートから取得できない

アラートのレスポンスにサービスは含まれていないので、
アラートからモニターIDを取りそれでモニターを引き... みたいなことをしています
ただ、式監視だけはモニターにもロールの設定がなく
サービスの特定ができなかったのでアラートがあっても取得できません...
式にサービス名があるかどうかを grep するくらいしか思いつきませんでした...(やってないですが...)

AWSコンソールでは実行できるのになぜかSlackから実行できない
@aws lambda invoke --payload {"service": "serviceName"} --function-name alert_checker --region ap-northeast-1

というように実行するのですが、
このPayload部分が厄介で、Macの場合、
Slackにコピペで貼り付けたり入力しようとすると
ダブルクオテーションが変換されてしまいエラーしました

f:id:heleeen:20191219011413p:plain

これはシステム環境設定で回避できますが、
他でもダブルクオテーションの向きが修正されなくなるので悩ましいですね

IAMロールの編集はIAMのコンソールから

何気なく↓を実行しようとしたところ、ReadOnlyが必要でした

@aws lambda list-functions ...

ただ、ChatbotのコンソールからIAMロールを編集できません
IAMのコンソールに移動するか、新しく作る必要があります

IAMにしゅっとつけられる体験を最初にしてしまっていたので、
ああ...IAMのコンソール出てくるんだ... という気持ちになりました

コマンドが長い

セヤネン
お布団から寝ぼけたまま打つのはきついので
Slackのほうのbotとかにいい感じにさせたほうがよさそう

Alexa, XXXのアラートを確認して!っていうのも考えたのですが、
楽しそうだけどデバッグ大変そうで諦めました...
楽しそうではあるんだけど...

なぜかLambdaコンソールでの実行は成功するのにSlackからだと返事がない

なんでだろうね

困って↓を入れました

sleep 10

https://github.com/heleeen/alert_checker/blob/master/function/lib/slack.rb#L17

クッ....なぜだ.....


APIやGemが公開されているとこういう連携が楽でいじりがいがあって楽しくていいですね
もっといじりたい

あと乾燥機つけたかどうかもSlackでわかる日がきて欲しい