- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
데이터베이스 모니터링은 쿼리 메트릭, 쿼리 샘플, 실행 계획, 데이터베이스 상태, 장애 조치, 이벤트와 같은 정보를 수집해 Microsoft SQL Server 데이터베이스에 관한 상세한 정보를 가시화합니다.
데이터베이스에서 데이터베이스 모니터링을 활성화하려면 다음 단계를 따르세요.
Datadog 에이전트가 통계와 쿼리를 수집하려면 데이터베이스에 읽기 전용 액세스가 필요합니다.
읽기 전용 로그인을 생성하여 서버에 연결하고 필요한 권한을 부여하세요.
CREATE LOGIN datadog WITH PASSWORD = '<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;
-- 로그 전송 모니터링(에이전트 v7.50+에서 사용 가능) 또는
-- SQL Server 에이전트 모니터링(에이전트 v7.57+에서 사용 가능)을 사용하지 않는 경우, 다음 세 줄의 주석 처리를 해제하세요:
USE msdb;
CREATE USER datadog FOR LOGIN datadog;
GRANT SELECT to datadog;
CREATE LOGIN datadog WITH PASSWORD = '<PASSWORD>';
CREATE USER datadog FOR LOGIN datadog;
GRANT VIEW SERVER STATE to datadog;
GRANT VIEW ANY DEFINITION to datadog;
-- 로그 전송 모니터링(에이전트 v7.50+에서 사용 가능) 또는
-- SQL Server 에이전트 모니터링(에이전트 v7.57+에서 사용 가능)을 사용하지 않는 경우, 다음 세 줄의 주석 처리를 해제하세요:
USE msdb;
CREATE USER datadog FOR LOGIN datadog;
GRANT SELECT to datadog;
각 애플리케이션 추가 데이터베이스에 datadog
사용자를 생성합니다.
USE [database_name];
CREATE USER datadog FOR LOGIN 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.
에이전트가 SQL Server에 지정된 텔레메트리 외에도 다양한 시스템 텔레메트리(CPU, 메모리, 디스크, 네트워크)를 수집하도록 하려면 SQL Server 호스트에 바로 에이전트를 설치하는 것이 좋습니다.
참고: AlwaysOn 사용자의 경우 에이전트를 별도 서버에 설치하고 리스너 엔드포인트를 통해 클러스터에 연결해야 합니다. 왜냐하면 가용 그룹(AG)의 보조 복제본에 관한 정보가 주 복제본에서 수집되기 때문입니다. 또 에이전트를 이렇게 설치하면 이벤트 장애 조치를 발견하고 해결하는 데 도움이 됩니다. 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.
init_config:
instances:
- dbm: true
host: '<HOSTNAME>,<SQL_PORT>'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: adodbapi
adoprovider: MSOLEDBSQL
include_ao_metrics: true # Optional: For AlwaysOn users
agent_jobs: # Optional: For monitoring SQL Server Agent jobs
enabled: true
collection_interval: 15
history_row_limit: 10000
tags: # Optional
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'
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.
The recommended ADO provider is Microsoft OLE DB Driver. Ensure the driver is installed on the host where the agent is running.
connector: adodbapi
adoprovider: MSOLEDBSQL19 # Replace with MSOLEDBSQL for versions 18 and lower
The other two providers, SQLOLEDB
and SQLNCLI
, are considered deprecated by Microsoft and should no longer be used.
The recommended ODBC driver is Microsoft ODBC Driver. Ensure the driver is installed on the host where the Agent is running.
connector: odbc
driver: '{ODBC Driver 18 for SQL Server}'
Once all Agent configuration is complete, restart the Datadog Agent.
Run the Agent’s status subcommand and look for sqlserver
under the Checks section. Navigate to the Databases page in Datadog to get started.
참고: AlwaysOn 사용자의 경우 에이전트를 별도 서버에 설치하고 리스너 엔드포인트를 통해 클러스터에 연결해야 합니다. 왜냐하면 가용 그룹(AG)의 보조 복제본에 관한 정보가 주 복제본에서 수집되기 때문입니다. 또 에이전트를 이렇게 설치하면 이벤트 장애 조치를 발견하고 해결하는 데 도움이 됩니다. 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: true
host: '<HOSTNAME>,<SQL_PORT>'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: odbc
driver: '<Driver from the `odbcinst.ini` file>'
include_ao_metrics: true # Optional: For AlwaysOn users
agent_jobs: # Optional: For monitoring SQL Server Agent jobs
enabled: true
collection_interval: 15
history_row_limit: 10000
tags: # 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.
Once all Agent configuration is complete, restart the Datadog Agent.
Run the Agent’s status subcommand and look for sqlserver
under the Checks section. Navigate to the Databases page in Datadog to get started.
참고: AlwaysOn 사용자의 경우 에이전트를 별도 서버에 설치하고 리스너 엔드포인트를 통해 클러스터에 연결해야 합니다. 왜냐하면 가용 그룹(AG)의 보조 복제본에 관한 정보가 주 복제본에서 수집되기 때문입니다. 또 에이전트를 이렇게 설치하면 이벤트 장애 조치를 발견하고 해결하는 데 도움이 됩니다. 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.
export DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DD_AGENT_VERSION=7.35.0
docker run -e "DD_API_KEY=${DD_API_KEY}" \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-l com.datadoghq.ad.check_names='["sqlserver"]' \
-l com.datadoghq.ad.init_configs='[{}]' \
-l com.datadoghq.ad.instances='[{
"dbm": true,
"host": "<HOSTNAME>,<SQL_PORT>",
"connector": "odbc",
"driver": "FreeTDS",
"username": "datadog",
"password": "<PASSWORD>",
"include_ao_metrics": true, # Optional: For AlwaysOn users
"agent_jobs": { # Optional: For monitoring SQL Server Agent jobs
"enabled": true
"collection_interval": 15
"history_row_limit": 10000
}
"tags": [
"service:<CUSTOM_SERVICE>"
"env:<CUSTOM_ENV>"
]
}]' \
gcr.io/datadoghq/agent:${DD_AGENT_VERSION}
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.
Run the Agent’s status subcommand and look for sqlserver
under the Checks section. Alternatively, navigate to the Databases page in Datadog to get started.
참고: AlwaysOn 사용자의 경우 에이전트를 별도 서버에 설치하고 리스너 엔드포인트를 통해 클러스터에 연결해야 합니다. 왜냐하면 가용 그룹(AG)의 보조 복제본에 관한 정보가 주 복제본에서 수집되기 때문입니다. 또 에이전트를 이렇게 설치하면 이벤트 장애 조치를 발견하고 해결하는 데 도움이 됩니다. 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:
helm repo add datadog https://helm.datadoghq.com
helm repo update
helm install <RELEASE_NAME> \
--set 'datadog.apiKey=<DATADOG_API_KEY>' \
--set 'clusterAgent.enabled=true' \
--set 'clusterChecksRunner.enabled=true' \
--set "clusterAgent.confd.sqlserver\.yaml=cluster_check: true
init_config:
instances:
- dbm: true
host: <HOSTNAME>\,1433
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: 'odbc'
driver: 'FreeTDS'
include_ao_metrics: true # Optional: For AlwaysOn users
agent_jobs: # Optional: For monitoring SQL Server Agent jobs
enabled: true
collection_interval: 15
history_row_limit: 10000
tags: # Optional
- 'service:<CUSTOM_SERVICE>'
- 'env:<CUSTOM_ENV>'"\
datadog/datadog
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 flag
init_config:
instances:
- dbm: true
host: '<HOSTNAME>'
port: <SQL_PORT>
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: 'odbc'
driver: 'FreeTDS'
include_ao_metrics: true # Optional: For AlwaysOn users
agent_jobs: # Optional: For monitoring SQL Server Agent jobs
enabled: true
collection_interval: 15
history_row_limit: 10000
tags: # 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:
apiVersion: v1
kind: Service
metadata:
name: sqlserver-datadog-check-instances
annotations:
ad.datadoghq.com/service.check_names: '["sqlserver"]'
ad.datadoghq.com/service.init_configs: '[{}]'
ad.datadoghq.com/service.instances: |
[
{
"dbm": true,
"host": "<HOSTNAME>",
"port": "<SQL_PORT>",
"username": "datadog",
"password": "ENC[datadog_user_database_password]",
"connector": "odbc",
"driver": "FreeTDS",
"include_ao_metrics": true, # Optional: For AlwaysOn users
"agent_jobs": { # Optional: For monitoring SQL Server Agent jobs
"enabled": true
"collection_interval": 15
"history_row_limit": 10000
}
"tags": ["service:<CUSTOM_SERVICE>", "env:<CUSTOM_ENV>"] # Optional
}
]
spec:
ports:
- port: 1433
protocol: TCP
targetPort: 1433
name: sqlserver
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
.
Example:
[datadog]
Driver=/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.3.so.2.1
Update the /etc/datadog-agent/conf.d/sqlserver.d/conf.yaml
file with your DSN information.
Example:
instances:
- dbm: true
host: 'localhost,1433'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: 'odbc'
driver: '{ODBC Driver 18 for SQL Server}' # This is the section header of odbcinst.ini
dsn: 'datadog' # This is the section header of odbc.ini
Restart the Agent.
Note: 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: true
host: 'shopist-prod,1433'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: adodbapi
adoprovider: MSOLEDBSQL
include_ao_metrics: true # If Availability Groups is enabled
include_fci_metrics: true # If Failover Clustering is enabled
Note: For monitoring SQL Server Agent jobs, the Datadog Agent must have access to the [msdb] 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.
instances:
- dbm: true
host: 'shopist-prod,1433'
username: datadog
password: '<PASSWORD>'
connector: adodbapi
adoprovider: MSOLEDBSQL
agent_jobs:
enabled: true
collection_interval: 15
history_row_limit: 10000
Starting from Agent v7.56, the Datadog Agent can collect schema information from SQLServer databases. To enable this feature, use the schemas_collection
option. Schemas are collected on databases for which the Agent has CONNECT
access.
Note: For schema collection on RDS instances, it is necessary to grant explicit CONNECT
access to the datadog
user for each database on the instance. See Grant the Agent access for more details.
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: true
host: 'shopist-prod,1433'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: adodbapi
adoprovider: MSOLEDBSQL
database_autodiscovery:
enabled: true
schemas_collection:
enabled: true
# Optional: enable metric collection for indexes
include_index_usage_metrics: true
# This instance only collects schemas and index metrics from the `users` database
- dbm: true
host: 'shopist-prod,1433'
username: datadog
password: 'ENC[datadog_user_database_password]'
connector: adodbapi
adoprovider: MSOLEDBSQL
database: users
schemas_collection:
enabled: true
include_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.
init_config:
instances:
- dbm: true
host: 'example-service-primary.example-host.com,1433'
username: datadog
connector: adodbapi
adoprovider: MSOLEDBSQL
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
- dbm: true
host: 'example-service–replica-1.example-host.com,1433'
connector: adodbapi
adoprovider: MSOLEDBSQL
username: datadog
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
- dbm: true
host: 'example-service–replica-2.example-host.com,1433'
connector: adodbapi
adoprovider: MSOLEDBSQL
username: datadog
password: 'ENC[datadog_user_database_password]'
tags:
- 'env:prod'
- 'team:team-discovery'
- 'service:example-service'
[...]
To collect custom metrics, use the custom_queries
option. See the sample sqlserver.d/conf.yaml for more details.
init_config:
instances:
- dbm: true
host: 'localhost,1433'
connector: adodbapi
adoprovider: MSOLEDBSQL
username: datadog
password: 'ENC[datadog_user_database_password]'
custom_queries:
- query: SELECT age, salary, hours_worked, name FROM hr.employees;
columns:
- name: custom.employee_age
type: gauge
- name: custom.employee_salary
type: gauge
- name: custom.employee_hours
type: count
- name: name
type: tag
tags:
- 'table:employees'
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.
init_config:
instances:
- dbm: true
host: 'localhost,1433'
connector: adodbapi
adoprovider: MSOLEDBSQL
username: datadog
password: 'ENC[datadog_user_database_password]'
reported_hostname: products-primary
- dbm: true
host: 'localhost,1433'
connector: adodbapi
adoprovider: MSOLEDBSQL
username: datadog
password: 'ENC[datadog_user_database_password]'
reported_hostname: products-replica-1
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
.
For example, a Named Instance config:
init_config:
instances:
- host: <hostname\instance name>
port: 0