DASH 2024 で発表された Datadog の最新機能: Observe 編

## はじめに
こんにちは、Datadog Japan で Sales Engineer をしている [**AoTo**](https://qiita.com/AoTo0330) です。

この投稿は **[<font color="#6495ED">AoTo Advent Calendar 2024</font>](https://qiita.com/advent-calendar/2024/aoto) 5日目**の記事です。

みなさん、Datadog の公式年次イベントである [**DASH**](https://www.dashcon.io/) はご存知でしょうか？DASH は「**Observe・Secure・Act**」というキーワード、Datadog の本社が置かれるニューヨークで開催されるイベントです。2024年は**6月25-26**日に開催され、2025年は**6月10-11日**のでの**開催が決定**しています。

ロードマップや最新機能を発表する他に、各テーマに沿ったワークショップや事例を聞けるブレイクアウトセッション、パートナーソリューションを知れるエキスポや日本人向けの Japan Track など様々なコンテンツがあります🐶

今回は、「**DASH 2024**」で紹介された新機能をこれまでの Datadog の機能と比較しながら解説します。**Datadog 内部の視点**から、公式ドキュメントには記載のない、以前までの機能と変化も解説するため Datadog/Observability 好きの方は是非最後までご覧ください！

https://www.datadoghq.com/blog/dash-2024-new-feature-roundup-keynote/

こちらの内容は **Observe** のキーワードに沿った新機能に焦点を当てた**前編**となります。**Secure・Act** は以下の記事をご覧ください。

https://qiita.com/AoTo0330/items/bafb7a2c36bc530df9b6

https://qiita.com/AoTo0330/items/e0ae92644497561ee357

:::note warn
2024年12月 時点での情報を元に記載しています。
最新の情報は [Datadog の公式ドキュメント](https://docs.datadoghq.com)をご参照ください。
:::

## LLM Observability
### 概要
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2363567/aa9da38f-3073-619e-d09c-9ebffccd2f6e.png)
[**Datadog LLM Observability**](https://docs.datadoghq.com/ja/llm_observability/) はチャットボットをはじめとする LLM アプリケーションのパフォーマンス・トラブルシュート・評価・セキュリティ監視を実現できる**独立した Datadog の機能**です。発表時から **GA(一般公開)** となり、その後も対応する SDK やアプリケーション言語を増やしています。

現在は **Python, JavaScript** に対応しており、Python の場合 **OpenAI, Azure OpenAI, LangChain, Amazon Bedrock, Anthoropic, Google Gemini** 呼び出す標準の SDK を**自動計装**しトレースを記録します。**LLM Observability SDK** は **Datadog APM SDK(Tracer)** に含まれており、APM と合わせて利用することも独立して有効化できます。

https://www.datadoghq.com/ja/blog/datadog-llm-observability/

**LLM Observability** は、AI Agent によるツールやワークフローの実行、LLM モデルの呼び出しや RAG の Embedding(埋め込み)・Retrival(取り出し)などの情報を[**スパン**](https://docs.datadoghq.com/ja/llm_observability/terms/#spans)として取得し、一連の処理のパフォーマンスを[**トレース**](https://docs.datadoghq.com/ja/llm_observability/terms/#traces)として表示する機能です。その過程でモデルの呼び出しコストとしての**トークン量**や呼び出しの**エラー**、**パフォーマンス**を時系列・モデル毎に比較できます。

**LLM Observability** の最大の特徴は、LLM の品質・安全性の管理と分析を行うための「**LLM-as-a-Judge**」の機能です。これは、取得した LLM アプリの入力・出力を Datadog が用意する LLM(OpenAI) により評価できます。

現在提供されている評価項目は以下の6つです。
 - Failure to Answer(応答の失敗)
 - Language Mismatch(言語の不一致)
 - Prompt Injection(プロンプトインジェクション)
 - Input/Output Sentiment(入出力のネガティブ感情検出)
 - Topic Relevancy(トピック関連度)
 - Input/Output Toxicity(入出力の攻撃性)

加えて、**LLM Observability** は [**Sensitive Data Scanner(SDS)**](https://docs.datadoghq.com/ja/sensitive_data_scanner/) と統合されており、**SDS** を有効化することで自動的に[ライブラリルール](https://docs.datadoghq.com/ja/sensitive_data_scanner/library_rules/)の内容に合わせて PII(個人識別情報) のマスキングができます。

https://www.datadoghq.com/blog/monitor-llm-prompt-injection-attacks/

日本でも既に多くの方ににお試しいただいているので、是非ご参照ください。
 - 『[Datadog LLM Observabilityを試験導入しました](https://zenn.dev/ivry/articles/652f10a1c0d93b)』
 - 『[Datadog LLM Observabilityやってみた（注意点あり）](https://qiita.com/moritalous/items/442d97a10cdab71ed342)』
 - 『[生成 AI アプリで収集するべきテレメトリは何か](https://zenn.dev/kimitsu/articles/gen-ai-telemetry)』
 - 『[Datadog LLM Observability で custom evaluation を使ってみた](https://blog.chaspy.me/entry/2024/12/10/200000)』

### 以前までの機能
 **DASH 2023** 時点でも　**Datadog LLM Observability** は **Private beta(Preview)** として発表されていました。しかし、2023年時点では概念として LLM Observability が標準化されておらず、上記で説明したような**トレース**の機能は含まれていませんでした。

[**旧 LLM Observability**](https://www.datadoghq.com/ja/blog/dash-2023-new-feature-roundup/#llm-observability) は主に LLM モデルと品質の評価の機能が用意され、<INS>リクエストのパフォーマンス・ドリフトの検知</INS>やこれらに影響を与える<INS>特定のプロンプトの検出</INS>の機能が発表されていました。現在はこれらの機能を引き継ぎ、入出力の**クラスター分析機能**が提供されています。

**LLM Observability** が現在の形となったのは、**[LangFuse](https://langfuse.com/), [LangSmith](https://www.langchain.com/langsmith), [OpenLLMetry](https://www.traceloop.com/docs/openllmetry/introduction)** などの OSS が登場し、LLM 監視の共通方式が確立されつつある今年からです。今後も LLM Observability はその概念の形を変えていくことが推測されますが、Datadog もその機能を拡充していくことにご期待ください🐶

## Log Workspaces
### 概要
[**Datadog Log Workspaces**](https://docs.datadoghq.com/ja/logs/workspaces/#add-a-column-to-your-workspace) は Datadog Log Management のログ分析を強化するために、複数のログソースの組み合わせ・変換・複雑なクエリの実行・可視化を実現する機能です。発表時から現在まで **Preview(Private beta)** として提供され、リクエストに応じて機能が利用できます。

**Log Workspace** はログの分析・変換・可視化のために、複数の[セル](https://docs.datadoghq.com/ja/logs/workspaces/#analyze-transform-and-visualize-your-logs)を用いてそれぞれの操作を定義します。[データソースセル](https://docs.datadoghq.com/ja/logs/workspaces/#data-source-cell)は Log Management に保存されているログと [Reference table](https://docs.datadoghq.com/ja/integrations/guide/reference-tables/?)を対象にできます。他にも[分析セル](https://docs.datadoghq.com/ja/logs/workspaces/#analysis-cell)・[可視化セル](https://docs.datadoghq.com/ja/logs/workspaces/#visualization-cell)・[トランザクションセル](https://docs.datadoghq.com/ja/logs/workspaces/#transformation-cell)・[テキストセル](https://docs.datadoghq.com/ja/logs/workspaces/#text-cell)などで操作を定義できます。

https://www.datadoghq.com/ja/blog/log-workspaces/

### 以前までの機能
[**Datadog Log Management**](https://docs.datadoghq.com/ja/logs/) の最大の特徴は**クエリレス**の検索性と可視性です。この特徴はバックエンドである [**Husky**](https://www.datadoghq.com/ja/blog/engineering/introducing-husky/) によって実現されており、ライター・リーダー・コンパクターなどの複数の役割に分解されたストレージシステムにより、大規模データに対する高速な検索や柔軟なデータ保持を可能にします。こうした特徴のトレードオフとして、<INS>複雑なクエリを利用した分析の要件</INS>に応えられない場合がありました。

**Log Workspace** の提供前は、**Log Management** の **Explorer** 機能が拡充され、[ログ検索構文](https://docs.datadoghq.com/ja/logs/explorer/search_syntax/)に加えて[高度な検索](https://docs.datadoghq.com/ja/logs/explorer/advanced_search)機能が増やされていました。高度な機能では、Log Explorer 上でサブクエリの実行や Reference Table による可視化ができます。

## Datadog Agent with Embedded OpenTelemetry Collector
### 概要
![DD-Agent-emb-OTel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2363567/97c694d5-b9cd-4478-6612-b7a1ed60d7c0.png)

[**Datadog Agent with Embedded OpenTelemetry Collector**](https://www.datadoghq.com/product-preview/agent-with-embedded-opentelemetry-collector/) は Datadog Agent に OpenTelemetry Collector をそのまま埋め込み実行するエージェントのアップデートです。発表から現在まで **Preview(Private beta)** として提供され、リクエストに応じて機能が利用できます。

OTel Col が Datadog Agent 内に直接実装されたことで、OTel エコシステムの一部である OTel Col の恩恵と Datadog Agent の恩恵を同時に受けることができます。具体的には、Datadog Agent 内に用意されている [`collector-contrib`](https://github.com/DataDog/datadog-agent/blob/main/comp/otelcol/collector-contrib/impl/manifest.yaml) に含まれる **Receiver, Processor, Exporter** を利用できるのと同時に、Datadog Agent が提供する[**統合サービスタグ付け**](https://docs.datadoghq.com/ja/getting_started/tagging/unified_service_tagging)や [**Fleet Automation**](https://docs.datadoghq.com/ja/agent/fleet_automation) の機能を活用できます。

さらに、Datadog が提供する [Agent のセキュリティスキャン](https://docs.datadoghq.com/ja/data_security/agent/)に OTel Col を含めることで、OTel Col に**共通脆弱性識別子(CVE)** が発見されるとコミュニティのリリースと共に迅速に Datadog がそのアップデートを提供します。

https://www.datadoghq.com/ja/blog/datadog-agent-with-otel-collector/

### 以前までの機能
![DD-OTel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2363567/4dbb30cb-ddee-eda6-04f6-cc216ee22003.png)

**Agent with Embedded OTel Col** の提供前は、Datadog Agent に組み込みの OTLP 専用機能が実装されていました。これは [`otlp`](https://github.com/DataDog/datadog-agent/tree/main/comp/otelcol/otlp) に含まれる内容で、Datadog の設定ファイルである [`datadog.yaml`](https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml) 内の [`otlp_config`](https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml#L4238-L4479) で制御されていました。

その他の方法として、[**Datadog Exporter**](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/exporter/datadogexporter/README.md) を含む OTel Col をビルドし独自のコレクターを運用し Datadog をバックエンドとして指定する方式も用意されています。この方式では、<INS>**Datadog Exporter** のみが Datadog のサポートの対象</INS>となるため、<INS>コレクター全体の問題の対処を自ら行う必要がある</INS>というリスクを抱えていました。

## Live Debugging
### 概要
[**Live Debugger/Debugging**](https://www.datadoghq.com/product-preview/live-debugger/) は **Datadog APM** の機能の一部である **Error Tracking for APM** と **IDE インテグレーション**の組み合わせによって提供される機能です。発表から現在まで **Preview(Private beta)** として提供され、リクエストに応じて機能が利用できます。

**Live Debugger** は **Preview 機能**である [**Error Tracking Exception Replay**](https://docs.datadoghq.com/ja/error_tracking/backend/exception_replay/#setup) を有効化することで利用できます。**Exception Replay** によって取得された例外スロー時点のスタックフレームのローカル変数値などを、[**IDE インテグレーション**](https://docs.datadoghq.com/ja/developers/ide_plugins/) である [**Datadog Extension for VSCode**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/) などで利用できます。

これにより、エラーの発生条件を理解しローカルで本番環境のバグを再現することができ、再発防止に向けて実用的な改修を行うことができます。また、Datadog は AI を使用して関連する上流および下流サービスすべてをモック化し、統合テストを作成する機能を兼ね備えます。

https://www.datadoghq.com/ja/blog/live-debugging/

### 以前までの機能
**Live Debugger** の提供前は、Datadog は [**IDE インテグレーション**](https://docs.datadoghq.com/ja/developers/ide_plugins/)として複数の IDE とのインテグレーションを拡充していました。VSCode に代表される IDE インテグレーションは、ローカル環境での分析や洞察を深めたり、本番環境のコンテキストを確認しながらのコードの改修に利用できる機能が用意されています。


パフォーマンス・セキュリティ・信頼性を確認できる [**Code Insights**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/#code-insights) 機能、ローカル環境で HTTP/ブラウザテストを実行できる [**Synthetics Test**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/#synthetic-tests)、ソースコードファイルから関連する Datadog Log Managent 上のログに遷移できる [**Logs Navigation**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/#logs-navigation)、Datadog 上で表示される行番号と現在作業中のコードの行番号の称号をする [**Code Delta**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/#code-delta)、Datadog が事前定義したルールをもとにコードの静的解析ができる[**Static Analysis**](https://docs.datadoghq.com/ja/developers/ide_plugins/vscode/#static-analysis)が提供されています。

この機能の一部として、パフォーマンス・セキュリティ観点での統合機能は多く提供されていましたが、エラーやバグに関する洞察を得られるものはなく、Error Tracking の情報だけではローカル環境でのバグの再現の難しいケースがありました。

## Product Analytics
### 概要
[**Datadog Product Analytics**](https://docs.datadoghq.com/ja/product_analytics) は Datadog RUM SDK によって取得されるフロントエンド情報から、エンジニアリングに関わらないユーザーの行動・傾向・属性分析を行うために分離される独立したプラットフォームです。発表時から現在まで **Preview(Private beta)** で提供され、リクエストに応じて機能が利用できます。

Product Analytics はエンジニアリング組織以外のビジネス組織(マーケティング・人事・ブランディング)が利用するための Datadog プラットフォームから分離された直感的な UI/UX を提供します。


主な機能としては、サイト上のユーザーのスティッキネスを可視化する [**User Retention**](https://docs.datadoghq.com/ja/product_analytics/user_retention)、Sankey/Funnel ビューでユーザージャーニーを追跡する [**Journey**](https://docs.datadoghq.com/ja/product_analytics/journeys)、ページ上の各要素の利用頻度を測定する [**Heatmap**](https://docs.datadoghq.com/ja/product_analytics/heatmaps) などがあります。

https://www.datadoghq.com/ja/blog/datadog-product-analytics/

### 以前までの機能
**Product Analytics** の提供前は、**Datadog RUM** 内にこれらの機能は統合されていました。プロダクトの開発に携わらない製品分析チームのような役割をもつユーザーにとって、RUM のビューはシステムに関連する監視情報が複雑に示され、Datadog の統合プラットフォームも機能が多く目的のページに辿り着くのが困難な場合がありました。

## Lambda Remote Instrumentation
### 概要
[**Lambda Remote Instrumentation**](https://www.datadoghq.com/product-preview/lambda-remote-instrumentation/) はその名の通り、AWS Lambda の監視を行うためのライブラリ・拡張機能の実装を Datadog の UI からリモートで実行できる機能です。発表時から現在まで **Preview(Private beta)** で提供され、リクエストに応じて機能が利用できます。

**AWS Lambda** に対する [**Datadog Serverless Monitoring**](https://docs.datadoghq.com/ja/serverless) の実装はいくつかの方法が提供されていますが、IaC や Datadog CLI による直接的な組み込み作業を行うことなく、Datadog UI 上で監視対象へ監視の実装・削除が可能となります。

https://www.datadoghq.com/ja/blog/remote-bulk-lambda-instrumentation/

### 以前までの機能
**Lambda Remote Instrumentation** 提供前は、複数ある Lambda への監視の実装方法は、サーバレス環境を中心とする環境を持つユーザーにとってかなりコストのかかる作業でした。本実装方法により、必要に応じた Lambda への監視の実装・削除が素早く簡単に行え、迅速に APM, Enhanced Metrics, Logs などの監視情報の収集と可視化を制御できます。

## おわりに
本来は6月に公開を予定していた本記事ですが、執筆に時間を取れず公開が12月に遅れてしまいました。

Datadog は製品開発に積極的に投資しており、新機能の追加だけではなくプロダクト間の連携や UI/UX・実装方法の改善などさまざまな変更が日々行われています。Datadog の年次イベントである DASH では、Datadog が自信を持ってユーザーに提供できる目玉機能の発表が行われ、業界にも大きなインパクトをもたらします。

皆様も是非来年 DASH 2025 に参加いただき、オブザーバビリティの最前線を体感してみてください🐶