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
1.8k
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
運用の役立たないダッシュボードの作り方。
mashiike
3
880
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
700
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
5
3.8k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
270
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
4k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
4.7k
「北欧、暮らしの道具店」のデータ基盤の変遷
mashiike
1
3.3k
小規模ワークロードにおけるRedshift Serverlessのログの取り扱い
mashiike
0
580
完全に理解した incremetal 〜そして、何もわからないへ〜
mashiike
2
4.7k
Other Decks in Technology
See All in Technology
AI時代のデータセンターネットワーク
lycorptech_jp
PRO
1
290
5分でわかるDuckDB
chanyou0311
10
3.2k
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
180
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
2
190
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
.NET 9 のパフォーマンス改善
nenonaninu
0
1k
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
120
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
20241220_S3 tablesの使い方を検証してみた
handy
4
630
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
540
Wantedly での Datadog 活用事例
bgpat
1
520
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Embracing the Ebb and Flow
colly
84
4.5k
Building an army of robots
kneath
302
44k
Music & Morning Musume
bryan
46
6.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Being A Developer After 40
akosma
87
590k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Optimizing for Happiness
mojombo
376
70k
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点。 (採用担当に挟んどいてって言われたやつ)
\カヤックに興味を持ってくださった方へ/ ニュースレターへ登録しませんか? カヤック社員がどんな風に働いているか? どんな制作実績があるか? などの情報を定期的に配信しています!
ご清聴ありがとうございました