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.5k
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
610
Amazon Aurora MySQL と Amazon Redshift の Zero-ETL Integration について使い所を考えてみた!
mashiike
0
380
Warningアラートを放置しない!アラート駆動でログやメトリックを自動収集する仕組みによる恩恵
mashiike
5
3.2k
人狼ゲームで考えるデータ基盤 〜データとはいったい・・・〜
mashiike
0
170
『エンタープライズ』という言葉の重さ 〜Data Vault 2.0をやめた2022年冬〜
mashiike
2
2.8k
Redshift ServerlessとProvisioned Cluster のちょっとした違い
mashiike
0
1.5k
「北欧、暮らしの道具店」のデータ基盤の変遷
mashiike
1
3k
小規模ワークロードにおけるRedshift Serverlessのログの取り扱い
mashiike
0
420
完全に理解した incremetal 〜そして、何もわからないへ〜
mashiike
2
3.4k
Other Decks in Technology
See All in Technology
EM完全に理解した と思ったけど、 やっぱり何も分からなかった話 / EM Night Fukuoka #1
hirutas
0
110
Reducing Cross-Zone Egress at Spotify with Custom gRPC Load Balancing Recap
koh_naga
0
210
AWS学習者向けにAzureの解説スライドを作成した話
handy
2
100
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
120
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
2
930
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
130
サーバー間 GraphQL と webmock-graphql の話 / server-to-server graphql and webmock-graphql
qsona
2
190
自己改善からチームを動かす! 「セルフエンジニアリングマネージャー」のすゝめ
shoota
6
870
アクセス制御にまつわる改善 / Improving access control
itkq
0
560
ワールドカフェI /チューターを改良する / World Café I and Improving the Tutors
ks91
PRO
0
130
Building Dashboards as a Hobby
egmc
0
300
ChatworkのSRE部って実は 半分くらいPlatform Engineering部かもしれない
saramune
0
160
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
RailsConf 2023
tenderlove
4
540
Happy Clients
brianwarren
92
6.4k
4 Signs Your Business is Dying
shpigford
175
21k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
187
16k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
17
1.4k
What the flash - Photography Introduction
edds
64
11k
KATA
mclloyd
15
12k
What's in a price? How to price your products and services
michaelherold
237
11k
The Mythical Team-Month
searls
216
42k
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点。 (採用担当に挟んどいてって言われたやつ)
\カヤックに興味を持ってくださった方へ/ ニュースレターへ登録しませんか? カヤック社員がどんな風に働いているか? どんな制作実績があるか? などの情報を定期的に配信しています!
ご清聴ありがとうございました