Datadog Agent についてのメモを。
Contents
Datadog Agent のリポジトリ
Dagadog Agent に関連する基本的なリポジトリとしては次の 3 種類があるのではないでしょうか。
- datadog-agent
- dd-agent / docker-dd-agent は、Datadog Agent 5 のリポジトリとなり最新は上記のリポジトリとなります。
- integrations-core
- integrations-extras
Datadog Agent については datadog-agent から確認することができます。
Datadog Agent はインストールすると、デフォルトで様々なインテグレーションがインストールされていますが、初期状態でインストールされているインテグレーションは integrations-core に含まれているものがベースとなっているようです。
「agent integration freeze」を実行することでインストールされているインテグレーションを確認することができますが、初期状態でインストールされているのが integrations-core で管理されているインテグレーションとなっているかと。
integrations-extras はデフォルトではインストールされていないコミュニティ管理のインテグレーションとなり、こちらについては初期状態では含まれておらず「agent integration install -t datadog-fluentbit==1.0.2 -r」というようなコマンドでインストールする必要があります。
Integration は Python で作成されており、pip でインストールがされているようですので pip コマンドでインストールされているインテグレーションを確認することもできます。
Linux であれば「/opt/datadog-agent/embedded/lib/python3.11/site-packages」、Windows であれば「C:\Program Files\Datadog\Datadog Agent\embedded3\Lib\site-packages」からインストールされているパッケージのファイルを確認することもできるかと。
インテグレーションの情報をさらに確認したい場合には、インテグレーションの構築 を確認するとよさそうでした。
SQL Server ベースの環境向けのインテグレーションについては、Microsoft SQL Server Check から、実装を確認することができます。
SQL Database 向けのエージェントをACI でコンテナーを起動することで利用
Datadog Agent はエージェント実行端末に、エージェントをインストールして利用するだけでなく、コンテナーで利用することも可能であり、コンテナーイメージ が提供されています。
Datadog の データベースモニタリング は SQL Server ベースの環境にも対応しており、Azure SQL Database のクエリ調査を行う際には強力な機能となります。
ACI を使用してエージェントを実行する方法
Azure で Datadog Agent を実行する場合、VM にエージェントをインストールして利用するほかに、「Azure Container Instance」 でコンテナーとしてエージェントを実行することも検討することができます。
実際にコンテナーを起動する場合は次のようなコマンドで ACI を起動することができます。
az container create ` --resource-group rg-ACI ` --name ddagent ` --image datadog/agent:7.53.0 ` --cpu 1 --memory 1 ` --environment-variables ` "DD_API_KEY=<Datadog API Key>" ` "DD_HOSTNAME=ddagent" ` "DD_SERVER=<SQL DB Server Name>" ` "DD_DATABASE=<Database Name>" ` "DD_USER=<Database Login User>" ` "DD_USER_PASSWORD=<Database Login Password>" ` --azure-file-volume-account-name "<Storage Account Name>" ` --azure-file-volume-account-key "<Storage Access Key> ` --azure-file-volume-share-name "datadog" ` --azure-file-volume-mount-path "/etc/datadog-agent/conf.d/"
構成ファイルを Azure Files から読み込む
ACI で外部からファイルを連携する場合、Azure Files を使用することができ、上記の Az CLI でも Azure Files から構成ファイルを読み込んでいます。
Azure Files として「datadog」というファイル共有を作成し、その共有の中に「sqlserver.d」というディレクトリを作成し、次のファイルを「conf.yaml」として配置することで、SQL Server のインテグレーションを使用して情報を取得することができます。
init_config: instances: - host: "%%env_DD_SERVER%%.database.windows.net" connector: "odbc" driver: "ODBC Driver 18 for SQL Server" database: "%%env_DD_DATABASE%%" username: "%%env_DD_USER%%" password: "%%env_DD_USER_PASSWORD%%" azure: deployment_type: "sql_database" fully_qualified_domain_name: "%%env_DD_SERVER%%-fg.database.windows.net" dbm: true
SQL Server 向けの ODBC ドライバーについて
投稿時点で使用できるイメージのバージョンは「7.53.0」となりますが、このイメージには SQL Server の ODBC ドライバー が含まれた状態となっています。
install-msodbcsql18-driver-for-dockerized-agent-a975e8498ef8d9d5.yaml に記載されていますが、現在の Datadog のコンテナーには、SQL Server の ODBC ドライバーがインストールされるようになりました。
omnibus/config/software/msodbcsql18.rb でどのようにして、ODBC ドライバーをインストールしているかを確認できます。
ODBC ドライバーについては、「/opt/datadog-agent/embedded/msodbcsql」に 18.3 のドライバーが含まれています。
ドライバーの設定については/opt/datadog-agent/embedded/lib/python3.11/site-packages/datadog_checks/sqlserver/data/driver_config/odbcinst.ini」から確認ができるのですが、conf.yaml では設定されているのドライバー名 (ODBC Driver 18 for SQL Server) を指定することができます。(「odbcinst -j」でodbcinst.ini / odbc.ini の指定がどのようになっているか確認できますが、これらは使用されておらず、utils.py の実装から drivers_config 配下のファイルを呼んでいることが確認できるかと)
「driver: "/opt/datadog-agent/embedded/msodbcsql/lib64/libmsodbcsql-18.3.so.2.1"」として、ドライバーをファイル名でフルパスで指定させることでも ODBC ドライバーを認識させることができます。