Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Integrating Datadog in .NET Project using Serilog

2025年10月01日に「Dev.to」が公開したITニュース「Integrating Datadog in .NET Project using Serilog」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

.NETプロジェクトで分散アプリケーションの障害検出や性能監視を行うため、人気監視ツールDatadogとロギングライブラリSerilogを連携させる方法を解説する。Datadogアカウント作成からAPIキー取得、Serilog設定、ログ出力、Datadogでの確認まで、具体的な手順をステップバイステップで説明する。

ITニュース解説

現代のソフトウェア開発において、アプリケーションの監視は非常に重要な要素となっている。特にクラウド環境で動作するアプリケーションや、複数の小さなサービスが連携して動くマイクロサービスアーキテクチャでは、その重要性が一層高まる。これらのシステムでは、処理が複数のサーバーやコンポーネントに分散しているため、どこで問題が発生しているのか、パフォーマンスが低下している原因は何なのかといったことを特定するのが難しい。アプリケーションが正常に動作し、ユーザーに安定したサービスを提供し続けるためには、リアルタイムでの監視と分析が不可欠となる。

このような課題を解決するための強力なツールの一つがDatadogである。Datadogは、クラウドベースの監視およびセキュリティプラットフォームだ。アプリケーションの動作状況、インフラストラクチャの状態、出力されるログ、そしてセキュリティに関する情報を、分散システム全体からリアルタイムで収集し、可視化する「オブザーバビリティ(可観測性)」を提供する。Datadogは、Amazon Web Services (AWS)やGoogle Cloud Platform (GCP)といった主要なクラウドプロバイダー、コンテナ技術(DockerやKubernetesなど)、各種データベース、さらには様々なサードパーティサービスと連携できる。これにより、開発チームや運用チームは、システム全体のパフォーマンスを追跡し、発生した問題を迅速にトラブルシューティングし、システム全体の信頼性を確保できるようになる。

この記事では、.NETプロジェクトでDatadogを統合し、アプリケーションのログをDatadogに送信する方法を解説する。ここで使用するのは、.NETアプリケーションで広く使われているロギングライブラリであるSerilogだ。Serilogは、ログメッセージを構造化された形式で出力できるため、大量のログの中から必要な情報を効率的に検索・分析するのに役立つ。また、さまざまな出力先(「シンク」と呼ばれる)にログを送信できる柔軟性も持っている。Datadogと連携させるには、SerilogのDatadog専用シンクを利用する。

SerilogとDatadogを.NETプロジェクトに設定する手順は以下の通りだ。

まず、プロジェクトにいくつかのNuGetパッケージを追加する必要がある。NuGetパッケージとは、.NETプロジェクトで再利用可能なコードをまとめたもので、必要な機能を簡単に追加できる仕組みだ。具体的には、「Serilog.AspNetCore」と「Serilog.Sinks.Datadog.Logs」という二つのパッケージをインストールする。「Serilog.AspNetCore」は、ASP.NET CoreアプリケーションでSerilogをロギングフレームワークとして使うための基本的な機能を提供する。「Serilog.Sinks.Datadog.Logs」は、Serilogが出力したログイベントをDatadogに直接送信するための専用シンクである。このシンクは、デフォルトでHTTPSプロトコルを使ってログを安全にDatadogに送信する。

次に、Datadog側の準備を進める。 最初に、Datadogのウェブサイトでアカウントを登録する。登録後、自分のDatadogサイトのリージョン(地域)を確認しておく必要がある。例えば、記事の例では「US5 (us5.datadoghq.com)」とあるように、利用するDatadogサーバーの所在地が重要になる。この情報は後で設定ファイルに記述する。 次に、DatadogポータルからAPIキーを取得する。APIキーは、あなたのアプリケーションがDatadogサービスにログを送信する際の認証情報として機能する。このキーを使って、Datadogは送信されてきたログが正規のアプリケーションからのものであることを確認する。 さらに、Datadogがサポートするロギングエンドポイントを確認する。これはDatadogのドキュメントに記載されており、先ほど確認したDatadogサイトのリージョンに基づいた、ログ送信先のURLとなる。このURLも設定ファイルに必要だ。

これらの情報が準備できたら、アプリケーションの設定ファイルである「appsettings.json」にSerilogとDatadogに関する設定を記述する。appsettings.jsonは、データベース接続文字列やAPIキーなど、アプリケーションが実行時に必要とする設定情報を格納するためのファイルだ。このファイルには、Serilogがどのレベル(情報、警告、エラーなど)のログを出力するか、ログをどこに出力するか(例えば、コンソール画面とDatadogの両方)、どのサービスからのログであるかを示すプロパティ、そしてログに追加情報(「エンリッチ」と呼ばれる)を付与するための設定を記述する。APIキーやロギングエンドポイントのURLもここに設定する。

設定ファイルが記述できたら、アプリケーションの起動時にSerilogを初期化する。これは通常、「Program.cs」ファイルで行われる。Program.csに記述するコードは、appsettings.jsonで定義したSerilogとDatadogの設定を読み込み、Serilogをアプリケーションのロギングプロバイダーとして登録する役割を果たす。これにより、アプリケーション全体でSerilogを使ったロギングが可能になる。

Serilogが初期化されたら、アプリケーションのコントローラーやサービスなどのクラスで実際にログを出力できるようになる。ログを出力したいクラスに「ILogger」インターフェースをインジェクト(注入)し、そのILoggerインスタンスを使ってログメッセージを記録する。例えば、情報レベルのログ、警告レベルのログ、エラーレベルのログなど、重要度に応じたログを適切に出力できる。アプリケーションが実行され、これらのログ出力コードが呼び出されると、Serilogは設定に従ってログを処理し、指定されたシンク(この場合はDatadog)にログを送信する。

最後に、アプリケーションから送信されたログがDatadogで正しく表示されているかを確認する。Datadogポータルにアクセスし、「Logs」セクションの「Explorer」に移動すると、アプリケーションから送られてきたログが一覧表示される。ここで、ログの内容、タイムスタンプ、ログレベル、そしてSerilogによって付与された構造化された情報(サービス名など)を確認できる。これにより、アプリケーションの動作状況をリアルタイムで把握し、問題発生時には迅速な原因特定と対処が可能となる。

このように、SerilogとDatadogを組み合わせることで、現代の複雑なアプリケーションにおけるロギングと監視の仕組みを効率的かつ堅牢に構築できる。これは、アプリケーションの信頼性とパフォーマンスを維持するために不可欠なプロセスだ。

関連コンテンツ

関連IT用語