これは Mackerel Advent Calendar 2019 - Qiita の20日目の記事です
アドベントカレンダーに登録したら部屋がきれいになった話にならなくてよかったです
こんなことありませんか?
日中ふと見かけたアラート、作業をして発生させたアラート...
あいつらちゃんと片付けたっけ?って気持ちになって寝付けなくなったりしませんか?
ちなみにわたしはアラートではあまりないですけど、
乾燥機つけたっけ・・・というのはよく気になって起きて確認しに行ってます
そういえばAWSでこんなリリースがありました
AWS ChatbotがSlackから実行できるようになりました!
SlackからLambdaが起動できるので、
いろんなことができるようになって夢が広がりますね
SlackからMackerelのアラートを見れるようにしよう!
アラートが上がったタイミングではなく、
任意のタイミングでSlackで見れたら便利かもという気持ちになって作りました
サービス名を指定して、
Slack -> Chatbot -> Lambda -> Mackerel とリクエストして、
結果をSlackにPostします
この解説こそ図示するべきかと考えたのですが、
AWS Chatbotのアイコンは配布されていませんでした
まだベータ版ってこともあるのかな
作り方
まずAWS Chatbotの設定をしていきます
他の選択肢としてはAmazon Chimeがあります
Slackに飛ばされるので設定します
あとはLambdaの中身を実装してデプロイし、Slackから実行するだけです
できた
サービス名を指定して、
そのサービスでOpenなアラートを見れるようにしました
https://github.com/heleeen/alert_checker
アラートがないときはこんな感じです
平和なときはお寿司を食べようっていう気持ちです
頑張ったところはSlackにPostするためのJson作りです
できあがるまでの頑張り
サービスはアラートから取得できない
アラートのレスポンスにサービスは含まれていないので、
アラートからモニターIDを取りそれでモニターを引き... みたいなことをしています
ただ、式監視だけはモニターにもロールの設定がなく
サービスの特定ができなかったのでアラートがあっても取得できません...
式にサービス名があるかどうかを grep するくらいしか思いつきませんでした...(やってないですが...)
AWSコンソールでは実行できるのになぜかSlackから実行できない
@aws lambda invoke --payload {"service": "serviceName"} --function-name alert_checker --region ap-northeast-1
というように実行するのですが、
このPayload部分が厄介で、Macの場合、
Slackにコピペで貼り付けたり入力しようとすると
ダブルクオテーションが変換されてしまいエラーしました
これはシステム環境設定で回避できますが、
他でもダブルクオテーションの向きが修正されなくなるので悩ましいですね
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でわかる日がきて欲しい