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
Datadog APMで測定するアプリケーションパフォーマンス
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Hiroyuki Shigeta
February 15, 2024
Technology
0
290
Datadog APMで測定するアプリケーションパフォーマンス
2024.02.15 第3木曜LT会 #2 発表資料です。
https://metaps.connpass.com/event/307900/
Hiroyuki Shigeta
February 15, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
AI時代にエンジニアはどう成長すれば良いのか?
recruitengineers
PRO
1
120
Devinを導入したら予想外の人たちに好評だった
tomuro
0
860
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
14k
Introduction to Bill One Development Engineer
sansan33
PRO
0
380
Ultra Ethernet (UEC) v1.0 仕様概説
markunet
3
140
20260305_【白金鉱業】分析者が地理情報を武器にするための軽量なアドホック分析環境
yucho147
0
130
型を書かないRuby開発への挑戦
riseshia
0
160
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
95k
組織のSREを推進するためのPlatform EngineeringとEKS / Platform Engineering and EKS to drive SRE in your organization
chmikata
0
180
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
0
980
LINE Messengerの次世代ストレージ選定
lycorptech_jp
PRO
19
7.2k
Exadata Fleet Update
oracle4engineer
PRO
0
1.3k
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
0
260
WENDY [Excerpt]
tessaabrams
9
36k
30 Presentation Tips
portentint
PRO
1
250
Building Applications with DynamoDB
mza
96
6.9k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
140
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4k
Designing Experiences People Love
moore
143
24k
Prompt Engineering for Job Search
mfonobong
0
180
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
370
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
190
Transcript
Datadog APMで測定するアプリケー ションパフォーマンス 株式会社メタップスペイメント 茂田 裕行
自己紹介 名前 茂田 裕行 経歴 • 2018年に株式会社メタップスペイメント入社 • それ以前はSIerやスタートアップでサービスやアプリの開発、保守 普段使っている言語 Go,
Python
『給与即時払いサービスCRIA』のサービス構成 • バックエンドAPI ◦ Go ◦ AWS(ECS Fargate, Aurora, SQS,
S3, SNS, Lambda) • アプリ ◦ React Native • ブラウザ版、管理画面 ◦ React • マイクロサービス ◦ 送金 ◦ データの一括登録
運用で困っていること • インフラで発生するインシデント(メールが送られない、画面表示が遅いなど)が発生しても、即座の原因 特定が困難 • イベント(データ登録や更新)ごとの頻度や利用時間帯がつかめない • 時系列的に記録されたログでは、他に来るリクエストの情報が混じったりして、特定の関心のあるリクエス トを追うのが難しい •
処理が複数のサービスに分散されていると、関心のあるの処理を追いづらい
Datadog APMとは Datadog社が提供する、アプリケーションのパフォーマンスをリアルタイムで監視し、分析するためのツール (SaaS) • ユーザーのリクエストがシステムを通過するパスを追跡し、各モジュールでの処理時間を把握できる • アプリケーションのパフォーマンスを監視し、異常が発生した場合に検知 • 詳細なレポーティング
• 分散システムのサポート
実際に組み込んでみた // アプリケーション開始時 tracer.Start(tracer.WithServiceName(serviceName)) defer tracer.Stop() // データベース接続時 sqltrace.Register("mysql", &mysql.MySQLDriver{},
sqltrace.WithServiceName(serviceName)) db, err := sqltrace.Open("mysql", "datadog_sample:password@tcp(db:3306)/db_test", sqltrace.WithServiceName(serviceName)) if err != nil { logger.Error("failed to connect mysql", slog.Any("error", err)) return } defer db.Close() それ以外にも、datadog-agentの設定でAPM有効化を行う必要がある ソースコードでライブラリを組み込む必要がある( Goの場合)
適用後に見られる画面 リクエスト数、エラー数、レイテンシ、処理内訳が確認できた サマリ
適用後に見られる画面 トレース 適切に設定すれば、アプリケーションでかかった時間だけでなく、外部システム( DBやマイクロサービス) の呼び出し時間や処理内容もわかる。 メソッドごとの処理時間も、スパン(処理単位)を設定すればわかる。
適用後に見られる画面 ログ 適切に設定(span_idとtrace_idをログに出力しdatadogへ送信)すれば、リクエストごとに、紐づいたログ を参照できる
今後の課題 • 本番環境への全体的な適用(ソースコード修正が必要) ◦ Goだとcontext.Contextというパラメータに、 APM設定用の情報を設定し、リクエストを受け付ける処理から DB やAWS操作処理まで引き回す必要がある ◦ 各サービスで修正する必要がある
• 各イベントの時間帯ごとの発生頻度を出す方法は調査中