![]() |
VOOZH | about |
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/v2alpha1kind:DatadogAgentmetadata:name:datadogspec:global:credentials:apiKey:"<DATADOG_API_KEY>"appKey:"<DATADOG_APP_KEY>"override:nodeAgent:extraConfd:configMap:name:confd-configextraChecksd:configMap:name:checksd-configNote: 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/v2alpha1kind:DatadogAgentmetadata:name:datadogspec:global:credentials:apiKey:"<DATADOG_API_KEY>"appKey:"<DATADOG_APP_KEY>"override:nodeAgent:image:name:"gcr.io/datadoghq/agent:latest"volumes:- name:secretssecret:secretName:secretscontainers:agent:volumeMounts:- name:secretsmountPath:/etc/secretsreadOnly:true | |