src/go/plugin/go.d/docs/how-to-write-a-collector.md
This guide is intentionally minimal. The source of truth is existing collectors in
src/go/plugin/go.d/collector/.
collectorapi.CollectorV2.CollectorV1 is legacy compatibility for existing collectors; do not use it for new work.src/go/plugin/go.d/collector/ping/collector.go.src/go/plugin/go.d/collector/mysql/collector.go.For a new collector foo, create src/go/plugin/go.d/collector/foo/ with:
collector.go:
collectorapi.Register("foo", collectorapi.Creator{...})CreateV2, Config, optional JobConfigSchema, optional function wiringcollectorapi.BaseConfiguration(), Init(), Check(), Collect(), Cleanup()MetricStore() and ChartTemplateYAML()charts.yaml: chart template consumed by the V2 chart engine.config_schema.json: JSON schema for collector job config.collect.go, init.go, types.go, testdata/, tests).src/go/plugin/go.d/collector/init.go.src/go/plugin/go.d/config/go.d/foo.conf.src/go/plugin/go.d/config/go.d.conf under modules: (legacy key name kept for compatibility).src/go/plugin/go.d/README.md (available collectors).Init(context.Context) errorCheck(context.Context) errorCollect(context.Context) errorCleanup(context.Context)MetricStore() metrix.CollectorStoreChartTemplateYAML() stringCollector output is produced via metrix + chart templates, not by returning raw metric maps.
From src/go:
go test ./plugin/go.d/collector/foo/...go test ./plugin/go.d/collector/...go test ./cmd/godpluginIf you run the binary manually, CLI uses legacy flag naming: -m/--modules.