From netdata-skills
Use when you need Netdata to collect metrics from something it does not already monitor, such as a custom application, an internal service, the output of a script or CLI tool, or a device. Covers the decision tree from the built-in StatsD server (zero collector code) through writing a collector in any language via the external-plugin line protocol (CHART/DIMENSION/BEGIN/SET/END on stdout), or the legacy python.d and charts.d module frameworks. Teaches how to pick the cheapest approach that works, scaffold it from a real example, and, when a Netdata MCP server is connected, automatically verify over MCP that the metrics are collected in the right format without user handholding.
How this skill is triggered — by the user, by Claude, or both
Slash command
/netdata-skills:netdata-custom-collectorThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill gets metrics into Netdata from a target it does not yet
This skill gets metrics into Netdata from a target it does not yet monitor. The target can be an application you wrote, a third-party service with no stock collector, a CLI tool whose output you want charted, or a device behind a script.
Netdata is a pull-and-local-collection system. A collector runs on
the node, gathers values on an interval, and emits charts. This is a
different path from the OTLP push path covered by
netdata-instrumentation and netdata-otel-setup. If the target is
your own code and you are willing to add an OpenTelemetry SDK, prefer
those skills. Reach for a collector when you cannot or do not want to
instrument the target, or when the data lives in a file, socket, API,
or command rather than in your application's call path.
python.d or
charts.d module.rules/choose-an-approach.md.rules/statsd.md.CHART/DIMENSION/BEGIN/SET/END to stdout. Write it in
Bash, Python, Go, Ruby, Node, or whatever fits, including wrapping
a CLI tool or a library that only exists in one language. See
rules/external-plugin-protocol.md.python.d / charts.d are the legacy orchestrated module
frameworks (Python and Bash). Use them to extend an existing
module; do not start new collectors there. See
rules/python-and-bash-modules.md.go.d (Go), produces the most
efficient collectors but a module must be compiled into the
go.d.plugin binary from the Netdata Go source. That build-from-
source workflow is out of scope for this skill; for a production or
contributable Go collector, follow the official go.d developer
guide. For a Go collector you only want to run locally, write it as
an external plugin (above) instead.netdata/community. Source:
docs/developer-and-contributor-corner/python-collector.txt.context (its template), a family (dashboard submenu), and
dimensions, each with an algorithm (absolute for a level,
incremental for a counter). The line protocol in
rules/external-plugin-protocol.md
is the canonical reference for these fields; the higher-level
frameworks are conveniences over it.list_metrics, get_metrics_details,
query_metrics) itself: it checks the context exists, the
dimensions and units and chart type match, and recent samples are
sane. Do not write the collector and then hand the user a manual
checklist. Close the loop. See
rules/verify-a-collector.md and
the netdata-mcp-integration skill.rules/choose-an-approach.md:
existing collector, then StatsD. Stop at the first that fits.rules/statsd.md, then
skip to verification.rules/external-plugin-protocol.md.python.d/charts.d module: follow
rules/python-and-bash-modules.md.list_metrics,
get_metrics_details, and query_metrics to confirm the context,
shape, and live values, and iterate until they pass. If no MCP
connection exists, set one up first via the
netdata-mcp-integration skill. See
rules/verify-a-collector.md.python.d or charts.d
module. Those frameworks are legacy and mostly superseded by go.d.
For a new collector, write a raw external plugin in any language and
reserve python.d/charts.d for extending an existing module.SET takes
integers only. Multiply in code and set the dimension divisor.plugins.d
directory, or shipping it without the executable bit. Netdata only
runs executables it finds in plugins.d.Confirm the collector works before declaring victory, in two stages.
First, run the collector standalone and read its protocol output, to
isolate collection bugs from ingestion bugs. For an external plugin,
run it with the update interval as its only argument and read the
emitted CHART/DIMENSION/BEGIN/SET/END lines.
Second, confirm Netdata ingested it. When a Netdata MCP server is
connected, the agent does this automatically rather than handing it
off: list_metrics to confirm the context exists,
get_metrics_details to confirm dimensions, units, and chart type,
and query_metrics to confirm recent samples are present and sane.
Iterate on the collector until those pass. If no MCP connection
exists, set one up via the netdata-mcp-integration skill, or fall
back to the dashboard or REST API as a stopgap. The full procedure and
pass criteria are in
rules/verify-a-collector.md.
rules/choose-an-approach.mdrules/statsd.mdrules/external-plugin-protocol.mdrules/python-and-bash-modules.mdrules/verify-a-collector.mdsrc/plugins.d/README.mdnpx claudepluginhub netdata/skills --plugin netdata-skillsSearches MemPalace before answering questions about past work, people, projects, or prior decisions. Returns verbatim stored content instead of guessing from model memory.
Guides Payload CMS config (payload.config.ts), collections, fields, hooks, access control, APIs. Debugs validation errors, security, relationships, queries, transactions, hook behavior.
Implements vector databases with Pinecone, Weaviate, Qdrant, Milvus, pgvector for semantic search, RAG, recommendations, and similarity systems. Optimizes embeddings, indexing, and hybrid search.