- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
To run a custom check, you can configure the DatadogAgent
resource to provide custom checks (checks.d
) and their corresponding configuration files (conf.d
) at initialization time. You must configure a ConfigMap resource for each check script file and its configuration file.
This page explains how to set up a custom check, hello
, that submits a hello.world
metric to Datadog.
To learn more about checks in the Datadog ecosystem, see Introduction to Integrations. To configure a Datadog Integration, see Kubernetes and Integrations
Each check needs a configuration file (hello.yaml
) and a script file (hello.py
).
Create hello.yaml
with the following content:
init_config:
instances: [{}]
Create hello.py
with the following content:
from datadog_checks.base import AgentCheck
__version__ = "1.0.0"
class HelloCheck(AgentCheck):
def check(self, instance):
self.gauge('hello.world', 1, tags=['env:dev'])
After you create the hello
check files, create the associated ConfigMaps:
Create the ConfigMap for the custom check YAML configuration file hello.yaml
:
$ kubectl create configmap -n $DD_NAMESPACE confd-config --from-file=hello.yaml
configmap/confd-config created
Verify that the ConfigMap has been correctly created:
$ kubectl get configmap -n $DD_NAMESPACE confd-config -o yaml
apiVersion: v1
data:
hello.yaml: |
init_config:
instances: [{}]
kind: ConfigMap
metadata:
name: confd-config
namespace: datadog
Create the ConfigMap for the custom check Python file hello.py
:
$ kubectl create configmap -n $DD_NAMESPACE checksd-config --from-file=hello.py
configmap/checksd-config created
Verify that the ConfigMap has been correctly created:
$ kubectl get configmap -n $DD_NAMESPACE checksd-config -o yaml
apiVersion: v1
data:
hello.py: |
from datadog_checks.base import AgentCheck
__version__ = "1.0.0"
class HelloCheck(AgentCheck):
def check(self, instance):
self.gauge('hello.world', 1, tags=['env:dev'])
kind: ConfigMap
metadata:
name: checksd-config
namespace: datadog
After you create your ConfigMaps, create a DatadogAgent
resource to use them:
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
name: datadog
spec:
global:
credentials:
apiKey: "<DATADOG_API_KEY>"
appKey: "<DATADOG_APP_KEY>"
override:
nodeAgent:
extraConfd:
configMap:
name: confd-config
extraChecksd:
configMap:
name: checksd-config
Note: Any ConfigMaps you create need to be in the same DD_NAMESPACE
as the DatadogAgent
resource.
This deploys the Datadog Agent with your custom check.
You can populate ConfigMaps with the content of multiple checks or their respective configuration files.
$ kubectl create cm -n $DD_NAMESPACE checksd-config $(find ./checks.d -name "*.py" | xargs -I'{}' echo -n '--from-file={} ')
configmap/checksd-config created
$ kubectl create cm -n $DD_NAMESPACE confd-config $(find ./conf.d -name "*.yaml" | xargs -I'{}' echo -n '--from-file={} ')
configmap/confd-config created
You can mount additional user-configured volumes in either the node or Cluster Agent containers by setting the volumes
and volumeMounts
properties.
Example: Using a volume to mount a secret
apiVersion: datadoghq.com/v2alpha1
kind: DatadogAgent
metadata:
name: datadog
spec:
global:
credentials:
apiKey: "<DATADOG_API_KEY>"
appKey: "<DATADOG_APP_KEY>"
override:
nodeAgent:
image:
name: "gcr.io/datadoghq/agent:latest"
volumes:
- name: secrets
secret:
secretName: secrets
containers:
agent:
volumeMounts:
- name: secrets
mountPath: /etc/secrets
readOnly: true