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
0
2k
Prepalert ~Mackerelアラートにログや集計値を貼り付けてくれるトイル削減ツール~
2023/07/11 のMackerel Meetup #14の発表資料です。
ikeda-masashi
July 11, 2023
Tweet
Share
More Decks by ikeda-masashi
See All by ikeda-masashi
Redshiftを中心としたAWSでのデータ基盤
mashiike
0
240
運用の役立たないダッシュボードの作り方。
mashiike
3
1.1k
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
920
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
6
4.2k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
380
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
5.2k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
6.5k
「北欧、暮らしの道具店」のデータ基盤の変遷
mashiike
1
3.5k
小規模ワークロードにおけるRedshift Serverlessのログの取り扱い
mashiike
0
650
Other Decks in Technology
See All in Technology
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
400
Goに育てられ開発者向けセキュリティ事業を立ち上げた僕が今向き合う、AI × セキュリティの最前線 / Go Conference 2025
flatt_security
0
350
英語は話せません!それでも海外チームと信頼関係を作るため、対話を重ねた2ヶ月間のまなび
niioka_97
0
110
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.9k
PLaMo2シリーズのvLLM実装 / PFN LLM セミナー
pfn
PRO
2
970
リーダーになったら未来を語れるようになろう/Speak the Future
sanogemaru
0
280
Function calling機能をPLaMo2に実装するには / PFN LLMセミナー
pfn
PRO
0
910
動画データのポテンシャルを引き出す! Databricks と AI活用への奮闘記(現在進行形)
databricksjapan
0
140
BtoBプロダクト開発の深層
16bitidol
0
270
Flaky Testへの現実解をGoのプロポーザルから考える | Go Conference 2025
upamune
1
420
about #74462 go/token#FileSet
tomtwinkle
1
290
20201008_ファインディ_品質意識を育てる役目は人かAIか___2_.pdf
findy_eventslides
0
120
Featured
See All Featured
Navigating Team Friction
lara
189
15k
Side Projects
sachag
455
43k
Embracing the Ebb and Flow
colly
88
4.8k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Cost Of JavaScript in 2023
addyosmani
53
9k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
GitHub's CSS Performance
jonrohan
1032
460k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Why Our Code Smells
bkeepers
PRO
339
57k
Context Engineering - Making Every Token Count
addyosmani
5
180
Designing for humans not robots
tammielis
254
25k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
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点。 (採用担当に挟んどいてって言われたやつ)
\カヤックに興味を持ってくださった方へ/ ニュースレターへ登録しませんか? カヤック社員がどんな風に働いているか? どんな制作実績があるか? などの情報を定期的に配信しています!
ご清聴ありがとうございました