Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

そもそも、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アラートだ と、そこそこな頻度で発生する。

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

  今の悩み ● 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: そもそも設定見直す?

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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