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
CloudWatch Logs Insightsをめぐるあれこれ
Search
Junki Ishigaki
August 23, 2024
Technology
0
130
CloudWatch Logs Insightsをめぐるあれこれ
CloudWatch Logs Insightsをめぐるあれこれ
2024/08/23 kyotoLT発表資料
Junki Ishigaki
August 23, 2024
Tweet
Share
More Decks by Junki Ishigaki
See All by Junki Ishigaki
impressions-trying-lambda-web-adapter
junkishigaki
2
220
talk_about_wasmwasi
junkishigaki
0
210
Athenaのコスト節約を考える
junkishigaki
0
21
Other Decks in Technology
See All in Technology
Goss: New Production-Ready Go Binding for Faiss #coefl_go_jp
bengo4com
0
1.1k
GitHub Copilot coding agent を推したい / AIDD Nagoya #1
tnir
2
4.5k
JavaScript 研修
recruitengineers
PRO
2
160
生成AI利用プログラミング:誰でもプログラムが書けると 世の中どうなる?/opencampus202508
okana2ki
0
190
Goでマークダウンの独自記法を実装する
lag129
0
210
Evolution on AI Agent and Beyond - AGI への道のりと、シンギュラリティの3つのシナリオ
masayamoriofficial
0
170
モバイルアプリ研修
recruitengineers
PRO
2
240
DeNA での思い出 / Memories at DeNA
orgachem
PRO
3
1.6k
攻撃と防御で実践するプロダクトセキュリティ演習~導入パート~
recruitengineers
PRO
1
170
JuniorからSeniorまで: DevOpsエンジニアの成長ロードマップ
yuriemori
0
130
我々は雰囲気で仕事をしている / How can we do vibe coding as well
naospon
2
220
AIエージェントの開発に必須な「コンテキスト・エンジニアリング」とは何か──プロンプト・エンジニアリングとの違いを手がかりに考える
masayamoriofficial
0
380
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
70
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Embracing the Ebb and Flow
colly
87
4.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
31
2.2k
Git: the NoSQL Database
bkeepers
PRO
431
65k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Making Projects Easy
brettharned
117
6.3k
Being A Developer After 40
akosma
90
590k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Transcript
Road to CloudWatch Logs Insights # CloudWatchLogs Insightsをめぐるあれこれ Junki Ishigaki
August 23, 2024
自己紹介 石垣潤樹 / Junki Ishigaki - 所属 → 株式会社シーズ -
やっていること → インフラエンジニア - やっていること → AWSとかさわってます - 好きなAWSサービス → Athena - 最近 → Amplify Gen 2楽しい - 好き → ラーメン, 担々麺 2
目次 - CloudWatch Logs Insight について - 自然言語によるクエリ生成さわってみる - 自然言語によるクエリ生成の勘所
- 感想など 3
CloudWatch Logs Insights について 4
なぜ、注目したいか 5 ついついやってしまうけど、これ苦しい (検索は検索でフィルターパターンはあるけれど…) これもこれでツライ
CloudWatch Logs Insightsについて 6 これ
CloudWatch Logs Insightsについて 7 https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/logs/AnalyzingLogData.html ざっくりいうと、CloudWatch Logsにクエリ投げれます
今日の裏テーマ 8 汎用的な知識 ・いろんなところで使える ・覚えるモチベーション↑↑↑ 局所的な知識 ・特定のところでしか使えない ・覚えるモチベーション↓↓↓ できるだけこっちを覚えたい
自然言語によるクエリ生成 さわってみる 9
CloudWatch Logs Insightsさわってみる 10 fields @timestamp, @message, @logStream, @log |
sort @timestamp desc | limit 10000 「なんとなくはわかる」 「なんとなくしかわかんない」 「これ覚えるの??」 「ツライ」 最初のサンプルクエリ これ覚えるでもいいけども…
自然言語によるクエリ生成 11 latest 3 record fields @timestamp, @message | sort
@timestamp desc | limit 3 - re:Invent 2023で発表 - 2024年1月GA(2024/8現在バージニア北部, オレゴン, 東京リージョンで利用可) 生成プロンプト 生成されるクエリ
画面的には以下みたいな感じ 12
ちなみに 13 - プレビュー期間に 日本語使えていた 期間もありました。 (今はEnglish Only)
自然言語によるクエリ生成の勘所 14
注意 - このあと出てくる例で生成されるクエリは性質上必ずしも一意なものではないです。 (場合によってはうまく生成されないこともあるかと思います) - 雰囲気を感じ取ってもらえればと思います。 15
より汎用性を求めて 16 - 英語から生成されるとはいうものの… - 分析用のクエリ言語としてもっと汎用的なものを人類は知っている。 S tructured Q uery
L anguage
SQL使いたい 17 - とりあえずparseしたい。 172.147.146.148 - - [21/Aug/2024:15:55:45 +0000] "GET
/item/electronics/1964 HTTP/1.1" 200 40 "http://www.google.com/search?ie=UTF-8&q=google&sclient=psy- ab&q=Electronics+Games&oq=Electronics+Games&aq=f&aqi=g- vL1&aql=&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&biw=1847&bih=442" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11" 164.63.158.69 - - [21/Aug/2024:15:55:46 +0000] "GET /category/jewelry?from=10 HTTP/1.1" 200 78 "/category/electronics" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 32.207.135.191 - - [21/Aug/2024:15:55:47 +0000] "GET /item/games/1443 HTTP/1.1" 200 59 "/category/software" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0.1) Gecko/20100101 Firefox/9.0.1" こうしたい
parse - ここだけは腕力 18 parse '* - * [*] "*
* *" * * * *' as host, identity, dateTimeString, httpVerb, url, protocol, statusCode, bytes,Referer,UserAgent CloudWatch Logs Insightsのほうで上記のよ うな感じで (ログを横目で見ながら腕力でparse)
腕力のいらない方法 19 { "host": "172.183.203.219", "user": "-", "method": "GET", "path":
"/category/office", "code": 200, "referer": "/item/electronics/1390", "size": 74, "agent": "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" } fields host, user, method, path, code, referrer, size, agent | limit 5 こういうログならそのままいける
やっていきます 20 select count(*) where code != "200" fields @timestamp,
@message | parse @message "Status Code: *" as statusCode | filter statusCode != "200" | stats count(*) as count それっぽいのが出る fields @timestamp, @message | filter code != "200" | stats count(*) as count ゴニョる
うまくいく parse '* - * [*] "* * *" *
* * *' as host, identity, dateTimeString, httpVerb, url, protocol, statusCode, bytes,Referer,UserAgent | filter statusCode != "200" | stats count(*) as count 21 処理内でparseする場合は以下のようなゴニョり
やっていきます2 22 SELECT host, COUNT(*) as count GROUP BY host
ORDER BY host DESC limit 10; fields @logStream as host | stats count(*) as count by @logStream | sort count desc | limit 10 それっぽいのが出る fields host | stats count(*) as count by host | sort count desc | limit 10 ゴニョる
うまくいく2 23
やっていきます3 24 SELECT HOUR(@timestamp) AS hour, COUNT(*) AS count_per_hour GROUP
BY hour ORDER BY count_per_hour DESC; fields @timestamp | stats count(*) as count_per_hour by bin(1hr) | sort count_per_hour desc それっぽいのが出る そのままいけそう
うまくいく3 25
応用できそう3 26 fields @timestamp | stats count(*) as count_per_hour by
bin(5min) | sort count_per_hour desc
感想など 27
感想など - SQLからLogs Insightsのクエリに変換する作戦はけっこう有効。 - ただし、多少のゴニョり力は必要(読めるけどパッと書けないくらいのレベル感)。 - 何回かゴニョっていると、Logs Insightsのクエリにも結局慣れる。 -
parseされていると便利。 - AWSサービスのログとかはjsonだったりするのでそれらには使いやすそう。 - Athenaは偉大。 - データカタログにスキーマ情報入っているのはやはり便利。 - クエリは保存できるので結局よく使うクエリは保存しておく等の対応が吉。 - 普段の運用で使えるかどうかはここがキモ。 28
裏話 - 今回の検証で使用したサンプルログはEC2でapache-loggen(rubyのgem)にて作成して CloudWatchAgentからCloudWatch Logsに転送しました。(これが一番大変だった) - apache-loggen → https://github.com/tamtam180/apache_log_gen [ぼやき]
- S3からCloudWatch Logsにインポートできたりすると検証楽になるのに。 - aws-cliで入れる手(put-log-events)もあったけどそれも手間そうだった。 - Athenaはそのあたりの検証も楽でやはり偉大。 - 普段使いの検索 → Cloudwatch Logs Insights - オブザーバビリティ寄りの分析 → Cloudwatch Logs Insights or Athena - BI寄りの分析 → Athena 29
ありがとうございました