Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
Search
ikeda-masashi
July 11, 2023
Technology
2.1k
0
Share
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
2023/07/11 のMackerel Meetup #14の発表資料です。
ikeda-masashi
July 11, 2023
More Decks by ikeda-masashi
See All by ikeda-masashi
コーディングエージェントに 独自Extension書かせてみた
mashiike
0
73
Redshiftを中心としたAWSでのデータ基盤
mashiike
0
320
運用の役立たないダッシュボードの作り方。
mashiike
3
1.2k
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
1k
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
6
4.9k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
450
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
5.9k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
7.2k
「北欧、暮らしの道具店」のデータ基盤の変遷
mashiike
1
3.7k
Other Decks in Technology
See All in Technology
3つのボトルネックを解消し、リリースエンジニアリングを再定義した話
nealle
0
410
NgRx SignalStore: The Power of Extensibility
rainerhahnekamp
0
220
みんなで作るAWS Tips 100連発 (FinOps編)
schwrzktz
1
130
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
250
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
4
23k
AIエージェントを構築して感じた、AI時代のCDKとの向き合い方
smt7174
1
220
幾億の壁を超えて/Beyond Countless Walls(JP)
ikuodanaka
0
120
Digitization部 紹介資料
sansan33
PRO
1
7.2k
AI前提とはどういうことか
daisuketakeda
0
180
BigQuery × dbtでコスト削減した話
rightcode
0
110
ログ基盤・プラグイン・ダッシュボード、全部整えた。でも最後は人だった。
makikub
5
1.8k
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
380
Featured
See All Featured
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Abbi's Birthday
coloredviolet
2
6.6k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
250
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Marketing to machines
jonoalderson
1
5.1k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
490
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
54k
Transcript
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~ SREチーム データエンジニア 池田将士 @mashiike 18:15 - 18:35
自己紹介 ただの酒飲みです。 『餌を与えないでください。』 Config 迷人です。
会社概要 経営理念: つくる人を増やす。 (´・ω・`)モキュ?
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
皆さん。監視してますか? ありますよね? こういう監視ルール 『5xx エラーが発生したら、Warning』 『平均レスポンスタイムが500ms以上なら、Warning』
皆さん。監視してますか? 発生しますよね? こういうWarningアラート
皆さん。監視してますか? 業務時間外 5xx 1件! Warning!!!!! どうする?
私は。。。 ネトゲしてますね
そもそも、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アラートだ と、そこそこな頻度で発生する。
そもそも、Wariningアラートは緊急度が高くない。 そこそこな頻度で発生するもの※1 本当にヤバかったらCriticalアラートがある。 なんなら、On Callの仕組みがあることも。 なので、一旦忘れるのはアリ ※ あとで弊社の藤原が MackerelとGrafana on
call の連携の話でLTします。 そちらもお楽しみに。
しかし、定例でちゃんと振り返る。 Warningを無視はいずれ 重大な事故につながる 【ハインリッヒの法則】 1 29 300 重大な事故 軽微な事故 事故未遂
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
ところで、ALB 5xx があったのはわかった。 『このWarning どのエンドポイントで発生したんですか? 』 『えぇ〜っとちょっとまってくださいねredashでアクセスログを・・・ 』 『あー。/hoge/<hoge_id> ですねぇ。』 『これアプリケーションのログを見ないとですねぇ。』
『あー。S3にあるやつかー。Redshiftに取り込んでないんですよね。』 『github.com/koluku/s3s つかって、調べるか。便利だよねこれ〜』
もしかして、これ自動化できますか? できますよね。これ、 です。本当にありがとうございます。
そこで作りました『Prepalert』 由来は: 『Prepare』+『Alert』 アラートが来たら、 ログや集計値をかき集める仕組み
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
動作イメージ 機能1: アラートのメモに貼り付け 機能2: グラフアノテーションとして貼り付け Target Groupは408 Request Timeoutを返してるので 処理時間が長すぎたんですね。
動作イメージ 機能3: 長すぎる場合のS3バックエンド 長いと、省略して末尾にShow details リンクを付ける。 簡易S3Viewer機能も
動作イメージ 機能 core: 3つのquery_runner (v0.11時点) query_runner = データを取得するためのqueryを実行する先 • Redshift
Data API (SQL) • S3 Select API (SQL) • Cloudwatch Logs Insights API (Insights Query)
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
導入方法 とりあえず、お手元にInstallして Initサブコマンドで 初期設定ファイルを生成してください。
導入方法 プロンプトに従って、graph annotationを投稿する先のサービス名とsqs queue名を入れます
導入方法 プロンプトに従って、graph annotationを投稿する先のサービス名とsqs queue名を入れます するとconfig.hclができてるので。一旦それで中身を見てみます。
導入方法 とりあえず。 なんでもいいんで Alertが開いたときに 『How do you respond to alerts?』
とメモを貼り付けるConfigができます。 ※コメントを外すと WebhookにBASIC認証がつけられる
導入方法 リポジトリの lambda/配下にあるサンプルを参考にLambda関数とかその周りをデプロイして
導入方法 MackerelでWebhookを設定すると、アラートが来たときに勝手に メモが更新される。
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
例えばCloudwatch Logs Insightsの結果を貼り付けたい 例えばCloudwatch Logs Insightsの情報を載せたいとき。 左のような設定を足して
例えばCloudwatch Logs Insightsの結果を貼り付けたい 設定をこう変える after before
例えばCloudwatch Logs Insightsの結果を貼り付けたい かえるとこうなる。 (横幅が長すぎて・・・見れない)
例えばCloudwatch Logs Insightsの結果を貼り付けたい かえるとこうなる。 (横幅が長すぎて・・・見れない) なので、生ログをのせるときはS3バックエンド の設定をおすすめします。 横スクロールのできるViewerで見れるので。 メモにリンクが入っていたら、ハイパーリンクにしてワンクリックで飛べるようになってると嬉しぃなぁ(こっそり)
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
導入効果 Perpalertを導入した結果、定例では以下のような変化があった。 • Warningアラートの確認時間が短くなった。 • 『後で調べます』が少なくなり。『コレ気になるから調べます』が増えた。 • 思わぬ内容を発見できることがあった。 ◦ 謎のタイムアウトの原因
◦ ログの迷子 ◦ etc…
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
今後の展望 開発・運用そろそろ1年。 をリリースしたいなぁ・・・
今後の展望 開発・運用そろそろ1年。 をリリースしたいなぁ・・・ しかし、その前に解決したい悩みがある。 導入しづらい • Lambda関数が2つ • 設定が複雑
(HCLで柔軟性はあれど)
今の悩み - Lambda関数が2つ Lambda関数が2つあるのでデプロイ2回 周りのリソースもなにげに多い。
今の悩み - 設定が複雑 Lambda関数が2つあるのでデプロイ2回 周りのリソースもなにげに多い。 HCLで柔軟にできるが、 Query対象ごとに設定項目が違うため 複雑になる。 今後Query対象が増え
ると考えると。。。 もっともっと複雑に
今の悩み • 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: そもそも設定見直す?
アジェンダ • まえおき • Prepalertについて ◦ 動作イメージ ◦ 導入方法 ◦
例えばCloudwatch Logs Insightsの結果を貼り付けたい ◦ 導入効果 • 今後の展望と今の悩み
まとめ Warningアラートを定例で振り返る際に 毎回調査のためにログの取得やメトリクスの集計が発生していた。 コレはトイルなのでPrepalertという 自動ログ取得・メトリクス集計+アラートに関連付け を行うツールを作った。 そろそろ1年なので、v1.0.0を出したいのだが、 導入がしづらいのが難点。なんとかしたい。 2023年9月中を目処になんか考えて頑張るぞ!
あと1点。 (採用担当に挟んどいてって言われたやつ)
\カヤックに興味を持ってくださった方へ/ ニュースレターへ登録しませんか? カヤック社員がどんな風に働いているか? どんな制作実績があるか? などの情報を定期的に配信しています!
ご清聴ありがとうございました