master
yaml 253 lines 10.9 KB
Raw
1 plugin_name: otel.plugin
2 modules:
3 - meta:
4 id: collector-otel.plugin-otel
5 plugin_name: otel.plugin
6 module_name: otel
7 monitored_instance:
8 name: OpenTelemetry
9 link: https://opentelemetry.io/
10 categories:
11 - data-collection.cloud-and-devops
12 icon_filename: opentelemetry.svg
13 alternative_monitored_instances: []
14 keywords:
15 - opentelemetry
16 - otel
17 - otlp
18 - grpc
19 - metrics
20 - logs
21 - observability
22 related_resources:
23 integrations:
24 list: []
25 info_provided_to_referring_integrations:
26 description: ""
27 overview:
28 data_collection:
29 metrics_description: |
30 This plugin enables the Netdata Agent to receive OpenTelemetry metrics and logs
31 via the OTLP/gRPC protocol from any compatible source — collectors, SDKs, or
32 instrumented applications.
33
34 Metrics are automatically visualized as Netdata charts with full alerting support.
35 Logs are stored in systemd-compatible journal files and can be explored through
36 the Netdata Logs tab.
37 method_description: |
38 The plugin listens on a configurable gRPC endpoint for incoming OTLP data.
39
40 Incoming metrics are mapped to Netdata charts using YAML mapping rules placed in the
41 chart configs directory (default `/etc/netdata/otel.d/v1/metrics/`). Each file can
42 contain entries that match metrics by instrumentation scope and metric name, and control
43 how data point attributes translate to chart instances and dimensions. Per-metric
44 overrides for the collection interval and grace period are also supported. Without a
45 matching rule, the plugin creates charts using default settings. Charts with no incoming
46 data are automatically expired and removed.
47
48 | Mapping file option | Description |
49 |:--------------------|:------------|
50 | `instrumentation_scope.name` | Regex to match the instrumentation scope name |
51 | `instrumentation_scope.version` | Regex to match the instrumentation scope version |
52 | `dimension_attribute_key` | Data point attribute whose value becomes the dimension name |
53 | `interval_secs` | Per-metric collection interval override (1–3600 seconds) |
54 | `grace_period_secs` | Per-metric grace period override |
55
56 Incoming logs are written to journal files with configurable rotation and retention
57 policies.
58 supported_platforms:
59 include:
60 - Linux
61 exclude: []
62 multi_instance: false
63 additional_permissions:
64 description: ""
65 default_behavior:
66 auto_detection:
67 description: |
68 The plugin starts automatically and listens on `127.0.0.1:4317` for incoming OTLP/gRPC connections.
69 limits:
70 description: ""
71 performance_impact:
72 description: ""
73 setup:
74 prerequisites:
75 list:
76 - title: OpenTelemetry data source
77 description: |
78 An OpenTelemetry Collector, SDK, or instrumented application configured to send OTLP data
79 to the Netdata agent's gRPC endpoint.
80 configuration:
81 file:
82 name: otel.yaml
83 options:
84 description: |
85 The plugin is configured via `otel.yaml` in the Netdata configuration directory.
86 Only the fields you want to change need to be specified.
87
88 Any option can also be overridden via environment variables with the `NETDATA_OTEL_`
89 prefix (highest priority). The variable name is the config option in all caps with
90 dots replaced by underscores — e.g. `endpoint.tls_cert_path` becomes
91 `NETDATA_OTEL_ENDPOINT_TLS_CERT_PATH`.
92 folding:
93 title: Config options
94 enabled: true
95 list:
96 - name: endpoint.path
97 description: gRPC endpoint to listen on for incoming OTLP data.
98 default_value: "127.0.0.1:4317"
99 required: false
100 - name: endpoint.tls_cert_path
101 description: Path to TLS certificate file. Enables TLS when provided.
102 default_value: ""
103 required: false
104 - name: endpoint.tls_key_path
105 description: Path to TLS private key file. Required when TLS certificate is provided.
106 default_value: ""
107 required: false
108 - name: endpoint.tls_ca_cert_path
109 description: Path to TLS CA certificate file for client authentication.
110 default_value: ""
111 required: false
112 - name: metrics.chart_configs_dir
113 description: Directory containing metric mapping YAML files.
114 detailed_description: |
115 Each file defines how OTLP metrics are mapped to Netdata charts.
116 Files can match metrics by instrumentation scope and name, set the
117 dimension attribute key, and override timing parameters. The plugin
118 ships stock mappings; user files in this directory take priority.
119 default_value: "/etc/netdata/otel.d/v1/metrics/"
120 required: false
121 - name: metrics.interval_secs
122 description: Collection interval in seconds (1–3600). Defines the Netdata chart update frequency.
123 default_value: 10
124 required: false
125 - name: metrics.grace_period_secs
126 description: Grace period in seconds. After the last data point, the plugin waits this long before gap-filling.
127 default_value: 60
128 required: false
129 - name: metrics.expiry_duration_secs
130 description: Expiry duration in seconds. Charts with no data for this long are removed.
131 default_value: 900
132 required: false
133 - name: metrics.max_new_charts_per_request
134 description: Maximum new charts created per gRPC request.
135 detailed_description: |
136 Limits cardinality explosion from high-cardinality label combinations.
137 default_value: 100
138 required: false
139 - name: logs.journal_dir
140 description: Directory to store journal files for ingested logs.
141 default_value: ""
142 required: true
143 - name: logs.size_of_journal_file
144 description: Maximum file size before rotating to a new journal file.
145 default_value: "100MB"
146 required: false
147 - name: logs.entries_of_journal_file
148 description: Maximum log entries per journal file.
149 default_value: 50000
150 required: false
151 - name: logs.duration_of_journal_file
152 description: Maximum time span within a single journal file.
153 default_value: "2 hours"
154 required: false
155 - name: logs.number_of_journal_files
156 description: Maximum number of journal files to keep.
157 default_value: 10
158 required: false
159 - name: logs.size_of_journal_files
160 description: Maximum total size of all journal files.
161 default_value: "1GB"
162 required: false
163 - name: logs.duration_of_journal_files
164 description: Maximum age of journal files.
165 default_value: "7 days"
166 required: false
167 - name: logs.store_otlp_json
168 description: Store the complete OTLP JSON in each log entry.
169 detailed_description: |
170 Useful for debugging and reprocessing, but increases storage usage.
171 default_value: false
172 required: false
173 examples:
174 folding:
175 title: Config
176 enabled: true
177 list:
178 - name: Basic configuration
179 folding:
180 enabled: false
181 description: Listen on default endpoint with default settings.
182 config: |
183 endpoint:
184 path: "127.0.0.1:4317"
185 metrics:
186 chart_configs_dir: /etc/netdata/otel.d/v1/metrics/
187 interval_secs: 10
188 grace_period_secs: 60
189 expiry_duration_secs: 900
190 max_new_charts_per_request: 100
191 logs:
192 journal_dir: /var/log/netdata/otel-journals
193 - name: Partial user override
194 description: |
195 Override only specific fields in the user config. All other settings
196 are inherited from the stock config. Unknown fields are ignored for
197 forward compatibility.
198 config: |
199 endpoint:
200 path: "0.0.0.0:4317"
201 logs:
202 number_of_journal_files: 20
203 duration_of_journal_files: "14 days"
204 - name: Metric mapping file
205 description: |
206 Place YAML files like this in `/etc/netdata/otel.d/v1/metrics/` to control how
207 OTLP metrics are mapped to Netdata charts. This example maps metrics from the
208 OpenTelemetry Collector hostmetrics receiver.
209 config: |
210 metrics:
211 "system.network.connections":
212 - instrumentation_scope:
213 name: .*hostmetricsreceiver.*networkscraper$
214 dimension_attribute_key: state
215
216 "system.cpu.utilization":
217 - instrumentation_scope:
218 name: .*hostmetricsreceiver.*cpuscraper$
219 dimension_attribute_key: state
220
221 "system.memory.usage":
222 - instrumentation_scope:
223 name: .*hostmetricsreceiver.*memoryscraper$
224 dimension_attribute_key: state
225 interval_secs: 5
226 - name: TLS-enabled configuration
227 description: Listen with TLS enabled for secure connections.
228 config: |
229 endpoint:
230 path: "0.0.0.0:4317"
231 tls_cert_path: /etc/netdata/ssl/cert.pem
232 tls_key_path: /etc/netdata/ssl/key.pem
233 metrics:
234 chart_configs_dir: /etc/netdata/otel.d/v1/metrics/
235 interval_secs: 10
236 grace_period_secs: 60
237 expiry_duration_secs: 900
238 max_new_charts_per_request: 100
239 logs:
240 journal_dir: /var/log/netdata/otel-journals
241 troubleshooting:
242 problems:
243 list: []
244 alerts: []
245 metrics:
246 folding:
247 title: Metrics
248 enabled: false
249 description: |
250 Metrics are dynamically created based on the OpenTelemetry data received.
251 The specific metrics depend on the OTLP sources sending data to the plugin.
252 availability: []
253 scopes: []