master
md 133 lines 4.58 KB
Rendered Raw
1 # Description Authoring
2
3 Metadata descriptions are public product copy. They appear on
4 Learn, in integration cards, in generated umbrella pages, and in
5 some in-app surfaces. Write them for an operator scanning a catalog,
6 not for a developer reading implementation notes.
7
8 ## Catalog Description Contract
9
10 The Monitor Anything table does not read a dedicated
11 `catalog_description` field. `integrations/gen_doc_collector_page.py`
12 extracts the first sentence from the generated `## Overview` section
13 and falls back to `meta.monitored_instance.description` only when
14 overview text is unavailable.
15
16 For collector-like integrations, that means the first sentence of
17 `overview.data_collection.metrics_description` **is** the catalog
18 description. Write that sentence first, deliberately, before adding
19 detail for the full integration page.
20
21 That first sentence must:
22
23 - start with an active user-facing verb or action phrase;
24 - describe what the integration is;
25 - describe what it monitors, enriches, exports, authenticates, or
26 discovers;
27 - be stable without knowing the user's configuration;
28 - be short enough for a table cell;
29 - use user-facing product language.
30
31 That first sentence must not:
32
33 - describe a configuration option, variable, default value, or setting;
34 - start with "Set ...", "Configure ...", "When enabled ...", or
35 similar setup language;
36 - contain placeholders such as `<tier>`, `<key>`, or
37 `[[ variables.foo ]]`;
38 - describe limits, sizing, retention, troubleshooting, or caveats;
39 - mention internal tests, implementation state, reviewer notes, or
40 future work.
41
42 Required first-sentence style:
43
44 - Collectors: `Monitor <thing> ...`, `Collect <data> from <thing> ...`,
45 `Keep an eye on <thing> ...`.
46 - Flow sources: `Collect network flow records from <protocol/exporter> ...`.
47 - Flow enrichment sources: `Enrich network flows with <fields/context> from
48 <source> ...`.
49 - Flow labeling/classification sources: `Annotate network flows with
50 <labels> from <source/rules> ...`.
51 - Exporters: `Export Netdata metrics to <destination> ...`.
52 - Service discovery: `Discover <targets> from <source> ...`.
53
54 Avoid leading with the provider's publication mechanism (`AWS publishes ...`,
55 `Microsoft publishes ...`, `Set option ...`). Those facts may be useful in
56 the full page, but the catalog sentence should first tell users what Netdata
57 does for them.
58
59 ## Where Details Belong
60
61 Use the right metadata field for the job:
62
63 | Content | Field |
64 |---|---|
65 | What the integration is / what data it provides | First sentence of `overview.data_collection.metrics_description` |
66 | How collection works | `overview.data_collection.method_description` |
67 | Defaults and auto-detection | `overview.default_behavior.auto_detection.description` |
68 | Limits, retention, sizing, and cardinality | `overview.default_behavior.limits.description` |
69 | CPU, memory, disk, or network impact | `overview.default_behavior.performance_impact.description` |
70 | Configuration settings | `setup.configuration.options.list[].description` |
71 | Example-specific behavior | `setup.configuration.examples.list[].description` |
72 | Failure modes and fixes | `troubleshooting.problems.list[].description` |
73
74 Configuration option descriptions are allowed to describe settings.
75 Catalog descriptions are not.
76
77 ## Good And Bad Examples
78
79 Bad catalog description:
80
81 ```yaml
82 metrics_description: |
83 Set `protocols.decapsulation_mode` to `srv6` or `vxlan`.
84 ```
85
86 Good catalog description:
87
88 ```yaml
89 metrics_description: |
90 Enrich network flows with inner source and destination endpoints from VXLAN or SRv6 encapsulated traffic.
91 ```
92
93 Bad catalog description:
94
95 ```yaml
96 metrics_description: |
97 Empty `asn_database` and `geo_database` values enable auto-detection.
98 ```
99
100 Good catalog description:
101
102 ```yaml
103 metrics_description: |
104 Enrich network flows with ASN and geographic context from DB-IP Lite MMDB databases.
105 ```
106
107 Bad catalog description:
108
109 ```yaml
110 metrics_description: |
111 The `journal.tiers.<tier>.duration_of_journal_files` setting controls retention.
112 ```
113
114 Good catalog description:
115
116 ```yaml
117 metrics_description: |
118 Collect network flow records from NetFlow exporters such as routers, switches, and firewalls.
119 ```
120
121 ## Review Checklist
122
123 Before committing `metadata.yaml` changes:
124
125 1. Regenerate `src/collectors/COLLECTORS.md`.
126 2. Read the table row description for the integration.
127 3. Confirm it answers "what is this integration?" without relying on
128 setup context.
129 4. Move option names, defaults, variables, and limits out of the
130 catalog sentence and into the proper setup or default-behavior
131 field.
132 5. Keep the first sentence useful even when rendered alone in a list,
133 card, search result, or generated catalog.