The default Agent configuration for Database Monitoring is conservative, but you can adjust settings such as the collection interval and query sampling rate to better suit your needs. For most workloads, the Agent represents less than one percent of query execution time on the database and less than one percent of CPU.
Database Monitoring runs as an integration on top of the base Agent (see benchmarks).
Proxies, load balancers, and connection poolers
The Datadog Agent must connect directly to the host being monitored. The Agent should not connect to the database through a proxy, load balancer, or connection pooler. If the Agent connects to different hosts while it is running (as in the case of failover, load balancing, and so on), the Agent calculates the difference in statistics between two hosts, producing inaccurate metrics.
Data security considerations
Read about how Database Management handles sensitive information for information about what data the Agent collects from your databases and how to ensure it is secure.
CREATELOGINdatadogWITHPASSWORD='<PASSWORD>';CREATEUSERdatadogFORLOGINdatadog;GRANTCONNECTANYDATABASEtodatadog;GRANTVIEWSERVERSTATEtodatadog;GRANTVIEWANYDEFINITIONtodatadog;-- If not using either of Log Shipping Monitoring (available in Agent v7.50+) or
-- SQL Server Agent Monitoring (available in Agent v7.57+), comment out the next three lines:
USEmsdb;CREATEUSERdatadogFORLOGINdatadog;GRANTSELECTtodatadog;
“```SQL
CREATE LOGIN datadog WITH PASSWORD = ‘’;
CREATE USER datadog FOR LOGIN datadog;
GRANT CONNECT ANY DATABASE to datadog;
GRANT VIEW SERVER STATE to datadog;
GRANT VIEW ANY DEFINITION to datadog;
– Log Shipping Monitoring (Agent v7.50+ で利用可能) または
– SQL Server Agent Monitoring (Agent v7.57+ で利用可能) のいずれも使用しない場合は、
– 次の 3 行をコメントアウトしてください。
USE msdb;
CREATE USER datadog FOR LOGIN datadog;
GRANT SELECT to datadog;
Store your password using secret management software such as Vault. You can then reference this password as ENC[<SECRET_NAME>] in your Agent configuration files: for example, ENC[datadog_user_database_password]. See Secrets Management for more information.
The examples on this page use datadog_user_database_password to refer to the name of the secret where your password is stored. It is possible to reference your password in plain text, but this is not recommended.
注: AlwaysOn ユーザーの場合、Agent は別のサーバーにインストールし、リスナーエンドポイントを介してクラスターに接続する必要があります。これは、Availability Group (AG) のセカンダリレプリカに関する情報がプライマリレプリカから収集されるためです。さらに、この方法で Agent をインストールすると、フェイルオーバー時にも Agent を稼働させ続けることができます。
To start collecting SQL Server telemetry, first install the Datadog Agent.
Create the SQL Server Agent conf file C:\ProgramData\Datadog\conf.d\sqlserver.d\conf.yaml. See the sample conf file for all available configuration options.
To use Windows Authentication, set connection_string: "Trusted_Connection=yes" and omit the username and password fields.
The agent supports SQL Server Browser Service in versions 7.41+. To enable SSBS, provide a port of 0 in the host string: <HOSTNAME>,0.
Use the service and env tags to link your database telemetry to other telemetry through a common tagging scheme. See Unified Service Tagging on how these tags are used throughout Datadog.
注: AlwaysOn ユーザーの場合、Agent は別のサーバーにインストールし、リスナーエンドポイントを介してクラスターに接続する必要があります。これは、Availability Group (AG) のセカンダリレプリカに関する情報がプライマリレプリカから収集されるためです。さらに、この方法で Agent をインストールすると、フェイルオーバー時にも Agent を稼働させ続けることができます。
To start collecting SQL Server telemetry, first install the Datadog Agent.
On Linux, the Datadog Agent additionally requires an ODBC SQL Server driver to be installed—for example, the Microsoft ODBC driver. Once an ODBC SQL Server is installed, copy the odbc.ini and odbcinst.ini files into the /opt/datadog-agent/embedded/etc folder.
Use the odbc connector and specify the proper driver as indicated in the odbcinst.ini file.
Create the SQL Server Agent conf file /etc/datadog-agent/conf.d/sqlserver.d/conf.yaml. See the sample conf file for all available configuration options.
init_config:instances:- dbm:truehost:'<HOSTNAME>,<SQL_PORT>'username:datadogpassword:'ENC[datadog_user_database_password]'connector:odbcdriver:'<Driver from the `odbcinst.ini` file>'include_ao_metrics: true # Optional:For AlwaysOn usersagent_jobs: # Optional:For monitoring SQL Server Agent jobsenabled:truecollection_interval:15history_row_limit:10000tags:# Optional- 'service:<CUSTOM_SERVICE>'- 'env:<CUSTOM_ENV>'
Use the service and env tags to link your database telemetry to other telemetry through a common tagging scheme. See Unified Service Tagging on how these tags are used throughout Datadog.
注: AlwaysOn ユーザーの場合、Agent は別のサーバーにインストールし、リスナーエンドポイントを介してクラスターに接続する必要があります。これは、Availability Group (AG) のセカンダリレプリカに関する情報がプライマリレプリカから収集されるためです。さらに、この方法で Agent をインストールすると、フェイルオーバー時にも Agent を稼働させ続けることができます。
To configure the Database Monitoring Agent running in a Docker container, set the Autodiscovery Integration Templates as Docker labels on your Agent container.
Note: The Agent must have read permission on the Docker socket for Autodiscovery of labels to work.
Replace the values to match your account and environment. See the sample conf file for all available configuration options.
Use the service and env tags to link your database telemetry to other telemetry through a common tagging scheme. See Unified Service Tagging on how these tags are used throughout Datadog.
注: AlwaysOn ユーザーの場合、Agent は別のサーバーにインストールし、リスナーエンドポイントを介してクラスターに接続する必要があります。これは、Availability Group (AG) のセカンダリレプリカに関する情報がプライマリレプリカから収集されるためです。さらに、この方法で Agent をインストールすると、フェイルオーバー時にも Agent を稼働させ続けることができます。
If you have a Kubernetes cluster, use the Datadog Cluster Agent for Database Monitoring.
If cluster checks are not already enabled in your Kubernetes cluster, follow the instructions to enable cluster checks. You can configure the Cluster Agent either with static files mounted in the Cluster Agent container, or by using Kubernetes service annotations:
Execute the following Helm command to install the Datadog Cluster Agent on your Kubernetes cluster. Replace the values to match your account and environment:
To configure a cluster check with a mounted configuration file, mount the configuration file in the Cluster Agent container on the path: /conf.d/sqlserver.yaml:
cluster_check:true# Make sure to include this flaginit_config:instances:- dbm:truehost:'<HOSTNAME>'port:<SQL_PORT>username:datadogpassword:'ENC[datadog_user_database_password]'connector:'odbc'driver:'FreeTDS'include_ao_metrics: true # Optional:For AlwaysOn usersagent_jobs: # Optional:For monitoring SQL Server Agent jobsenabled:truecollection_interval:15history_row_limit:10000tags:# Optional- 'service:<CUSTOM_SERVICE>'- 'env:<CUSTOM_ENV>
Rather than mounting a file, you can declare the instance configuration as a Kubernetes Service. To configure this check for an Agent running on Kubernetes, create a Service in the same namespace as the Datadog Cluster Agent:
The Cluster Agent automatically registers this configuration and begins running the SQL Server check.
To avoid exposing the datadog user’s password in plain text, use the Agent’s secret management package and declare the password using the ENC[] syntax.
Locate the odbc.ini and odbcinst.ini files. By default, these are placed in the /etc directory when installing ODBC.
Copy the odbc.ini and odbcinst.ini files into the /opt/datadog-agent/embedded/etc folder.
Configure your DSN settings as follows:
odbcinst.ini must provide at least one section header and ODBC driver location.
Example:
[ODBC Driver 18 for SQL Server]
Description=Microsoft ODBC Driver 18 for SQL Server
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
UsageCount=1
odbc.ini must provide a section header and a Driver path that matches odbcinst.ini.
Update the /etc/datadog-agent/conf.d/sqlserver.d/conf.yaml file with your DSN information.
Example:
instances:- dbm:truehost:'localhost,1433'username:datadogpassword:'ENC[datadog_user_database_password]'connector:'odbc'driver:'{ODBC Driver 18 for SQL Server}'# This is the section header of odbcinst.inidsn:'datadog'# This is the section header of odbc.ini
For AlwaysOn users, the Agent must be installed on a separate server and connected to the cluster through the listener endpoint. This is because information about Availability Group (AG) secondary replicas is collected from the primary replica. Additionally, installing the Agent in this way helps to keep it up and running in the event of a failover.
instances:- dbm:truehost:'shopist-prod,1433'username:datadogpassword:'ENC[datadog_user_database_password]'connector:adodbapiadoprovider:MSOLEDBSQLinclude_ao_metrics:true# If Availability Groups is enabledinclude_fci_metrics:true# If Failover Clustering is enabled
To enable monitoring of SQL Server Agent jobs, the Datadog Agent must have access to the [msdb] database.
SQL Server Agent Jobs monitoring is not available for Azure SQL Database.
Monitoring of SQL Server Agent jobs is supported on SQL Server versions 2016 and newer. Starting from Agent v7.57, the Datadog Agent can collect SQL Server Agent job metrics and histories. To enable this feature, set enabled to true in the agent_jobs section of the SQL Server integration configuration file. The collection_interval and history_row_limit fields are optional.
Starting from Agent v7.56, the Datadog Agent can collect schema information from SQLServer databases running SQLServer 2017 or higher. To enable this feature, use the schemas_collection option. Schemas are collected on databases for which the Agent has CONNECT access.
To collect schema information from RDS instances, you must grant the datadog user explicit CONNECT access to each database on the instance. For more information, see Grant the Agent access.
Use the database_autodiscovery option to avoid specifying each logical database. See the sample sqlserver.d/conf.yaml for more details.
init_config:instances:# This instance detects every logical database automatically- dbm:truehost:'shopist-prod,1433'username:datadogpassword:'ENC[datadog_user_database_password]'connector:adodbapiadoprovider:MSOLEDBSQLdatabase_autodiscovery:trueschemas_collection:enabled:true# Optional: enable metric collection for indexesinclude_index_usage_metrics:true# This instance only collects schemas and index metrics from the `users` database- dbm:truehost:'shopist-prod,1433'username:datadogpassword:'ENC[datadog_user_database_password]'connector:adodbapiadoprovider:MSOLEDBSQLdatabase:usersschemas_collection:enabled:trueinclude_index_usage_metrics:true
It is common to configure a single Agent host to connect to multiple remote database instances (see Agent installation architectures for DBM). To connect to multiple hosts, create an entry for each host in the SQL Server integration config.
In these cases, Datadog recommends limiting the number of instances per Agent to a maximum of 10 database instances to guarantee reliable performance.
If the Agent must connect to a database host through a remote proxy, all telemetry is tagged with the hostname of the proxy rather than the database instance. Use the reported_hostname option to set a custom override of the hostname detected by the Agent.
SQL Server Browser Service, Named Instances, and other services can automatically detect port numbers. You can use this instead of hardcoding port numbers in connection strings. To use the Agent with one of these services, set the port field to 0.