Install
$ agentstack add skill-cogni-ai-ou-cogni-ai-agent-skills-datadog-agent ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ● Shell / process execution Used
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Skill: datadog-agent
Expert-level guidance for installing, configuring, and extending the Datadog Agent, including Ansible orchestration and custom OpenMetrics checks.
When to Use
- When configuring, installing, or troubleshooting the Datadog Agent on a Linux host.
- To write custom Python check scripts (
AgentCheckorOpenMetricsBaseCheckV2) for the agent. - When updating Ansible playbooks that deploy the
datadog.dd.agentrole.
When Not to Use
- For querying Datadog APIs to read telemetry or dashboard data (use
datadog-apiinstead). - When managing Datadog SaaS configurations like Monitors or SLOs (use
datadog-monitors). - If you are deploying Datadog strictly via a Helm chart in Kubernetes without needing custom host-level Python checks.
Common Pitfalls
- Subprocess Hangs: Using Python's native
subprocessmodule inside a custom check instead ofget_subprocess_output(), which deadlocks the Agent's Go-runtime. - Misnamed Files: Creating a custom check script named
my_check.pybut naming the configuration filecustom_check.yaml, causing the Agent to silently ignore it. - Root Level Logs: Defining
- type: fileat the root of a check's YAML configuration instead of properly nesting it under alogs:key.
Core Principles
- Agent Immutability: Prefer immutable configuration deployments (e.g., Ansible) over manual modifications to
datadog.yamlorconf.d/. - API Key Handling: Never hardcode
datadog_api_keyin playbooks; utilize vault secrets or environment variables. - Python Compatibility: Custom Agent checks must be Python 3 compatible for modern Agent versions (v7+).
- File Matching: The custom check script name (e.g.,
my_check.py) must exactly match its configuration file name (e.g.,my_check.yaml).
Ansible Integration & Logs Configuration
When using the datadog.dd.agent (or legacy datadog.datadog) Ansible role, ensure correct YAML hierarchy, especially for log collection.
- Requirements: Ansible v2.10+,
ansible-galaxy collection install datadog.dd - Avoid Array Root: Do not map a check directly to an array. A common mistake with logs is defining
- type: fileat the root check level. - Correct Logs Structure: Logs must be encapsulated under a
logs:key within the specific check dictionary.
# Correct Ansible definition for logs attached to a custom/syslog check
datadog_checks:
syslog: # Creates /etc/datadog-agent/conf.d/syslog.d/conf.yaml
logs:
- type: file
path: /var/log/syslog
service: syslog
source: syslog
Custom Agent Checks
Create custom Python checks by extending AgentCheck for simple metrics or OpenMetricsBaseCheckV2 for Prometheus endpoints.
- Directory Paths:
- Scripts:
/etc/datadog-agent/checks.d/ - Configs:
/etc/datadog-agent/conf.d/.d/conf.yaml - Naming Convention: Prefix custom checks with
custom_(e.g.,custom_postfix.py) to avoid conflicts with out-of-the-box integrations. - Check Verification:
sudo -u dd-agent -- datadog-agent check
Simple Python Check
from datadog_checks.base import AgentCheck
class CustomCheck(AgentCheck):
def check(self, instance):
self.gauge('custom.metric', 1, tags=instance.get('tags', []))
OpenMetrics Base Check (V2)
Advanced scraping from Prometheus endpoints. Requires openmetrics_endpoint in the check config.
from datadog_checks.base import OpenMetricsBaseCheckV2, ConfigurationError
class CustomOpenMetricsCheck(OpenMetricsBaseCheckV2):
__NAMESPACE__ = "my_namespace"
def __init__(self, name, init_config, instances):
super(CustomOpenMetricsCheck, self).__init__(name, init_config, instances)
self.metrics_map = {
'prom_metric_name': 'datadog.metric.name',
}
def get_default_config(self):
return {'metrics': self.metrics_map}
def check(self, instance):
endpoint = instance.get('openmetrics_endpoint')
if not endpoint:
raise ConfigurationError("Missing 'openmetrics_endpoint'")
super().check(instance)
Integrations & Developer Platform
- Tiles & Dashboards: Official integrations must include out-of-the-box dashboards and telemetry logic. API integrations require OAuth 2.0.
- Platform Separation: Agent-based integrations collect from local hosts, whereas API-based integrations ingest directly via Datadog REST endpoints.
Diagnostics and Troubleshooting
- Check agent status:
datadog-agent status - Subprocess execution: Never use Python's native
subprocessmodule due to the Agent's Go-runtime multithreading constraints. Always useget_subprocess_output()fromdatadog_checks.base.utils.subprocess_output.
from datadog_checks.base.utils.subprocess_output import get_subprocess_output
out, err, retcode = get_subprocess_output(["ls", "."], self.log, raise_on_empty_output=True)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Cogni-AI-OU
- Source: Cogni-AI-OU/cogni-ai-agent-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.