Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~

Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~

2023/07/11 のMackerel Meetup #14の発表資料です。

ikeda-masashi

July 11, 2023
Tweet

More Decks by ikeda-masashi

Other Decks in Technology

Transcript

  1. Prepalert
    ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
    SREチーム 
    データエンジニア
    池田将士 @mashiike
    18:15 - 18:35

    View full-size slide

  2. 自己紹介
    ただの酒飲みです。
    『餌を与えないでください。』
    Config 迷人です。

    View full-size slide

  3. 会社概要 経営理念: つくる人を増やす。    (´・ω・`)モキュ?

    View full-size slide

  4. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  5. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  6. 皆さん。監視してますか?
    ありますよね? こういう監視ルール
    『5xx エラーが発生したら、Warning』
    『平均レスポンスタイムが500ms以上なら、Warning』

    View full-size slide

  7. 皆さん。監視してますか?
    発生しますよね? こういうWarningアラート

    View full-size slide

  8. 皆さん。監視してますか?
    業務時間外 5xx 1件! Warning!!!!! どうする?

    View full-size slide

  9. 私は。。。 
    ネトゲしてますね 

    View full-size slide

  10. そもそも、Wariningアラートは緊急度が高くない。
    そこそこな頻度で発生するもの※1
    本当にヤバかったらCriticalアラートがある。
    なんなら、On Callの仕組みがあることも。 
    なので、一旦忘れるのはアリ
    ※1
    例えばALBにAWS WAFを導入している場合
    https://aws.amazon.com/jp/waf/sla/
    によれば、99.95%なので1ヶ月あたり21分程度
    はアクセスできないことがある。
    AWS WAFにアクセスできないとALBは5xxエラー
    を返すので ALB 5xx > 1 のWarningアラートだ
    と、そこそこな頻度で発生する。

    View full-size slide

  11. そもそも、Wariningアラートは緊急度が高くない。
    そこそこな頻度で発生するもの※1
    本当にヤバかったらCriticalアラートがある。
    なんなら、On Callの仕組みがあることも。 
    なので、一旦忘れるのはアリ
    ※ あとで弊社の藤原が MackerelとGrafana on call の連携の話でLTします。
      そちらもお楽しみに。

    View full-size slide

  12. しかし、定例でちゃんと振り返る。
    Warningを無視はいずれ
    重大な事故につながる
    【ハインリッヒの法則】
    1
    29
    300
    重大な事故
    軽微な事故
    事故未遂

    View full-size slide

  13. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  14. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  15. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  16. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  17. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  18. ところで、ALB 5xx があったのはわかった。
    『このWarning どのエンドポイントで発生したんですか? 』
    『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・  』
    『あー。/hoge/ ですねぇ。』
    『これアプリケーションのログを見ないとですねぇ。』
    『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』
    『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』

    View full-size slide

  19. もしかして、これ自動化できますか? 
    できますよね。これ、
    です。本当にありがとうございます。

    View full-size slide

  20. そこで作りました『Prepalert』 
    由来は: 『Prepare』+『Alert』
    アラートが来たら、
    ログや集計値をかき集める仕組み

    View full-size slide

  21. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  22. 動作イメージ
    機能1: アラートのメモに貼り付け 機能2: グラフアノテーションとして貼り付け
    Target Groupは408 Request Timeoutを返してるので
    処理時間が長すぎたんですね。

    View full-size slide

  23. 動作イメージ
    機能3: 長すぎる場合のS3バックエンド
    長いと、省略して末尾にShow details リンクを付ける。
    簡易S3Viewer機能も

    View full-size slide

  24. 動作イメージ
    機能 core: 3つのquery_runner (v0.11時点)
    query_runner = データを取得するためのqueryを実行する先
    ● Redshift Data API (SQL)
    ● S3 Select API (SQL)
    ● Cloudwatch Logs Insights API
    (Insights Query)

    View full-size slide

  25. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  26. 導入方法
    とりあえず、お手元にInstallして
    Initサブコマンドで
    初期設定ファイルを生成してください。

    View full-size slide

  27. 導入方法
    プロンプトに従って、graph annotationを投稿する先のサービス名とsqs queue名を入れます

    View full-size slide

  28. 導入方法
    プロンプトに従って、graph annotationを投稿する先のサービス名とsqs queue名を入れます
    するとconfig.hclができてるので。一旦それで中身を見てみます。

    View full-size slide

  29. 導入方法
    とりあえず。
    なんでもいいんで
    Alertが開いたときに
    『How do you respond to alerts?』
    とメモを貼り付けるConfigができます。
    ※コメントを外すと
    WebhookにBASIC認証がつけられる

    View full-size slide

  30. 導入方法
    リポジトリの lambda/配下にあるサンプルを参考にLambda関数とかその周りをデプロイして

    View full-size slide

  31. 導入方法
    MackerelでWebhookを設定すると、アラートが来たときに勝手に
    メモが更新される。

    View full-size slide

  32. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  33. 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    例えばCloudwatch Logs Insightsの情報を載せたいとき。
    左のような設定を足して

    View full-size slide

  34. 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    設定をこう変える
    after
    before

    View full-size slide

  35. 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    かえるとこうなる。
    (横幅が長すぎて・・・見れない)

    View full-size slide

  36. 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    かえるとこうなる。
    (横幅が長すぎて・・・見れない)
    なので、生ログをのせるときはS3バックエンド
    の設定をおすすめします。
    横スクロールのできるViewerで見れるので。
    メモにリンクが入っていたら、ハイパーリンクにしてワンクリックで飛べるようになってると嬉しぃなぁ(こっそり)

    View full-size slide

  37. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  38. 導入効果
    Perpalertを導入した結果、定例では以下のような変化があった。
    ● Warningアラートの確認時間が短くなった。
    ● 『後で調べます』が少なくなり。『コレ気になるから調べます』が増えた。
    ● 思わぬ内容を発見できることがあった。
    ○ 謎のタイムアウトの原因
    ○ ログの迷子
    ○ etc…

    View full-size slide

  39. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  40.  
    今後の展望
    開発・運用そろそろ1年。
    をリリースしたいなぁ・・・

    View full-size slide

  41.  
    今後の展望
    開発・運用そろそろ1年。
    をリリースしたいなぁ・・・
    しかし、その前に解決したい悩みがある。
    導入しづらい
    ● Lambda関数が2つ
    ● 設定が複雑 (HCLで柔軟性はあれど)

    View full-size slide

  42.  
    今の悩み - Lambda関数が2つ
    Lambda関数が2つあるのでデプロイ2回
    周りのリソースもなにげに多い。

    View full-size slide

  43.  
    今の悩み - 設定が複雑
    Lambda関数が2つあるのでデプロイ2回
    周りのリソースもなにげに多い。
    HCLで柔軟にできるが、
    Query対象ごとに設定項目が違うため
    複雑になる。
    今後Query対象が増え
    ると考えると。。。
    もっともっと複雑に

    View full-size slide

  44.  
    今の悩み
    ● Lambda関数が2つ
    対策: Monlithic Lambda化
    2023年9月中にはv1.0.0 を出したい・・・(決意)
    https://speakerdeck.com/_kensh/monolith-firs
    t-serverless-development?slide=46
    ● 設定が複雑
    対策1: initサブコマンドの強化?
    対策2: Handbook的なの書く?
    対策ex: そもそも設定見直す?

    View full-size slide

  45. アジェンダ
    ● まえおき
    ● Prepalertについて
    ○ 動作イメージ
    ○ 導入方法
    ○ 例えばCloudwatch Logs Insightsの結果を貼り付けたい
    ○ 導入効果
    ● 今後の展望と今の悩み

    View full-size slide

  46. まとめ
    Warningアラートを定例で振り返る際に
    毎回調査のためにログの取得やメトリクスの集計が発生していた。
    コレはトイルなのでPrepalertという
    自動ログ取得・メトリクス集計+アラートに関連付け
    を行うツールを作った。
    そろそろ1年なので、v1.0.0を出したいのだが、
    導入がしづらいのが難点。なんとかしたい。
    2023年9月中を目処になんか考えて頑張るぞ!

    View full-size slide

  47. あと1点。
    (採用担当に挟んどいてって言われたやつ)

    View full-size slide

  48. \カヤックに興味を持ってくださった方へ/
    ニュースレターへ登録しませんか?
    カヤック社員がどんな風に働いているか?
    どんな制作実績があるか?
    などの情報を定期的に配信しています!

    View full-size slide

  49. ご清聴ありがとうございました

    View full-size slide