26 Feb 2025 - Hiroi Sakka
今回もDatadog社の綺麗な Office で開催させて頂きました。 Datadog社のご厚意でお茶等のフリードリンクと ミートアップ終わりにPizza🍕もご用意頂きました。
Datadog Taiji 様、いつもご調整有難う御座います!
Datadogの新機能「ワークフローオートメーション」について紹介しました。AWS環境での定型作業(IAMユーザー作成、セキュリティグループ変更、EC2サイズ変更など)に伴う手間、オペレーションミスリスク、時間浪費の課題に対応するものです。この機能を使うと、AWSコンソールに入らずにDatadog上で事前定義されたフローで作業を進められ、操作者のスキルレベルに関係なく安全に作業を自動化でき、業務効率の向上が可能になります。UIで簡単に設定でき、さまざまなテクノロジースタックと連携できるサービスです。
監視ツールであるDatadogが、本来の監視業務だけでなくAWSの運用作業も含めたワークフロー自動化にまで機能拡張している点が興味深いです。UIでポチポチするだけで自動化フローが作成できる手軽さが魅力的で、「ブループリント」と呼ばれるテンプレートが多数用意されていることで初心者でも簡単に利用できます。Datadogが単なる監視ツールから総合的なプラットフォームへと進化していく方向性が見て取れる点も面白いです。
Datadogの「Software Catalog - Endpoints」機能を活用して、システムモニタリングを改善した事例が紹介されています。 主に以下の内容が含まれています:
発表者は、特定機能のエラーレートと応答時間の監視、およびカナリアリリース時のバージョン別監視について、Datadogの活用方法を紹介しました。背景として、New RelicからDatadogへの移行があります。監視実現方法として、DatadogログスでALBアクセスログを使う方法と、Datadog APMを活用する方法を検討しました。APMでは「トレースメトリックス」と「Istioメトリックス」の2種類を比較検討し、それぞれの特徴を解説。Datadog APM に対してクエリするとサンプリングデータに基づくため少量リクエスト時に精度が落ちる課題があることや、Istioメトリックスを使ったカナリアリリースの識別方法などを紹介しました。結論として、目的に応じて二つのメトリックスを使い分けることを推奨しています。
Datadogの一般的なログやAPM機能を超えて、サービスメッシュのIstioと組み合わせることで高精度の監視が実現できる点が興味深いです。特に、サンプリングによるデータ歪みという監視における本質的な課題とその解決策、Kubernetesのデプロイメント情報を活用したカナリアリリースの識別方法など、実践的な知見が示されています。また、「トレースメトリックス」では特定パスやコントローラーレベルの細かい監視、「Istioメトリックス」では網羅的で高精度な監視と、それぞれの強みを活かした使い分けの考え方も参考になります。
Go言語の「PGO(Profile-Guided Optimization)」とDatadogのContinuous Profilerを組み合わせた「Datadog PGO」ツールの活用方法について紹介しました。PGOはGo 1.21以降でサポートされている機能で、アプリケーション実行時のプロファイル情報(CPU、メモリなど)を収集し、その情報をコンパイル時に活用することでCPUパフォーマンスを最適化できます。本番環境のプロファイルデータ取得の難しさをDatadogのContinuous Profilerで解決し、GitHub Actionsを使用して自動的にPGO対応バイナリを生成するフローを実装した事例を共有。検証では、CPUコア使用率が228mコアから171mコアへと約25%削減されました。公式によれば最大14%のCPU使用率削減効果があり、大規模サービスではタスク数削減やインスタンスダウンサイジングが期待できます。
最も興味深いのは、単なる監視ツールとしてのDatadogの枠を超え、アプリケーション最適化に直接貢献する使い方が示された点です。特に、わずか1行のコードをGitHub Actionsに追加するだけでPGOファイルが自動生成され、ビルドプロセスに組み込まれる手軽さが魅力的です。また、本番環境の実際の負荷パターンに基づいた最適化が可能になるため、開発環境とは異なる本番特有のパフォーマンス課題に対応できる点も画期的です。CPU使用率25%削減という具体的な成果が、実際のコスト削減やリソース最適化にどう繋がるかを示している点も実用的です。
Datadogの新機能「オンコール電話機能」について設定方法とテスト結果を紹介しました。これまでは電話連絡機能がなく、PagerDutyなどの外部サービスと連携する必要がありましたが、Datadog内で電話連絡が可能になりました。現在はパブリックベータ版として提供されています。設定はサービス管理メニューのオンコールセクションから行い、チーム作成、アラート設定、連絡ルール、スケジュール設定をウィザード形式で進めます。輪番制や連絡頻度なども細かく設定可能です。テスト結果では、アラート発生から1分以内にアメリカから女性の英語音声で電話がかかってきました。ただし、アラート内容の読み上げはなく通知のみでした。月額費用は約4,500円と推測しています。
従来のDatadogが提供するメールやSlackなどの通知手段に加えて、電話連絡というクリティカルな通知手段が追加されたことで、オブザーバビリティツールとしての完成度が高まっている点が興味深いです。特に設定の簡便さが強調されており、ウィザード形式で直感的に設定できることがわかります。また、実際のテスト結果として、理想とのギャップ(アラート内容が読み上げられない点など)も正直に共有されており、実用性と改善点の両面が明らかになっています。さらに、Datadogモバイルアプリとの連携で、電話通知を受けた後の対応ワークフローまで考慮されている点も魅力的です。
Datadogのデータベースモニタリング(DBM)機能について紹介しました。DBMはデータベースの詳細情報を可視化する機能で、現在PostgreSQL、MySQL、SQL Server、Oracle、MariaDB、Amazon RDSなど主要データベースをサポートしています。料金は1ホストあたり月額84ドルです。
発表では特に優れている3つの機能が紹介されました:
DBM機能の最も面白い点は、データベースの問題特定から解決までのワークフローを大幅に効率化している点です。特にウェイトグループ分析は、従来であればDBAが複数のクエリを駆使して調査する必要があった内容を、視覚的に分かりやすく表示してくれます。また、実行計画の可視化が非常に洗練されており、コストの高い部分が色分けされることで、どこをチューニングすべきか直感的に把握できます。
さらに、APMのトレースとDBMを紐付ける機能により、アプリケーションからデータベースまでのエンドツーエンドの問題追跡が可能になり、開発者とDBAの協業がスムーズになる点も興味深いです。カスタムクエリ機能を使ったビジネスKPIの可視化は、技術指標とビジネス指標の相関を同一ダッシュボードで確認できる点が画期的です。
DatadogのAPM(Application Performance Monitoring)を導入し、APIのレイテンシーを大幅に改善した事例を紹介しました。同社では以前Datadog APMの導入を試みましたが、本番環境でのサーバーダウンにより断念した経緯がありました。今回は社内のAPIパフォーマンスの現状把握と改善を目的として再チャレンジしました。
導入対象はECS Fargate上で動作するRuby on Railsアプリケーションでした。APMを導入した結果、特に「ヒストリーズAPI」のレイテンシーが高いことが判明し、トレースのフレームグラフ分析を通じて問題箇所を特定。その結果、あるAPIのレスポンスタイムを7秒から54ミリ秒へと約1/130に短縮することに成功しました。
現在は日次でダッシュボードを確認し、合計処理時間、リクエスト数、P99レイテンシーなどの指標から問題のあるAPIを特定し、定期的にリファクタリングを実施しています。今後はB2BサービスのAPIや、時折スパイクが発生するToCサービスの改善にも取り組む予定です。
最も印象的なのは、数値で明確に示された劇的な改善結果です。7秒から54ミリ秒という約1/130の改善は、ユーザー体験に直結する成果であり、APMの価値を端的に表しています。また、過去にサーバーダウンで導入を断念した経験からの再チャレンジという経緯がリアルで、多くの組織が直面する「新ツール導入への不安」という課題に対して勇気づける事例となっています。
さらに、単に問題を特定するだけでなく、継続的な改善プロセスとして日次でのモニタリングとリファクタリングサイクルを確立し、開発フローに組み込んでいる点も実践的です。「トータルタイム×リクエスト数×P99」という指標の組み合わせで問題APIを特定するという具体的な方法論も、すぐに活用できる知見として価値があります。
Datadogが2022年11月末にリリースした「Orchestrion」というGo言語向け自動計装ツールと、エラートラッキングの統合について解説しました。Orchestrionはコンパイル時にGoアプリケーションを計装し、ルーターライブラリなどにDD-Traceのミドルウェアを自動的に挿入するツールです。内部的にはテンプレートを使用して実装され、現状はDD-Traceライブラリがサポートするメジャーなライブラリのみに対応しています。使い方はコメントによるアノテーションでタグ付けやカスタムスパンの生成が可能で、明示指定しない場合は実行時のバイナリ名がサービス名となります。
しかし、Orchestrionとエラートラッキングを組み合わせる際には課題があります。Goの実装では、エラートラッキングに必要なアトリビュート(エラータイプ、メッセージ、スタック)が自動付与されず、手動でルートスパンにエラー情報を埋め込む必要があります。さらに、オーケストリオンはライブラリの中で使われている標準パッケージまで計装してしまうため、二重トレーシングの問題が発生します。
最も興味深いのは、最新の自動計装技術が抱える実装上の課題と実務的な解決策が正直に共有されている点です。特に、オーケストリオンがコンパイル時にコールグラフをたどって標準パッケージまで計装することで、意図せず二重トレースが発生するという技術的課題は、モダンなツールを使う上での「落とし穴」を明らかにしています。
また、サービス名を指定するとルートスパン以外のエラー情報がトラッキングされなくなるという具体的な問題と、サービスオーバーライドを使ってバイナリ名でサービス名を指定するという回避策も実践的です。発表者がDatadogサポートに問題を報告し、二重トレース防止機能の検討を約束してもらったというコミュニケーション事例も、ツール開発者とユーザーの協力関係を示していて興味深いです。
前回評判がよかったので今回もSli.doのQuiz機能で「Datadog知識の早押しクイズ#2」を実施しました。正確性なのか早押しなのかどちらの戦術で挑むか。上位10のランキングです。
クイズのランキング
今回お集まりいただいた参加者、発表者の皆様、Datadog の皆様、Taiji さんいつもありがとうございます!
次回は 5 月開催予定です。場所も変わるかもしれません。
集合写真
All Photos by kameneko