diff --git a/docs/Alerts & Notifications/Alert Configuration Reference.mdx b/docs/Alerts & Notifications/Alert Configuration Reference.mdx index 445c40ac2d..405f1f83a8 100644 --- a/docs/Alerts & Notifications/Alert Configuration Reference.mdx +++ b/docs/Alerts & Notifications/Alert Configuration Reference.mdx @@ -1038,7 +1038,7 @@ Several stock health configurations use host variables to reference dimensions f ##### Prometheus Collector Variables -For metrics collected by the go.d `prometheus` collector, each unique Prometheus label set usually produces a separate chart. The chart ID is built from the metric name followed by `-label=value` pairs for every label (e.g. `kubelet_volume_stats_used_bytes-persistentvolumeclaim=my-pvc`). In the Netdata chart registry, the prefix comes from the go.d job `FullName`: it is `prometheus.-` only when the job name is literally `prometheus`; otherwise it is `prometheus_.-` (for example, `prometheus_local.-` or `prometheus_kubelet.-`). For summary and histogram metric families, the collector may also emit related chart IDs such as ``, `_sum`, and `_count`, so verify the exact chart ID you want to reference. +For metrics collected by the go.d `prometheus` collector, each unique Prometheus label set usually produces a separate chart. The chart ID is built from the metric name followed by `-label=value` pairs for every label (e.g. `kubelet_volume_stats_used_bytes-persistentvolumeclaim=my-pvc`); characters in a label value that are not chart-ID-safe, such as `.`, are replaced with `_` in the chart ID, while the chart's label keeps the original value (so `addr="10.0.0.1"` yields `…-addr=10_0_0_1`). In the Netdata chart registry, the prefix comes from the go.d job `FullName`: it is `prometheus.-` only when the job name is literally `prometheus`; otherwise it is `prometheus_.-` (for example, `prometheus_local.-` or `prometheus_kubelet.-`). Summary and histogram families also emit separate `_sum` and `_count` charts; the suffix is part of the metric name, so the IDs are `_sum-` and `_count-` (just `_sum` / `_count` when the series has no labels), while histogram buckets are dimensions of the base `` chart. Verify the exact chart ID you want to reference. Because Prometheus chart IDs typically contain hyphens and `=` characters, use the `${...}` brace form to reference them in `calc`/`warn`/`crit` expressions — the unbraced `$var` form stops parsing at `-`. Apply the same rule for both the common `prometheus_` prefix and the special-case plain `prometheus` prefix, including any `_sum` or `_count` chart variants. diff --git a/docs/Alerts & Notifications/Alerts & Notifications.mdx b/docs/Alerts & Notifications/Alerts & Notifications.mdx index 5db6605b16..e2e968732f 100644 --- a/docs/Alerts & Notifications/Alerts & Notifications.mdx +++ b/docs/Alerts & Notifications/Alerts & Notifications.mdx @@ -3,7 +3,7 @@ custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/health/READ sidebar_label: "Alerts & Notifications" learn_status: "Published" learn_rel_path: "Alerts & Notifications" -sidebar_position: "140" +sidebar_position: "150" learn_link: "https://learn.netdata.cloud/docs/alerts-&-notifications" slug: "/alerts-&-notifications" --- diff --git a/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Agent Notifications Reference.mdx b/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Agent Notifications Reference.mdx index 7a66ad8cd5..06f7681bef 100644 --- a/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Agent Notifications Reference.mdx +++ b/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Agent Notifications Reference.mdx @@ -100,6 +100,7 @@ Use the `edit-config` script to safely edit configuration files. It automaticall ::: 1. Open the Agent's health notification config: + ```bash sudo ./edit-config health_alarm_notify.conf ``` @@ -109,6 +110,7 @@ Use the `edit-config` script to safely edit configuration files. It automaticall 3. Define recipients per **role** (see below). 4. Restart the Agent for changes to take effect: + ```bash sudo systemctl restart netdata ``` @@ -286,7 +288,7 @@ role_recipients_email[sysadmin]="disabled" If left empty, the default recipient for that method is used. -
+
Alert Severity Filtering
You can limit certain recipients to only receive **critical** alerts: @@ -298,11 +300,47 @@ role_recipients_email[sysadmin]="user1@example.com user2@example.com|critical" This setup: - Sends all alerts to `user1@example.com` -- Sends only critical-related alerts to `user2@example.com` +- Sends notifications to `user2@example.com` only once the alarm reaches CRITICAL, then continues sending status changes (including WARNING and CLEAR) until the alarm is cleared. Works for all supported methods: email, Slack, Telegram, Twilio, Discord, etc.
+
+Controlling Recovered (CLEAR) Notifications
+ +When an alert returns to normal, Netdata sends a **CLEAR** (recovered) notification. You can control when and whether these are sent. + +**Default behavior:** Netdata suppresses CLEAR notifications when the alert was never in a WARNING or CRITICAL state. If `old_status` was not WARNING or CRITICAL and the alert transitions to CLEAR, no notification is sent. This prevents noise from alerts that flap without ever reaching a problem state. + +**Enable CLEAR for all transitions:** If your downstream system handles deduplication, set `clear_alarm_always` in `health_alarm_notify.conf` to override the default suppression and send a CLEAR notification regardless of the previous status: + +```ini +clear_alarm_always='YES' +``` + +**Filter by CRITICAL history with the `|critical` modifier:** As described in [Alert Severity Filtering](#alert-severity-filtering) above, `|critical` forwards notifications only for alerts that have reached CRITICAL status. This affects both WARNING and CLEAR: + +- **WARNING** notifications are suppressed unless the alarm has previously reached CRITICAL. +- **CLEAR** notifications are only sent when the alert previously passed through CRITICAL. If the alert only went through WARNING → CLEAR, the CLEAR is not forwarded. + +```ini +role_recipients_email[sysadmin]="admin@example.com|critical" +``` + +**Suppress all CLEAR notifications:** Use the `|noclear` modifier to completely block CLEAR notifications for a recipient while still receiving WARNING and CRITICAL alerts: + +```ini +role_recipients_email[sysadmin]="admin@example.com|noclear" +``` + +You can combine modifiers. This example notifies only for alarms that have reached CRITICAL (WARNING is suppressed until then), and excludes CLEAR notifications entirely: + +```ini +role_recipients_email[sysadmin]="admin@example.com|critical|noclear" +``` + +
+
Proxy Settings
@@ -411,21 +449,25 @@ Here are solutions for common alert notification issues: ### Email Notifications Not Working 1. Verify your email configuration: + ```bash grep -E "SEND_EMAIL|DEFAULT_RECIPIENT_EMAIL" /etc/netdata/health_alarm_notify.conf ``` 2. Check if the system can send mail: + ```bash echo "Test" | mail -s "Test Email" your@email.com ``` 3. Look for errors in the Netdata log: + ```bash tail -f /var/log/netdata/error.log | grep "alarm notify" ``` 4. Test with debugging enabled: + ```bash sudo su -s /bin/bash netdata export NETDATA_ALARM_NOTIFY_DEBUG=1 @@ -435,11 +477,13 @@ Here are solutions for common alert notification issues: ### Slack Notifications Failing 1. Verify your webhook URL is correct: + ```bash grep -E "SLACK_WEBHOOK_URL" /etc/netdata/health_alarm_notify.conf ``` 2. Check for network connectivity to Slack: + ```bash curl -X POST -H "Content-type: application/json" --data '{"text":"Test"}' YOUR_WEBHOOK_URL ``` @@ -449,11 +493,13 @@ Here are solutions for common alert notification issues: ### PagerDuty Integration Issues 1. Verify your service key: + ```bash grep -E "PAGERDUTY_SERVICE_KEY" /etc/netdata/health_alarm_notify.conf ``` 2. Test the PagerDuty API directly: + ```bash curl -H "Content-Type: application/json" -X POST -d '{"service_key":"YOUR_SERVICE_KEY","event_type":"trigger","description":"Test"}' https://events.pagerduty.com/generic/2010-04-15/create_event.json ``` diff --git a/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Email.mdx b/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Email.mdx index 8b74ac1365..7cab97225e 100644 --- a/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Email.mdx +++ b/docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Email.mdx @@ -42,6 +42,7 @@ Send notifications via Email using Netdata's Agent alert notification feature, w ``` - Update your container with `docker compose up -d`. +- If you use Gmail as the SMTP relay and your mail client cannot use Google's OAuth-based sign-in flow, configure your `msmtprc` file with `smtp.gmail.com`, port `587`, TLS enabled, and a Gmail [App Password](https://support.google.com/accounts/answer/185833) instead of your regular account password. Set `EMAIL_SENDER` in `health_alarm_notify.conf` to the same Gmail address used in the `msmtprc` `from` field. diff --git a/docs/Alerts & Notifications/Notifications/Centralized Cloud Notifications/Webhook.mdx b/docs/Alerts & Notifications/Notifications/Centralized Cloud Notifications/Webhook.mdx index 0372c43615..5f41e2a898 100644 --- a/docs/Alerts & Notifications/Notifications/Centralized Cloud Notifications/Webhook.mdx +++ b/docs/Alerts & Notifications/Notifications/Centralized Cloud Notifications/Webhook.mdx @@ -105,13 +105,13 @@ By default, the following headers will be sent in the HTTP request Netdata webhook integration supports 3 different authentication mechanisms: -##### Mutual TLS authentication (recommended) +##### Mutual TLS authentication -In mutual Transport Layer Security (mTLS) authentication, the client and the server authenticate each other using X.509 certificates. This ensures that the client is connecting to the intended server, and that the server is only accepting connections from authorized clients. +Netdata always sends a client certificate with every webhook request, regardless of which authentication method is selected in the UI. This means mTLS is available on all webhook integrations by default — no additional configuration is needed on the Netdata side to enable it. -This is the default authentication mechanism used if no other method is selected. +The authentication method you select (no auth, basic, or bearer) controls only whether an Authorization header is included in the request. It does not affect the client certificate behavior. -To take advantage of mutual TLS, you can configure your server to verify Netdata's client certificate. In order to achieve this, the Netdata client sending the notification supports mutual TLS (mTLS) to identify itself with a client certificate that your server can validate. +If you want to verify Netdata's client certificate on your end, configure your server to validate it using the Netdata CA certificate below. The steps to perform this validation are as follows: diff --git a/docs/Collecting Metrics/Collectors configuration.mdx b/docs/Collecting Metrics/Collectors configuration.mdx index b207094f06..ee36ae0fa3 100644 --- a/docs/Collecting Metrics/Collectors configuration.mdx +++ b/docs/Collecting Metrics/Collectors configuration.mdx @@ -58,7 +58,7 @@ You can modify how often collectors gather metrics to optimize CPU usage. This c 1. Open `netdata.conf` using [`edit-config`](/docs/netdata-agent/configuration#edit-configuration-files). 2. Set the `update every` value (default is `1`, meaning one-second intervals): ```text - [global] + [db] update every = 2 ``` diff --git a/docs/Collecting Metrics/Collectors/Applications/Alamos FE2 server.mdx b/docs/Collecting Metrics/Collectors/Applications/Alamos FE2 server.mdx index 368a35e631..7d3c209555 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Alamos FE2 server.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Alamos FE2 server.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + +
@@ -286,6 +340,55 @@ jobs: ```
+###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/AuthLog.mdx b/docs/Collecting Metrics/Collectors/Applications/AuthLog.mdx index a5e59bc99c..8ba6a2c127 100644 --- a/docs/Collecting Metrics/Collectors/Applications/AuthLog.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/AuthLog.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/BungeeCord.mdx b/docs/Collecting Metrics/Collectors/Applications/BungeeCord.mdx index 0c27ebb4fd..4555e0c887 100644 --- a/docs/Collecting Metrics/Collectors/Applications/BungeeCord.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/BungeeCord.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Celery.mdx b/docs/Collecting Metrics/Collectors/Applications/Celery.mdx index 531a98c032..e1e8c6d22e 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Celery.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Celery.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Chia.mdx b/docs/Collecting Metrics/Collectors/Applications/Chia.mdx index 0f0b5ef669..72d00704a6 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Chia.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Chia.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/ClamAV daemon.mdx b/docs/Collecting Metrics/Collectors/Applications/ClamAV daemon.mdx index c1ade8e652..ba9be19967 100644 --- a/docs/Collecting Metrics/Collectors/Applications/ClamAV daemon.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/ClamAV daemon.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Clamscan results.mdx b/docs/Collecting Metrics/Collectors/Applications/Clamscan results.mdx index d8170679f6..85810d7ba2 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Clamscan results.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Clamscan results.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Collectd.mdx b/docs/Collecting Metrics/Collectors/Applications/Collectd.mdx index 38570e2cd7..c671c7ac4b 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Collectd.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Collectd.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Crowdsec.mdx b/docs/Collecting Metrics/Collectors/Applications/Crowdsec.mdx index 15a18ec76b..c515e7f68d 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Crowdsec.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Crowdsec.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Cryptowatch.mdx b/docs/Collecting Metrics/Collectors/Applications/Cryptowatch.mdx index 4e41d521a5..e75c4030b8 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Cryptowatch.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Cryptowatch.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/DMARC.mdx b/docs/Collecting Metrics/Collectors/Applications/DMARC.mdx index cd7302a32f..0456acec7b 100644 --- a/docs/Collecting Metrics/Collectors/Applications/DMARC.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/DMARC.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Discourse.mdx b/docs/Collecting Metrics/Collectors/Applications/Discourse.mdx index da5efdcd90..ecd133067d 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Discourse.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Discourse.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/GitHub API rate limit.mdx b/docs/Collecting Metrics/Collectors/Applications/GitHub API rate limit.mdx index 4cda87ac32..8e4b7fad88 100644 --- a/docs/Collecting Metrics/Collectors/Applications/GitHub API rate limit.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/GitHub API rate limit.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/GitHub repository.mdx b/docs/Collecting Metrics/Collectors/Applications/GitHub repository.mdx index 6589f52a74..0ff07438d9 100644 --- a/docs/Collecting Metrics/Collectors/Applications/GitHub repository.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/GitHub repository.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Google Pagespeed.mdx b/docs/Collecting Metrics/Collectors/Applications/Google Pagespeed.mdx index d416574c60..a9c21c397e 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Google Pagespeed.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Google Pagespeed.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Grafana.mdx b/docs/Collecting Metrics/Collectors/Applications/Grafana.mdx index 8e3ed62481..e5ff212b2e 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Grafana.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Grafana.mdx @@ -90,11 +90,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -151,6 +154,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -282,6 +336,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Graylog Server.mdx b/docs/Collecting Metrics/Collectors/Applications/Graylog Server.mdx index 3c259d7f0f..859676aa2c 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Graylog Server.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Graylog Server.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Halon.mdx b/docs/Collecting Metrics/Collectors/Applications/Halon.mdx index 929e4cc719..5b117831bf 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Halon.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Halon.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Homebridge.mdx b/docs/Collecting Metrics/Collectors/Applications/Homebridge.mdx index 103a4ebf8c..1fc1f70586 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Homebridge.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Homebridge.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Homey.mdx b/docs/Collecting Metrics/Collectors/Applications/Homey.mdx index 02492b6de1..8679ce41c7 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Homey.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Homey.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Honeypot.mdx b/docs/Collecting Metrics/Collectors/Applications/Honeypot.mdx index 46a5e431b9..1c611a8f91 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Honeypot.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Honeypot.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/IBM AIX systems Njmon.mdx b/docs/Collecting Metrics/Collectors/Applications/IBM AIX systems Njmon.mdx index 0c4c3831e3..444fcfe431 100644 --- a/docs/Collecting Metrics/Collectors/Applications/IBM AIX systems Njmon.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/IBM AIX systems Njmon.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/JMX.mdx b/docs/Collecting Metrics/Collectors/Applications/JMX.mdx index f4251a7993..f037833c06 100644 --- a/docs/Collecting Metrics/Collectors/Applications/JMX.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/JMX.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Kannel.mdx b/docs/Collecting Metrics/Collectors/Applications/Kannel.mdx index 933697e1bc..61f3163814 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Kannel.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Kannel.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Lynis audit reports.mdx b/docs/Collecting Metrics/Collectors/Applications/Lynis audit reports.mdx index 1a2c4ea3e9..e4a68ec82d 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Lynis audit reports.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Lynis audit reports.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Minecraft.mdx b/docs/Collecting Metrics/Collectors/Applications/Minecraft.mdx index 8d981a29e9..938eb48d89 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Minecraft.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Minecraft.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/NRPE daemon.mdx b/docs/Collecting Metrics/Collectors/Applications/NRPE daemon.mdx index 4c8d1eefa8..9c74416eb0 100644 --- a/docs/Collecting Metrics/Collectors/Applications/NRPE daemon.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/NRPE daemon.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Nextcloud servers.mdx b/docs/Collecting Metrics/Collectors/Applications/Nextcloud servers.mdx index 77d7cbf243..873c0aa7cc 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Nextcloud servers.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Nextcloud servers.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/OBS Studio.mdx b/docs/Collecting Metrics/Collectors/Applications/OBS Studio.mdx index d1bd23b807..3babdced16 100644 --- a/docs/Collecting Metrics/Collectors/Applications/OBS Studio.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/OBS Studio.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/OpenWeatherMap.mdx b/docs/Collecting Metrics/Collectors/Applications/OpenWeatherMap.mdx index 2988245c86..50aeaa1957 100644 --- a/docs/Collecting Metrics/Collectors/Applications/OpenWeatherMap.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/OpenWeatherMap.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/ProFTPD.mdx b/docs/Collecting Metrics/Collectors/Applications/ProFTPD.mdx index 43a7c80c61..9093513324 100644 --- a/docs/Collecting Metrics/Collectors/Applications/ProFTPD.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/ProFTPD.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Prometheus endpoint.mdx b/docs/Collecting Metrics/Collectors/Applications/Prometheus endpoint.mdx index 33419aabd0..3169efd2a3 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Prometheus endpoint.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Prometheus endpoint.mdx @@ -91,11 +91,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -152,6 +155,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -283,6 +337,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/RADIUS.mdx b/docs/Collecting Metrics/Collectors/Applications/RADIUS.mdx index 3fafa202cf..d3508ccb07 100644 --- a/docs/Collecting Metrics/Collectors/Applications/RADIUS.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/RADIUS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/SABnzbd.mdx b/docs/Collecting Metrics/Collectors/Applications/SABnzbd.mdx index 566bc31ed0..b17f616550 100644 --- a/docs/Collecting Metrics/Collectors/Applications/SABnzbd.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/SABnzbd.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Slurm.mdx b/docs/Collecting Metrics/Collectors/Applications/Slurm.mdx index 35e67f7a79..9b8a755831 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Slurm.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Slurm.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/StatusPage.mdx b/docs/Collecting Metrics/Collectors/Applications/StatusPage.mdx index ff4072457c..87f4bd4820 100644 --- a/docs/Collecting Metrics/Collectors/Applications/StatusPage.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/StatusPage.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Steam.mdx b/docs/Collecting Metrics/Collectors/Applications/Steam.mdx index e27968a002..469501ce54 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Steam.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Steam.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Suricata.mdx b/docs/Collecting Metrics/Collectors/Applications/Suricata.mdx index 2f683ebcba..c5da859ad9 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Suricata.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Suricata.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Sysload.mdx b/docs/Collecting Metrics/Collectors/Applications/Sysload.mdx index 88583dc5a1..6b988e2f3b 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Sysload.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Sysload.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/TACACS.mdx b/docs/Collecting Metrics/Collectors/Applications/TACACS.mdx index b6e5db3553..38c78fc1ac 100644 --- a/docs/Collecting Metrics/Collectors/Applications/TACACS.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/TACACS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Tankerkoenig API.mdx b/docs/Collecting Metrics/Collectors/Applications/Tankerkoenig API.mdx index 074f8bdfe1..25a9e10fc9 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Tankerkoenig API.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Tankerkoenig API.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Twitch.mdx b/docs/Collecting Metrics/Collectors/Applications/Twitch.mdx index 92bb3745ff..998640e3c0 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Twitch.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Twitch.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/VSCode.mdx b/docs/Collecting Metrics/Collectors/Applications/VSCode.mdx index 207fc43a54..36a6717ed7 100644 --- a/docs/Collecting Metrics/Collectors/Applications/VSCode.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/VSCode.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/Vault PKI.mdx b/docs/Collecting Metrics/Collectors/Applications/Vault PKI.mdx index af8c9eb409..5c629e96e9 100644 --- a/docs/Collecting Metrics/Collectors/Applications/Vault PKI.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/Vault PKI.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/YOURLS URL Shortener.mdx b/docs/Collecting Metrics/Collectors/Applications/YOURLS URL Shortener.mdx index e56664968c..b66da69b9f 100644 --- a/docs/Collecting Metrics/Collectors/Applications/YOURLS URL Shortener.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/YOURLS URL Shortener.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/etcd.mdx b/docs/Collecting Metrics/Collectors/Applications/etcd.mdx index 1dfbc07198..6d93815356 100644 --- a/docs/Collecting Metrics/Collectors/Applications/etcd.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/etcd.mdx @@ -90,11 +90,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -151,6 +154,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -282,6 +336,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/gpsd.mdx b/docs/Collecting Metrics/Collectors/Applications/gpsd.mdx index ea83b60c7d..dcc81d6b81 100644 --- a/docs/Collecting Metrics/Collectors/Applications/gpsd.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/gpsd.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/journald.mdx b/docs/Collecting Metrics/Collectors/Applications/journald.mdx index eb48804abc..cd49c446aa 100644 --- a/docs/Collecting Metrics/Collectors/Applications/journald.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/journald.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/loki.mdx b/docs/Collecting Metrics/Collectors/Applications/loki.mdx index 04c4828790..89dfaa9432 100644 --- a/docs/Collecting Metrics/Collectors/Applications/loki.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/loki.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Applications/mtail.mdx b/docs/Collecting Metrics/Collectors/Applications/mtail.mdx index 79fd96f3b4..e104642b64 100644 --- a/docs/Collecting Metrics/Collectors/Applications/mtail.mdx +++ b/docs/Collecting Metrics/Collectors/Applications/mtail.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS EC2 Compute instances.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS EC2 Compute instances.mdx index db54d327dd..b01c4ab498 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS EC2 Compute instances.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS EC2 Compute instances.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS Quota.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS Quota.mdx index 39c67c38c9..5b07f632c6 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS Quota.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/AWS Quota.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/BOSH.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/BOSH.mdx index 77d6f760ba..a04b7f7e5c 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/BOSH.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/BOSH.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry Firehose.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry Firehose.mdx index 7687b7459e..6259f2a5ef 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry Firehose.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry Firehose.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry.mdx index cb1eac26f9..36187b8301 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Cloud Foundry.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/CloudWatch.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/CloudWatch.mdx index b53e023617..cacb56b603 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/CloudWatch.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/CloudWatch.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Concourse.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Concourse.mdx index 93745d1077..66d06dc4b0 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Concourse.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Concourse.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Dynatrace.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Dynatrace.mdx index fa5f41c3df..3e14aa1906 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Dynatrace.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Dynatrace.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/GCP GCE.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/GCP GCE.mdx index abfccb6ec5..646ef5aa85 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/GCP GCE.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/GCP GCE.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/GitLab Runner.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/GitLab Runner.mdx index 3d231d5294..1105fc0f07 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/GitLab Runner.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/GitLab Runner.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Cloud Platform.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Cloud Platform.mdx index 1f6caa8656..368ba2acaf 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Cloud Platform.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Cloud Platform.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Stackdriver.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Stackdriver.mdx index 283dec46b9..915e4da287 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Stackdriver.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Google Stackdriver.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Hubble.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Hubble.mdx index 5c7667045e..b709597c0b 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Hubble.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Hubble.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Jenkins.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Jenkins.mdx index 29c47130c0..12dcd62f16 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Jenkins.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Jenkins.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Linode.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Linode.mdx index a52b2c8792..d564de7a32 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Linode.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Linode.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Spacelift.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Spacelift.mdx index ea3a311e5a..2545107d83 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Spacelift.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Spacelift.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Zerto.mdx b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Zerto.mdx index 83a2d0d1ae..9a02dedbf1 100644 --- a/docs/Collecting Metrics/Collectors/Cloud and DevOps/Zerto.mdx +++ b/docs/Collecting Metrics/Collectors/Cloud and DevOps/Zerto.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Collectors.mdx b/docs/Collecting Metrics/Collectors/Collectors.mdx index 9cca72d7b5..e0f5bf410b 100644 --- a/docs/Collecting Metrics/Collectors/Collectors.mdx +++ b/docs/Collecting Metrics/Collectors/Collectors.mdx @@ -1078,6 +1078,10 @@ import { Grid, Box } from '@site/src/components/Grid_integrations'; + + + + diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/AWS ECS Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/AWS ECS Containers.mdx index bdc5440bb1..b9ef5ffb88 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/AWS ECS Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/AWS ECS Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Agent.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Agent.mdx index 59fc7ab030..dd692481f9 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Agent.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Agent.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Operator.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Operator.mdx index 39cb090cde..2ae4a2bfcf 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Operator.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Operator.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Proxy.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Proxy.mdx index 63b1d74595..fb1fb1237b 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Proxy.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Cilium Proxy.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Containers.mdx index 991820d8a8..9000624d46 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Containers.mdx @@ -26,7 +26,7 @@ Module: /sys/fs/cgroup ## Overview -Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. +Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Docker Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Docker Containers.mdx index 01a2f8c8b5..eb57aad018 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Docker Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Docker Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Docker.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Docker.mdx index 441771a996..02f6f8eaef 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Docker.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Docker.mdx @@ -183,6 +183,7 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| | [ docker_container_unhealthy ](https://github.com/netdata/netdata/blob/master/src/health/health.d/docker.conf) | docker.container_health_status | $\{label:container_name} docker container health status is unhealthy | +| [ docker_container_down ](https://github.com/netdata/netdata/blob/master/src/health/health.d/docker.conf) | docker.container_state | Docker container $\{label:container_name} is currently exited. This alert is disabled by default. To enable it, modify the chart labels filter in the stock health configuration (docker.conf) from container_name=!* to match your container names. | ## Metrics diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Hyper-V.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Hyper-V.mdx index 87389a6f42..9fd8ffafe8 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Hyper-V.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Hyper-V.mdx @@ -5,7 +5,7 @@ learn_status: "Published" toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Containers and VMs" -keywords: [windows, microsoft, hyperv, virtualization, vm] +keywords: [windows, microsoft, hyperv, virtualization, vm, azure-local, azure-stack-hci] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" sidebar_position: "110" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/containers-and-vms/hyper-v" @@ -26,7 +26,7 @@ Module: PerflibHyperV ## Overview -This collector monitors website requests and logins. +This collector monitors Hyper-V virtualization metrics including virtual machine health status, root partition virtualization layer statistics (TLB flushes, address spaces, attached devices, GPA space), per-VM CPU usage, memory allocation and pressure, storage device I/O and errors, network interface traffic and packets, and virtual switch traffic, packets, and dropped packets. It queries the 'HyperV' object from Perflib in order to gather the metrics. diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Kubernetes Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Kubernetes Containers.mdx index 97a1eedaa9..1d94702418 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Kubernetes Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Kubernetes Containers.mdx @@ -26,7 +26,7 @@ Module: /sys/fs/cgroup ## Overview -Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. +Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. @@ -198,4 +198,18 @@ Metrics: | k8s.cgroup.net_carrier | up, down | state | | k8s.cgroup.net_mtu | mtu | octets | +### Per cgroups plugin IPC + +cgroups.plugin netipc lookup-server and discovery signal health. + +This scope has no labels. + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| netdata.collector.ipc.cgroups_lookup.server.requests | requests_responded, requests_error, lookup_miss_signals_sent, lookup_miss_signals_coalesced | requests/s | +| netdata.collector.ipc.cgroups_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s | +| netdata.collector.cgroups.discovery.scans | discovery_scans_natural, discovery_scans_opportunistic | scans/s | + diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/LXC Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/LXC Containers.mdx index 829bab849a..f7e5fc4280 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/LXC Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/LXC Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Libvirt VMs and Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Libvirt VMs and Containers.mdx index 5d82dd19e6..a52bab5bde 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Libvirt VMs and Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Libvirt VMs and Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Mesos.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Mesos.mdx index d759c35bdf..d9bba64ab4 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Mesos.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Mesos.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Nomad Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Nomad Containers.mdx index 2da82ef0a5..f069bab23b 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Nomad Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Nomad Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/OpenShift Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/OpenShift Containers.mdx index 76b835235a..33d3b2d824 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/OpenShift Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/OpenShift Containers.mdx @@ -190,4 +190,18 @@ Metrics: | k8s.cgroup.net_carrier | up, down | state | | k8s.cgroup.net_mtu | mtu | octets | +### Per cgroups plugin IPC + +cgroups.plugin netipc lookup-server and discovery signal health. + +This scope has no labels. + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| netdata.collector.ipc.cgroups_lookup.server.requests | requests_responded, requests_error, lookup_miss_signals_sent, lookup_miss_signals_coalesced | requests/s | +| netdata.collector.ipc.cgroups_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s | +| netdata.collector.cgroups.discovery.scans | discovery_scans_natural, discovery_scans_opportunistic | scans/s | + diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/OpenStack VMs.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/OpenStack VMs.mdx index 0192d600e1..4a85947c6a 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/OpenStack VMs.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/OpenStack VMs.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Podman Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Podman Containers.mdx index c0607f6312..08d6b2a701 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Podman Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Podman Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Podman.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Podman.mdx index 7bc72e147e..372702d4d7 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Podman.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Podman.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VE.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VE.mdx index a0399518f2..6e3ae45f01 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VE.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VE.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VMs and Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VMs and Containers.mdx index 4a9ba99ff4..fcef1420fd 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VMs and Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Proxmox VMs and Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/Virtual Machines.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/Virtual Machines.mdx index 63b91f19ad..57c9d87079 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/Virtual Machines.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/Virtual Machines.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/containerd Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/containerd Containers.mdx index da7f7705f4..adb746fb76 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/containerd Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/containerd Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/oVirt VMs.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/oVirt VMs.mdx index 5a6da54a4f..cb5d1eaae1 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/oVirt VMs.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/oVirt VMs.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Containers and VMs/systemd-nspawn Containers.mdx b/docs/Collecting Metrics/Collectors/Containers and VMs/systemd-nspawn Containers.mdx index 1bb5558405..05c15a8308 100644 --- a/docs/Collecting Metrics/Collectors/Containers and VMs/systemd-nspawn Containers.mdx +++ b/docs/Collecting Metrics/Collectors/Containers and VMs/systemd-nspawn Containers.mdx @@ -146,6 +146,10 @@ Metrics: | cgroup.io_full_pressure | some10, some60, some300 | percentage | | cgroup.io_full_pressure_stall_time | time | ms | | cgroup.pids_current | pids | pids | +| cgroup.cachestat_ratio | ratio | % | +| cgroup.cachestat_dirties | dirty | page/s | +| cgroup.cachestat_hits | hit | hits/s | +| cgroup.cachestat_misses | miss | misses/s | ### Per cgroup network device diff --git a/docs/Collecting Metrics/Collectors/Databases/4D Server.mdx b/docs/Collecting Metrics/Collectors/Databases/4D Server.mdx index f4a514b318..d6dbb33fd5 100644 --- a/docs/Collecting Metrics/Collectors/Databases/4D Server.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/4D Server.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/AWS RDS.mdx b/docs/Collecting Metrics/Collectors/Databases/AWS RDS.mdx index fec5fcf679..0ebe9e727f 100644 --- a/docs/Collecting Metrics/Collectors/Databases/AWS RDS.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/AWS RDS.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/ClusterControl CMON.mdx b/docs/Collecting Metrics/Collectors/Databases/ClusterControl CMON.mdx index 71d735e839..7bbf5300e4 100644 --- a/docs/Collecting Metrics/Collectors/Databases/ClusterControl CMON.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/ClusterControl CMON.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/HANA.mdx b/docs/Collecting Metrics/Collectors/Databases/HANA.mdx index 4755b5d0be..8de2584ac6 100644 --- a/docs/Collecting Metrics/Collectors/Databases/HANA.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/HANA.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/IBM MQ.mdx b/docs/Collecting Metrics/Collectors/Databases/IBM MQ.mdx index b0c1cdbd6e..45bfee7fb9 100644 --- a/docs/Collecting Metrics/Collectors/Databases/IBM MQ.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/IBM MQ.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/InfluxDB.mdx b/docs/Collecting Metrics/Collectors/Databases/InfluxDB.mdx index b6bc02b19c..74d0500526 100644 --- a/docs/Collecting Metrics/Collectors/Databases/InfluxDB.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/InfluxDB.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Kafka Consumer Lag.mdx b/docs/Collecting Metrics/Collectors/Databases/Kafka Consumer Lag.mdx index 80d4d9ac70..482b9c7593 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Kafka Consumer Lag.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Kafka Consumer Lag.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Kafka ZooKeeper.mdx b/docs/Collecting Metrics/Collectors/Databases/Kafka ZooKeeper.mdx index e3ec0007fb..ac88c628c1 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Kafka ZooKeeper.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Kafka ZooKeeper.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Kafka.mdx b/docs/Collecting Metrics/Collectors/Databases/Kafka.mdx index 36f74806bc..afb8527108 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Kafka.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Kafka.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Meilisearch.mdx b/docs/Collecting Metrics/Collectors/Databases/Meilisearch.mdx index 90b4c801f4..fa6f76841f 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Meilisearch.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Meilisearch.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Microsoft SQL Server.mdx b/docs/Collecting Metrics/Collectors/Databases/Microsoft SQL Server.mdx index 75191c89be..eb6d2260b5 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Microsoft SQL Server.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Microsoft SQL Server.mdx @@ -32,7 +32,7 @@ It collects metrics from: - Performance counters (buffer manager, memory manager, SQL statistics) - Dynamic management views (DMVs) for wait statistics, locks, and sessions - Per-database transaction and lock statistics -- SQL Server Agent job status +- SQL Server Agent job status and execution history - Always On Availability Group health, replica states, and per-database synchronization metrics @@ -47,6 +47,8 @@ It connects to the SQL Server instance via TCP using the go-mssqldb driver and e - `sys.dm_os_sys_memory` - OS physical memory and page file - `sys.master_files` - Database file sizes - `msdb.dbo.sysjobs` - SQL Agent job status +- `msdb.dbo.sysjobhistory` - SQL Agent completed job execution history +- `msdb.dbo.sysjobactivity` - SQL Agent current job activity - `sys.dm_hadr_availability_group_states` - AG health rollup - `sys.dm_hadr_availability_replica_states` - Replica operational state - `sys.dm_hadr_database_replica_states` - Database sync queues and rates @@ -61,8 +63,18 @@ This collector is supported on all platforms. This collector supports collecting metrics from multiple instances of this integration, including remote instances. The monitoring user requires the VIEW SERVER STATE permission to access DMVs. -SQL Agent job monitoring is part of collector startup, so access to -`msdb.dbo.sysjobs` is required. + +SQL Agent job metrics require access to `msdb.dbo.sysjobs`. + +SQL Agent job execution metrics additionally require access to `msdb.dbo.sysjobhistory` and `msdb.dbo.sysjobactivity`. +If those optional `msdb` grants are missing, the collector continues collecting other SQL Server metrics and omits only the affected SQL Agent job metrics. + +Current job execution time is based on the latest visible SQL Server Agent activity session. +If SQL Server Agent stops or crashes while a job is recorded as running, `sysjobactivity` can report that job as running until Agent creates a newer session or activity/history state changes. + +Last execution warning detection checks failed step history between the previous and latest completed job summary rows. +If SQL Server Agent step history is suppressed or purged before collection, a job that completed successfully with failed intermediate steps can be reported as `ok` instead of `warning`. + Always On AG monitoring requires VIEW ANY DEFINITION for access to availability group catalog views. On SQL Server 2022+, HADR DMVs may additionally require VIEW SERVER PERFORMANCE STATE. @@ -126,10 +138,12 @@ GRANT VIEW ANY DEFINITION TO netdata_user; -- Grant VIEW SERVER PERFORMANCE STATE (required for HADR DMVs on SQL Server 2022+) -- GRANT VIEW SERVER PERFORMANCE STATE TO netdata_user; --- Grant access to msdb for SQL Agent job monitoring (required) +-- Grant access to msdb for SQL Agent job monitoring USE msdb; CREATE USER netdata_user FOR LOGIN netdata_user; GRANT SELECT ON dbo.sysjobs TO netdata_user; +GRANT SELECT ON dbo.sysjobhistory TO netdata_user; +GRANT SELECT ON dbo.sysjobactivity TO netdata_user; -- Optional: Grant access to distribution database for replication monitoring -- (only if replication is configured) @@ -142,9 +156,11 @@ GRANT SELECT ON dbo.MSsubscriptions TO netdata_user; **Required permissions:** - `VIEW SERVER STATE` - Access to dynamic management views -- `SELECT on msdb.dbo.sysjobs` - SQL Agent job status monitoring **Optional permissions:** +- `SELECT on msdb.dbo.sysjobs` - SQL Agent job status monitoring +- `SELECT on msdb.dbo.sysjobhistory` - SQL Agent completed job execution history +- `SELECT on msdb.dbo.sysjobactivity` - SQL Agent current job activity - `VIEW ANY DEFINITION` - Always On Availability Group monitoring - `VIEW SERVER PERFORMANCE STATE` - HADR DMVs on SQL Server 2022+ - `SELECT on distribution.dbo.MSreplication_monitordata` - Replication monitoring @@ -172,6 +188,8 @@ GRANT VIEW ANY DEFINITION TO [NT AUTHORITY\SYSTEM]; USE msdb; CREATE USER [NT AUTHORITY\SYSTEM] FOR LOGIN [NT AUTHORITY\SYSTEM]; GRANT SELECT ON dbo.sysjobs TO [NT AUTHORITY\SYSTEM]; +GRANT SELECT ON dbo.sysjobhistory TO [NT AUTHORITY\SYSTEM]; +GRANT SELECT ON dbo.sysjobactivity TO [NT AUTHORITY\SYSTEM]; ``` **Remote connection (Netdata connects to SQL Server on another machine):** @@ -187,6 +205,8 @@ GRANT VIEW ANY DEFINITION TO [DOMAIN\COMPUTERNAME$]; USE msdb; CREATE USER [DOMAIN\COMPUTERNAME$] FOR LOGIN [DOMAIN\COMPUTERNAME$]; GRANT SELECT ON dbo.sysjobs TO [DOMAIN\COMPUTERNAME$]; +GRANT SELECT ON dbo.sysjobhistory TO [DOMAIN\COMPUTERNAME$]; +GRANT SELECT ON dbo.sysjobactivity TO [DOMAIN\COMPUTERNAME$]; ``` For the default `Local System` service account, remote Windows Authentication works @@ -445,6 +465,8 @@ The following alerts are available: | Alert name | On metric | Description | |:------------|:----------|:------------| | [ mssql_database_log_percent_used ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.database_log_percent_used | SQL Server transaction log percent used has been above 90% for the last 15 minutes | +| [ mssql_sql_agent_job_last_execution_warning ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.job_last_execution_status | SQL Server Agent job succeeded but at least one step failed in the last completed execution | +| [ mssql_sql_agent_job_last_execution_failed ](https://github.com/netdata/netdata/blob/master/src/health/health.d/mssql.conf) | mssql.job_last_execution_status | SQL Server Agent job failed in the last completed execution | ## Metrics @@ -463,7 +485,7 @@ This scope has no labels. Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.user_connections | user | connections | • | • | | mssql.session_connections | user, internal | connections | • | • | @@ -503,7 +525,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.database_active_transactions | active | transactions | • | • | | mssql.database_transactions | transactions | transactions/s | • | • | @@ -532,7 +554,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.lock_stats_deadlocks | deadlocks | deadlocks/s | • | • | | mssql.lock_stats_waits | waits | waits/s | • | • | @@ -551,7 +573,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.locks_by_resource | locks | locks | • | • | @@ -568,7 +590,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.wait_total_time | duration | ms | • | • | | mssql.wait_resource_time | duration | ms | • | • | @@ -588,9 +610,13 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| -| mssql.job_status | enabled, disabled | status | • | • | +| mssql.job_status | enabled, disabled | status | • | | +| mssql.job_last_execution_status | unknown, ok, warning, error, canceled | status | • | | +| mssql.job_last_execution_duration | duration | seconds | • | | +| mssql.job_last_execution_age | age | seconds | • | | +| mssql.job_current_execution_time | duration | seconds | • | | ### Per replication @@ -605,7 +631,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.replication_status | started, succeeded, in_progress, idle, retrying, failed | status | • | • | | mssql.replication_warning | expiration, latency, merge_expiration, merge_slow_duration, merge_fast_duration, merge_fast_speed, merge_slow_speed | flags | • | • | @@ -624,7 +650,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_sync_health | not_healthy, partially_healthy, healthy | state | • | • | | mssql.ag_recovery_health | primary_online, primary_in_progress, secondary_online, secondary_in_progress | state | • | • | @@ -645,7 +671,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_replica_role | primary, secondary, resolving, unknown | state | • | • | | mssql.ag_replica_connected_state | connected, disconnected, unknown | state | • | • | @@ -665,7 +691,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_db_sync_state | not_synchronizing, synchronizing, synchronized, reverting, initializing | state | • | • | | mssql.ag_db_log_send_queue | queue_size | bytes | • | • | @@ -686,7 +712,7 @@ This scope has no labels. Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_cluster_quorum_state | normal, forced, unknown | state | • | • | @@ -702,7 +728,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_cluster_member_state | up, down | state | • | • | | mssql.ag_cluster_member_quorum_votes | votes | votes | • | • | @@ -719,7 +745,7 @@ Labels: Metrics: -| Metric | Dimensions | Unit | SQL Server 2016+ | Azure SQL Database | +| Metric | Dimensions | Unit | SQL Server | Azure SQL Database | |:------|:----------|:----|:---:|:---:| | mssql.ag_page_repair | successful, failed | repairs | • | • | diff --git a/docs/Collecting Metrics/Collectors/Databases/Patroni.mdx b/docs/Collecting Metrics/Collectors/Databases/Patroni.mdx index d573f1c4cf..5a45c5f0e0 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Patroni.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Patroni.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Pgpool-II.mdx b/docs/Collecting Metrics/Collectors/Databases/Pgpool-II.mdx index ca1ad75f3c..f80060f1d0 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Pgpool-II.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Pgpool-II.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Redis Queue.mdx b/docs/Collecting Metrics/Collectors/Databases/Redis Queue.mdx index 0c86896509..0f5b299280 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Redis Queue.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Redis Queue.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/ScyllaDB.mdx b/docs/Collecting Metrics/Collectors/Databases/ScyllaDB.mdx index aa06d4e750..9f2d961189 100644 --- a/docs/Collecting Metrics/Collectors/Databases/ScyllaDB.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/ScyllaDB.mdx @@ -90,11 +90,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -151,6 +154,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -282,6 +336,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Sphinx.mdx b/docs/Collecting Metrics/Collectors/Databases/Sphinx.mdx index 14cb940d24..cd8f04e031 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Sphinx.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Sphinx.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Vertica.mdx b/docs/Collecting Metrics/Collectors/Databases/Vertica.mdx index 18e87ec0bf..af77cf8700 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Vertica.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Vertica.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/Warp10.mdx b/docs/Collecting Metrics/Collectors/Databases/Warp10.mdx index 3ba11f2715..89aa422d29 100644 --- a/docs/Collecting Metrics/Collectors/Databases/Warp10.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/Warp10.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/mosquitto.mdx b/docs/Collecting Metrics/Collectors/Databases/mosquitto.mdx index 74bd3846e5..49c9d27dd4 100644 --- a/docs/Collecting Metrics/Collectors/Databases/mosquitto.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/mosquitto.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Databases/pgBackRest.mdx b/docs/Collecting Metrics/Collectors/Databases/pgBackRest.mdx index 2181005a55..dadad58df0 100644 --- a/docs/Collecting Metrics/Collectors/Databases/pgBackRest.mdx +++ b/docs/Collecting Metrics/Collectors/Databases/pgBackRest.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/AMD CPU & GPU.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/AMD CPU & GPU.mdx index c2556de6e4..b7cc78ec88 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/AMD CPU & GPU.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/AMD CPU & GPU.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Christ Elektronik CLM5IP power panel.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Christ Elektronik CLM5IP power panel.mdx index 800a49c28e..daf8ec63c0 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Christ Elektronik CLM5IP power panel.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Christ Elektronik CLM5IP power panel.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/CraftBeerPi.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/CraftBeerPi.mdx index 821fbbd58f..b94597ddd8 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/CraftBeerPi.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/CraftBeerPi.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Dutch Electricity Smart Meter.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Dutch Electricity Smart Meter.mdx index 40525208b9..5fc9111a39 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Dutch Electricity Smart Meter.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Dutch Electricity Smart Meter.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Elgato Key Light devices..mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Elgato Key Light devices..mdx index fd9a582876..9ec3d592c0 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Elgato Key Light devices..mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Elgato Key Light devices..mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Energomera smart power meters.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Energomera smart power meters.mdx index 5d78ec67cf..29374a26cd 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Energomera smart power meters.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Energomera smart power meters.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM CryptoExpress CEX cards.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM CryptoExpress CEX cards.mdx index 09db8fe666..a7d7078fe1 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM CryptoExpress CEX cards.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM CryptoExpress CEX cards.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM Z Hardware Management Console.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM Z Hardware Management Console.mdx index 408e7f5e45..8e66ea928f 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM Z Hardware Management Console.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/IBM Z Hardware Management Console.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Jarvis Standing Desk.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Jarvis Standing Desk.mdx index 87fbbb734d..421c41a97f 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Jarvis Standing Desk.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Jarvis Standing Desk.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Modbus protocol.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Modbus protocol.mdx index 0fd27b01b4..2b096dc2a1 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Modbus protocol.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Modbus protocol.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Nature Remo E lite devices.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Nature Remo E lite devices.mdx index d6e7dffe25..1cded235ce 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Nature Remo E lite devices.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Nature Remo E lite devices.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Netatmo sensors.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Netatmo sensors.mdx index a9d38bbc3b..c4975f9a84 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Netatmo sensors.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Netatmo sensors.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Personal Weather Station.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Personal Weather Station.mdx index 2f05aad1e7..3edf9e235c 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Personal Weather Station.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Personal Weather Station.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Philips Hue.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Philips Hue.mdx index 8d80c7db06..3e56a871de 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Philips Hue.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Philips Hue.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Pimoroni Enviro+.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Pimoroni Enviro+.mdx index 69544bd9bc..6d0f6f17b0 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Pimoroni Enviro+.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Pimoroni Enviro+.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Powerpal devices.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Powerpal devices.mdx index 6f6cd83ded..f91688d0d5 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Powerpal devices.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Powerpal devices.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Radio Thermostat.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Radio Thermostat.mdx index cedc554648..3dc318192d 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Radio Thermostat.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Radio Thermostat.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Raritan PDU.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Raritan PDU.mdx index 7705ab8265..6a7f9b58cd 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Raritan PDU.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Raritan PDU.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/SMA Inverters.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/SMA Inverters.mdx index e9dc48ea0f..5e1c87560e 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/SMA Inverters.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/SMA Inverters.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Salicru EQX inverter.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Salicru EQX inverter.mdx index 3535479e3e..6bf07aaa73 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Salicru EQX inverter.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Salicru EQX inverter.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sense Energy.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sense Energy.mdx index 1da7cc1f7e..c315974b7e 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sense Energy.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sense Energy.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Shelly humidity sensor.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Shelly humidity sensor.mdx index 7a280e1a77..4eabe27a04 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Shelly humidity sensor.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Shelly humidity sensor.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Siemens S7 PLC.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Siemens S7 PLC.mdx index 0423eb3799..2f366ab40a 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Siemens S7 PLC.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Siemens S7 PLC.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Smart meters SML.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Smart meters SML.mdx index 81071e118e..30af3f9ce6 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Smart meters SML.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Smart meters SML.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solar logging stick.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solar logging stick.mdx index 507b857eea..147d50a330 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solar logging stick.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solar logging stick.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solis Ginlong 5G inverters.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solis Ginlong 5G inverters.mdx index ab42ae767f..3b0b773549 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solis Ginlong 5G inverters.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Solis Ginlong 5G inverters.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sunspec Solar Energy.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sunspec Solar Energy.mdx index 93d1cc2929..72b7178f04 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sunspec Solar Energy.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Sunspec Solar Energy.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tado smart heating solution.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tado smart heating solution.mdx index 18e4ecdf0b..870152eaa2 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tado smart heating solution.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tado smart heating solution.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla Wall Connector.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla Wall Connector.mdx index 00fdd66232..421643f693 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla Wall Connector.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla Wall Connector.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla vehicle.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla vehicle.mdx index d791c05dc7..ade763e8d9 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla vehicle.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Tesla vehicle.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Xiaomi Mi Flora.mdx b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Xiaomi Mi Flora.mdx index d11f192b66..2ff4874b4a 100644 --- a/docs/Collecting Metrics/Collectors/Hardware and Sensors/Xiaomi Mi Flora.mdx +++ b/docs/Collecting Metrics/Collectors/Hardware and Sensors/Xiaomi Mi Flora.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/8430FT modem.mdx b/docs/Collecting Metrics/Collectors/Networking/8430FT modem.mdx index 27677d2481..2cee1d7bc0 100644 --- a/docs/Collecting Metrics/Collectors/Networking/8430FT modem.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/8430FT modem.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Bird Routing Daemon.mdx b/docs/Collecting Metrics/Collectors/Networking/Bird Routing Daemon.mdx index b9872dc2a7..6848d4c8bf 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Bird Routing Daemon.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Bird Routing Daemon.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Clash.mdx b/docs/Collecting Metrics/Collectors/Networking/Clash.mdx index 5095f1743b..6459e8e526 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Clash.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Clash.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/DNSBL.mdx b/docs/Collecting Metrics/Collectors/Networking/DNSBL.mdx index 40839e33eb..04846087c6 100644 --- a/docs/Collecting Metrics/Collectors/Networking/DNSBL.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/DNSBL.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/FRRouting.mdx b/docs/Collecting Metrics/Collectors/Networking/FRRouting.mdx index 8ae07ebc5a..4122f2298f 100644 --- a/docs/Collecting Metrics/Collectors/Networking/FRRouting.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/FRRouting.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Fastd.mdx b/docs/Collecting Metrics/Collectors/Networking/Fastd.mdx index 3735dc019a..3293634a68 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Fastd.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Fastd.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Freifunk network.mdx b/docs/Collecting Metrics/Collectors/Networking/Freifunk network.mdx index 098daaefd8..3e887b7ea2 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Freifunk network.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Freifunk network.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Hitron CODA Cable Modem.mdx b/docs/Collecting Metrics/Collectors/Networking/Hitron CODA Cable Modem.mdx index 3cf412e7d4..b5232edaa1 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Hitron CODA Cable Modem.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Hitron CODA Cable Modem.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Keepalived.mdx b/docs/Collecting Metrics/Collectors/Networking/Keepalived.mdx index c7b3ee6ebe..239ac78afd 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Keepalived.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Keepalived.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Network Connections.mdx b/docs/Collecting Metrics/Collectors/Networking/Network Connections.mdx index 6a94c29385..ca858d5a97 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Network Connections.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Network Connections.mdx @@ -5,7 +5,7 @@ learn_status: "Published" toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" -keywords: [network, connections, sockets, tcp, udp, ports] +keywords: [network, connections, sockets, tcp, udp, ports, freebsd] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" sidebar_position: "350" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/network-connections" @@ -31,10 +31,15 @@ Module: network-viewer.plugin This plugin reads the system's socket tables to enumerate all active network connections, including TCP and UDP sockets in all states, for both IPv4 and IPv6. +On Linux it consumes `NETLINK_INET_DIAG` and the `/proc` socket tables; +on FreeBSD it walks `KERN_PROC_FILEDESC` and consults `net.inet.tcp.pcblist` +to attribute sockets to processes. + This collector is only supported on the following platforms: - Linux +- FreeBSD This collector only supports collecting metrics from a single instance of this integration. @@ -65,18 +70,60 @@ No action required. #### Options +Optional APPS_LOOKUP cache-warming controls for topology and aggregated network-connection Functions. + +
+Config options + + + +| Option | Description | Default | Required | +|:-----|:------------|:--------|:---------:| +| apps lookup cache size | Maximum number of per-PID APPS_LOOKUP cache entries kept by network-viewer.plugin. | 8192 | no | -There are no configuration options. +
#### via File -There is no configuration file. +The configuration file name for this integration is `netdata.conf`. +Configuration for this specific integration is located in the `[plugin:network-viewer]` section within that file. + +The file format is a modified INI syntax. The general structure is: + +```ini +[section1] + option1 = some value + option2 = some other value + +[section2] + option3 = some third value +``` +You can edit the configuration file using the [`edit-config`](/docs/netdata-agent/configuration#edit-configuration-files) script from the +Netdata [config directory](/docs/netdata-agent/configuration#locate-your-config-directory). + +```bash +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata +sudo ./edit-config netdata.conf +``` ##### Examples -There are no configuration examples. + +###### APPS_LOOKUP cache warming + +Keep the default APPS_LOOKUP cache size. + +
+Config + +```yaml +[plugin:network-viewer] + apps lookup cache size = 8192 + +``` +
@@ -87,12 +134,35 @@ There are no alerts configured by default for this integration. ## Metrics +Metrics grouped by *scope*. + +The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. + + + +### Per network-viewer plugin IPC + +network-viewer.plugin APPS_LOOKUP client cache-warming health and latency. + +This scope has no labels. + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| netdata.collector.ipc.apps_lookup.client.requests | requests_sent, requests_responded, requests_failed | requests/s | +| netdata.collector.ipc.apps_lookup.client.cache | cache_hits, cache_misses_unknown, cache_misses_intake_dropped, cache_evictions_pid_reuse, cache_evictions_lru | events/s | +| netdata.collector.ipc.apps_lookup.client.peer | peer_connect_attempts, peer_disconnects | events/s | +| netdata.collector.ipc.apps_lookup.client.worker_request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s | +| netdata.collector.ipc.apps_lookup.client.function_handler_overhead_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | calls/s | +| netdata.collector.ipc.apps_lookup.client.intake_depth | intake_depth | pids | ## Live Data -This plugin exposes a real-time function for viewing active network connections. +This plugin exposes real-time functions for viewing active network connections and, +on FreeBSD, system-wide TCP and UDP stack statistics. ### Network Connections @@ -100,10 +170,11 @@ This plugin exposes a real-time function for viewing active network connections. Shows active network connections with protocol details, states, addresses, ports, and performance metrics. Provides both aggregated and detailed views of TCP and UDP connections for IPv4 and IPv6, -including connection direction (listen, inbound, outbound, local), process information, -and TCP performance metrics (RTT, retransmissions). +including connection direction (listen, inbound, outbound), process information, +cgroup/container/service enrichment when available, and TCP performance metrics (RTT, retransmissions). -Connections are classified as system or container based on network namespace. +On Linux, connections are classified as system or container based on network namespace. +On FreeBSD, namespaces are not exposed to userspace and the classification is omitted. | Aspect | Description | @@ -129,4 +200,98 @@ This function has no parameters. | Column | Type | Unit | Visibility | Description | |:-------|:-----|:-----|:-----------|:------------| +### Network Protocols + +Shows FreeBSD TCP and UDP stack statistics grouped by transport protocol. + +Each row covers one transport (TCP or UDP) and reports IPv4+IPv6 combined +traffic counters (received, sent, errors), TCP-specific connection counters +(active opens, currently established, passive opens, resets, total segments, +retransmitted segments), and the UDP-specific datagrams-with-no-port counter. + +Values are per-second deltas sampled from `net.inet.tcp.stats`, +`net.inet.tcp.states`, and `net.inet.udp.stats`. The first call after the +plugin starts returns zeros because there is no previous sample to diff against. + + +| Aspect | Description | +|:-------|:------------| +| Name | `Network-viewer.plugin:network-protocols` | +| Require Cloud | no | +| Performance | | +| Security | | +| Availability | FreeBSD only. | + +#### Prerequisites + +No additional configuration is required. + +#### Parameters + +This function has no parameters. + +#### Returns + + + +| Column | Type | Unit | Visibility | Description | +|:-------|:-----|:-----|:-----------|:------------| + +### Network Connections Topology + +Shows active network connections as a topology graph with self, process or container, and endpoint actors. + +The group_by selector controls the actor level. process_name groups sockets by process name, pid shows +one actor per PID with scalar per-PID information, and container groups sockets by canonical +container_name. For systemd services, container_name is the service name. For non-container, +non-service processes, container_name falls back to the process name. Unresolved cgroup +namespace-relative paths remain pending or process fallback identities instead of being +displayed as raw `cri-containerd-*.scope` systemd scope names. + +Fields that can vary across grouped processes, such as PID, UID, network namespace, command line, +cgroup path, and detailed container metadata, are scalar columns in group_by:pid and merged actor +labels in grouped views. Free-form labels are hidden by default and can be allowed per request with +`labels:`, where patterns are pipe-separated. Actor modals also expose producer-declared +Processes and CGroups tables for the selected actor. + + +| Aspect | Description | +|:-------|:------------| +| Name | `Network-viewer.plugin:topology:network-connections` | +| Require Cloud | no | +| Performance | group_by:container performs APPS_LOOKUP cache reads to derive canonical container_name; cache warming runs asynchronously. | +| Security | Free-form labels are denied by default. Raw cgroup paths may expose operator-chosen path segments and are hidden in table views by default. | +| Availability | container_name uses APPS_LOOKUP data when available, keeps retry-later lookups pending, and falls back to process name for host/root, permanently unknown, and unresolved namespace-relative cgroup cases. | + +#### Prerequisites + +No additional configuration is required. + +#### Parameters + +| Parameter | Type | Description | Required | Default | Options | +|:---------|:-----|:------------|:--------:|:--------|:--------| +| Group By | select | Use group_by:process_name, group_by:pid, or group_by:container to select the topology actor level. | no | process_name | process_name (default), pid, container | +| Labels | string | Optional pipe-separated simple-pattern whitelist for free-form actor labels. Omitted means deny all free-form labels. | no | | | + +#### Returns + +Topology payload using netdata.topology.v1. + +| Column | Type | Unit | Visibility | Description | +|:-------|:-----|:-----|:-----------|:------------| +| container_name | string | | | Canonical container/service actor name used by group_by:container. | +| cgroup_path | string | | | Full cgroup path; scalar in group_by:pid and merged as actor labels in grouped views. | +| cgroup_name | string | | | Cgroup or container display name; scalar in group_by:pid and merged as actor labels in grouped views. | +| cgroup_status | string | | | Cgroup enrichment status: known, host_root, retry_later, unknown_permanent, or unknown. | +| orchestrator | string | | | Container/orchestrator family; scalar in group_by:pid and merged as actor labels in grouped views. | +| k8s_pod_name | string | | | Kubernetes pod name; scalar in group_by:pid and merged as actor labels in grouped views. | +| k8s_namespace | string | | | Kubernetes namespace; scalar in group_by:pid and merged as actor labels in grouped views. | +| k8s_workload | string | | | Kubernetes controller name; scalar in group_by:pid and merged as actor labels in grouped views. | +| docker_container_name | string | | | Kubernetes container, Docker/Podman container, or cgroup fallback name; scalar in group_by:pid and merged as actor labels in grouped views. | +| docker_image | string | | | Docker/Podman image label; scalar in group_by:pid and merged as actor labels in grouped views. | +| systemd_unit_name | string | | | systemd unit name; scalar in group_by:pid and merged as actor labels in grouped views. | +| systemd_unit_kind | string | | | systemd unit kind such as service, scope, or slice; scalar in group_by:pid and merged as actor labels in grouped views. | +| actor_kind | string | | | Producer-derived actor kind used to classify containers, services, slices, scopes, VMs, and process fallbacks. | + diff --git a/docs/Collecting Metrics/Collectors/Networking/Networking.mdx b/docs/Collecting Metrics/Collectors/Networking/Networking.mdx index faba7855e5..5f86993b5a 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Networking.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Networking.mdx @@ -174,6 +174,10 @@ import { Grid, Box } from '@site/src/components/Grid_integrations'; + + + + diff --git a/docs/Collecting Metrics/Collectors/Networking/NextDNS.mdx b/docs/Collecting Metrics/Collectors/Networking/NextDNS.mdx index 4f52487d29..998f87b627 100644 --- a/docs/Collecting Metrics/Collectors/Networking/NextDNS.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/NextDNS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Open vSwitch.mdx b/docs/Collecting Metrics/Collectors/Networking/Open vSwitch.mdx index 240f4e54ac..9eefb70b19 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Open vSwitch.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Open vSwitch.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/OpenROADM devices.mdx b/docs/Collecting Metrics/Collectors/Networking/OpenROADM devices.mdx index 822fa4962c..79a6622c24 100644 --- a/docs/Collecting Metrics/Collectors/Networking/OpenROADM devices.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/OpenROADM devices.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/RIPE Atlas.mdx b/docs/Collecting Metrics/Collectors/Networking/RIPE Atlas.mdx index 0977ab3c64..5cddff126b 100644 --- a/docs/Collecting Metrics/Collectors/Networking/RIPE Atlas.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/RIPE Atlas.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/SNMP trap listener.mdx b/docs/Collecting Metrics/Collectors/Networking/SNMP trap listener.mdx new file mode 100644 index 0000000000..9657d8a2eb --- /dev/null +++ b/docs/Collecting Metrics/Collectors/Networking/SNMP trap listener.mdx @@ -0,0 +1,749 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp_traps/metadata.yaml" +sidebar_label: "SNMP trap listener" +learn_status: "Published" +toc_max_heading_level: "6" +toc_collapsible: "true" +learn_rel_path: "Collecting Metrics/Collectors/Networking" +keywords: [snmp, trap, inform, snmpv3, usm, syslog, network events, event monitoring, notifications, fault management, network management] +message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" +sidebar_position: "540" +learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/snmp-trap-listener" +slug: "/collecting-metrics/collectors/networking/snmp-trap-listener" +--- + + + +# SNMP trap listener + + + + + +Plugin: go.d.plugin +Module: snmp_traps + + + +## Overview + +This collector listens for incoming SNMP Trap and INFORM notifications from network devices and persists them as enriched, structured log entries. + +- **Multi-protocol**: Accepts SNMPv1 Trap, SNMPv2c Trap/INFORM, and SNMPv3 Trap/INFORM with USM (user-based security model) authentication and privacy. +- **Per-job listeners**: Each job binds UDP endpoints independently, enabling per-site or per-segment trap receivers. +- **OOB profile pack**: Netdata ships with a library of pre-built trap profiles that resolve numeric OIDs to names, categories, severities, and varbind labels without manual MIB work for common equipment. +- **Dynamic engine ID discovery**: Optional runtime discovery of SNMPv3 sender engine IDs for environments where the engine ID is not known in advance. +- **Deduplication**: Optional configurable per-job dedup that suppresses repeated identical traps within a window. The first matching trap is journaled immediately; subsequent matches increment a summary counter and a periodic summary entry is written. +- **Per-OID overrides**: Operators can override the profile-assigned category, severity, and labels for specific OIDs without editing profiles. +- **Profile-defined trap metrics**: Operators can define trap-to-metric rules in custom trap profiles, then enable selected rules per listener job with `profile_metrics`. Profile metrics are emitted per source device, using vnode host scope when enrichment finds an unambiguous vnode and bounded source labels for chart identity and fallback attribution. +- **Direct journal storage**: Enabled by default for explicit jobs. Stores traps under the configured Netdata log directory (`/var/log/netdata/traps//` by default) and exposes the embedded `snmp:traps` Function. Direct-journal jobs appear as `__logs_sources` options. +- **OTLP/gRPC export**: Optional backend that exports traps as OTLP LogRecords. When `otlp.enabled` is `true`, traps are exported through OTLP regardless of `journal.enabled`; if direct journal storage is also enabled, both backends receive traps. +- **Self-metrics**: Per-job pipeline counters, trap events (by category and severity), processing errors (by type), dedup suppression (when enabled), bounded per-source receiver health, and profile-metric diagnostics. + +When direct journal storage is enabled, trap entries are written as structured systemd-journal log messages with plugin-controlled fields (`TRAP_REPORT_TYPE`, `TRAP_JOB`, `TRAP_OID`, `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_PDU_TYPE`, `TRAP_VERSION`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_SOURCE_UDP_PORT`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `TRAP_REVERSE_DNS`, `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, `TRAP_DECODE_ERROR_KIND`, `TRAP_DECODE_ERROR`, `TRAP_PACKET_SIZE`, `TRAP_PACKET_SHA256`, `TRAP_LISTENER`, `TRAP_ENGINE_ID`, `TRAP_ENRICHMENT`, `TRAP_JSON`) plus profile-defined labels (`TRAP_TAG_*`) and decoded event varbind fields (`TRAP_VAR_*`). Non-sensitive, non-redundant event varbinds are indexed as `TRAP_VAR_*`; enum-backed varbinds also emit `_RAW` with the numeric value. `TRAP_ENRICHMENT` records the source-attribution and enrichment decisions for audit/debug, and `TRAP_JSON` stores the structured varbind payload plus `netdata_packet_sequence`, a per-job receive counter assigned once per UDP datagram. Query traps with the embedded `snmp:traps` Function through Netdata Cloud or directly via the Agent HTTP API. The Function selects all direct-journal jobs by default and can narrow to one listener with `selections.__logs_sources=[""]`. OTLP-only jobs do not create local journal files and therefore do not appear as log sources. + +**Closed 8-category / 8-severity taxonomy** (from the OOB profile pack): + +| Category | Description | +|----------|-------------| +| `state_change` | Link up/down, operational state transitions | +| `config_change` | Configuration modifications | +| `security` | Security events (intrusion, ACL, etc.) | +| `auth` | Authentication and authorization events | +| `license` | License-state events | +| `mobility` | Roaming, handoff, wireless client events | +| `diagnostic` | Tests, health checks, probes | +| `unknown` | Unmatched or unclassified traps | + +| Severity | Description | +|----------|-------------| +| `emerg` | System unusable | +| `alert` | Immediate action required | +| `crit` | Critical condition | +| `err` | Error condition | +| `warning` | Warning condition | +| `notice` | Normal but significant condition | +| `info` | Informational | +| `debug` | Debug-level message | + + +**Profile locations** + +| Type | Default path | Notes | +|------|--------------|-------| +| **Stock profiles** | `/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/` | Shipped with Netdata; packages store vendor files as `.yaml.zst` | +| **User profiles** | `/etc/netdata/go.d/snmp.trap-profiles/` | Place custom or converted `.yaml` profiles here | + +> Depending on installation, paths may be prefixed with `/opt/netdata`. + +A **trap profile** defines per-OID mappings: +- Category and severity +- Trap name and description +- Varbind labels for structured enrichment +- Optional trap-to-metric rules and chart definitions + +**At runtime, the collector**: +1. Receives a trap PDU on a bound UDP endpoint +2. Validates the SNMP version, community/USM, and source against the job configuration +3. Resolves the trap OID against operator profiles and lazily-loaded stock profile files to get a name, category, severity, and varbind labels +4. Enriches the entry with optional reverse DNS (`TRAP_REVERSE_DNS` annotation, never `_HOSTNAME`) and dedup logic (if enabled) +5. Writes the structured entry to the per-job direct journal when enabled, and exports via OTLP when configured +6. Updates enabled profile-defined trap metrics only after the trap is committed to the configured backend +7. Increments the per-job self-metrics (events by category and severity, errors by type) + +**Custom MIB workflow**: Operators with device-specific MIBs not covered by the OOB profiles can use the installed `/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen` helper to convert MIBs into trap profile YAMLs offline. The helper writes profiles under `snmp-trap-profile-gen-output/profiles/`; copy the needed YAML files to `/etc/netdata/go.d/snmp.trap-profiles/`. Active SNMP trap jobs automatically reload user-supplied profile changes and keep the last valid profile index if a changed file is invalid. Stock profile updates are picked up after trap jobs stop/start or the Netdata Agent restarts. If no trap job is active, the next job creation loads and validates the profile files. See [SNMP trap profile format](/docs/snmp-traps/snmp-trap-profile-format) for the YAML schema. + +Example conversion for a MIB module not shipped in the OOB pack: +```sh +/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen generate \ + --source-dir /path/to/vendor-mibs \ + --mib NAGIOS-NOTIFY-MIB \ + --out-dir ./snmp-trap-profile-gen-output +``` + + +This collector is only supported on the following platforms: + +- linux + +This collector supports collecting metrics from multiple instances of this integration, including remote instances. + +Binding to the standard SNMP trap port (UDP/162) requires `CAP_NET_BIND_SERVICE` or root. +Netdata packages grant this capability to `go.d.plugin` and allow it in `netdata.service`. + + +### Default Behavior + +#### Auto-Detection + +SNMP trap collection is not auto-detected. The collector must be explicitly configured as a job under `go.d/snmp_traps.conf`. + + +#### Limits + +BER decode limits protect the UDP-exposed parser: datagrams are capped at 8 KiB, varbinds at 256 per PDU, BER nesting depth at 8, encoded OID length at 128 bytes, and OctetString values at 1024 bytes. +Accepted-source decode failures are written as `TRAP_REPORT_TYPE=decode_error` rows with sanitized error details, source address/port, listener endpoint when known, sniffed SNMP version when known, packet size, and packet SHA-256. Raw packet bytes are not written because SNMP community strings and binary payloads can appear in received datagrams. +Deduplication, when enabled, uses a per-job fingerprint cache capped by `dedup.cache_max_entries` (default 100000). + + +#### Performance Impact + +The collector is event-driven and does not poll devices. CPU cost is proportional to the received trap rate. +Profile OID lookups use hash tables. Deduplication, when enabled, adds a configurable fingerprint cache. +For high-volume environments, size the dedup cache and journal rotation according to sustained trap volume and retention requirements. OTLP-only jobs avoid local journal storage but do not appear as sources in the embedded local logs viewer. + + +## Setup + + +You can configure the **snmp_traps** collector in two ways: + +| Method | Best for | How to | +|-----------------------|------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------| +| [**UI**](#via-ui) | Fast setup without editing files | Go to **Nodes → Configure this node → Collectors → Jobs**, search for **snmp_traps**, then click **+** to add a job. | +| [**File**](#via-file) | If you prefer configuring via file, or need to automate deployments (e.g., with Ansible) | Edit `go.d/snmp_traps.conf` and add a job. | + +:::important + +UI configuration requires paid Netdata Cloud plan. + +::: + + +### Prerequisites + +#### Prepare SNMP trap sources + +Configure the network devices sending traps: +- Set the trap destination to the Netdata host's IP address and the UDP port bound by the listener job. +- Ensure the SNMP community (v1/v2c) or USM credentials (v3) match the job configuration. +- For v3 traps, configure the device's engine ID and USM user with the matching auth and privacy protocols. + + +#### Verify Netdata log directory access + +Direct-journal jobs write under the configured Netdata log directory (`/var/log/netdata/traps/` by default, or `${NETDATA_LOG_DIR}/traps/` at runtime). +Job creation fails if the configured Netdata log directory is missing or unusable. For OTLP-only jobs, set `journal.enabled: false` and `otlp.enabled: true`. + + +#### Add custom trap profiles (optional) + +If the stock trap profiles do not cover a device, convert vendor MIBs with the installed `/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen` helper and place the resulting YAML profiles under `/etc/netdata/go.d/snmp.trap-profiles/`. +This is the supported workflow for adding custom trap profile coverage. +Profile YAML syntax is documented in [SNMP trap profile format](/docs/snmp-traps/snmp-trap-profile-format). + + + +### Configuration + +#### Options + +The following options can be defined globally: update_every, autodetection_retry. + + +
+Config options + + + +| Group | Option | Description | Default | Required | +|:------|:-----|:------------|:--------|:---------:| +| **Collection** | update_every | Framework collection interval for self-metrics. Trap packet reception is event-driven and does not depend on this interval. | 1 | no | +| **Listener** | [listen](#option-listener-listen) | Network endpoints this listener binds during job creation. | | yes | +| **SNMP** | [versions](#option-snmp-versions) | Accepted trap protocol versions. | [v1, v2c] | no | +| **SNMPv1/2c** | communities | SNMPv1/v2c community allowlist. Empty accepts all communities. | [] | no | +| **SNMPv3** | [usm_users](#option-snmpv3-usm-users) | SNMPv3 USM users with auth and privacy protocols. | [] | no | +| | engine_id_whitelist | Static SNMPv3 engine IDs accepted for v3 Trap PDUs (hex strings). Required when v3 is enabled and `dynamic_engine_id_discovery` is disabled. | [] | no | +| | local_engine_id | Receiver-local SNMPv3 engine ID for v3 INFORM authentication (hex string, 5-32 bytes). When omitted, Netdata generates and persists a stable per-job value. | | no | +| | dynamic_engine_id_discovery | When enabled, the listener discovers v3 Trap sender engine IDs at runtime and hot-registers new (engineID, username) pairs after the retry authenticates and decodes a v3 Trap. Static `engine_id_whitelist` must be empty. | no | no | +| | dynamic_engine_id_max_pairs | Maximum in-memory dynamic (engineID, username) pairs per job. 0 or unset uses the default of 4096. | 4096 | no | +| **Enrichment** | reverse_dns | Optional source-IP PTR annotation emitted as `TRAP_REVERSE_DNS`. Disabled by default and not used for authoritative identity. | enabled: false | no | +| **Security** | [source](#option-security-source) | Source-attribution controls for forwarded traps. UDP peer is authoritative unless the peer matches an explicit trusted relay CIDR. | trusted_relays: [] | no | +| | allowlist | Pre-decode source-IP CIDR allowlist. Empty accepts IPv4 and IPv6 from all sources. | source_cidrs: ["0.0.0.0/0", "::/0"] | no | +| **Rate limiting** | [rate_limit](#option-rate-limiting-rate-limit) | Per-source token-bucket rate limiting. Default off. | | no | +| **Deduplication** | [dedup](#option-deduplication-dedup) | Optional per-job trap deduplication. Disabled by default. | | no | +| **Direct journal** | [journal](#option-direct-journal-journal) | Direct local journal storage for received traps. Enabled by default for explicit jobs. | enabled: true | no | +| **OTLP export** | [otlp](#option-otlp-export-otlp) | Optional backend that exports traps as OTLP/gRPC LogRecords. Disabled by default. | | no | +| **Retention** | [retention](#option-retention-retention) | Per-job direct journal retention and rotation policy. Ignored when `journal.enabled` is `false`. | | no | +| **Overrides** | [overrides](#option-overrides-overrides) | Per-OID category, severity, and label overrides on top of profile defaults. | [] | no | +| **Profile metrics** | [profile_metrics](#option-profile-metrics-profile-metrics) | Enable and select trap-to-metric rules defined by loaded trap profiles. | enabled: false | no | +| **Virtual node** | vnode | Associates this trap listener job with a Virtual Node. | | no | + + +##### listen + +- `receive_buffer`: UDP socket receive buffer requested during job creation, in bytes (default 4194304; set 0 to keep the operating system default; maximum 268435456). +Each endpoint has: +- `protocol`: Transport protocol (`udp` only). +- `address`: Local IP address to bind (e.g., `0.0.0.0` for all interfaces). +- `port`: UDP port number (default 162). Port 162 requires `CAP_NET_BIND_SERVICE` or root. + + + +##### versions + +Supported values: `v1`, `v2c`, `v3`. All three can be combined. + + + +##### usm_users + +Each user has: +- `username`: SNMPv3 USM security name (required). +- `engine_id`: Authoritative engine ID in hex (e.g., `80001f8880e5a5c0d6c7b8a9`). Required for static v3 jobs. May be omitted when `dynamic_engine_id_discovery` is enabled. +- `auth_proto`: Authentication protocol (`none`, `md5`, `sha`, `sha224`, `sha256`, `sha384`, `sha512`). +- `auth_key`: Authentication passphrase (use a Netdata secret reference). Required when `auth_proto` is not `none`; minimum 8 characters. +- `priv_proto`: Privacy protocol (`none`, `des`, `aes`, `aes192`, `aes256`, `aes192c`, `aes256c`). +- `priv_key`: Privacy passphrase (use a Netdata secret reference). Required when `priv_proto` is not `none`; minimum 8 characters. + + + +##### source + +- `trusted_relays`: CIDR list of SNMP trap relays/proxies whose `snmpTrapAddress.0` PDU source address may override the UDP peer. Leave empty for direct listeners. + + + +##### rate_limit + +- `enabled`: Enable per-source rate limiting (default `false`). +- `per_source_pps`: Maximum traps per second from a single source IP (default 1000). +- `mode`: Action when exceeded — `drop` (discard trap) or `sample` (allow but count as `rate_limited`). + + + +##### dedup + +- `enabled`: Enable dedup (default `false`). +- `window_sec`: Dedup window in seconds (default 5). +- `cache_max_entries`: Maximum fingerprints kept in memory (default 100000). +- `key_varbinds`: Additional varbind names to include in the dedup fingerprint (default `[]`, fingerprint is source device + trap OID only). + + + +##### journal + +- `enabled`: Write traps to local direct journal files under the configured Netdata log directory (`/var/log/netdata/traps//` by default, or `${NETDATA_LOG_DIR}/traps//` at runtime) and expose the job as a `__logs_sources` option in the embedded `snmp:traps` Function. +- Set `enabled: false` only when another output backend, such as OTLP, is enabled. + + + +##### otlp + +- `enabled`: Enable OTLP/gRPC Logs export. When `true`, traps are exported through OTLP regardless of `journal.enabled`; if direct journal storage is also enabled, both backends receive traps. +- `endpoint`: OTLP/gRPC endpoint. `http://host:port` uses plaintext gRPC; `https://host:port` uses TLS (default `http://127.0.0.1:4317`). Use `https://` for remote collectors when trap contents should be protected in transit. +- `headers`: Optional OTLP metadata headers (values may use Netdata secret references). +- `request_timeout`: Timeout for connection preflight and export calls (default `5s`). +- `flush_interval`: Maximum time to buffer records before export (default `200ms`). +- `batch_size`: Maximum LogRecords per export request (default 512). +- `queue_capacity`: Maximum records buffered per job (default 10000). + + + +##### retention + +- `max_size`: Maximum total bytes across all journal files (default `10GB`). Set `null` to disable size-based eviction. +- `max_duration`: Maximum age of the oldest journal file before deletion (default `null`, age-based eviction disabled). +- `rotation_size`: Maximum size of a single journal file before rotation (default `null` = auto, `max_size/20` clamped 5MB-200MB). +- `rotation_duration`: Maximum age of a single journal file before rotation (default `null`, time-based rotation disabled). Set a duration such as `24h` to enable time-based rotation. + + + +##### overrides + +Each override entry requires an `oid` (numeric OID). Optional fields: `category` (one of the 8 categories), `severity` (one of the 8 severities), `labels` (free-form key-value pairs). + + + +##### profile_metrics + +- `enabled`: Enable profile-defined trap metrics for committed traps (default `false`). +- `mode`: Rule selection policy: `none`, `auto`, `exact`, or `combined` (default `none`). +- `include`: Metric rule names to enable when `mode` is `exact` or `combined`; rejected with `mode` `none` or `auto`. +- `identity.device`: Source identity mode: `source`, `source_label`, or `listener` (default `source`). +- `identity.unresolved_source`: Fallback behavior when source/vnode attribution is unavailable: `source_label` or `drop_metric_instance` (default `source_label`). +- `identity.source_id_privacy`: `hash` for stable local per-job hashes or `raw` for the selected source value (default `hash`). +- `limits.max_rules`: Maximum enabled profile metric rules evaluated by this job (default `500`). +- `limits.max_sources`: Maximum non-listener source identities tracked by this job, including vnode and fallback sources (default `2000`). +- `limits.max_resources_per_source`: Default resource cap per source and resource class for rules that do not set `identity.resource.max_per_source` (default `512`). +- `limits.max_instances_per_job`: Maximum profile-derived metric instances for this job (default `50000`). +- `limits.overflow`: `drop_and_count`; over-cap metric instances are skipped, accepted traps are still committed, and profile metric diagnostics increment. +- Define custom rules in files under `/etc/netdata/go.d/snmp.trap-profiles/` with profile `metrics:` and `charts:` sections. See the SNMP trap profile format documentation for rule syntax and examples. + + + +
+ + +#### via UI + +Configure the **snmp_traps** collector from the Netdata web interface: + +1. Go to **Nodes**. +2. Select the node **where you want the snmp_traps data-collection job to run** and click the :gear: (**Configure this node**). That node will run the data collection. +3. The **Collectors → Jobs** view opens by default. +4. In the Search box, type _snmp_traps_ (or scroll the list) to locate the **snmp_traps** collector. +5. Click the **+** next to the **snmp_traps** collector to add a new job. +6. Fill in the job fields, then click **Test** to verify the configuration and **Submit** to save. + - **Test** runs the job with the provided settings and shows whether data can be collected. + - If it fails, an error message appears with details (for example, connection refused, timeout, or command execution errors), so you can adjust and retest. + + +#### via File + +The configuration file name for this integration is `go.d/snmp_traps.conf`. + +The file format is YAML. Generally, the structure is: + +```yaml +update_every: 1 +autodetection_retry: 0 +jobs: + - name: some_name1 + - name: some_name2 +``` +You can edit the configuration file using the [`edit-config`](/docs/netdata-agent/configuration#edit-configuration-files) script from the +Netdata [config directory](/docs/netdata-agent/configuration#locate-your-config-directory). + +```bash +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata +sudo ./edit-config go.d/snmp_traps.conf +``` + +##### Examples + +###### Basic (SNMPv1/v2c) + +A single job listening on the standard trap port. Accepts any SNMPv1/v2c community. +The allowlist is left open (`0.0.0.0/0` and `::/0`) — restrict it for production. + + +
+Config + +```yaml +jobs: + - name: local + listen: + receive_buffer: 4194304 + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + versions: + - v1 + - v2c + +``` +
+ +###### OTLP-only export + +A job that disables direct journal creation and exports traps only through OTLP. +This job does not appear as a local `__logs_sources` option because no direct journal files are written. + + +
+Config + +```yaml +jobs: + - name: local-otel + listen: + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + journal: + enabled: false + otlp: + enabled: true + endpoint: "http://127.0.0.1:4317" + +``` +
+ +###### SNMPv3 with static USM + +A job accepting v3 traps from a known device. The USM user has a static engine ID, +and the engine ID whitelist is explicitly set. Auth and privacy keys use Netdata secret references. + + +
+Config + +```yaml +jobs: + - name: core-router + listen: + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + versions: + - v3 + usm_users: + - username: trapmon + engine_id: 80001f8880e5a5c0d6c7b8a9 + auth_proto: sha256 + auth_key: "${env:SNMP_V3_AUTH_KEY}" + priv_proto: aes + priv_key: "${env:SNMP_V3_PRIV_KEY}" + engine_id_whitelist: + - 80001f8880e5a5c0d6c7b8a9 + +``` +
+ +###### Dynamic engine ID discovery + +For environments where v3 sender engine IDs are not known in advance. +The listener discovers them at runtime from raw SNMPv3 context and hot-registers +new (engineID, username) pairs after the first successful authentication and decode. +The USM user omits `engine_id`; the whitelist must be empty. + + +
+Config + +```yaml +jobs: + - name: dynamic-v3 + listen: + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + versions: + - v3 + usm_users: + - username: trapmon + auth_proto: sha256 + auth_key: "${env:SNMP_V3_AUTH_KEY}" + priv_proto: aes + priv_key: "${env:SNMP_V3_PRIV_KEY}" + dynamic_engine_id_discovery: true + dynamic_engine_id_max_pairs: 4096 + +``` +
+ +###### With dedup and profile metrics + +A job with dedup enabled (window 10 seconds) and profile-defined trap metrics enabled. +`auto` enables only loaded profile metric rules that are marked safe for automatic use. +Use `exact` or `combined` with `include` to enable specific custom metric rules by name. + + +
+Config + +```yaml +jobs: + - name: campus-core + listen: + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + dedup: + enabled: true + window_sec: 10 + profile_metrics: + enabled: true + mode: auto + +``` +
+ +###### Custom profile metric rule + +A custom trap profile can define metric rules and charts. The listener job then enables those rules with `profile_metrics`. +This example counts committed Cisco configuration change traps per source device. With the default `identity.device: source`, metrics use vnode host scope when enrichment finds an unambiguous vnode and hashed fallback `source_id` labels otherwise. +The rule can reference a trap already defined by the stock profiles by using its MIB-qualified trap name in `on_trap`. + + +
+Config + +```yaml +# /etc/netdata/go.d/snmp.trap-profiles/site-cisco.yaml +metrics: + - name: cisco.config.changed + type: counter + on_trap: CISCO-CONFIG-MAN-MIB::ccmCLIRunningConfigChanged + metric: snmp_trap_cisco_config_events + dimension: changes + chart_id: cisco_config_changes + chart_meta: + title: Cisco configuration changes + context: snmp.trap.cisco.config.changes + units: events/s + algorithm: incremental + +# /etc/netdata/go.d/snmp_traps.conf +jobs: + - name: campus-core + listen: + endpoints: + - protocol: udp + address: 0.0.0.0 + port: 162 + profile_metrics: + enabled: true + mode: exact + include: + - cisco.config.changed + +``` +
+ + + +## Alerts + + +The following alerts are available: + +| Alert name | On metric | Description | +|:------------|:----------|:------------| +| [ snmp_trap_emergency_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving emergency-severity traps. | +| [ snmp_trap_alert_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving alert-severity traps that require immediate attention on the sending device. | +| [ snmp_trap_critical_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving critical-severity traps. | +| [ snmp_trap_error_events ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving error-severity traps at high rate. | +| [ snmp_trap_warning_event_storm ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.severity | The SNMP trap listener is receiving warning-severity traps at storm-level rate. | +| [ snmp_trap_decode_errors ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has decode errors. | +| [ snmp_trap_template_unresolved ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener received traps whose profile templates referenced missing varbinds or fields. | +| [ snmp_trap_malformed_pdus ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving structurally invalid trap PDUs. | +| [ snmp_trap_allowlist_drops ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is dropping traps because the sender IP is outside the configured allowlist. | +| [ snmp_trap_rate_limited ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving traps above the configured per-source rate limit. | +| [ snmp_trap_auth_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has authentication failures. | +| [ snmp_trap_usm_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener has USM failures. | +| [ snmp_trap_unknown_engine_id ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener is receiving v3 traps from engine IDs outside the static whitelist, or first-time dynamic engine ID registrations when dynamic discovery is enabled. | +| [ snmp_trap_inform_response_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to send INFORM acknowledgements back to senders. | +| [ snmp_trap_binary_encoded_fields ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener wrote structured fields with binary journal encoding. | +| [ snmp_trap_profile_load_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to load or reload trap profiles. | +| [ snmp_trap_journal_write_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to write traps to the systemd-journal. | +| [ snmp_trap_otlp_export_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to export traps through OTLP. | +| [ snmp_trap_listener_read_failures ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.errors | The SNMP trap listener failed to read UDP packets from a bound socket. | +| [ snmp_trap_high_dedup_suppression ](https://github.com/netdata/netdata/blob/master/src/health/health.d/snmp_traps.conf) | snmp.trap.dedup_suppressed | The SNMP trap listener is suppressing a high volume of duplicate traps. | + + +## Metrics + +Metrics grouped by *scope*. + +The scope defines the instance that the metric belongs to. An instance is uniquely identified by a set of labels. + +Built-in receiver metrics keep per-job totals with the `job_name` label so listener health remains visible even when a packet cannot be attributed to a source device. Built-in source receiver metrics are also emitted for active, attributable sources with bounded `source_id` and `source_kind` labels; when enrichment finds an unambiguous vnode, those source metrics are written under that vnode host scope. + +Profile-defined trap metrics are emitted dynamically when `profile_metrics` enables rules from loaded trap profiles. Device-attributable profile metrics use vnode host scope when enrichment finds an unambiguous vnode; all profile metric series also include bounded `source_id` and `source_kind` labels so generated chart instances keep a stable identity. Resource metrics additionally include `resource_class` and `resource_id`. When vnode enrichment is unavailable, ambiguous, or conflicting, profile metrics use those labels under the listener job. + +Source-attributed receiver metrics are bounded to 2000 active sources per job and expire inactive sources after 60 successful collection cycles. Accepted traps are still committed to the configured backend if source metric attribution fails or the source cap is full; the attribution diagnostic counters expose those cases. Per-job pipeline totals can be greater than the sum of per-source metrics when a packet has no trustworthy source, source attribution fails, or the source cap is full. + +`accepted` and source-attributed error counters are recorded before dedup suppression. `committed`, event/severity counters, and profile-defined metrics are recorded only after successful authoritative output commitment. When both journal and OTLP outputs are enabled, journal is authoritative for commitment and OTLP export failures are reported as `otlp_export_failed` export/source errors. When OTLP is the only output backend, OTLP export failures are terminal write failures and also increment `pipeline.write_failed` and source-attributed `source_pipeline.write_failed` when the source is known. + +**Built-in contexts:** + +- `snmp.trap.pipeline`: Receiver packet and write pipeline progress, grouped per job. +- `snmp.trap.events`: Trap events received, split by category. The `stacked` chart type gives a visual burst profile across categories. +- `snmp.trap.severity`: Trap events received, split by severity. The `stacked` chart type gives a visual burst profile across the closed 8-severity taxonomy (`emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, `debug`). +- `snmp.trap.errors`: Processing errors by type. Stacked chart for quick identification of dominant error categories. +- `snmp.trap.dedup_suppressed`: Per-second rate of traps suppressed by dedup (only emitted when dedup is enabled on the job). +- `snmp.trap.sources`: Number of active source metric identities tracked by the job. +- `snmp.trap.source_attribution`: Per-job attribution diagnostics for vnode matches, fallback labels, ambiguous enrichment, attribution failures, cap overflow, and source identity transitions. +- `snmp.trap.source_pipeline`: Source-attributed accepted, committed, dedup-suppressed, and write-failed trap events. +- `snmp.trap.source_errors`: Source-attributed processing errors where a source can be identified. +- `snmp.trap.source_last_seen`: Seconds since the source last produced an accepted trap. +- `snmp.trap.profile_metric_diagnostics`: Profile-defined trap metric extraction and attribution diagnostics (only emitted when `profile_metrics` selects at least one rule). + +**Dynamic contexts** (profile metrics): + +Trap profiles may define optional `metrics:` rules and `charts:`. Jobs enable those rules with `profile_metrics.mode` and `profile_metrics.include`; `include` is valid only with `exact` or `combined` mode. Profile metric contexts are generated at runtime from the profile chart definitions under the `snmp.trap.` context namespace. Profile rules can create counters, last trap-reported numeric samples, and trap-derived state gauges. They are updated only after the trap is successfully committed to the authoritative output backend. + + +### Per job + +Per-job self-metrics for a SNMP trap listener job. + +Labels: + +| Label | Description | +|:-----------|:----------------| +| job_name | The job name as defined in `go.d/snmp_traps.conf`. | + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| snmp.trap.pipeline | received, decoded, accepted, committed, dedup_suppressed, dropped, write_failed | events/s | +| snmp.trap.events | state_change, config_change, security, auth, license, mobility, diagnostic, unknown | events/s | +| snmp.trap.severity | emerg, alert, crit, err, warning, notice, info, debug | events/s | +| snmp.trap.errors | unknown_oid, decode_failed, template_unresolved, malformed_pdu, dropped_allowlist, rate_limited, auth_failures, usm_failures, unknown_engine_id, inform_response_failed, binary_encoded, profile_load_failed, journal_write_failed, otlp_export_failed, listener_read_failed | errors/s | +| snmp.trap.dedup_suppressed | suppressed | events/s | +| snmp.trap.sources | active | sources | +| snmp.trap.source_attribution | vnode, fallback, ambiguous, failed, overflow_dropped, source_transitions | events/s | +| snmp.trap.profile_metric_diagnostics | rule_missed, extraction_failed, attribution_failed, overflow_dropped, source_transitions | events/s | + +### Per source + +Per-source receiver metrics for active, attributable SNMP trap sources. + +Labels: + +| Label | Description | +|:-----------|:----------------| +| job_name | The listener job that received the trap. | +| source_id | Vnode ID when enrichment resolves a vnode, otherwise a bounded source identifier. Raw source values are hashed by default. | +| source_kind | Source identity kind, such as `vnode`, `trusted_trap_address`, `udp_peer`, or `entry_source`. | + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| snmp.trap.source_pipeline | accepted, committed, dedup_suppressed, write_failed | events/s | +| snmp.trap.source_errors | unknown_oid, template_unresolved, profile_load_failed, journal_write_failed, otlp_export_failed | errors/s | +| snmp.trap.source_last_seen | seconds_ago | seconds | + + + +## Troubleshooting + +### Debug Mode + +**Important**: Debug mode is not supported for data collection jobs created via the UI using the Dyncfg feature. + +To troubleshoot issues with the `snmp_traps` collector, run the `go.d.plugin` with the debug option enabled. The output +should give you clues as to why the collector isn't working. + +- Navigate to the `plugins.d` directory, usually at `/usr/libexec/netdata/plugins.d/`. If that's not the case on + your system, open `netdata.conf` and look for the `plugins` setting under `[directories]`. + + ```bash + cd /usr/libexec/netdata/plugins.d/ + ``` + +- Switch to the `netdata` user. + + ```bash + sudo -u netdata -s + ``` + +- Run the `go.d.plugin` to debug the collector: + + ```bash + ./go.d.plugin -d -m snmp_traps + ``` + + To debug a specific job: + + ```bash + ./go.d.plugin -d -m snmp_traps -j jobName + ``` + +### Getting Logs + +If you're encountering problems with the `snmp_traps` collector, follow these steps to retrieve logs and identify potential issues: + +- **Run the command** specific to your system (systemd, non-systemd, or Docker container). +- **Examine the output** for any warnings or error messages that might indicate issues. These messages should provide clues about the root cause of the problem. + +#### System with systemd + +Use the following command to view logs generated since the last Netdata service restart: + +```bash +journalctl _SYSTEMD_INVOCATION_ID="$(systemctl show --value --property=InvocationID netdata)" --namespace=netdata --grep snmp_traps +``` + +#### System without systemd + +Locate the collector log file, typically at `/var/log/netdata/collector.log`, and use `grep` to filter for collector's name: + +```bash +grep snmp_traps /var/log/netdata/collector.log +``` + +**Note**: This method shows logs from all restarts. Focus on the **latest entries** for troubleshooting current issues. + +#### Docker Container + +If your Netdata runs in a Docker container named "netdata" (replace if different), use this command: + +```bash +docker logs netdata 2>&1 | grep snmp_traps +``` + +### Port binding fails (permission denied) + +Standard SNMP trap port (UDP/162) requires `CAP_NET_BIND_SERVICE`. + +Netdata packages grant this capability to `go.d.plugin` automatically. If running from source +or in a custom deployment, grant it manually: +```bash +sudo setcap CAP_NET_BIND_SERVICE=eip /usr/libexec/netdata/plugins.d/go.d.plugin +``` +Alternatively, use a port >= 1024 (e.g., `1062`) and redirect traffic through a firewall. + + +### SNMPv3 traps not decoded (unknown_engine_id) + +In static mode, the sender engine ID is not in `engine_id_whitelist`. Add the sender engine ID +to the whitelist, or switch to `dynamic_engine_id_discovery: true` with an empty whitelist. + +In dynamic mode, the first accepted `(engineID, username)` pair increments this once as +operator visibility. Repeated or rejected increments usually indicate cap exhaustion, +invalid sender state, or an unauthorized sender. + + +### USM authentication failures + +Check that the USM user's `auth_proto`, `auth_key`, `priv_proto`, and `priv_key` match the +sender device's configuration. Verify engine ID matches. Use Netdata secret references for keys. + + +### journal retention eating disk space + +The default direct journal retention uses size-based eviction (`max_size: 10GB`) with no time-based age limit. +For high-trap environments, reduce `max_size` or enable `max_duration` to age-out old entries. +OTLP-only jobs can set `journal.enabled: false`; they do not create local journal files and do not appear as sources in the local logs Function. diff --git a/docs/Collecting Metrics/Collectors/Networking/SONiC NOS.mdx b/docs/Collecting Metrics/Collectors/Networking/SONiC NOS.mdx index 1124c0df85..737daf9c10 100644 --- a/docs/Collecting Metrics/Collectors/Networking/SONiC NOS.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/SONiC NOS.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "570" +sidebar_position: "580" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/sonic-nos" slug: "/collecting-metrics/collectors/networking/sonic-nos" --- @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Socket statistics.mdx b/docs/Collecting Metrics/Collectors/Networking/Socket statistics.mdx index f2615075b6..191e0a902d 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Socket statistics.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Socket statistics.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [sockets] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "540" +sidebar_position: "550" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/socket-statistics" slug: "/collecting-metrics/collectors/networking/socket-statistics" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/SoftEther VPN Server.mdx b/docs/Collecting Metrics/Collectors/Networking/SoftEther VPN Server.mdx index 96be357ed9..a0804c92ec 100644 --- a/docs/Collecting Metrics/Collectors/Networking/SoftEther VPN Server.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/SoftEther VPN Server.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "550" +sidebar_position: "560" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/softether-vpn-server" slug: "/collecting-metrics/collectors/networking/softether-vpn-server" --- @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Softnet Statistics.mdx b/docs/Collecting Metrics/Collectors/Networking/Softnet Statistics.mdx index 0f874e1a9f..cde3a073fe 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Softnet Statistics.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Softnet Statistics.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [softnet] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "560" +sidebar_position: "570" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/softnet-statistics" slug: "/collecting-metrics/collectors/networking/softnet-statistics" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Starlink SpaceX.mdx b/docs/Collecting Metrics/Collectors/Networking/Starlink SpaceX.mdx index 8d93e76f6c..d35e89caa3 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Starlink SpaceX.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Starlink SpaceX.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "580" +sidebar_position: "590" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/starlink-spacex" slug: "/collecting-metrics/collectors/networking/starlink-spacex" --- @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Synproxy.mdx b/docs/Collecting Metrics/Collectors/Networking/Synproxy.mdx index c35fcb9a5b..83f84adafa 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Synproxy.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Synproxy.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [synproxy] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "600" +sidebar_position: "610" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/synproxy" slug: "/collecting-metrics/collectors/networking/synproxy" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Timex.mdx b/docs/Collecting Metrics/Collectors/Networking/Timex.mdx index f5a776e515..52f7ebe6e2 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Timex.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Timex.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "620" +sidebar_position: "630" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/timex" slug: "/collecting-metrics/collectors/networking/timex" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Tor.mdx b/docs/Collecting Metrics/Collectors/Networking/Tor.mdx index 50aea5235b..6a44ed9f5c 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Tor.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Tor.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [tor, traffic, vpn] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "630" +sidebar_position: "640" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/tor" slug: "/collecting-metrics/collectors/networking/tor" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Ubiquiti UFiber OLT.mdx b/docs/Collecting Metrics/Collectors/Networking/Ubiquiti UFiber OLT.mdx index 3c1c5da513..1957d86887 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Ubiquiti UFiber OLT.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Ubiquiti UFiber OLT.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "640" +sidebar_position: "650" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/ubiquiti-ufiber-olt" slug: "/collecting-metrics/collectors/networking/ubiquiti-ufiber-olt" --- @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/Unbound.mdx b/docs/Collecting Metrics/Collectors/Networking/Unbound.mdx index 0ece2b79d8..8e36cd9c82 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Unbound.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Unbound.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [unbound, dns] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "650" +sidebar_position: "660" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/unbound" slug: "/collecting-metrics/collectors/networking/unbound" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Windows Network Protocols.mdx b/docs/Collecting Metrics/Collectors/Networking/Windows Network Protocols.mdx index ec5748a280..4216237da9 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Windows Network Protocols.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Windows Network Protocols.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [network, tcp, udp, windows, perflib, segments, datagrams] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "660" +sidebar_position: "670" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/windows-network-protocols" slug: "/collecting-metrics/collectors/networking/windows-network-protocols" --- @@ -136,12 +136,17 @@ This function has no parameters. ### Network Protocols Shows Windows TCP and UDP stack counters grouped by transport protocol (TCP/UDP) -and IP family (IPv4/IPv6). +and IP family (IPv4/IPv6), and per-share SMB Server Shares traffic. -Each row covers one transport+family combination (TCPv4, TCPv6, UDPv4, UDPv6) and includes -traffic counters (received, sent, errors), TCP-specific connection counters -(active opens, established, passive opens, resets, total segments, retransmitted segments), -and the UDP-specific datagrams-with-no-port counter. +Each row covers one transport+family combination (TCPv4, TCPv6, UDPv4, UDPv6) or one +SMB share, and includes the transport's traffic counters (TCP/UDP: received, sent, errors; +SMB: received bytes, sent bytes, active tree connections), the TCP-specific connection +counters (active opens, established, passive opens, resets, total segments, retransmitted +segments), the UDP-specific datagrams-with-no-port counter, and the SMB-specific +active tree connections, received bytes, and sent bytes columns. + +Two stacked-bar charts are exposed: "Traffic" (TCP/UDP segments/datagrams, grouped by +transport or IP family) and "SMB Traffic" (per-share bytes, grouped by share name). | Aspect | Description | diff --git a/docs/Collecting Metrics/Collectors/Networking/WireGuard.mdx b/docs/Collecting Metrics/Collectors/Networking/WireGuard.mdx index 57621d9bd3..4112311726 100644 --- a/docs/Collecting Metrics/Collectors/Networking/WireGuard.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/WireGuard.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [wireguard, vpn, security] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "670" +sidebar_position: "680" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/wireguard" slug: "/collecting-metrics/collectors/networking/wireguard" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/Wireless network interfaces.mdx b/docs/Collecting Metrics/Collectors/Networking/Wireless network interfaces.mdx index 823262375e..e3e35015a1 100644 --- a/docs/Collecting Metrics/Collectors/Networking/Wireless network interfaces.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/Wireless network interfaces.mdx @@ -7,7 +7,7 @@ toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" keywords: [wireless devices] message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "680" +sidebar_position: "690" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/wireless-network-interfaces" slug: "/collecting-metrics/collectors/networking/wireless-network-interfaces" --- diff --git a/docs/Collecting Metrics/Collectors/Networking/strongSwan.mdx b/docs/Collecting Metrics/Collectors/Networking/strongSwan.mdx index aa7f7a1024..42a6e0e145 100644 --- a/docs/Collecting Metrics/Collectors/Networking/strongSwan.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/strongSwan.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "590" +sidebar_position: "600" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/strongswan" slug: "/collecting-metrics/collectors/networking/strongswan" --- @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Networking/tc QoS classes.mdx b/docs/Collecting Metrics/Collectors/Networking/tc QoS classes.mdx index 717fe37a6d..7e47146031 100644 --- a/docs/Collecting Metrics/Collectors/Networking/tc QoS classes.mdx +++ b/docs/Collecting Metrics/Collectors/Networking/tc QoS classes.mdx @@ -6,7 +6,7 @@ toc_max_heading_level: "6" toc_collapsible: "true" learn_rel_path: "Collecting Metrics/Collectors/Networking" message: "DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE" -sidebar_position: "610" +sidebar_position: "620" learn_link: "https://learn.netdata.cloud/docs/collecting-metrics/collectors/networking/tc-qos-classes" slug: "/collecting-metrics/collectors/networking/tc-qos-classes" --- diff --git a/docs/Collecting Metrics/Collectors/Operating Systems/Applications.mdx b/docs/Collecting Metrics/Collectors/Operating Systems/Applications.mdx index dc8f3658b7..3114a6ea59 100644 --- a/docs/Collecting Metrics/Collectors/Operating Systems/Applications.mdx +++ b/docs/Collecting Metrics/Collectors/Operating Systems/Applications.mdx @@ -110,6 +110,10 @@ Metrics: | app.mem_private_usage | mem | MiB | | app.vmem_usage | vmem | MiB | | app.mem_page_faults | minor, major | pgfaults/s | +| app.ebpf_cachestat_hit_ratio | ratio | % | +| app.ebpf_cachestat_dirty_pages | pages | page/s | +| app.ebpf_cachestat_access | hits | hits/s | +| app.ebpf_cachestat_misses | misses | misses/s | | app.swap_usage | swap | MiB | | app.disk_physical_io | reads, writes | KiB/s | | app.disk_logical_io | reads, writes | KiB/s | @@ -120,4 +124,22 @@ Metrics: | app.uptime | uptime | seconds | | app.uptime_summary | min, avg, max | seconds | +### Per apps plugin IPC + +apps.plugin netipc lookup-client and lookup-server health and latency. + +This scope has no labels. + +Metrics: + +| Metric | Dimensions | Unit | +|:------|:----------|:----| +| netdata.collector.ipc.cgroups_lookup.client.requests | requests_sent, requests_responded, requests_timeout, requests_error | requests/s | +| netdata.collector.ipc.cgroups_lookup.client.cache | cache_hits, cache_misses_retry, cache_misses_permanent, cache_evictions | events/s | +| netdata.collector.ipc.cgroups_lookup.client.peer | peer_connect_attempts, peer_disconnects | events/s | +| netdata.collector.ipc.cgroups_lookup.client.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s | +| netdata.collector.ipc.cgroups_lookup.client.queue_depth | queue_depth | paths | +| netdata.collector.ipc.apps_lookup.server.requests | requests_responded, requests_error | requests/s | +| netdata.collector.ipc.apps_lookup.server.request_duration_ms | le_1ms, le_5ms, le_10ms, le_50ms, le_100ms, le_500ms, le_1000ms, gt_1000ms | requests/s | + diff --git a/docs/Collecting Metrics/Collectors/Operating Systems/FreeBSD RCTL-RACCT.mdx b/docs/Collecting Metrics/Collectors/Operating Systems/FreeBSD RCTL-RACCT.mdx index 3c53a7eb40..40474c724c 100644 --- a/docs/Collecting Metrics/Collectors/Operating Systems/FreeBSD RCTL-RACCT.mdx +++ b/docs/Collecting Metrics/Collectors/Operating Systems/FreeBSD RCTL-RACCT.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Operating Systems/OpenRC.mdx b/docs/Collecting Metrics/Collectors/Operating Systems/OpenRC.mdx index f70372d078..d697c3b923 100644 --- a/docs/Collecting Metrics/Collectors/Operating Systems/OpenRC.mdx +++ b/docs/Collecting Metrics/Collectors/Operating Systems/OpenRC.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Operating Systems/Systemd Services.mdx b/docs/Collecting Metrics/Collectors/Operating Systems/Systemd Services.mdx index da66bff42e..d8d9d7855b 100644 --- a/docs/Collecting Metrics/Collectors/Operating Systems/Systemd Services.mdx +++ b/docs/Collecting Metrics/Collectors/Operating Systems/Systemd Services.mdx @@ -26,7 +26,7 @@ Module: /sys/fs/cgroup ## Overview -Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. +Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. @@ -118,5 +118,9 @@ Metrics: | systemd.service.disk.queued_iops | read, write | operations/s | | systemd.service.disk.merged_iops | read, write | operations/s | | systemd.service.pids.current | pids | pids | +| systemd.service.cachestat_ratio | ratio | % | +| systemd.service.cachestat_dirties | dirty | page/s | +| systemd.service.cachestat_hits | hit | hits/s | +| systemd.service.cachestat_misses | miss | misses/s | diff --git a/docs/Collecting Metrics/Collectors/Operating Systems/eBPF Cachestat.mdx b/docs/Collecting Metrics/Collectors/Operating Systems/eBPF Cachestat.mdx index 232f23fbe2..a103273213 100644 --- a/docs/Collecting Metrics/Collectors/Operating Systems/eBPF Cachestat.mdx +++ b/docs/Collecting Metrics/Collectors/Operating Systems/eBPF Cachestat.mdx @@ -149,40 +149,6 @@ The scope defines the instance that the metric belongs to. An instance is unique -### Per eBPF Cachestat instance - -These metrics show total number of calls to functions inside kernel. - -This scope has no labels. - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| mem.cachestat_ratio | ratio | % | -| mem.cachestat_dirties | dirty | page/s | -| mem.cachestat_hits | hit | hits/s | -| mem.cachestat_misses | miss | misses/s | - -### Per apps - -These Metrics show grouped information per apps group. - -Labels: - -| Label | Description | -|:-----------|:----------------| -| app_group | The name of the group defined in the configuration. | - -Metrics: - -| Metric | Dimensions | Unit | -|:------|:----------|:----| -| app.ebpf_cachestat_hit_ratio | ratio | % | -| app.ebpf_cachestat_dirty_pages | pages | page/s | -| app.ebpf_cachestat_access | hits | hits/s | -| app.ebpf_cachestat_misses | misses | misses/s | - ### Per cgroup diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Dell PowerStore.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Dell PowerStore.mdx index d9d4f6c261..13a3abbf96 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Dell PowerStore.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Dell PowerStore.mdx @@ -262,6 +262,35 @@ jobs: ``` +###### With virtual node + +Associate the PowerStore job with a [Virtual Node](https://learn.netdata.cloud/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#virtual-nodes) so its metrics appear under a separate host in Netdata Cloud. + +First, define the vnode in `/etc/netdata/vnodes/vnodes.conf`: + +```yaml +- hostname: my_powerstore + guid: +``` + +Then reference that hostname in the collector job's `vnode` field. The `vnode` value must match the `hostname` in vnodes.conf exactly (case-sensitive). + + +
+Config + +```yaml +jobs: + - name: ps-san + url: https://10.0.0.1 + username: monitor + password: monitor123 + tls_skip_verify: yes + vnode: my_powerstore + +``` +
+ ## Alerts @@ -539,4 +568,15 @@ automatically re-authenticates on 403, but if you see persistent 403 errors: 3. Ensure no IP-based access controls are blocking the Netdata Agent host. +### Virtual node not found + +If the collector reports that a vnode does not exist: + +1. Verify the vnode hostname is defined in `/etc/netdata/vnodes/vnodes.conf`. +2. Ensure the `vnode` field in the collector job exactly matches the `hostname` + in vnodes.conf — the match is case-sensitive. +3. Confirm the vnodes.conf file uses valid YAML format with correct `guid` values + (a valid UUID string). + + diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/EOS.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/EOS.mdx index 245f1ea544..cb05af8573 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/EOS.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/EOS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/FreeBSD NFS.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/FreeBSD NFS.mdx index 56c726eb90..27b10fa8c4 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/FreeBSD NFS.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/FreeBSD NFS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Generic storage enclosure tool.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Generic storage enclosure tool.mdx index 280ddbe705..a674119b10 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Generic storage enclosure tool.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Generic storage enclosure tool.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum Virtualize.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum Virtualize.mdx index ff80656bc4..4d5dbd89ef 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum Virtualize.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum Virtualize.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum.mdx index 95779bb6d1..16e0ff2e32 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/IBM Spectrum.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Lustre metadata.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Lustre metadata.mdx index 074e7339c6..17a09c43ef 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Lustre metadata.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Lustre metadata.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/MogileFS.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/MogileFS.mdx index 0a95b1acfb..33ed8fc78f 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/MogileFS.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/MogileFS.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/NetApp Solidfire.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/NetApp Solidfire.mdx index bdb5fc82de..dc467bf696 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/NetApp Solidfire.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/NetApp Solidfire.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Netapp ONTAP API.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Netapp ONTAP API.mdx index c217e37dc5..a723fca331 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Netapp ONTAP API.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Netapp ONTAP API.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/SMB Server Shares.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/SMB Server Shares.mdx index f1466a6a6d..85012e6b01 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/SMB Server Shares.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/SMB Server Shares.mdx @@ -132,12 +132,9 @@ Metrics: | Metric | Dimensions | Unit | |:------|:----------|:----| | smb.server_shares_current_open_file_count | open | files | -| smb.server_shares_tree_connect_count | connections | connections | -| smb.server_shares_received_bytes | received | bytes/s | | smb.server_shares_write_requests | writes | requests/s | | smb.server_shares_read_requests | reads | requests/s | | smb.server_shares_metadata_requests | metadata | requests/s | -| smb.server_shares_sent_bytes | sent | bytes/s | | smb.server_shares_files_opened | opened | files/s | diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Storidge.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Storidge.mdx index cf62f3189f..14bf08aa1d 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Storidge.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Storidge.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Synology ActiveBackup.mdx b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Synology ActiveBackup.mdx index fd7cb37381..46cbc874b4 100644 --- a/docs/Collecting Metrics/Collectors/Storage and Filesystems/Synology ActiveBackup.mdx +++ b/docs/Collecting Metrics/Collectors/Storage and Filesystems/Synology ActiveBackup.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Synthetic Testing/Blackbox.mdx b/docs/Collecting Metrics/Collectors/Synthetic Testing/Blackbox.mdx index 446da4207f..030924d83f 100644 --- a/docs/Collecting Metrics/Collectors/Synthetic Testing/Blackbox.mdx +++ b/docs/Collecting Metrics/Collectors/Synthetic Testing/Blackbox.mdx @@ -95,11 +95,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -156,6 +159,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -287,6 +341,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Synthetic Testing/MQTT Blackbox.mdx b/docs/Collecting Metrics/Collectors/Synthetic Testing/MQTT Blackbox.mdx index a208a9d37d..6434c966c4 100644 --- a/docs/Collecting Metrics/Collectors/Synthetic Testing/MQTT Blackbox.mdx +++ b/docs/Collecting Metrics/Collectors/Synthetic Testing/MQTT Blackbox.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Synthetic Testing/Site 24x7.mdx b/docs/Collecting Metrics/Collectors/Synthetic Testing/Site 24x7.mdx index fb2561e01a..4025fff05f 100644 --- a/docs/Collecting Metrics/Collectors/Synthetic Testing/Site 24x7.mdx +++ b/docs/Collecting Metrics/Collectors/Synthetic Testing/Site 24x7.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Synthetic Testing/Uptimerobot.mdx b/docs/Collecting Metrics/Collectors/Synthetic Testing/Uptimerobot.mdx index 14d16f4b00..cca094eca8 100644 --- a/docs/Collecting Metrics/Collectors/Synthetic Testing/Uptimerobot.mdx +++ b/docs/Collecting Metrics/Collectors/Synthetic Testing/Uptimerobot.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Web Servers and Proxies/APIcast.mdx b/docs/Collecting Metrics/Collectors/Web Servers and Proxies/APIcast.mdx index 0dec179583..00ff37c540 100644 --- a/docs/Collecting Metrics/Collectors/Web Servers and Proxies/APIcast.mdx +++ b/docs/Collecting Metrics/Collectors/Web Servers and Proxies/APIcast.mdx @@ -94,11 +94,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -155,6 +158,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -286,6 +340,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Collectors/Web Servers and Proxies/Gobetween.mdx b/docs/Collecting Metrics/Collectors/Web Servers and Proxies/Gobetween.mdx index 6eb8d33709..1af780947a 100644 --- a/docs/Collecting Metrics/Collectors/Web Servers and Proxies/Gobetween.mdx +++ b/docs/Collecting Metrics/Collectors/Web Servers and Proxies/Gobetween.mdx @@ -90,11 +90,14 @@ The following options can be defined globally: update_every, autodetection_retry | | autodetection_retry | Autodetection retry interval (seconds). Set 0 to disable. | 0 | no | | **Target** | url | Target endpoint URL. | | yes | | | timeout | HTTP request timeout (seconds). | 10 | no | +| | expected_prefix | If set, the job's check passes only when at least one scraped metric name starts with this prefix. Guards against scraping an unexpected endpoint. | | no | +| **Customization** | app | Application name used as the app segment of chart contexts (`prometheus..`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. | | no | | **Filters** | [selector](#option-filters-selector) | Time series selector (filter). | | no | | **Limits** | max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no | | | max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no | | **Customization** | [fallback_type](#option-customization-fallback-type) | Fallback type rules for untyped metrics. | | no | -| | label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. | | no | +| | [relabeling](#option-customization-relabeling) | Prometheus-compatible metric relabeling, applied before charts are built. | | no | +| | [profiles](#option-customization-profiles) | Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no | | **HTTP Auth** | username | Username for Basic HTTP authentication. | | no | | | password | Password for Basic HTTP authentication. | | no | | | bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). | | no | @@ -151,6 +154,57 @@ fallback_type: ``` + +##### relabeling + +A list of relabeling blocks. Each block applies a list of Prometheus +`metric_relabel_configs` rules to the metrics whose name matches `match`. See the +[relabeling reference](https://github.com/netdata/netdata/blob/master/src/go/plugin/go.d/collector/prometheus/relabel/README.md) +for the full action set and more examples. + +- `match`: Netdata simple patterns matched against the full metric name — including + any `_bucket`/`_sum`/`_count` suffix, so prefer globs like `app_lat*` over an exact + `app_lat` (space-separated; `*` matches any sequence, `?` any character, a leading + `!` negates). Use `*` to target every metric. Required. +- `metric_relabel_configs`: Prometheus relabel rules (`source_labels`, `separator`, + `regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to + the scraped samples before charts are built. + +Relabeling that would corrupt a histogram or summary — splitting it, dropping a +component, mutating the `le`/`quantile` label, or merging two families — is rejected. + +```yaml +relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' +``` + + + +##### profiles + +Profiles ship curated charts for recognized exporters. `profiles.mode` selects them: + +- `auto` (default): every profile whose `match` hits at least one scraped metric. +- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check). +- `combined`: `auto` plus the profiles named in `mode_combined.entries`. +- `none`: no profiles — generic autogen charts only (the pre-profile behavior). + +Only the block matching the selected mode (`mode_exact` or `mode_combined`) is read; entries under the other block are ignored. Metrics not covered by a selected profile keep their generic autogen charts. + +```yaml +profiles: + mode: exact + mode_exact: + entries: + - name: haproxy +``` + + @@ -282,6 +336,55 @@ jobs: ``` +###### Metric relabeling + +Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`. + +
+Config + +```yaml +jobs: + - name: local + url: http://127.0.0.1:9090/metrics + relabeling: + - match: 'http_*' + metric_relabel_configs: + - source_labels: [code] + regex: '(\d)\d\d' + target_label: code_class + replacement: '${1}xx' + +``` +
+ +###### Rename labels that collide with Netdata's reserved labels + +When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`, +`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those +names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape. +Rename the colliding labels to avoid it (the use case the former `label_prefix` option served). + + +
+Config + +```yaml +jobs: + - name: coredns + url: http://127.0.0.1:9153/metrics + relabeling: + - match: '*' + metric_relabel_configs: + - regex: '(instance|family)' + action: labelmap + replacement: 'coredns_$1' + - regex: '(instance|family)' + action: labeldrop + +``` +
+ ## Alerts diff --git a/docs/Collecting Metrics/Service Discovery/SNMP.mdx b/docs/Collecting Metrics/Service Discovery/SNMP.mdx index f00bd12456..2d05c621a5 100644 --- a/docs/Collecting Metrics/Service Discovery/SNMP.mdx +++ b/docs/Collecting Metrics/Service Discovery/SNMP.mdx @@ -272,7 +272,7 @@ Available inside both `match` expressions and `config_template` bodies. All vari | `.SysInfo.Contact` | string | Value of `sysContact.0`. May be empty. | | `.SysInfo.Name` | string | Value of `sysName.0` (typically the device hostname or FQDN). Defaults to the literal string `unknown` when the device does not return one. | | `.SysInfo.Location` | string | Value of `sysLocation.0`. May be empty. | -| `.SysInfo.Organization` | string | Vendor or organization parsed from `sysObjectID` against the embedded enterprise-numbers table. Defaults to `Unknown` when the OID is not in the table. | +| `.SysInfo.Organization` | string | Vendor or organization parsed from `sysObjectID` against the bundled enterprise-numbers table. Defaults to `Unknown` when the OID is not in the table. | | `.SysInfo.Vendor` | string | Vendor name inferred from `sysObjectID` and `sysDescr` via the bundled overrides. Empty when no override matches. | | `.SysInfo.Category` | string | Device category (e.g. `router`, `switch`, `printer`). Sourced from the bundled SNMP overrides; empty when no override matches the device. The set of category values is determined by the overrides, not a closed enum. | | `.SysInfo.Model` | string | Device model inferred from `sysObjectID` and `sysDescr` via the bundled overrides. Empty when no override matches. | diff --git a/docs/Dashboards and Charts/Dashboards and Charts.mdx b/docs/Dashboards and Charts/Dashboards and Charts.mdx index 8075836bb6..c49e9cc83e 100644 --- a/docs/Dashboards and Charts/Dashboards and Charts.mdx +++ b/docs/Dashboards and Charts/Dashboards and Charts.mdx @@ -3,7 +3,7 @@ custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/dashboards sidebar_label: "Dashboards and Charts" learn_status: "Published" learn_rel_path: "Dashboards and Charts" -sidebar_position: "160" +sidebar_position: "170" learn_link: "https://learn.netdata.cloud/docs/dashboards-and-charts" slug: "/dashboards-and-charts" --- diff --git a/docs/Dashboards and Charts/Tabs/Nodes.mdx b/docs/Dashboards and Charts/Tabs/Nodes.mdx index a4706e48c3..0d63482e55 100644 --- a/docs/Dashboards and Charts/Tabs/Nodes.mdx +++ b/docs/Dashboards and Charts/Tabs/Nodes.mdx @@ -28,4 +28,10 @@ All configurations on this page are persistent and visible to all users in the R | **Node hierarchy (right bar)** | Displays a hierarchy of the nodes based on the selected ordering, making it easier to locate specific nodes by name. | | **Filters sub-tab** | Allows filtering of nodes by:
• Host labels
• [Node status](/docs/netdata-cloud/node-states-and-transitions)
• Netdata version
• Individual nodes | | **Alerts sub-tab** | Displays Room alerts and additional details for each alert. | -| **Info sub-tab** | Shows detailed node information when you click the info (`i`) icon next to a node's name. | +| **Info sub-tab** | Shows detailed node information when you click the info (`i`) icon next to a node's name. | + +:::tip + +To customize the hostname displayed for a node (for example, to replace a local IP address with a meaningful name), see [Hostname Override](/docs/netdata-agent/node-identities#hostname-override). + +::: diff --git a/docs/Developer and Contributor Corner/Developer and Contributor Corner.mdx b/docs/Developer and Contributor Corner/Developer and Contributor Corner.mdx index 342b02d91b..ff9a4505f2 100644 --- a/docs/Developer and Contributor Corner/Developer and Contributor Corner.mdx +++ b/docs/Developer and Contributor Corner/Developer and Contributor Corner.mdx @@ -3,7 +3,7 @@ custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/developer- sidebar_label: "Developer and Contributor Corner" learn_status: "Published" learn_rel_path: "Developer and Contributor Corner" -sidebar_position: "180" +sidebar_position: "190" learn_link: "https://learn.netdata.cloud/docs/developer-and-contributor-corner" slug: "/developer-and-contributor-corner" --- diff --git a/docs/Live View/Live View.mdx b/docs/Live View/Live View.mdx index 4fbece3fe3..55a9690b7f 100644 --- a/docs/Live View/Live View.mdx +++ b/docs/Live View/Live View.mdx @@ -4,7 +4,7 @@ sidebar_label: "Live View" learn_status: "Published" learn_rel_path: "Live View" description: "Present the Netdata Functions what these are and why they should be used." -sidebar_position: "130" +sidebar_position: "140" learn_link: "https://learn.netdata.cloud/docs/live-view" slug: "/live-view" --- diff --git a/docs/Logs/Logs.mdx b/docs/Logs/Logs.mdx index 1ea99af4ef..18a7ad7fa5 100644 --- a/docs/Logs/Logs.mdx +++ b/docs/Logs/Logs.mdx @@ -1,6 +1,6 @@ --- sidebar_label: "Logs" -sidebar_position: "120" +sidebar_position: "130" hide_table_of_contents: true learn_status: "AUTOGENERATED" slug: "/logs" diff --git a/docs/Netdata AI/Netdata AI.mdx b/docs/Netdata AI/Netdata AI.mdx index 9478231fd5..f332e1a635 100644 --- a/docs/Netdata AI/Netdata AI.mdx +++ b/docs/Netdata AI/Netdata AI.mdx @@ -3,7 +3,7 @@ custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/category-o sidebar_label: "Netdata AI" learn_status: "Published" learn_rel_path: "Netdata AI" -sidebar_position: "150" +sidebar_position: "160" learn_link: "https://learn.netdata.cloud/docs/netdata-ai" slug: "/netdata-ai" --- diff --git a/docs/Netdata Agent/Agent CLI.mdx b/docs/Netdata Agent/Agent CLI.mdx index 0dfd05f1f4..807d5d0ba4 100644 --- a/docs/Netdata Agent/Agent CLI.mdx +++ b/docs/Netdata Agent/Agent CLI.mdx @@ -15,26 +15,32 @@ The `netdatacli` executable offers a straightforward way to manage the Netdata A It is located in the same directory as the `netdata` binary. +On Windows, `netdatacli` is available alongside the `netdata` executable (typically at `C:\Program Files\Netdata\usr\bin\`) and can send the same management commands to a running Netdata Agent. + Available commands: -| Command | Description | -|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `help` | Display usage information and exit. | -| `reload-health` | Reloads the Netdata health configuration, updating alerts based on changes made to configuration files. | -| `reload-labels` | Reloads [host labels](/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#create-custom-labels) from netdata.conf. | -| `reopen-logs` | Close and reopen log files. | -| `shutdown-agent` | Gracefully shut down the Netdata Agent. | -| `fatal-agent` | Log the current state and forcefully halt the Netdata Agent. | -| `reload-claiming-state` | Reload the Agent's claiming state from disk. | -| `ping` | Verifies whether the Agent is ready. Outputs `pong` when the Agent command server can be contacted. Exit code `0` when the Agent is ready to receive commands. Exit code `1` while the Agent is still initializing. Exit code `255` if the Agent is unreachable | -| `aclk-state [json]` | Return the current state of ACLK and Cloud connection. Optionally in JSON. | -| `dumpconfig` | Display the current netdata.conf configuration. | -| `mark-stale-nodes-ephemeral ` | Marks one or all disconnected nodes, including virtual nodes, as [ephemeral](/docs/netdata-parents/node-types-and-lifecycle-reference), while keeping their previously collected metrics data available for queries on both this Netdata Agent dashboard and Netdata Cloud.[^1][^2] | -| `remove-stale-node ` | Marks one or all disconnected nodes, including virtual nodes, as [ephemeral](/docs/netdata-parents/node-types-and-lifecycle-reference), and removes them so that they are no longer available for queries, from both this Netdata Agent dashboard and Netdata Cloud. This is useful to remove decommissioned nodes that have stopped streaming, but for which the Agent still holds metric data.[^1][^3] | -| `version` | Display the Netdata Agent version. | +| Command | Description | +|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `help` | Display usage information and exit. | +| `reload-health` | Reloads the Netdata health configuration, updating alerts based on changes made to configuration files. | +| `reload-labels` | Reloads [host labels](/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts#create-custom-labels) from netdata.conf. | +| `reopen-logs` | Close and reopen log files. | +| `shutdown-agent` | Gracefully shut down the Netdata Agent. | +| `fatal-agent` | Log the current state and forcefully halt the Netdata Agent. | +| `reload-claiming-state` | Reload the Agent's claiming state from disk. | +| `ping` | Verifies whether the Agent is ready. Outputs `pong` when the Agent command server can be contacted. Exit code `0` when the Agent is ready to receive commands. Exit code `1` while the Agent is still initializing. Exit code `255` if the Agent is unreachable | +| `aclk-state [json]` | Return the current state of ACLK and Cloud connection. Optionally in JSON. | +| `dumpconfig` | Display the current netdata.conf configuration. | +| `mark-stale-nodes-ephemeral ` | Marks one or all disconnected nodes, including virtual nodes, as [ephemeral](/docs/netdata-parents/node-types-and-lifecycle-reference), while keeping their previously collected metrics data available for queries on both this Netdata Agent dashboard and Netdata Cloud. See notes 1 and 2. | +| `remove-stale-node ` | Marks one or all disconnected nodes, including virtual nodes, as [ephemeral](/docs/netdata-parents/node-types-and-lifecycle-reference), and removes them so that they are no longer available for queries, from both this Netdata Agent dashboard and Netdata Cloud. This is useful to remove decommissioned nodes that have stopped streaming, but for which the Agent still holds metric data. See notes 1 and 3. | +| `version` | Display the Netdata Agent version. | See also the Netdata daemon [command line options](/docs/netdata-agent/daemon#command-line-options). -[^1]: This also clears any active alerts. -[^2]: The Agent may be configured to [automatically clean up ephemeral nodes](/docs/netdata-parents/node-types-and-lifecycle-reference#automatically-removing-ephemeral-nodes) when they have been offline for longer than the configured time interval. -[^3]: If a node is represented by multiple Parent Agents in a HA setup, this command must be executed on each Parent Agent. +:::note + +1. This also clears any active alerts. +2. The Agent may be configured to [automatically clean up ephemeral nodes](/docs/netdata-parents/node-types-and-lifecycle-reference#automatically-removing-ephemeral-nodes) when they have been offline for longer than the configured time interval. +3. If a node is represented by multiple Parent Agents in a HA setup, this command must be executed on each Parent Agent. + +::: diff --git a/docs/Netdata Agent/Configuration/Daemon.mdx b/docs/Netdata Agent/Configuration/Daemon.mdx index bc8acf2f0c..65a91fcc4e 100644 --- a/docs/Netdata Agent/Configuration/Daemon.mdx +++ b/docs/Netdata Agent/Configuration/Daemon.mdx @@ -56,7 +56,7 @@ After you modify `netdata.conf`, you need to [restart Netdata](/docs/netdata-age ## Customizing Your Node Name -You can change the display name of your Netdata node by customizing the hostname setting: +To override the auto-detected hostname and control how your node appears in Dashboards, Netdata Cloud, alert notifications, and streaming Parent nodes: 1. Edit your `netdata.conf` file: ```bash @@ -64,18 +64,13 @@ You can change the display name of your Netdata node by customizing the hostname sudo ./edit-config netdata.conf ``` -2. Add or modify the hostname in the `[global]` section: +2. Add or modify the `hostname` in the `[global]` section: ```ini [global] hostname = YOUR_CUSTOM_NODE_NAME ``` -3. Restart Netdata to apply the changes: - ```bash - sudo systemctl restart netdata - ``` - -The custom hostname will appear in dashboards, alerts, and when streaming to parent nodes. +3. [Restart Netdata](/docs/netdata-agent/maintenance/service-control) to apply the changes. ## Configuration Section Details @@ -228,6 +223,7 @@ Specific Alerts are configured in per-collector config files under the `health.d | in memory max Health log entries | 1000 | Size of the Alert history held in RAM | | script to execute on alarm | `/usr/libexec/netdata/plugins.d/alarm-notify.sh` | The script that sends Alert notifications. Note that in versions before 1.16, the plugins.d directory may be installed in a different location in certain OSs (e.g. under `/usr/lib/netdata`). | | run at least every | `10s` | Controls how often all Alert conditions should be evaluated. | +| notification execution timeout | `2m` | How long a notification command (e.g. `alarm-notify.sh`) may run before it is killed. Protects Alert evaluation from hung notification processes. Set to `0` to wait forever. | | postpone alarms during hibernation for | `1m` | Prevents false Alerts. May need to be increased if you get Alerts during hibernation. | | Health log retention | `5d` | Specifies the history of Alert events (in seconds) kept in the Agent's sqlite database. | | enabled alarms | * | Defines which Alerts to load from both user and stock directories. This is a [simple pattern](/docs/developer-and-contributor-corner/libnetdata/simple-patterns) list of Alert or template names. Can be used to disable specific Alerts. For example, `enabled alarms = !oom_kill *` will load all Alerts except `oom_kill`. | @@ -265,7 +261,7 @@ By default, Netdata will enable monitoring metrics for disks, memory, and networ :::tip -Use `yes` instead of `auto` in plugin configuration sections to enable these charts permanently. You can also set the `enable zero metrics` option to `yes` in the `[global]` section which enables charts with zero metrics for all internal Netdata plugins. +Use `yes` instead of `auto` in plugin configuration sections to enable these charts permanently. You can also set the `enable zero metrics` option to `yes` in the `[db]` section which enables charts with zero metrics for all internal Netdata plugins. ::: @@ -275,7 +271,7 @@ External plugins will have only two options at `netdata.conf`: | setting | default | info | |:---------------:|:--------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| update every | the value of `[global].update every` setting | The frequency in seconds the plugin should collect values. For more information check the [performance guide](/docs/netdata-agent/configuration/performance-optimization). | +| update every | the value of `[db].update every` setting | The frequency in seconds the plugin should collect values. For more information check the [performance guide](/docs/netdata-agent/configuration/performance-optimization). | | command options | - | Additional command line options to pass to the plugin. | External plugins that need additional configuration may support a dedicated file in `/etc/netdata`. Check their documentation. diff --git a/docs/Netdata Agent/Configuration/Securing Agents/Configure Netdata for cybersecurity platforms.mdx b/docs/Netdata Agent/Configuration/Securing Agents/Configure Netdata for cybersecurity platforms.mdx index 01f81d185e..4a30a1d74a 100644 --- a/docs/Netdata Agent/Configuration/Securing Agents/Configure Netdata for cybersecurity platforms.mdx +++ b/docs/Netdata Agent/Configuration/Securing Agents/Configure Netdata for cybersecurity platforms.mdx @@ -30,6 +30,42 @@ If you are not sure which model to use, start with the smallest exposed surface: 2. Use **access through a security platform** if you must publish the local dashboard to users. 3. Use **private management network access** only when you already have a trusted admin network. +## Required endpoints and ports + +For firewall and proxy allowlisting, your Netdata Agents need the following network access: + +| Direction | Port | Protocol | Purpose | +|-----------|-----------|-----------|--------------------------------------------------------| +| Inbound | 19999/TCP | TCP | Local dashboard access and streaming from Child Agents | +| Outbound | 19999/TCP | TCP | Streaming to a Parent Agent (Child Agents only) | +| Outbound | 443/TCP | WSS/HTTPS | Agent-Cloud Link (ACLK) and node claiming | + +:::note + +Port `19999` is the default, configurable via `[web] port` in `netdata.conf`, and is multiplexed: the same port handles both dashboard HTTP requests and the Netdata streaming protocol (a custom binary protocol over TCP). The server auto-detects which protocol the client is using based on the initial handshake. From a firewall perspective, both are simply TCP on port `19999`. + +You can disable inbound access on port `19999` by setting `mode = none` in `netdata.conf` when using Cloud-only access. This also disables inbound streaming. See [Configure Cloud-only access](#configure-cloud-only-access) for details. + +::: + +### Outbound domain allowlist + +Allow the following Netdata Cloud domains through your firewall or proxy: + +| Domain | Purpose | +|----------------------|---------------------------| +| `app.netdata.cloud` | Netdata Cloud application | +| `api.netdata.cloud` | Netdata Cloud API | +| `mqtt.netdata.cloud` | Agent-Cloud Link MQTT | + +:::important + +Prefer **domain-based allowlisting** over IP-based rules. IP addresses can change without notice and vary based on your geographic location due to CDN-edge servers. + +::: + +For broader firewall design principles and recommended network architecture, see [Network rules your cybersecurity platform should enforce](#network-rules-your-cybersecurity-platform-should-enforce) below. + ## Configure Cloud-only access Use this pattern when your security platform mainly controls outbound traffic and users access dashboards via Netdata Cloud instead of connecting directly to port `19999`. diff --git a/docs/Netdata Agent/Installation/Kubernetes Helm chart reference.mdx b/docs/Netdata Agent/Installation/Kubernetes Helm chart reference.mdx index f4f9eb09ed..af39f71714 100644 --- a/docs/Netdata Agent/Installation/Kubernetes Helm chart reference.mdx +++ b/docs/Netdata Agent/Installation/Kubernetes Helm chart reference.mdx @@ -12,7 +12,7 @@ slug: "/netdata-agent/installation/kubernetes-helm-chart-reference" Artifact HUB -![Version: 3.7.165](https://img.shields.io/badge/Version-3.7.165-informational?style=flat-square) +![Version: 3.7.166](https://img.shields.io/badge/Version-3.7.166-informational?style=flat-square) ![AppVersion: v2.10.3](https://img.shields.io/badge/AppVersion-v2.10.3-informational?style=flat-square) @@ -953,7 +953,7 @@ true parent.database.volumesize string
-"5Gi"
+"15Gi"
 
The storage space for the PVC of the parent database diff --git a/docs/Netdata Agent/Installation/Linux/Linux.mdx b/docs/Netdata Agent/Installation/Linux/Linux.mdx index 2c60ab182f..65676505bb 100644 --- a/docs/Netdata Agent/Installation/Linux/Linux.mdx +++ b/docs/Netdata Agent/Installation/Linux/Linux.mdx @@ -121,7 +121,7 @@ The user running the script needs write and execute permissions in the temporary Before running the installation script, you can verify its integrity using the following command: ```bash -[ "d473006a795f4b57810ab44ec081e23f" = "$(curl -Ss https://get.netdata.cloud/kickstart.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID" +[ "abc541147e05940960461cc21e6d47e6" = "$(curl -Ss https://get.netdata.cloud/kickstart.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID" ``` If the script is valid, this command will return `OK, VALID`. We recommend verifying script integrity before installation, especially in production environments. diff --git a/docs/Netdata Agent/Installation/Windows/Windows.mdx b/docs/Netdata Agent/Installation/Windows/Windows.mdx index e7eb3b3e4a..69b87968bb 100644 --- a/docs/Netdata Agent/Installation/Windows/Windows.mdx +++ b/docs/Netdata Agent/Installation/Windows/Windows.mdx @@ -12,19 +12,14 @@ slug: "/netdata-agent/installation/windows" Netdata provides a simple Windows installer for quick setup. -:::note - -The Windows Agent is available for users with paid Netdata subscriptions. -Free users will have limited functionality. - -::: +## Access and Limitations -## Limitations for Free Users +How you view monitoring data depends on your subscription and deployment mode: -| Agent Type | Limitation | -|------------------|---------------------------------------------------------------------------------------| -| Standalone Agent | UI is locked — No local monitoring | -| Child Agent | No monitoring data in parent dashboard when streaming to a Linux-based Netdata parent | +- Paid/enterprise standalone Windows Agents can use the local dashboard at [http://localhost:19999](http://localhost:19999). +- Free standalone Windows Agents collect metrics, but the local dashboard is locked. Use [Netdata Cloud](https://app.netdata.cloud) to view monitoring data. +- Air-gapped free standalone installations cannot use Netdata Cloud, so monitoring data cannot be viewed in that setup. +- Child Agents streaming to a Linux-based Netdata parent do not show monitoring data in the parent dashboard for free users. ## Download the Windows Installer (MSI) @@ -39,19 +34,11 @@ Choose the version that suits your needs: :::warning -Silent installation isn’t supported on Windows Server versions earlier than 2019 due to TLS compatibility issues. - -Use the [GUI installer](#graphical-installation-gui) instead. +Silent installation isn’t supported on Windows Server versions earlier than 2019 when the workflow depends on downloading the installer over TLS. Use the [GUI installer](#graphical-installation-gui) instead. ::: -Use silent mode to deploy Netdata without user interaction (ideal for automation). - -:::tip - -Run the command prompt as Administrator. - -::: +Use silent mode to deploy Netdata without user interaction. Run the command prompt as Administrator. ### Installation Command Options @@ -113,49 +100,19 @@ msiexec /qn /i netdata-x64.msi :::note -This offline method uses `msiexec /qn` to install from a locally available MSI. On Windows Server versions earlier than 2019, the *automated download* commands in this document may fail due to TLS compatibility issues—download the MSI on another machine (Step 1) or use the [GUI installer](#graphical-installation-gui). - -::: - -In an air-gapped environment, Netdata Cloud features are unavailable. The Agent runs in standalone local mode. - -:::tip - -Paid/enterprise users can use the local Dashboard for full monitoring without Cloud connectivity. - -::: - -:::note - -Free users on standalone Agents have limited functionality — the UI is locked and there is no local monitoring. See [Limitations for Free Users](#limitations-for-free-users) for details. +This offline method uses `msiexec /qn` with a locally available MSI. Netdata Cloud is unavailable in air-gapped environments, so standalone Agents run in local mode only. On Windows Server versions earlier than 2019, the *automated download* commands in this document may fail due to TLS compatibility issues, so download the MSI on another machine first or use the [GUI installer](#graphical-installation-gui). ::: -### Step 4: Access the Local Dashboard +## Verify the Installation -See [Access Netdata Dashboard](#access-netdata-dashboard). - -:::caution - -Automatic updates require internet access and are not possible on air-gapped systems. To update, repeat the transfer process with a newer MSI. - -::: - -## Access Netdata Dashboard - -After installation, verify the Netdata service is running: +After installation, verify that the Netdata service is running: ```powershell Get-Service netdata ``` -After installation, open your browser and go to: - -``` -http://localhost:19999 -``` - -If your subscription and installation mode allow local monitoring, you should see the Netdata Dashboard — a real-time metrics overview with system CPU, memory, disk, and network charts updating every second. +If your subscription and installation mode allow local monitoring, open [http://localhost:19999](http://localhost:19999) to access the Netdata Dashboard. ## License Information @@ -168,18 +125,15 @@ By using silent installation, you agree to: When Netdata is installed on Windows, it automatically registers as a Windows Service and appears in **Add or remove programs** (also known as **Programs and Features** or **Apps & features** in newer Windows versions). -The service can be monitored through the [Netdata Dashboard](http://localhost:19999). To start, stop, or restart the service, use the [PowerShell commands described in Service Control](/docs/netdata-agent/maintenance/service-control#windows). ## Automatic Updates For users who want to keep their Windows agents automatically updated with the latest releases, you can set up automated updates. -:::tip - -**What You'll Learn** +:::caution -How to set up automatic Netdata updates on Windows nodes using PowerShell and Task Scheduler. +Automatic updates require internet access and are not possible on air-gapped systems. To update, repeat the transfer process with a newer MSI. ::: @@ -187,19 +141,9 @@ How to set up automatic Netdata updates on Windows nodes using PowerShell and Ta This setup will automatically download and install the latest Netdata build (stable or nightly) daily at your preferred time. -**1. Create the directory and updater script** - -Run one of these PowerShell commands **as Administrator** (choose stable or nightly): - -:::info +#### 1. Create the directory and updater script -**Administrator Rights Required** - -Creating directories in ProgramData and running Task Scheduler with the highest privileges requires administrator access. - -Right-click on PowerShell and select "Run as administrator" before running these commands. - -::: +Run one of these PowerShell commands **as Administrator** (choose stable or nightly). Creating directories in `ProgramData` and running Task Scheduler with the highest privileges requires administrator access. - Stable version @@ -221,15 +165,9 @@ Right-click on PowerShell and select "Run as administrator" before running these '@ | Out-File -FilePath "$env:PROGRAMDATA\Netdata\netdata-updater.ps1" -Encoding UTF8 ``` -:::info - -**Configuration Required** - Replace `` with your Netdata Cloud claim token and `` with your room identifier. -::: - -**2. Create an entry in `Task Scheduler`** +#### 2. Create an entry in `Task Scheduler` | Tab | Setting | Value | |--------------|--------------------------------------|--------------------------------------------------------------------------------------| diff --git a/docs/Netdata Agent/Maintenance/Service Control.mdx b/docs/Netdata Agent/Maintenance/Service Control.mdx index cb65619584..5b40b07b2d 100644 --- a/docs/Netdata Agent/Maintenance/Service Control.mdx +++ b/docs/Netdata Agent/Maintenance/Service Control.mdx @@ -96,20 +96,47 @@ sudo netdatacli reload-health :::note +**Administrator Access Required** + You will need to run PowerShell as administrator. ::: -### Using Task Manager +### Using Windows Services GUI + +
+Manage Through Task Manager
If you prefer to manage the Agent through the GUI, you can start-stop and restart the `Netdata` service from the "Services" tab of Task Manager. +
+
+ ### Using PowerShell Commands -- To **check the status** of Netdata, run `Get-Service netdata`. -- To **start** Netdata, run `Start-Service netdata`. -- To **stop** Netdata, run `Stop-Service netdata`. -- To **restart** Netdata, run `Restart-Service netdata`. +- To **check the status** of Netdata, run `Get-Service Netdata`. +- To **start** Netdata, run `Start-Service Netdata`. +- To **stop** Netdata, run `Stop-Service Netdata`. +- To **restart** Netdata, run `Restart-Service Netdata`. + +### Using `netdatacli` + +The `netdatacli` tool is available on Windows at the Netdata installation path (default `C:\Program Files\Netdata\usr\bin\netdatacli.exe`). It sends management commands to the running Agent without restarting it. Run PowerShell as Administrator and use the full path, or add the Netdata bin directory to `PATH`. + +```powershell +& "C:\Program Files\Netdata\usr\bin\netdatacli.exe" reload-health +``` + +| Command | Description | +|------------------------------------|---------------------------------------------------------| +| `netdatacli reload-health` | Reload health/alert configuration without restarting | +| `netdatacli reload-labels` | Reload host labels from netdata.conf | +| `netdatacli reload-claiming-state` | Reload the Agent's claiming state from disk | +| `netdatacli reopen-logs` | Close and reopen log files | +| `netdatacli ping` | Verify the Agent is ready (outputs `pong` if reachable) | +| `netdatacli shutdown-agent` | Gracefully shut down the Agent | +| `netdatacli aclk-state` | Show current ACLK/Cloud connection state | +| `netdatacli version` | Display the Agent version | ## Quick Reference @@ -126,9 +153,12 @@ If you prefer to manage the Agent through the GUI, you can start-stop and restar ### Windows Commands Summary -| Task | PowerShell Command | GUI Location | -|-------------|---------------------------|-----------------------------------| -| **Status** | `Get-Service netdata` | Task Manager > Services > Netdata | -| **Start** | `Start-Service netdata` | Task Manager > Services > Netdata | -| **Stop** | `Stop-Service netdata` | Task Manager > Services > Netdata | -| **Restart** | `Restart-Service netdata` | Task Manager > Services > Netdata | +| Task | PowerShell Command | GUI Location | netdatacli | +|-------------------|---------------------------|-----------------------------------|-----------------------------| +| **Status** | `Get-Service Netdata` | Task Manager > Services > Netdata | — | +| **Start** | `Start-Service Netdata` | Task Manager > Services > Netdata | — | +| **Stop** | `Stop-Service Netdata` | Task Manager > Services > Netdata | — | +| **Restart** | `Restart-Service Netdata` | Task Manager > Services > Netdata | — | +| **Reload Health** | — | — | `netdatacli reload-health` | +| **Shutdown** | — | — | `netdatacli shutdown-agent` | +| **Ping** | — | — | `netdatacli ping` | diff --git a/docs/Netdata Agent/Node Identities.mdx b/docs/Netdata Agent/Node Identities.mdx index ce02fcac2f..53fd3f5ff2 100644 --- a/docs/Netdata Agent/Node Identities.mdx +++ b/docs/Netdata Agent/Node Identities.mdx @@ -232,6 +232,18 @@ If you customized `[directories]` in `netdata.conf`: ::: +## Hostname Override + +By default, Netdata auto-detects the system hostname. When the system hostname is configured as an IP address (common on some cloud VMs or home servers), nodes appear in Dashboards and Netdata Cloud with that raw IP instead of a readable name. + +:::info + +This setting changes the **display name** only — it does not affect the node's identity (Machine GUID, Node ID, or Claimed ID). + +::: + +To configure a custom hostname, see [Customizing Your Node Name](/docs/netdata-agent/configuration/daemon#customizing-your-node-name). + ## FAQ
@@ -350,3 +362,24 @@ A virtual node's identity is determined by its **`guid`** field — not its `hos **To preserve data continuity when renaming a vnode**, change only the `hostname` field in the YAML config file under `/etc/netdata/vnodes/` and keep the `guid` unchanged. If a true identity change is needed, accept that historical data belongs to the old identity.
+ +
+How do I find the UUID of my existing vnode? + +The GUID for each virtual node is stored in its YAML configuration file under `/etc/netdata/vnodes/`. To look it up: + +```bash +cat /etc/netdata/vnodes/* +``` + +Each file contains a `guid` field that uniquely identifies the vnode: + +```yaml +- name: my-remote-server + hostname: remote-server.example.com + guid: a1b2c3d4-e5f6-7890-abcd-ef1234567890 +``` + +The `guid` value is the vnode's UUID. You do **not** need to query any internal database — the YAML configuration file is the authoritative source for the vnode GUID. See [Virtual Nodes](#virtual-nodes-vnodes) for the full configuration reference. + +
diff --git a/docs/Netdata Cloud/Authentication & Authorization/Authentication & Authorization.mdx b/docs/Netdata Cloud/Authentication & Authorization/Authentication & Authorization.mdx index d12daa643d..956289ea6d 100644 --- a/docs/Netdata Cloud/Authentication & Authorization/Authentication & Authorization.mdx +++ b/docs/Netdata Cloud/Authentication & Authorization/Authentication & Authorization.mdx @@ -27,6 +27,19 @@ When using OAuth, your Netdata Cloud account will be automatically associated wi ::: +## Multi-Factor Authentication (MFA) + +Multi-factor authentication (MFA) adds an extra layer of protection to your Netdata Cloud account. The availability of MFA depends on which sign-in method you use. + +| Method | MFA Availability | +|:-------------------|:-------------------------------------------------------------------------------------------------------------------------------------| +| **Email** | Netdata Cloud does not currently offer built-in MFA for email/password accounts. | +| **Google OAuth** | MFA is managed by Google. Enable it in your [Google Account security settings](https://myaccount.google.com/security). | +| **GitHub OAuth** | MFA is managed by GitHub. Enable it in your [GitHub account settings](https://github.com/settings/security). | +| **Enterprise SSO** | MFA is configured and enforced by your identity provider (e.g., Okta, Azure AD, Google Workspace) during the SSO authentication flow. | + +For organizations that require MFA for all users, [Enterprise SSO](/docs/netdata-cloud/authentication-&-authorization/enterprise-sso-authentication) delegates authentication entirely to your identity provider, which can enforce MFA policies centrally. + ## Authorization Once logged in, you can manage role-based access in your Space to give each team member the appropriate role. For more information, see [Role-Based Access model](/docs/netdata-cloud/authentication-&-authorization/role-based-access-model). diff --git a/docs/Netdata Cloud/Authentication & Authorization/Enterprise SSO Authentication.mdx b/docs/Netdata Cloud/Authentication & Authorization/Enterprise SSO Authentication.mdx index 47688ee248..3350b7d5db 100644 --- a/docs/Netdata Cloud/Authentication & Authorization/Enterprise SSO Authentication.mdx +++ b/docs/Netdata Cloud/Authentication & Authorization/Enterprise SSO Authentication.mdx @@ -63,3 +63,22 @@ Consult your provider's documentation for detailed instructions. ## How to Authenticate Click on the link `Sign-in with an Enterprise Single Sign-On (SSO)` and follow the instructions. If you're not authenticated on the Enterprise SSO tool, you'll be prompted to authenticate there first before being allowed to proceed to Netdata Cloud. + +## Multi-Factor Authentication (MFA) + +With Enterprise SSO, multi-factor authentication is handled entirely by your identity provider. Netdata Cloud does not store MFA credentials or run its own MFA challenge — it inherits the authentication policy enforced by your identity provider (for example, Okta, Azure AD, or Google Workspace). + +Because the SSO flow redirects users to the identity provider for authentication, any MFA challenge, conditional access rule, or sign-on policy configured at the identity provider is applied before access to Netdata Cloud is granted. Netdata Cloud cannot bypass it. + +To require MFA for all Netdata Cloud users in your organization: + +1. Configure MFA as a sign-on policy in your identity provider. +2. Apply the policy to the application or user group associated with Netdata Cloud. + +There is no separate MFA setting to enable inside Netdata Cloud — your identity provider is the single point of control. + +:::note + +See [Authentication & Authorization](/docs/netdata-cloud/authentication-&-authorization#multi-factor-authentication-mfa) for MFA availability by sign-in method. + +::: diff --git a/docs/Netdata Cloud/Node States and Transitions.mdx b/docs/Netdata Cloud/Node States and Transitions.mdx index d7862c20f4..4e6c4f80d4 100644 --- a/docs/Netdata Cloud/Node States and Transitions.mdx +++ b/docs/Netdata Cloud/Node States and Transitions.mdx @@ -278,6 +278,17 @@ journalctl -u netdata MESSAGE_ID=6e2e3839-0676-4896-8b64-6045dbf28d66 netdatacli remove-stale-node ``` +### No alerts received when node went offline + +**Cause:** The `streaming_disconnected` and `streaming_never_connected` alerts are configured with `to: silent` by default. They trigger on the Parent dashboard but do not send notifications unless you override the delivery setting. + +**Check:** +1. Is the node marked as **permanent**? Ephemeral nodes are excluded from these alerts. Check `netdata.conf` for `is ephemeral node = yes`. +2. On the Parent dashboard, can you see the alert raised? If the alert is visible but no notification arrived, the `to: silent` default is in effect. +3. Has a Space administrator [enabled Alert notifications](/docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-notification-methods#manage-space-notification-settings) for your Space? + +**Solution:** See [Enabling Notifications for Streaming Alerts](/docs/netdata-parents/node-types-and-lifecycle-reference#enabling-notifications-for-streaming-alerts) for step-by-step instructions covering alert override and Cloud notification setup. + ### Node reappears after deletion **Cause:** Agent is still running and configured to reconnect. diff --git a/docs/Netdata Parents/Node Types and Lifecycle Reference.mdx b/docs/Netdata Parents/Node Types and Lifecycle Reference.mdx index bb4c541a0b..25f5154a28 100644 --- a/docs/Netdata Parents/Node Types and Lifecycle Reference.mdx +++ b/docs/Netdata Parents/Node Types and Lifecycle Reference.mdx @@ -54,6 +54,72 @@ Netdata v2.3.0 introduces two alerts specific to permanent nodes: | `streaming_never_connected` | A permanent node has never connected to a Parent. | | `streaming_disconnected` | A previously connected permanent node has disconnected. | +:::important + +Both alerts are configured with `to: silent` by default. They trigger and appear on the Parent dashboard but **do not send notifications** unless you explicitly enable them. They also apply only to **permanent nodes** — ephemeral nodes are excluded. + +::: + +### Enabling Notifications for Streaming Alerts + +1. **Override each alert to send notifications.** Choose one method: + + **Via Netdata Cloud (recommended):** Use the [Alerts Configuration Manager](/docs/alerts-&-notifications/creating-alerts-with-the-alerts-configuration-manager) to edit `streaming_disconnected` and `streaming_never_connected` on the Parent node. The UI creates a dynamic configuration that takes precedence over the stock template. See [Alert Configuration Ordering](/docs/alerts-&-notifications/alert-configuration-ordering) for details. Repeat for both alerts. + + **Via config file:** On the Parent node, create or edit `/etc/netdata/health.d/streaming.conf`. An override must be a complete alert definition (see [Overriding Stock Alerts](/docs/alerts-&-notifications/overriding-stock-alerts)); change `to: silent` to a role. `sysadmin` is the convention used by the stock alerts; any string is accepted: + + ```yaml + template: streaming_disconnected + on: netdata.streaming_inbound + class: Availability + type: Streaming + component: Streaming + chart labels: type=permanent + calc: ${stale disconnected} + units: nodes + every: 10s + warn: $netdata.uptime.uptime > 30 * 60 AND $this > 0 + delay: up 5m down 5m multiplier 1.5 max 30m + summary: Permanent streaming nodes disconnected + info: Permanent child nodes disconnected from this parent. \ + If nodes are expected to disconnect, mark them as ephemeral, by editing their netdata.conf \ + and setting: [global].is ephemeral node = yes + to: sysadmin + ``` + + Repeat for `streaming_never_connected` — note that `template`, `calc`, `summary`, and `info` all differ: + + ```yaml + template: streaming_never_connected + on: netdata.streaming_inbound + class: Availability + type: Streaming + component: Streaming + chart labels: type=permanent + calc: ${stale archived} + units: nodes + every: 10s + warn: $netdata.uptime.uptime > 30 * 60 AND $this > 0 + delay: up 5m down 5m multiplier 1.5 max 30m + summary: Permanent streaming nodes never connected + info: Permanent child nodes never connected to this parent. \ + If these nodes should actually be ephemeral, run: \ + netdatacli mark-stale-nodes-ephemeral ALL_NODES + to: sysadmin + ``` + + After saving the file, reload health on the Parent: + + ```bash + sudo netdatacli reload-health + ``` + + Make sure the role you choose has recipients wired up in your notification method(s) — see [Centralized Cloud Notifications](/docs/alerts-&-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference) for Cloud setup. + +2. **Enable Cloud notifications.** An administrator must [enable Alert notifications for the Space](/docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-notification-methods#manage-space-notification-settings). Without this step, Netdata Cloud will not forward any alert notifications. + +**See also:** [Centralized Cloud Notifications](/docs/alerts-&-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference) for notification setup, and [Node States and Transitions](/docs/netdata-cloud/node-states-and-transitions) for troubleshooting node offline states. + ## Automatic Node Instance Cleanup in Netdata Cloud Netdata Cloud automatically removes inactive nodes to keep your dashboards clean and organized. diff --git a/docs/Netdata Parents/Parent-Child Configuration Reference.mdx b/docs/Netdata Parents/Parent-Child Configuration Reference.mdx index 4c366cd807..eb856ecafc 100644 --- a/docs/Netdata Parents/Parent-Child Configuration Reference.mdx +++ b/docs/Netdata Parents/Parent-Child Configuration Reference.mdx @@ -381,7 +381,6 @@ The `netdata.conf` file is the primary configuration file for the Netdata agent. This section defines global settings for the Netdata agent. - **hostname**: The hostname used by the agent. -- **memory mode**: Choose the memory mode for data collection (e.g., `ram` or `swap`). - **error log file**: Path to the file where error logs are saved. ### [web] @@ -392,13 +391,13 @@ Configure the web interface settings here. - **port**: Set the port for the web interface (default: 19999). - **disable SSL**: Set to `yes` to disable SSL support. -### [database] +### [db] Manage database settings for data storage and retention. -- **memory mode**: Choose between in-memory or disk-based storage. -- **data retention**: Set how long to keep historical data. -- **compression**: Enable or disable data compression. +- **db** (formerly `memory mode`): Choose between in-memory or disk-based storage (e.g., `dbengine`, `ram`, `none`). +- **retention**: Set how long to keep historical data. +- **update every**: The data collection frequency in seconds. ## Complete Configuration Examples diff --git a/docs/Network Flows/Configuration.mdx b/docs/Network Flows/Configuration.mdx index 9e9c3dd54e..625c03f303 100644 --- a/docs/Network Flows/Configuration.mdx +++ b/docs/Network Flows/Configuration.mdx @@ -63,7 +63,7 @@ Controls the UDP socket and the journal write cadence. listener: listen: "0.0.0.0:2055" max_packet_size: 9216 - sync_every_entries: 1024 + sync_every_entries: 0 sync_interval: "1s" ``` @@ -71,20 +71,19 @@ listener: |---|---|---|---| | `listen` | `--netflow-listen` | `0.0.0.0:2055` | Address and port for the UDP socket. Same socket handles NetFlow v5/v7/v9, IPFIX, and sFlow. | | `max_packet_size` | `--netflow-max-packet-size` | `9216` | Maximum UDP datagram in bytes. Increase for jumbo sFlow datagrams or routers that send oversized IPFIX. | -| `sync_every_entries` | `--netflow-sync-every-entries` | `1024` | Flush the raw journal to disk after this many records, regardless of `sync_interval`. | -| `sync_interval` | `--netflow-sync-interval` | `1s` | Maximum time between forced flushes. | +| `sync_every_entries` | `--netflow-sync-every-entries` | `0` | Periodic fsync of the active raw journal. `0` (default) disables it: data reaches disk via kernel writeback, and every journal file is fully synced when rotated and at shutdown. Values > 0 fsync after that many records (and at least once per `sync_interval`); at high flow rates the fsync stalls the receive path and can cause UDP drops. | +| `sync_interval` | `--netflow-sync-interval` | `1s` | Maximum time between forced fsyncs when `sync_every_entries` > 0. Also the cadence for facet-state persistence and tier maintenance. | ### UDP buffer tuning is not in this file -If you receive a high flow rate, the kernel UDP receive buffer matters more than `max_packet_size`. Tune at the kernel level: +If you receive a high flow rate, the kernel UDP receive buffer matters more than `max_packet_size`. The plugin requests a large buffer (64 MiB) at startup via `setsockopt(SO_RCVBUF)`, but the kernel silently caps unprivileged requests at `net.core.rmem_max`, and distribution defaults are tiny (~208 KiB). Raise the cap at the kernel level: ```bash -sudo sysctl -w net.core.rmem_max=33554432 -sudo sysctl -w net.core.rmem_default=8388608 +sudo sysctl -w net.core.rmem_max=67108864 sudo sysctl -w net.core.netdev_max_backlog=250000 ``` -Persist these in `/etc/sysctl.d/99-netflow.conf`. The plugin does not call `setsockopt(SO_RCVBUF)` itself; whatever the kernel default is, that's what the listener gets. +Persist these in `/etc/sysctl.d/99-netflow.conf`. The plugin logs the effective buffer size at startup; `net.core.rmem_default` does not affect it — only `rmem_max` does. ## `protocols` diff --git a/docs/Network Flows/Flow Protocols/IPFIX.mdx b/docs/Network Flows/Flow Protocols/IPFIX.mdx index bfc04e6af4..bd55209bb0 100644 --- a/docs/Network Flows/Flow Protocols/IPFIX.mdx +++ b/docs/Network Flows/Flow Protocols/IPFIX.mdx @@ -56,11 +56,11 @@ The plugin starts when enabled in netflow.yaml and listens on the configured UDP #### Limits -Operational limits are driven by sustained flows/s, template churn, cardinality, retention, storage speed, and enrichment. Plan around 25k sustained flows/s per well-provisioned agent for the full raw + rollup pipeline; use distributed agents for larger deployments. +Operational limits are driven by sustained flow records/s, exporter batching, template churn, cardinality, retention, storage speed, and enrichment. On modern hardware with fast storage, plan around 50k-100k sustained flow records/s per well-provisioned agent for the full raw + rollup pipeline, provided the underlying disks can sustain the required journal write activity; use distributed agents for larger deployments. #### Performance Impact -Disabled until exporters send traffic. Once active, CPU and disk I/O scale with flow rate, template volume, and cardinality; size retention and storage from observed flows/s. +Disabled until exporters send traffic. Once active, CPU and disk I/O scale with flow-record rate, template volume, and cardinality; size retention and storage from observed flow records/s. ## Setup diff --git a/docs/Network Flows/Flow Protocols/NetFlow.mdx b/docs/Network Flows/Flow Protocols/NetFlow.mdx index fecfd00d79..3bae84aec5 100644 --- a/docs/Network Flows/Flow Protocols/NetFlow.mdx +++ b/docs/Network Flows/Flow Protocols/NetFlow.mdx @@ -56,11 +56,11 @@ The plugin starts when enabled in netflow.yaml and listens on the configured UDP #### Limits -Operational limits are driven by sustained flows/s, cardinality, retention, storage speed, and enrichment. Plan around 25k sustained flows/s per well-provisioned agent for the full raw + rollup pipeline; use distributed agents for larger deployments. +Operational limits are driven by sustained flow records/s, exporter batching, cardinality, retention, storage speed, and enrichment. On modern hardware with fast storage, plan around 50k-100k sustained flow records/s per well-provisioned agent for the full raw + rollup pipeline, provided the underlying disks can sustain the required journal write activity; use distributed agents for larger deployments. #### Performance Impact -Disabled until exporters send traffic. Once active, CPU and disk I/O scale with flow rate and cardinality; size retention and storage from observed flows/s. +Disabled until exporters send traffic. Once active, CPU and disk I/O scale with flow-record rate and cardinality; size retention and storage from observed flow records/s. ## Setup diff --git a/docs/Network Flows/Sizing and Capacity Planning.mdx b/docs/Network Flows/Sizing and Capacity Planning.mdx index 273bc869d6..4ff66ca270 100644 --- a/docs/Network Flows/Sizing and Capacity Planning.mdx +++ b/docs/Network Flows/Sizing and Capacity Planning.mdx @@ -20,18 +20,23 @@ A practical guide to choosing the host, the storage, and the deployment shape fo The netflow plugin is designed to receive, decode, and store flow records (NetFlow / IPFIX / sFlow) from one network — typically the routers and switches at one site — directly on a Netdata Agent. -Sustained ingestion of about **25 000 flows per second** on a single agent already approaches **ISP-level traffic capacities** for most enterprise / branch / data-centre profiles. Past that point you are at the scale of a regional service provider, and you should be running multiple agents (see "Distributed deployment" below), not pushing harder on one box. +A single agent can ingest **50 000 to 100 000 flow records per second on modern hardware**, provided that the underlying disks can sustain the required journal write activity. This already approaches **ISP-level traffic capacities** for most enterprise / branch / data-centre profiles. Past that point you are at the scale of a regional service provider, and you should be running multiple agents (see "Distributed deployment" below), not pushing harder on one box. -If your worst-case sustained flow rate stays at or below **~25 000 flows/s**, you have headroom on a single agent. If it does not, plan distributed before you plan harder iron. +If your worst-case sustained flow-record rate stays around **50 000 flow records/s** or lower, a modern NVMe-backed agent should have headroom when storage is not contended. If it does not, check your exporter batching, cardinality, and storage against the envelope below — or plan distributed before you plan harder iron. ## Plugin throughput cap -The post-decode ingest path has a single-thread hot path. For planning, treat **~25 000 flows/s sustained** as the comfortable ceiling for a well-provisioned single agent running the full pipeline (raw + 1m + 5m + 1h tiers). High-cardinality traffic reaches the ceiling sooner; low-cardinality traffic has more headroom. +The post-decode ingest path has a single-thread hot path. For planning, treat **50 000-100 000 flow records/s sustained** as the per-agent envelope for the full pipeline (raw + 1m + 5m + 1h tiers) on modern hardware with fast storage. Where a given deployment lands inside that envelope depends on three factors: + +- **Exporter batching** — routers usually batch multiple flow records into one UDP export packet. Larger batches reduce packet-rate overhead; one-record-per-packet exports push the collector toward a UDP packet-rate ceiling before the journal write path is saturated. +- **Traffic cardinality** — the per-flow CPU cost grows with how many *unique* flows the traffic contains (unique flows defeat journal deduplication and inflate index work). Low-cardinality traffic with normal exporter batching lands toward the high end of the envelope; high-cardinality traffic, expensive enrichment, or one-record-per-packet exports land toward the low end. +- **Disk I/O** — the raw tier is an indexed write stream (~400 bytes/flow). By default the plugin does not fsync on the hot path (see `sync_every_entries` in [Configuration](/docs/network-flows/configuration)); data reaches disk via kernel writeback and every file is fully synced when rotated. Fast NVMe absorbs this easily; slow or contended storage (SATA SSD, HDD, busy shared volumes) backpressures the receive loop and can push the achievable rate below the envelope. Practical guidance: -- Plan for ~25 000 flows/s sustained on a well-provisioned agent. That is the comfortable steady-state ceiling and includes UDP receive, protocol decode, all four storage tiers, and the typical enrichment stack without BMP / BioRIS. -- Bursts above the ceiling cost UDP queue backpressure and eventually `RcvbufErrors` (kernel-level drops). Tune the kernel UDP receive buffer (`net.core.rmem_max`, `net.core.rmem_default`, `net.core.netdev_max_backlog`) for headroom. +- Plan with **~50 000 flow records/s as a conservative target** for a well-provisioned modern agent with fast NVMe storage. Treat rates toward 100 000 flow records/s as achievable when exporter batching, cardinality, enrichment, and disk activity are favorable. +- Enabling periodic fsync (`sync_every_entries` > 0) trades throughput for a tighter crash-durability window: each fsync stalls the receive path, and on slow disks this causes `RcvbufErrors` (kernel-level UDP drops) well below the envelope. +- Bursts above your sustainable rate cost UDP queue backpressure and eventually `RcvbufErrors`. The plugin requests a 64 MiB receive buffer at startup, capped by `net.core.rmem_max` — raise that sysctl (and `net.core.netdev_max_backlog`) for burst headroom. - The hot path is single-threaded. Adding cores does not raise the per-agent ceiling. The way to go past it is to add agents (next section). ## Distributed deployment is the scaling answer @@ -40,7 +45,7 @@ Aggregation across many routers is rarely operationally meaningful for flow data This pattern is how Netdata is built to scale: each agent owns its own flow journal, its own enrichment, and its own dashboard view; Netdata Cloud federates queries across them. The benefits compound: -- **Each agent's load is bounded by one router's flow rate**, not the whole network's. A 10 000 flows/s router stays comfortably under the per-agent ceiling. +- **Each agent's load is bounded by one router's flow rate**, not the whole network's. A 10 000 flow records/s router stays comfortably under the per-agent ceiling. - **No single host becomes the bottleneck** for ingest, storage, or query latency. - **Failure of one agent loses one router's history**, not the whole network's. - **You don't pay the bandwidth cost** of moving every flow datagram to a central collector across WAN links. @@ -49,22 +54,24 @@ For a multi-site / multi-data-centre / multi-branch deployment, this is the reco ## Storage -Storage cost scales linearly with **sustained flows per second** and the **retention** you configure on each tier. +Storage cost scales linearly with **sustained flow records per second** and the **retention** you configure on each tier. ### How ingestion rate maps to disk -Use **~800 bytes on disk per flow** as the journal sizing estimate for the raw tier. For sustained ingestion this gives you: +Use **~400 bytes on disk per flow** as the journal sizing estimate for the raw tier. The journal uses the compact on-disk format, which roughly halves the per-flow footprint versus the legacy format (measured ~340 bytes/flow on low-cardinality traffic, ~490 bytes/flow on high-cardinality). For sustained ingestion this gives you: -| Sustained flows/s | Disk used per day, raw tier | +| Sustained flow records/s | Disk used per day, raw tier | |---|---| -| 1 000 | ~70 GB | -| 5 000 | ~350 GB | -| 10 000 | ~700 GB | -| 25 000 | ~1.7 TB | +| 1 000 | ~35 GB | +| 5 000 | ~175 GB | +| 10 000 | ~350 GB | +| 30 000 | ~1.0 TB | +| 50 000 | ~1.7 TB | +| 100 000 | ~3.5 TB | These numbers are dominated by raw-tier writes; rollup tiers (1m, 5m, 1h) add a small constant on top because each rollup row aggregates many raw rows. -The number is sensitive to traffic cardinality (how unique the 5-tuples are). Real-world traffic with many repeated flows trends a bit lower; pathological all-unique traffic trends a bit higher. +The number is sensitive to traffic cardinality (how unique the 5-tuples are). Real-world traffic with many repeated flows trends toward the low end (~350 bytes/flow); pathological all-unique traffic trends toward the high end (~490 bytes/flow). ### Raw tier dominates — keep it bounded @@ -72,24 +79,24 @@ The raw tier carries every individual flow record. **Rollup tiers (1m, 5m, 1h) a Set raw-tier retention to match your forensic window — typically **24 hours**. Rollup tiers can keep weeks to a year of history at a small fraction of raw-tier cost. -The example below is sized for an agent at the **upper end of the per-host scaling envelope (25 000 flows/s sustained)** — the raw tier needs about 1.7 TB / day at that rate (see the table above), so the 2 TB raw budget gives a small safety margin to keep the duration limit (24 h) the one that fires first: +The example below is sized for a busy agent sustaining **50 000 flow records/s** — the raw tier needs about 1.7 TB / day at that rate (see the table above), so the 2.5 TB raw budget gives a safety margin to keep the duration limit (24 h) the one that fires first. Scale the raw budget with the table above if your agent runs higher inside the envelope: ```yaml journal: tiers: - raw: { size_of_journal_files: 2TB, duration_of_journal_files: 24h } - minute_1: { size_of_journal_files: 20GB, duration_of_journal_files: 14d } - minute_5: { size_of_journal_files: 20GB, duration_of_journal_files: 30d } - hour_1: { size_of_journal_files: 20GB, duration_of_journal_files: 365d } + raw: { size_of_journal_files: 2.5TB, duration_of_journal_files: 24h } + minute_1: { size_of_journal_files: 20GB, duration_of_journal_files: 14d } + minute_5: { size_of_journal_files: 20GB, duration_of_journal_files: 30d } + hour_1: { size_of_journal_files: 20GB, duration_of_journal_files: 365d } ``` -For lighter loads, scale `size_of_journal_files` on the raw tier down proportionally — at 10 000 flows/s ~700 GB / 24 h is enough; at 1 000 flows/s ~70 GB / 24 h is enough. Whichever limit (size or duration) is hit first triggers rotation; size your raw tier so the **duration limit fires first** under normal load and the size cap is a safety net for traffic surges. +For lighter loads, scale `size_of_journal_files` on the raw tier down proportionally — at 10 000 flow records/s ~350 GB / 24 h is enough; at 1 000 flow records/s ~35 GB / 24 h is enough. Whichever limit (size or duration) is hit first triggers rotation; size your raw tier so the **duration limit fires first** under normal load and the size cap is a safety net for traffic surges. ### Use fast NVMe for the raw tier -The raw tier is queried directly for any IP-level investigation, full-text search, city / latitude / longitude maps, and anything that filters on a raw-only field (see [Field Reference](/docs/network-flows/field-reference) for which fields survive into rollups). At 25 000 flows/s sustained, the raw tier produces 1.7 TB / day of indexed writes that you may also be reading back in real time. +The raw tier is queried directly for any IP-level investigation, full-text search, city / latitude / longitude maps, and anything that filters on a raw-only field (see [Field Reference](/docs/network-flows/field-reference) for which fields survive into rollups). At 50 000 flow records/s sustained, the raw tier produces ~1.7 TB / day of indexed writes that you may also be reading back in real time. -This is **fast-NVMe territory**. 1.7 TB/day of write throughput is well within a modern PCIe Gen4 / Gen5 NVMe drive but punishes SATA SSDs (queue-depth and write-endurance) and HDDs (IOPS) once concurrent queries land on the same device. A modern PCIe Gen4 / Gen5 NVMe is what you want for the raw-tier directory. Rollup tiers (1m / 5m / 1h) are far less I/O-intensive and can live on slower storage if needed, but in practice it's easier to put the whole journal directory on one fast device. +This is **fast-NVMe territory** — and it is also half of what positions you inside the throughput envelope, because the receive loop's writes must keep flowing to this device. ~1.7 TB/day of raw-tier writes at 50 000 flow records/s is well within a modern PCIe Gen4 / Gen5 NVMe drive but punishes SATA SSDs (queue-depth and write-endurance) and HDDs (IOPS) once concurrent queries land on the same device — on slower devices write backpressure drops UDP packets well below the envelope. A modern PCIe Gen4 / Gen5 NVMe is what you want for the raw-tier directory. Rollup tiers (1m / 5m / 1h) are far less I/O-intensive and can live on slower storage if needed, but in practice it's easier to put the whole journal directory on one fast device. If the raw tier exceeds the device capacity for your retention target, **shorten raw-tier retention** before you switch to slower storage. A 12-hour raw tier on fast NVMe queries cleanly; a 7-day raw tier on slow storage will time out queries. @@ -99,9 +106,9 @@ The journal backend uses **free system memory as page cache** — the bigger the Concrete guidance: -- For the agent process itself, expect **a few hundred MB to ~1 GB of RSS** at typical 5-25k flows/s loads. Enrichment, classifiers, accumulators, and routing tries add to the base process footprint. BMP / BioRIS full-table feeds can add a few hundred MB per peer, depending on table count and prefix mix. -- For the kernel page cache, aim to **leave at least the size of the recently-queried working set free** — practically, plan a few GB of free RAM on a 25k flows/s agent so query I/O lands in cache instead of hitting NVMe each time. -- Watch `netflow.memory_resident_bytes`, `netflow.memory_resident_mapping_bytes`, and `netflow.memory_accounted_bytes` for the agent's own footprint. Watch the system's overall free memory for the page-cache headroom. +- For the agent process itself, expect **a few hundred MB to ~1 GB of RSS** at typical loads across the envelope. Enrichment, classifiers, accumulators, and routing tries add to the base process footprint. BMP / BioRIS full-table feeds can add a few hundred MB per peer, depending on table count and prefix mix. +- For the kernel page cache, aim to **leave at least the size of the recently-queried working set free** — practically, plan a few GB of free RAM on a busy agent so query I/O lands in cache instead of hitting NVMe each time. +- Watch default lightweight state-cardinality charts such as `netflow.open_tiers`, `netflow.facet_values`, and `netflow.tier_index_entries` for the agent's internal growth drivers. Enable `charts.memory_diagnostics` only when you need byte-level process attribution. Watch the system's overall free memory for the page-cache headroom. The plugin does **not** preload the journal into RAM. Memory consumption is driven by active accumulators (during ingestion) and routing tries (when configured). Storage growth pressures memory only via the page cache, which the kernel manages. @@ -111,13 +118,13 @@ The journal is **fully indexed**: every field is indexed, exact-match selections The exception is the **full-text search box** in the dashboard. FTS runs as a regex against the raw journal payload bytes — it is a **full scan** of the matching tier. Any non-empty FTS query also forces the query to the raw tier (FTS is meaningless on aggregated rollup rows). That means: -- A full-text search over a 24-hour raw tier with 25k flows/s sustained scans hundreds of GB. It runs but it is not fast. +- A full-text search over a 24-hour raw tier with 50k flow records/s sustained scans on the order of multiple terabytes. It runs but it is not fast. - For fast queries, use **filters on indexed fields** (the filter ribbon, exact selections). Reserve full-text for the cases where you don't have an indexed handle. - The 30-second hard query timeout is a real ceiling for FTS over wide windows. Narrow the time range, add an indexed filter, or switch to a rollup tier (which means dropping the FTS). ## Practical checklist before you deploy -1. **Estimate sustained flows/s** for the worst-case router or site. If it exceeds ~25k/s, plan distributed before iron. +1. **Estimate sustained flow records/s** for the worst-case router or site. If it exceeds the per-agent envelope (50k-100k depending on exporter batching, cardinality, enrichment, and disk I/O), plan distributed before iron. 2. **Pick raw-tier retention** that matches your forensic window — typically 24 hours. 3. **Compute storage** for that retention from the table above; size the raw-tier directory with a realistic safety margin, usually **1.2× to 1.5×** depending on burstiness and available disk. 4. **Use NVMe** for the raw tier. Slower storage shortens raw-tier retention until queries are responsive. diff --git a/docs/Network Flows/Troubleshooting.mdx b/docs/Network Flows/Troubleshooting.mdx index c96c150512..9fd40c6d86 100644 --- a/docs/Network Flows/Troubleshooting.mdx +++ b/docs/Network Flows/Troubleshooting.mdx @@ -104,15 +104,14 @@ grep ^Udp: /proc/net/snmp # RcvbufErrors counter (system-wide) `/proc/net/udp` lists open sockets and includes per-socket `drops`; the kernel-wide UDP `RcvbufErrors` total lives under the `Udp:` line of `/proc/net/snmp` (this is what Netdata's own `ipv4.udperrors` chart and the `1m_ipv4_udp_receive_buffer_errors` alert read). -If drops are occurring, the kernel UDP receive buffer is too small for the burst rate. Tune: +If drops are occurring, the kernel UDP receive buffer is too small for the burst rate. The plugin requests a 64 MiB receive buffer at startup, but the kernel silently caps unprivileged requests at `net.core.rmem_max` — and distribution defaults are tiny (~208 KiB, a few tens of datagrams). Raise the cap: ```bash -sudo sysctl -w net.core.rmem_max=33554432 -sudo sysctl -w net.core.rmem_default=8388608 +sudo sysctl -w net.core.rmem_max=67108864 sudo sysctl -w net.core.netdev_max_backlog=250000 ``` -Persist in `/etc/sysctl.d/99-netflow.conf`. +Persist in `/etc/sysctl.d/99-netflow.conf` and restart the plugin (it logs the effective buffer size at startup). `net.core.rmem_default` does not matter for the plugin's socket — only `rmem_max` does. **Per-protocol switch off:** @@ -170,14 +169,28 @@ See [Sizing and Capacity Planning](/docs/network-flows/sizing-and-capacity-plann **Memory growth:** ```bash -# Watch the resident memory chart over time -# netflow.memory_resident_bytes - rss dimension +# Watch default lightweight state-cardinality charts over time +# netflow.facet_values +# netflow.tier_index_entries +# netflow.open_tiers ``` -- If `rss` climbs and `netflow.memory_accounted_bytes` shows `unaccounted` growing, that's an unattributed allocation — could be allocator fragmentation, possibly a leak. -- If `tier_indexes` or `open_tiers` is the climbing dimension, ingest is outpacing tier flushes. Check `netflow.materialized_tier_ops` for `flushes` rate and `*_errors`. +- If `netflow.facet_values` climbs, facet vocabulary is growing. +- If `netflow.tier_index_entries` or `netflow.open_tiers` climbs, ingest is outpacing tier flushes. Check `netflow.materialized_tier_ops` for `flushes` rate and `*_errors`. +- If you need byte-level attribution, enable `charts.memory_diagnostics` in `netflow.yaml` and inspect `netflow.memory_resident_bytes` and `netflow.memory_accounted_bytes`. - If `netflow.decoder_scopes` is growing without bound, your exporter is rotating template IDs. Investigate per-router behaviour. +**Tier commit worker health:** + +Rollup tiers (1m / 5m / 1h) are committed to disk by dedicated worker threads so the receive path never blocks on tier disk I/O. Four charts expose their health: + +- `netflow.tier_commit_age` — seconds since each tier's worker last completed a claim cycle. This tracks worker liveness, not tier traffic: it stays low even on an idle tier. A steadily climbing age means the worker is stuck (most likely blocked on disk I/O) — check disk latency on the journal volume. +- `netflow.tier_commit_duration` — how long the last commit batch took, fsync included. Sustained growth means the disk is falling behind the rollup volume. +- `netflow.tier_commit_batches` — commit batches per second; each tier normally commits once per its bucket interval. +- `netflow.tier_commit_stretched` — commit windows that carried more than one closed bucket because the worker missed an anniversary. Occasional events after a restart (catch-up) are normal; a steady rate means the disk cannot keep up with the rollup cadence. Data is not lost — windows stretch (a 1m rollup may become a 70-80s rollup) — but investigate disk throughput. + +Note: the live (open) tier rows shown by queries refresh on a 1-second cadence, so the current minute's in-progress rollup can lag the raw tier by up to one second. + **Disk fill:** ```bash @@ -228,7 +241,7 @@ Collect this before opening a bug report: - Plugin version (`netdata --version` from the running daemon). - A sample of `netflow.input_packets` chart for the failure window — all dimensions visible. -- A sample of `netflow.memory_resident_bytes` if performance-related. +- A sample of `netflow.facet_values`, `netflow.tier_index_entries`, and `netflow.open_tiers` if performance-related. Include `netflow.memory_resident_bytes` only if memory diagnostics were enabled. - A small packet-capture file (`tcpdump -w` from the agent's interface) reproducing the issue. - Sanitised `netflow.yaml` (redact internal IPs, customer names, secrets). - Relevant log lines from `journalctl --namespace netdata`. diff --git a/docs/Network Flows/Validation and Data Quality.mdx b/docs/Network Flows/Validation and Data Quality.mdx index 00a39128f0..221a318c4d 100644 --- a/docs/Network Flows/Validation and Data Quality.mdx +++ b/docs/Network Flows/Validation and Data Quality.mdx @@ -110,7 +110,7 @@ These are charts the plugin already exposes. Tune the alert thresholds to your e | `udp_received` rate dropped | `netflow.input_packets` | Sustained 0 during business hours indicates the listener is up but no exporter is sending. | | `parse_errors` rising | `netflow.input_packets` | Sustained > 5% of `udp_received` indicates the wire is producing malformed datagrams. | | `template_errors` rising | `netflow.input_packets` | Sustained > 1% of `udp_received` after the warm-up period indicates an exporter sends data records before templates. | -| Memory growing (`unaccounted`) | `netflow.memory_accounted_bytes` | RSS climbs linearly without ingest growth -- possible leak. | +| Memory/state growing | `netflow.facet_values`, `netflow.tier_index_entries`, `netflow.open_tiers`; optional `netflow.memory_accounted_bytes` | Default count charts show state-cardinality growth. If byte diagnostics are enabled and `unaccounted` climbs linearly without ingest growth, suspect unattributed allocation. | | `decoder_scopes` unbounded growth | `netflow.decoder_scopes` | An exporter is rotating template IDs; investigate per-router behaviour. | | Disk write errors | `netflow.raw_journal_ops` `write_errors` | Any non-zero indicates filesystem trouble. | | SNMP-flow gap | external | More than 30% on a steady-state link triggers the validation routine above. | diff --git a/docs/Network Flows/Visualization/Plugin Health Charts.mdx b/docs/Network Flows/Visualization/Plugin Health Charts.mdx index 29982cc316..8635a0e648 100644 --- a/docs/Network Flows/Visualization/Plugin Health Charts.mdx +++ b/docs/Network Flows/Visualization/Plugin Health Charts.mdx @@ -17,7 +17,8 @@ The netflow plugin publishes its own operational charts under the `netdata.netfl This is also where you look first when something seems wrong — long before opening the Network Flows view. -All charts update every 1 second. +Default production-health charts update every 1 second. Optional memory +diagnostics charts update on `charts.memory_diagnostics.interval` when enabled. ## The charts @@ -33,11 +34,14 @@ All charts update every 1 second. | `netflow.journal_io_ops` | line, ops/s | Decoder-state persist operations and errors | | `netflow.journal_io_bytes` | line, bytes/s | Decoder-state persist byte rate | | `netflow.decoder_scopes` | line, scopes | Distinct (exporter, observation domain) scopes the decoder tracks | -| `netflow.memory_resident_bytes` | line, bytes | Process RSS, peak RSS, breakdown | -| `netflow.memory_resident_mapping_bytes` | stacked, bytes | RSS broken down by what's in it | -| `netflow.memory_allocator_bytes` | line, bytes | Allocator-internal stats | -| `netflow.memory_accounted_bytes` | stacked, bytes | RSS attributed to known components, plus `unaccounted` | -| `netflow.memory_tier_index_bytes` | stacked, bytes | Tier-index memory drilldown | +| `netflow.facet_values` | line, values | Published facet value cardinality | +| `netflow.facet_fields` | line, fields | Populated and autocomplete-backed facet fields | +| `netflow.tier_index_entries` | line, entries | Tier-index hours and rollup-flow entries | +| `netflow.memory_resident_bytes` | line, bytes | Optional diagnostics: process RSS, peak RSS, breakdown | +| `netflow.memory_resident_mapping_bytes` | stacked, bytes | Optional diagnostics: RSS broken down by mapping type | +| `netflow.memory_allocator_bytes` | line, bytes | Optional diagnostics: allocator-internal stats | +| `netflow.memory_accounted_bytes` | stacked, bytes | Optional diagnostics: RSS attributed to known components, plus `unaccounted` | +| `netflow.memory_tier_index_bytes` | stacked, bytes | Optional diagnostics: tier-index memory drilldown | ## Reading the most useful charts @@ -55,12 +59,18 @@ The single most important chart. Five families of dimensions: Cardinality of decoder state. Reports how many distinct `(exporter, observation domain)` template caches the plugin currently holds. Watch for unbounded growth — an exporter that frequently rotates template IDs (rare but real) will inflate this without bound. +### `netflow.facet_*`, `netflow.tier_index_entries`, and `netflow.open_tiers` + +Default lightweight production signals. Use them to see whether memory pressure is likely coming from growing facet vocabulary, rollup-index cardinality, or open rollup rows without enabling expensive byte-level diagnostics. + ### `netflow.materialized_tier_*` Show the rollup pipeline working. `*_rows` should track ingest. `flushes` should tick steadily; if it stops, tiering is stalled. ### `netflow.memory_resident_bytes` and `netflow.memory_accounted_bytes` +These charts exist only when `charts.memory_diagnostics.enabled: true` is set in `netflow.yaml`. + If RSS climbs over time: - Check `netflow.memory_accounted_bytes` to see where it's going. @@ -91,7 +101,7 @@ These charts do not include: | Sudden drop in flows | per-protocol dimensions | Identifies which protocol stopped (helps narrow whether it's a router, a router class, or all routers). | | Templates failing | `template_errors` rising | Exporter not sending templates often enough; collector lost cache; cache mismatch after firmware update. | | Cache growing without bound | `decoder_scopes` rising over hours | Exporter churn or unstable template IDs. Investigate per-router behaviour. | -| Memory pressure | `netflow.memory_resident_bytes`, `netflow.memory_accounted_bytes` | If `rss` climbs and `unaccounted` is the dimension growing → unattributed allocation, possibly a leak. If `tier_indexes` or `open_tiers` climbs → ingest backpressure, flushing stalled. | +| Memory pressure | `netflow.facet_values`, `netflow.tier_index_entries`, `netflow.open_tiers`; optional `netflow.memory_*` diagnostics | Default count charts show where state cardinality grows. If byte diagnostics are enabled and `unaccounted` grows → unattributed allocation, possibly a leak. | | Disk write stalls | `netflow.raw_journal_ops` `write_errors`, `sync_errors` | Disk full, permission denied, fs error. | | Decoder state not persisting | `netflow.journal_io_ops` | `decoder_state_persist_calls` should tick periodically. `*_errors` should be 0. | diff --git a/docs/SNMP Traps/Alerts.mdx b/docs/SNMP Traps/Alerts.mdx new file mode 100644 index 0000000000..ff1871f2c0 --- /dev/null +++ b/docs/SNMP Traps/Alerts.mdx @@ -0,0 +1,86 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/alerts.md" +sidebar_label: "Alerts" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Understand, route, and silence the default SNMP trap health alerts." +sidebar_position: "120" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/alerts" +slug: "/snmp-traps/alerts" +--- + + + + +# SNMP Trap Alerts + +Use this page when you need to route, silence, or understand the default health alerts that ship for the SNMP trap receiver. The alert thresholds, windows, and template names are listed below so you can tie each alert to the metric it watches. + +The default alerts watch receiver health and high-severity trap flow. They do not assert the complete health state of the sending devices. For the underlying receiver metrics these alerts read, see [Metrics](/docs/snmp-traps/metrics). + +## Default health alerts + +Netdata ships default health alerts for SNMP trap receiver metrics. They alert on receiver health and high-severity trap flow; they do not assert the complete health state of the sending devices. + +Default alerts check every minute and use 5-minute or 10-minute average windows, depending on the alert. Use the template names below when routing, silencing, or reviewing default alert behavior. + +Severity alerts: + +- Emergency traps alert critically when any `emerg` traps are received over the 5-minute window. +- Alert and critical traps warn when any `alert` or `crit` traps are received, and become critical above 5 events/s for `alert` severity or above 10 events/s for `crit` severity. +- Error and warning traps alert only at higher rates. The important default storm thresholds are `err` above 10 events/s for warning and 100 events/s for critical, and `warning` above 100 events/s for warning and 1000 events/s for critical. +- `notice`, `info`, and `debug` severities do not alert by default. + +Processing and policy alerts: + +- Decode failures, unresolved profile templates, malformed PDUs, authentication failures, USM failures, unknown engine IDs, INFORM response failures, binary-encoded fields, profile load failures, OTLP export failures, and listener read failures warn when they appear. +- Allowlist drops and rate-limit drops alert only at higher sustained rates. The important default thresholds are above 10 errors/s for warning and above 100 errors/s for critical. +- Unknown OIDs are exposed as a metric but do not alert by default, because uncovered vendor traps are common in mixed networks. + +Output and storage alerts: + +- Journal write failures warn when any failures appear and become critical above 1 error/s. Treat these as urgent because direct-journal jobs cannot commit local trap rows while writes are failing. +- OTLP export failures warn when they appear. No critical threshold is shipped by default. For OTLP-only jobs, export failures mean the configured downstream OTLP receiver is not receiving trap rows. + +Deduplication alert: + +- High deduplication suppression warns above 1000 suppressed events/s and becomes critical above 10000 suppressed events/s. This means repeated traps are being intentionally collapsed at storm-level rate. + +## Default alert templates \{#default-alert-templates} + +| Template | Context / dimension | Default threshold | +|---|---|---| +| `snmp_trap_emergency_events` | `snmp.trap.severity` / `emerg` | critical above 0 events/s (5m avg) | +| `snmp_trap_alert_events` | `snmp.trap.severity` / `alert` | warning above 0, critical above 5 events/s (5m avg) | +| `snmp_trap_critical_events` | `snmp.trap.severity` / `crit` | warning above 0, critical above 10 events/s (5m avg) | +| `snmp_trap_error_events` | `snmp.trap.severity` / `err` | warning above 10, critical above 100 events/s (5m avg) | +| `snmp_trap_warning_event_storm` | `snmp.trap.severity` / `warning` | warning above 100, critical above 1000 events/s (10m avg) | +| `snmp_trap_decode_errors` | `snmp.trap.errors` / `decode_failed` | warning above 0 errors/s (10m avg) | +| `snmp_trap_template_unresolved` | `snmp.trap.errors` / `template_unresolved` | warning above 0 errors/s (10m avg) | +| `snmp_trap_malformed_pdus` | `snmp.trap.errors` / `malformed_pdu` | warning above 0 errors/s (10m avg) | +| `snmp_trap_allowlist_drops` | `snmp.trap.errors` / `dropped_allowlist` | warning above 10, critical above 100 errors/s (10m avg) | +| `snmp_trap_rate_limited` | `snmp.trap.errors` / `rate_limited` | warning above 10, critical above 100 errors/s (10m avg) | +| `snmp_trap_auth_failures` | `snmp.trap.errors` / `auth_failures` | warning above 0 errors/s (10m avg) | +| `snmp_trap_usm_failures` | `snmp.trap.errors` / `usm_failures` | warning above 0 errors/s (10m avg) | +| `snmp_trap_unknown_engine_id` | `snmp.trap.errors` / `unknown_engine_id` | warning above 0 errors/s (10m avg) | +| `snmp_trap_inform_response_failures` | `snmp.trap.errors` / `inform_response_failed` | warning above 0 errors/s (10m avg) | +| `snmp_trap_binary_encoded_fields` | `snmp.trap.errors` / `binary_encoded` | warning above 0 errors/s (10m avg) | +| `snmp_trap_profile_load_failures` | `snmp.trap.errors` / `profile_load_failed` | warning above 0 errors/s (10m avg) | +| `snmp_trap_journal_write_failures` | `snmp.trap.errors` / `journal_write_failed` | warning above 0, critical above 1 errors/s (5m avg) | +| `snmp_trap_otlp_export_failures` | `snmp.trap.errors` / `otlp_export_failed` | warning above 0 errors/s (10m avg) | +| `snmp_trap_listener_read_failures` | `snmp.trap.errors` / `listener_read_failed` | warning above 0 errors/s (10m avg) | +| `snmp_trap_high_dedup_suppression` | `snmp.trap.dedup_suppressed` / `suppressed` | warning above 1000, critical above 10000 events/s (10m avg) | + +## Kernel UDP buffer drops + +The trap receiver also benefits from the system-level `1m_ipv4_udp_receive_buffer_errors` alert on `ipv4.udperrors`. It catches datagrams the kernel drops before they ever reach the collector, which the receiver's own pipeline metrics cannot see. That alert is routed `to: silent` by default — route it to a recipient to be notified of kernel UDP drops during a storm. See [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning#kernel-udp-buffer-drops). + +## Routing and silencing + +These are standard Netdata health alerts. Route or silence them like any other alert — by recipient, role, or template name — using your health notification configuration. The template names in the table above are the handles you use to target a specific alert when you adjust its routing, raise or lower a threshold, or silence it for a known steady-state source. + +## What's next + +- [Metrics](/docs/snmp-traps/metrics) - Read the receiver pipeline, processing errors, dedup counters, and source metrics these alerts watch. +- [Troubleshooting](/docs/snmp-traps/troubleshooting) - Investigate the failures that raise these alerts. +- [Configuration](/docs/snmp-traps/configuration) - Tune allowlists, rate limits, deduplication, and output backends that change alert behavior. diff --git a/docs/SNMP Traps/Anti-patterns.mdx b/docs/SNMP Traps/Anti-patterns.mdx new file mode 100644 index 0000000000..cb3b2a748a --- /dev/null +++ b/docs/SNMP Traps/Anti-patterns.mdx @@ -0,0 +1,191 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/anti-patterns.md" +sidebar_label: "Anti-patterns" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Avoid unsafe listeners, broad relay trust, inline secrets, high-cardinality metrics, noisy alerting, and storage blind spots." +sidebar_position: "160" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/anti-patterns" +slug: "/snmp-traps/anti-patterns" +--- + + + + +# Anti-Patterns + +Use this page to avoid common SNMP trap collection mistakes before they become incident, security, or storage problems. It is written for NetOps leads, SREs, SecOps teams, and platform owners who need trap data that is trustworthy during operations. + +Each anti-pattern explains: + +- why it hurts; +- the first symptom operators usually see; +- the better practice to use instead. + +For the details behind these recommendations, see [Configuration](/docs/snmp-traps/configuration), [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality), [Metrics](/docs/snmp-traps/metrics), [Alerts](/docs/snmp-traps/alerts), [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning), [Journal and Querying](/docs/snmp-traps/journal-and-querying), [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem), [Investigation Playbooks](/docs/snmp-traps/investigation-playbooks), and [Field Reference](/docs/snmp-traps/field-reference). + +## Copying quick-start config into production + +**Anti-pattern:** Treating the first working listener as production-ready. + +**Why it hurts:** Quick-start settings are meant to prove that traps arrive. Production jobs need explicit listener addresses, source controls, accepted SNMP versions, credentials, output backends, retention, and rate-limit or deduplication decisions. + +**First symptom:** The receiver works in a lab, then production shows unexpected senders, excessive `unknown_oid`, unexpected `dropped_allowlist`, missing local history, or noisy downstream alerts. + +**Better practice:** Use the quick start only for first receipt. Before production, review the full job in [Configuration](/docs/snmp-traps/configuration) and validate it with [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## Broad open listener with no allowlist + +**Anti-pattern:** Leaving a production listener on every interface with an open source allowlist. + +**Why it hurts:** A job created with default listener and source settings can bind broadly, and the default `allowlist.source_cidrs` is the catch-all `0.0.0.0/0` and `::/0`. Omitted or empty `source_cidrs` also accepts all source IPs. That exposes the decoder and authentication paths to traffic that should never reach the trap receiver. + +**First symptom:** Operators see traps from unexpected UDP peers. With an open allowlist, unexpected peers can reach authentication and decode checks, producing `auth_failures` or `malformed_pdu`. After a narrow allowlist is configured, peers outside it are rejected earlier as `dropped_allowlist`. + +**Better practice:** Bind to the intended local address and set `allowlist.source_cidrs` to the smallest practical real sender or relay ranges. Documentation examples may use RFC 5737 ranges such as `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24`; treat them as placeholders and replace them with the real ranges for your deployment. + +## Broad trusted relays + +**Anti-pattern:** Adding device subnets, site subnets, or catch-all prefixes to `source.trusted_relays`. + +**Why it hurts:** A trusted relay can supply original source identity through `snmpTrapAddress.0`. If the trusted range is broad, untrusted senders on that path can influence source attribution. + +**First symptom:** `TRAP_SOURCE_IP` differs from `TRAP_SOURCE_UDP_PEER` in ways the team cannot explain, enrichment looks wrong, or per-source metrics group traps under the wrong device identity. + +**Better practice:** Trust only the known relay peer, for example `192.0.2.10/32`. Validate relayed traps by comparing `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, and `TRAP_ENRICHMENT.source` as described in [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## Inline secrets + +**Anti-pattern:** Storing SNMPv1/v2c communities, SNMPv3 auth or privacy keys, or OTLP headers directly in `snmp_traps.conf`. + +**Why it hurts:** These values are credentials. Inline secrets can leak through config copies, tickets, shell history, downstream examples, or support artifacts. + +**First symptom:** Reviews find real community strings, SNMPv3 keys, or authorization headers in configuration snippets or operational notes. + +**Better practice:** Use Netdata secret references for communities, SNMPv3 keys, and OTLP headers. Netdata supports file-style references such as `${file:/run/secrets/snmp-trap-community}` and secret-store references such as `${store:vault:vault_prod:secret/data/snmp-traps#otlp_authorization}`; use the form that matches your deployment. Use placeholders such as `[REDACTED_SECRET]` in examples. Review [Secrets Management](/docs/collecting-metrics/secrets-management) and the sensitive-data cautions in [Field Reference](/docs/snmp-traps/field-reference). + +## Treating traps as complete device state + +**Anti-pattern:** Treating traps as the full current state of a device, or as a replacement for metric collection. + +**Why it hurts:** Traps are event messages that devices choose to send. They do not prove the complete device state, and they do not show everything that polling or metric collection can show. + +**First symptom:** A dashboard or incident process says a device is healthy because no problem trap arrived, while receiver metrics or device polling show a different picture. + +**Better practice:** Use traps as event evidence. Combine them with receiver metrics, device metrics, logs, and validation checks. See [Metrics](/docs/snmp-traps/metrics) for what trap metrics prove and what they do not prove. + +## Treating silence as proof of health + +**Anti-pattern:** Assuming no trap rows means no device problem. + +**Why it hurts:** Silence can mean no event happened, but it can also mean devices are sending to the wrong endpoint, the network blocks UDP, source controls reject the sender, credentials do not match, rate limiting or deduplication changed visibility, output writes are failing, or retention removed old rows. + +**First symptom:** Operators cannot find an expected trap during an incident, and `received`, `decoded`, `accepted`, or `committed` counters do not move as expected. + +**Better practice:** Send a known test trap, check `snmp.trap.pipeline`, inspect `snmp.trap.errors`, and confirm the configured output backend. Use the validation checklist in [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## Alerting on every trap without policy + +**Anti-pattern:** Paging on every trap row, or forwarding every trap as the same urgency. + +**Why it hurts:** Traps include state changes, configuration changes, security events, diagnostics, informational events, and unknown vendor messages. Treating all of them the same creates noise and hides the events that need action. + +**First symptom:** Alert fatigue starts immediately. Operators mute trap alerts, and real high-severity traps are missed in the noise. + +**Better practice:** Build alert policy from `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_OID`, `TRAP_NAME`, source identity, and local overrides. Start from the shipped receiver and severity alerts in [Alerts](/docs/snmp-traps/alerts), then add local rules only where the policy is clear. + +## Blanket-suppressing authenticationFailure traps + +**Anti-pattern:** Treating a wave of `authenticationFailure` traps (`SNMPv2-MIB::authenticationFailure`, `TRAP_CATEGORY=auth`) as routine noise and silencing or deduplicating it away. + +**Why it hurts:** A surge of authentication-failure traps is a SecOps signal, not just trap noise. It commonly means a scanner is probing the device, a host is using wrong or stale SNMP credentials, or a credential rotation is half-applied. Suppress it and you lose the earliest evidence of unauthorized access attempts or a broken rotation. + +**First symptom:** `TRAP_CATEGORY=auth` rises across one or many devices, often from an unexpected `TRAP_SOURCE_IP`, sometimes alongside `auth_failures` or `usm_failures` on the receiver. + +**Better practice:** Route auth-category traps to your security workflow and investigate the source before tuning anything. Use the [Critical, security, or authentication traps](/docs/snmp-traps/investigation-playbooks#critical-security-or-authentication-traps) playbook to identify the source and intent. Apply deduplication or rate limiting to a confirmed-benign storming source only, never as a blanket auth filter. + +## Ignoring unknown OID and profile coverage + +**Anti-pattern:** Accepting traps with unknown OIDs indefinitely because rows are still being stored. + +**Why it hurts:** Unknown OIDs are data-quality gaps. The receiver can store the row, but operators lose resolved names, categories, severities, and useful varbind labels. + +**First symptom:** `TRAP_CATEGORY=unknown`, missing `TRAP_NAME`, or the `unknown_oid` error dimension grows for important devices. + +**Better practice:** Treat repeated important unknown OIDs as profile or override work. Validate `TRAP_OID`, `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, and `TRAP_VAR_*` coverage with [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## High-cardinality profile metrics or labels + +**Anti-pattern:** Enabling broad profile metrics or labels that use unbounded identity, resource, or payload values. + +**Why it hurts:** Profile metrics create time-series. Unbounded sources, resources, labels, or custom rules can create too many metric instances. Netdata protects the node with profile metric limits, but over-cap metric instances are skipped and counted by diagnostics. + +**First symptom:** Operators see fewer profile-metric instances than expected, while the affected traps still appear as accepted log rows. `snmp.trap.profile_metric_diagnostics` shows `overflow_dropped`, `rule_missed`, `extraction_failed`, `attribution_failed`, or `source_transitions`. + +**Better practice:** Keep `profile_metrics` disabled until rules are reviewed. Prefer `profile_metrics.mode: exact`, enable only bounded rules, keep `profile_metrics.identity.source_id_privacy: hash`, and set limits intentionally. See [Configuration](/docs/snmp-traps/configuration) and [Metrics](/docs/snmp-traps/metrics). + +## Disabling journal while expecting local queries + +**Anti-pattern:** Setting `journal.enabled: false` while expecting the job to appear in local Logs or `journalctl --directory` queries. + +**Why it hurts:** OTLP-only jobs do not create local journal files and do not appear as local job sources in the `snmp:traps` Function. Operators must query the downstream OTLP receiver instead of local Logs or `journalctl --directory` for that job. + +**First symptom:** Traps are exported downstream, but local Logs and local journal queries have no source for that job. + +**Better practice:** Keep `journal.enabled: true` when local investigation is required. Disable it only when OTLP-only operation is intentional and the downstream receiver is validated. See [Journal and Querying](/docs/snmp-traps/journal-and-querying) and [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem). + +## Forwarding full payloads everywhere + +**Anti-pattern:** Forwarding full `TRAP_JSON` or OTLP `snmp.varbinds` to every downstream system without review. + +**Why it hurts:** Community varbinds are omitted, but other varbinds and enrichment data can still include sensitive inventory, usernames, interface descriptions, MACs, public IPs, asset tags, locations, device identifiers, or vendor text. Full payloads can also be large or high-cardinality. + +**First symptom:** SIEM indexes contain sensitive operational context, large payload fields dominate storage, or rules group on unstable JSON instead of stable fields. + +**Better practice:** Use specific fields for routine routing and rules: `TRAP_REPORT_TYPE`, `TRAP_JOB`, `TRAP_SOURCE_IP`, `TRAP_OID`, `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, and selected `TRAP_VAR_*`. Review full payload forwarding against the sensitive-data guidance in [Field Reference](/docs/snmp-traps/field-reference). + +## Enabling rate-limit drop mode before measuring + +**Anti-pattern:** Turning on `rate_limit.enabled: true` with the default `rate_limit.mode: drop` before measuring normal traffic and storm volume. + +**Why it hurts:** In `drop` mode, over-limit traps are counted as `rate_limited` and discarded before they become normal rows. That protects storage and forwarding, but it also removes evidence during first validation. + +**First symptom:** `snmp.trap.errors` `rate_limited` rises, operators see fewer rows than packets, and there is no deduplication summary explaining the missing rows. + +**Better practice:** During validation, keep rate limiting disabled or use `rate_limit.mode: sample` so over-limit traps are counted and still continue through the receiver. Switch to `drop` only when protecting local journal storage or downstream export is more important than preserving every over-limit trap. See [Configuration](/docs/snmp-traps/configuration) and [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning). + +## Ignoring rate limit and dedup behavior during validation + +**Anti-pattern:** Enabling rate limiting or deduplication before proving what the receiver stores and exports. + +**Why it hurts:** Rate limiting can drop over-limit traffic. Deduplication stores a first matching trap and then summarizes repeated matching traps during the window. Dedup-suppressed traps do not update profile-defined metrics. + +**First symptom:** Operators see fewer rows than test packets, `deduplication_summary` rows appear, `dedup_suppressed` rises, or `rate_limited` increments during validation. + +**Better practice:** During first validation, keep rate limiting and deduplication disabled or set `rate_limit.mode: sample`. In `sample` mode, over-limit traps increment `rate_limited` and still continue through the receiver. When deduplication is enabled, validate `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, and the dedup fingerprint behavior. + +## Skipping retention and storage planning + +**Anti-pattern:** Accepting default local retention without checking trap volume, investigation needs, and downstream ownership. + +**Why it hurts:** Direct-journal retention controls how much local trap history is kept. Too little retention removes forensic evidence before operators need it. Too much retention can consume more local storage than intended. + +**First symptom:** An incident review needs older trap rows that were already evicted, or local trap journal files grow beyond the expected operational budget. + +**Better practice:** Choose `retention` based on expected trap volume and the required local investigation window. If downstream OTLP storage keeps the long-term trap history and local querying is not needed, validate OTLP-only operation instead of keeping unnecessary local history. See [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning) and [Configuration](/docs/snmp-traps/configuration). + +## Quick review checklist + +Before relying on an SNMP trap listener in production, verify: + +- the listener binds only where it should; +- `allowlist.source_cidrs` is narrow enough for the deployment; +- `source.trusted_relays` contains only real relay peers; +- accepted SNMP `versions`, `communities`, and SNMPv3 `usm_users` match the intended senders; +- secrets use references, not inline values; +- unknown OIDs are tracked as coverage gaps; +- alert rules use policy, not raw trap volume alone; +- profile metrics use bounded rules and labels; +- the intended output is confirmed: local journal for local investigation, OTLP as the only output when journal is disabled, or journal plus OTLP export, where the local journal is the source of truth; +- `rate_limit` and `dedup` behavior is understood before validation results are trusted; +- retention matches investigation and storage requirements. diff --git a/docs/SNMP Traps/Configuration.mdx b/docs/SNMP Traps/Configuration.mdx new file mode 100644 index 0000000000..81a0ff366b --- /dev/null +++ b/docs/SNMP Traps/Configuration.mdx @@ -0,0 +1,573 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/configuration.md" +sidebar_label: "Configuration" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Configure listener endpoints, SNMP versions, source controls, storage, forwarding, deduplication, and profile metrics." +sidebar_position: "30" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/configuration" +slug: "/snmp-traps/configuration" +--- + + + + +# Configuration + +The SNMP trap listener reads jobs from `go.d/snmp_traps.conf`. A production job should answer three questions clearly: + +- Which local address and port should receive traps? +- Which sources, SNMP versions, communities, and SNMPv3 users are allowed? +- Which output backends should receive the decoded trap events? + +Use this page to harden a listener after the first trap has been received. If you have not tested receipt yet, start with [Quick Start](/docs/snmp-traps/quick-start). + +## On this page + +- [Listener endpoints](#listener-endpoints) +- [SNMP versions and communities](#snmp-versions-and-communities) +- [SNMPv3 users](#snmpv3-users) +- [Source controls](#source-controls) +- [Storm controls](#storm-controls) +- [Output backends](#output-backends) +- [Direct journal retention](#direct-journal-retention) +- [Profile metrics](#profile-metrics) + +## Where the file lives + +| Path | Purpose | +|---|---| +| `/etc/netdata/go.d/snmp_traps.conf` | Your SNMP trap listener jobs. Edits here survive package upgrades. | +| `/usr/lib/netdata/conf.d/go.d/snmp_traps.conf` | The stock commented template shipped with Netdata. Reference only. | +| `/etc/netdata/go.d/snmp.trap-profiles/` | Optional user trap profiles and profile metric rules. | +| `/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/` | Stock trap profiles shipped with Netdata. Reference only. | + +Depending on installation type, paths may be prefixed with `/opt/netdata`. + +## How to apply configuration + +This page documents the options in YAML form because that is the most compact way to show them, and because the same keys appear in both configuration methods. You can apply them two ways. + +**Recommended — Dynamic Configuration (no restart).** Add, edit, test, and deploy a listener job from the Netdata UI under **Integrations → SNMP Trap Listener → Configure**, with no file editing and no `netdata` restart. This is the primary method; see [enable a job via Dynamic Configuration](/docs/snmp-traps/installation#enable-via-dynamic-configuration) for the step-by-step UI flow and the paid-Cloud-connection requirement. + +**Fallback — edit the file and restart.** Use this for headless, automated, or free-tier deployments. Edit the job file with `edit-config` from the Netdata configuration directory: + +```bash +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata +sudo ./edit-config go.d/snmp_traps.conf +``` + +After file edits, restart Netdata so the listener job is recreated: + +```bash +sudo systemctl restart netdata +``` + +## Three things to know before you edit + +1. **Collection is explicit.** The stock file is a commented template. Create or uncomment a `jobs:` entry before expecting traps. +2. **The default listener is broad.** It binds `0.0.0.0:162`, accepts SNMPv1 and SNMPv2c, accepts all communities when `communities` is empty, and accepts all source IPs unless you set `allowlist.source_cidrs`. On exposed networks, restrict traffic with firewalls or ACLs too — the allowlist is evaluated only after the packet reaches the host. +3. **At least one output backend must stay enabled.** Journal is on by default, OTLP is off. If you disable journal, enable OTLP or the job fails validation. + +## Job layout + +Every listener is a job under `jobs:`: + +```yaml +jobs: + - name: campus-core + listen: + endpoints: + - protocol: udp + address: 10.0.20.10 + port: 162 + versions: + - v2c + communities: + - "${file:/run/secrets/snmp-trap-community}" + allowlist: + source_cidrs: + - 10.0.0.0/8 + - 192.0.2.0/24 + journal: + enabled: true +``` + +Job names must be 64 characters or shorter, start with a letter or digit, and may contain letters, digits, underscores, and hyphens. Keep names stable because the name is used in log source selection, per-job metrics, and per-job storage paths. + +## Option map + +| Area | Option | Default | What it controls | +|---|---|---|---| +| Base | `update_every` | `1` | Framework collection interval for self-metrics. Trap packet reception is event-driven and does not depend on this interval. | +| Base | `vnode` | unset | Associates the listener job with a Virtual Node. | +| Listener | `listen.receive_buffer` | `4194304` | UDP socket receive buffer requested per bound endpoint, in bytes. Set `0` to keep the operating system default. | +| Listener | `listen.endpoints` | UDP `0.0.0.0:162` | Local UDP endpoints to bind. At least one endpoint is required. | +| SNMP | `versions` | `[v1, v2c]` | Accepted SNMP versions. Allowed values: `v1`, `v2c`, `v3`. At least one is required. | +| SNMPv1/v2c | `communities` | `[]` | Community allowlist. Empty accepts all communities. | +| SNMPv3 | `usm_users` | `[]` | SNMPv3 USM users, auth protocols, and privacy protocols. | +| SNMPv3 | `engine_id_whitelist` | `[]` | Static sender engine IDs accepted for SNMPv3 Trap PDUs. Required for static v3 jobs. | +| SNMPv3 | `local_engine_id` | generated | Receiver-local engine ID for SNMPv3 INFORM authentication. | +| SNMPv3 | `dynamic_engine_id_discovery` | `false` | Opt-in runtime discovery of SNMPv3 sender engine IDs. | +| SNMPv3 | `dynamic_engine_id_max_pairs` | `4096` | Maximum in-memory dynamic `(engineID, username)` pairs per job. | +| Source controls | `allowlist.source_cidrs` | `["0.0.0.0/0", "::/0"]` | Source-IP CIDR allowlist, checked before the packet is parsed. | +| Source controls | `source.trusted_relays` | `[]` | Trap relays allowed to supply original source identity through `snmpTrapAddress.0`. | +| Enrichment | `reverse_dns.enabled` | `false` | Adds best-effort PTR annotation as `TRAP_REVERSE_DNS`. Never used as authoritative identity. | +| Storm controls | `rate_limit` | disabled | Optional per-source token-bucket rate limiting. | +| Storm controls | `dedup` | disabled | Optional suppression of repeated identical traps inside a window. | +| Outputs | `journal.enabled` | `true` | Writes decoded traps to local journal-compatible files and exposes listener jobs through the `snmp:traps` Function. Linux only. | +| Outputs | `otlp` | disabled | Optional OTLP/gRPC Logs export. | +| Storage | `retention` | `max_size: 10GB` | Per-job direct journal retention and rotation. Ignored when `journal.enabled` is `false`. | +| Meaning | `overrides` | `[]` | Per-OID category, severity, and label overrides on top of profile defaults. | +| Metrics | `profile_metrics` | disabled | Enables selected trap-to-metric rules defined by loaded trap profiles. | + +## Listener endpoints + +`listen.endpoints` controls where the job binds UDP sockets. List more than one entry when the same job should bind multiple local addresses. + +```yaml +listen: + receive_buffer: 4194304 + endpoints: + - protocol: udp + address: 10.0.20.10 + port: 162 +``` + +| Key | Default | Notes | +|---|---|---| +| `receive_buffer` | `4194304` | Requested UDP receive buffer in bytes. Maximum: `268435456`. Set `0` to keep the OS default. | +| `endpoints[].protocol` | `udp` | Only `udp` is supported. | +| `endpoints[].address` | `0.0.0.0` | Local address to bind. Use a specific interface address to avoid listening on every interface. | +| `endpoints[].port` | `162` | UDP port. Port `162` requires `CAP_NET_BIND_SERVICE` or root; Netdata packages grant this to `go.d.plugin`. For a non-privileged test listener use a port above `1024`, such as `9162`. | + +## SNMP versions and communities + +The default accepts SNMPv1 and SNMPv2c. For production, enable only the versions your devices send. + +**Security: SNMPv1/v2c community strings travel in cleartext.** They authenticate but provide no confidentiality, so anyone on the path can read the community and the trap payload. On any segment you do not fully trust, prefer SNMPv3 with `authPriv` (authentication and privacy). When you use v3, prefer SHA-256 authentication and AES privacy; treat MD5, SHA-1, and DES as deprecated. See [SNMPv3 users](#snmpv3-users). + + +```yaml +versions: + - v2c +``` + +For SNMPv1 and SNMPv2c, `communities` is an allowlist: + +```yaml +communities: + - "${file:/run/secrets/snmp-trap-community}" +``` + +| Setting | Behavior | +|---|---| +| `communities: []` | Accepts all SNMPv1/v2c communities. Useful only for short validation or tightly isolated lab networks. | +| One or more values | Accepts only traps whose community matches one of the configured values. | + +Community strings are credentials. Use [Secrets Management](/docs/collecting-metrics/secrets-management) so the real value is not stored inline in `snmp_traps.conf`. + +## SNMPv3 users + +SNMPv3 jobs use USM users. A static v3 job needs: + +- `versions` containing `v3` +- at least one `usm_users` entry +- `engine_id_whitelist` containing the accepted sender engine IDs + +```yaml +usm_users: + - username: trapmon + engine_id: 80001f8880e5a5c0d6c7b8a9 + auth_proto: sha256 + auth_key: "${file:/run/secrets/snmp-v3-auth-key}" + priv_proto: aes + priv_key: "${file:/run/secrets/snmp-v3-priv-key}" +engine_id_whitelist: + - 80001f8880e5a5c0d6c7b8a9 +``` + +For a complete static v3 job, see [Static SNMPv3 with journal and OTLP](#static-snmpv3-with-journal-and-otlp). + +| Key | Required | Values | +|---|---:|---| +| `username` | yes | SNMPv3 USM security name. | +| `engine_id` | yes for static v3 | Sender authoritative engine ID as hex, 5-32 bytes. May be omitted when dynamic engine ID discovery is enabled. | +| `auth_proto` | no | `none`, `md5`, `sha`, `sha224`, `sha256`, `sha384`, `sha512`. Empty behaves as `none`. | +| `auth_key` | when auth is enabled | Authentication passphrase. Minimum 8 characters after secret resolution. | +| `priv_proto` | no | `none`, `des`, `aes`, `aes192`, `aes256`, `aes192c`, `aes256c`. Empty behaves as `none`. Privacy requires authentication; `priv_proto` cannot be enabled while `auth_proto` is `none`. | +| `priv_key` | when privacy is enabled | Privacy passphrase. Minimum 8 characters after secret resolution. | + +For new deployments, prefer `auth_proto: sha256` and `priv_proto: aes`, and enable privacy (`authPriv`) so trap payloads are encrypted in transit. `md5`, `sha` (SHA-1), and `des` are accepted for legacy senders but are deprecated; migrate away from them where the device firmware allows. + +Use [Secrets Management](/docs/collecting-metrics/secrets-management) for `auth_key` and `priv_key`. The example uses file resolvers, but environment, command, and secretstore resolvers are also supported there. + +### SNMPv3 INFORM receiver identity + +SNMPv3 INFORM authentication uses a receiver-local engine ID. + +```yaml +local_engine_id: 80001f888001020304050607 +``` + +If `local_engine_id` is empty or omitted, Netdata generates and persists a stable per-job value under the Netdata lib directory. Set it explicitly only when your operational process requires a known receiver engine ID. + +### Dynamic engine ID discovery + +Use dynamic discovery when sender engine IDs are not known in advance. Start from the static v3 job and swap the engine-ID keys: + +```yaml + engine_id_whitelist: [] + dynamic_engine_id_discovery: true + dynamic_engine_id_max_pairs: 4096 +``` + +Key behavior: + +- `engine_id_whitelist` must be empty when `dynamic_engine_id_discovery` is `true`, and `usm_users[].engine_id` may then be omitted (set it only to pre-seed known senders). +- New `(engineID, username)` pairs are tracked in memory only and not persisted across restarts. The cap is `dynamic_engine_id_max_pairs`; `0` uses the default `4096`. +- Operator-observable symptom: pairs over the cap are rejected and counted in the `unknown_engine_id` error counter, and the first registration of a new pair also increments that counter once as an audit signal. Discovery is skipped for INFORM traffic. + +For the most controlled deployment, use static engine IDs. Use dynamic discovery when inventory data is incomplete and you can restrict senders with `allowlist.source_cidrs`. + +## Source controls + +Source controls decide which packets are allowed before parsing, and which identity is trusted afterward. + +### Restrict source CIDRs + +`allowlist.source_cidrs` is checked against the UDP peer before the packet is parsed, keeping unexpected senders away from the decoder and authentication paths. Omitted or empty accepts all source IPs (the default open IPv4/IPv6 allowlist); a CIDR list accepts only peers inside it. For production, avoid broad ranges unless firewalls or ACLs already control the path. + +```yaml +allowlist: + source_cidrs: + - 10.0.0.0/8 + - 192.0.2.0/24 +``` + +### Trust relays carefully + +Set `source.trusted_relays` only when a known relay forwards traps and preserves the original device address in `snmpTrapAddress.0`. Keep the list narrow and never use catch-all ranges such as `0.0.0.0/0`. + +```yaml +source: + trusted_relays: + - 10.0.30.5/32 +``` + +For why the UDP peer is authoritative by default and how a trusted relay overrides source identity, see the [source-identity model in Enrichment](/docs/snmp-traps/enrichment#direct-senders-vs-trusted-relays). + +### Reverse DNS is annotation only + +Reverse DNS is disabled by default. When enabled, Netdata emits `TRAP_REVERSE_DNS`, which is never authoritative identity (see [Enrichment](/docs/snmp-traps/enrichment#reverse-dns)). + +```yaml +reverse_dns: + enabled: false +``` + +## Storm controls + +Rate limiting and deduplication protect the receiver from noisy senders and repeated events. They are disabled by default so first validation shows every accepted trap. + +### Rate limiting + +```yaml +rate_limit: + enabled: true + per_source_pps: 1000 + mode: drop +``` + +| Key | Default | Notes | +|---|---|---| +| `enabled` | `false` | Enables per-source token-bucket rate limiting. | +| `per_source_pps` | `1000` | Maximum traps per second from one source IP. `0` uses the default. | +| `mode` | `drop` | `drop` discards over-limit traps. `sample` allows them but counts rate-limited events. | + +Use `drop` when the receiver must protect downstream storage or forwarding. Use `sample` when you need to observe storm volume while testing limits. + +Rate limiting is tracked per source IP, up to a fixed cap of 10,000 active sources per job (not user-configurable). A source that has been idle is allowed an initial burst of up to `per_source_pps` traps before limiting takes effect. + +### Deduplication + +```yaml +dedup: + enabled: true + window_sec: 5 + cache_max_entries: 100000 +``` + +| Key | Default | Notes | +|---|---|---| +| `enabled` | `false` | Enables per-job deduplication. | +| `window_sec` | `5` | Repeated matching traps inside the window are summarized. `0` uses the default. | +| `cache_max_entries` | `100000` | Maximum fingerprints kept in memory. `0` uses the default. | +| `key_varbinds` | `[]` | Optional additional varbind names to include in the fingerprint. | + +By default, the dedup fingerprint uses the source device and trap OID. Add `key_varbinds` only when one trap OID carries several operationally distinct events that should not suppress each other. + +```yaml +dedup: + enabled: true + window_sec: 10 + key_varbinds: + - ifIndex +``` + +Dedup-suppressed traps do not update profile-defined metrics. Instead of one journal entry per repeat, the listener records a periodic summary entry with the suppressed count. + +## Output backends + +The listener can write to the direct journal, export to OTLP/gRPC, or do both. + +| Backend | Enabled by default | Local querying | Notes | +|---|---:|---:|---| +| Direct journal | yes | yes | Stores journal-compatible files under the Netdata log directory and exposes the job through the `snmp:traps` Function. Linux only. | +| OTLP/gRPC Logs | no | no | Exports traps as OTLP LogRecords to an external collector. | + +When both backends are enabled, traps go to both outputs and the local journal is authoritative: an OTLP export failure does not affect what was already written to the journal. When journal is disabled and OTLP is enabled, no local journal files are created and the job does not appear as a local SNMP trap log source. + +Trap rows can contain sensitive operational payloads, not only credentials. Review what Netdata emits and redacts before sharing exports, forwarding, or granting broad journal access; see [Field Reference sensitive-data cautions](/docs/snmp-traps/field-reference#sensitive-data-cautions). + +### Direct journal + +Direct journal storage is enabled by default and requires Linux: + +```yaml +journal: + enabled: true +``` + +Trap entries are written as journal-compatible files under the configured Netdata log directory, with a per-job root of `/var/log/netdata/traps//` (or `${NETDATA_LOG_DIR}/traps//` at runtime). They back the embedded `snmp:traps` Function, use `ND_LOG_SOURCE=snmp-trap`, and are not the host systemd-journald journal. For how the `journalctl --directory` path is built, see [Journal and Querying](/docs/snmp-traps/journal-and-querying); for the field list, see [Field Reference](/docs/snmp-traps/field-reference). + +### OTLP/gRPC export + +OTLP export is disabled by default: + +```yaml +otlp: + enabled: true + endpoint: "https://otel-collector.example.net:4317" + headers: + authorization: "${file:/run/secrets/snmp-trap-otlp-authorization}" + request_timeout: 5s + flush_interval: 200ms + batch_size: 512 + queue_capacity: 10000 +``` + +| Key | Default | Notes | +|---|---|---| +| `enabled` | `false` | Enables OTLP/gRPC Logs export. | +| `endpoint` | `http://127.0.0.1:4317` | Bare `host:port` and `http://host:port` use plaintext gRPC. `https://host:port` uses TLS with system trust roots. Paths, query strings, and fragments are not supported. | +| `headers` | `null` | Optional OTLP metadata headers. Header values may use secret references. Header keys with the `grpc-` prefix are reserved and rejected. | +| `request_timeout` | `5s` | Timeout for connection preflight and export calls. A failed preflight prevents a static job from starting and rejects a Dynamic Configuration apply. | +| `flush_interval` | `200ms` | Maximum time to buffer records before an export attempt. | +| `batch_size` | `512` | Maximum OTLP LogRecords per export request. `0` uses the default. | +| `queue_capacity` | `10000` | Maximum OTLP records buffered per job. `0` uses the default. | + +Use `https://` for remote collectors when trap contents should be protected in transit. Plaintext `http://127.0.0.1:4317` is intended for loopback collectors. Netdata logs a startup warning for remote plaintext OTLP targets. + +### OTLP-only jobs + +To send traps only to OTLP, explicitly disable journal output on an otherwise normal job: + +```yaml + journal: + enabled: false + otlp: + enabled: true + endpoint: "https://otel-collector.example.net:4317" +``` + +OTLP-only jobs do not create local journal files and do not appear as local SNMP trap log sources in the `snmp:traps` Function. Use this mode only when the external OTLP receiver is the intended system of record. + +## Direct journal retention + +`retention` applies only when `journal.enabled` is `true`. + +```yaml +retention: + max_size: 10GB + max_duration: null + rotation_size: null + rotation_duration: null +``` + +| Key | Default | Notes | +|---|---|---| +| `max_size` | `10GB` | Maximum total bytes across journal files for this job. Set `null` to disable size-based eviction. | +| `max_duration` | `null` | Maximum age of the oldest journal file before deletion. Set `null` to disable age-based eviction. | +| `rotation_size` | `null` | Maximum size of a single journal file before rotation. `null` means automatic: `max_size / 20`, clamped between `5MB` and `200MB`. `0` is invalid. | +| `rotation_duration` | `null` | Maximum age of a single journal file before rotation. `null` or `0` disables time-based rotation. | + +Example with both size and age budgets: + +```yaml +retention: + max_size: 50GB + max_duration: 14d + rotation_size: null + rotation_duration: 24h +``` + +Choose retention based on expected trap volume and how long operators need local forensic access. If OTLP is the system of record and local querying is not needed, use an OTLP-only job instead of keeping a large local journal. + +## Per-OID overrides + +Use `overrides` when one trap OID should use site-specific category, severity, or labels without editing the stock profile. + +```yaml +overrides: + - oid: 1.3.6.1.4.1.9.9.43.2.0.1 + category: config_change + severity: notice + labels: + change_window: business_hours +``` + +| Key | Required | Notes | +|---|---:|---| +| `oid` | yes | Numeric trap OID in dotted-decimal format, such as `1.3.6.1.4.1.9.9.43.2.0.1`. MIB names and short OID names are not accepted. | +| `category` | no | One of `state_change`, `config_change`, `security`, `auth`, `license`, `mobility`, `diagnostic`, `unknown`. | +| `severity` | no | One of `emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, `debug`. | +| `labels` | no | Additional labels for this OID. Label keys must use lowercase letters, digits, and underscores, starting with a letter. | + +For what each category and severity value means, see [Metrics](/docs/snmp-traps/metrics#categories-and-severities); for where they appear as fields, see [Field Reference](/docs/snmp-traps/field-reference#trap-meaning-fields). + +Use overrides for small local policy changes. For broader trap definitions, use trap profile files under `/etc/netdata/go.d/snmp.trap-profiles/`. + +## Profile metrics + +Profile metrics are disabled by default. Enable them only after you know which trap-to-metric rules you want. The current stock trap profile pack provides decoding coverage but does not ship metric rules; profile-derived charts require loaded operator profiles that define `metrics:` and `charts:` rules. + +```yaml +profile_metrics: + enabled: true + mode: exact + include: + - cisco.config.changed # example only: replace with a loaded operator-profile rule + identity: + device: source + unresolved_source: source_label + source_id_privacy: hash + limits: + max_rules: 500 + max_sources: 2000 + max_resources_per_source: 512 + max_instances_per_job: 50000 + overflow: drop_and_count +``` + +| Key | Default | Notes | +|---|---|---| +| `enabled` | `false` | When `true`, evaluates selected profile metric rules for successfully committed traps. | +| `mode` | `none` | `none`, `auto`, `exact`, or `combined`. `none` disables rule evaluation even if `enabled` is `true`. | +| `include` | `[]` | Rule names to enable with `exact` or `combined`. Setting `include` with `none` or `auto` causes job validation failure when `enabled` is `true`; when `enabled` is `false`, `profile_metrics` is disabled and `include` is ignored. | +| `identity.device` | `source` | `source`, `source_label`, or `listener`. | +| `identity.unresolved_source` | `source_label` | `source_label` or `drop_metric_instance`. | +| `identity.source_id_privacy` | `hash` | `hash` emits a stable local hash. `raw` emits the selected source value and can expose source IPs or labels in metric labels. | +| `limits.max_rules` | `500` | Maximum enabled metric rules evaluated by this job. | +| `limits.max_sources` | `2000` | Maximum non-listener source identities tracked by this job. | +| `limits.max_resources_per_source` | `512` | Default resource cap per source and resource class. | +| `limits.max_instances_per_job` | `50000` | Maximum profile-derived metric instances for this job. | +| `limits.overflow` | `drop_and_count` | Only `drop_and_count` is supported. Over-cap metric instances are skipped, accepted traps are still committed, and diagnostics increment. | + +Selection modes: + +- `none`: no profile metric rules are evaluated. +- `auto`: enables rules marked `auto_safe: true`. +- `exact`: enables only rule names listed in `include`. +- `combined`: enables `auto_safe: true` rules plus rule names listed in `include`. + +If an `include` name does not match a loaded rule, the listener job fails validation with `profile_metrics.include rule "" not found` and does not start. If the rule exists but is disabled in the profile, validation fails with `profile_metrics.include rule "" is disabled by profile`. + +Only committed traps update profile metrics. For the exact update rule and the diagnostics chart, see [Metrics](/docs/snmp-traps/metrics#profile-defined-metrics). + +Do not enable `auto` blindly on unreviewed custom rules. Profile metrics create time-series, so rule identity and labels must be bounded. For rule syntax and cardinality rules, see [SNMP Trap Profile Format](/docs/snmp-traps/snmp-trap-profile-format). + +## Common configurations + +### Hardened SNMPv2c listener + +```yaml +jobs: + - name: campus-v2c + listen: + endpoints: + - protocol: udp + address: 10.0.20.10 + port: 162 + versions: + - v2c + communities: + - "${file:/run/secrets/snmp-trap-community}" + allowlist: + source_cidrs: + - 10.0.0.0/8 + - 192.0.2.0/24 + source: + trusted_relays: [] + rate_limit: + enabled: true + per_source_pps: 1000 + mode: drop + dedup: + enabled: true + window_sec: 5 + journal: + enabled: true +``` + +### Static SNMPv3 with journal and OTLP + +```yaml +jobs: + - name: core-v3 + listen: + endpoints: + - protocol: udp + address: 10.0.20.10 + port: 162 + versions: + - v3 + usm_users: + - username: trapmon + engine_id: 80001f8880e5a5c0d6c7b8a9 + auth_proto: sha256 + auth_key: "${file:/run/secrets/snmp-v3-auth-key}" + priv_proto: aes + priv_key: "${file:/run/secrets/snmp-v3-priv-key}" + engine_id_whitelist: + - 80001f8880e5a5c0d6c7b8a9 + allowlist: + source_cidrs: + - 10.0.0.0/8 + journal: + enabled: true + otlp: + enabled: true + endpoint: "https://otel-collector.example.net:4317" + headers: + authorization: "${file:/run/secrets/snmp-trap-otlp-authorization}" +``` + +### Trap relay with original source attribution + +For a relayed setup, set both `allowlist.source_cidrs` and `source.trusted_relays` to the relay's `/32` only (the YAML is the same as the [Trust relays carefully](#trust-relays-carefully) block). The relay is then the only allowed UDP peer and the only peer that may override source identity. Never add device subnets to `trusted_relays`. + +## Things that go wrong + +- **The job starts but accepts too much traffic.** Restrict `listen.endpoints`, set `allowlist.source_cidrs`, avoid `communities: []`, and keep `source.trusted_relays` empty unless a known relay is in use. +- **The job fails validation after disabling journal.** Enable `otlp.enabled: true`. At least one backend must be enabled. +- **The job is OTLP-only and does not appear in local Logs.** That is expected. OTLP-only jobs do not create local journal files, so they do not appear as local sources in the `snmp:traps` Function. +- **SNMPv3 traps fail with unknown engine ID.** In static mode, add the sender engine ID to `engine_id_whitelist`. In dynamic mode, keep the whitelist empty and confirm the dynamic pair cap has not been reached. +- **SNMPv3 authentication fails.** Check username, engine ID, auth protocol, privacy protocol, and resolved secret values. Do not paste real keys into the config while debugging. +- **Rate limiting hides events you expected to see.** Temporarily use `mode: sample` or disable the limiter while validating sender volume. +- **Dedup hides repeated traps.** Disable dedup during validation, or add bounded `key_varbinds` when one OID represents multiple distinct resources. +- **Profile metrics create too many series.** Use `mode: exact`, review the selected rules, keep `source_id_privacy: hash`, and lower the `limits` values if needed. + +## What's next + +After saving the job and restarting Netdata, validate with [Quick Start](/docs/snmp-traps/quick-start). For local storage and export workflows, continue to [Journal and Querying](/docs/snmp-traps/journal-and-querying) or [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem). For profile behavior and rule syntax, see [Trap Profiles](/docs/snmp-traps/trap-profiles). If the receiver is not installed or cannot bind the port, check [Installation](/docs/snmp-traps/installation). diff --git a/docs/SNMP Traps/Enrichment.mdx b/docs/SNMP Traps/Enrichment.mdx new file mode 100644 index 0000000000..074d8b1869 --- /dev/null +++ b/docs/SNMP Traps/Enrichment.mdx @@ -0,0 +1,216 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/enrichment.md" +sidebar_label: "Enrichment" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Understand source identity, trusted relays, reverse DNS, device identity, interface context, and enrichment audit fields." +sidebar_position: "60" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/enrichment" +slug: "/snmp-traps/enrichment" +--- + + + + +# Enrichment + +Netdata adds source identity and an audit trail to accepted SNMP Trap and INFORM events, and can add device identity, topology context, interface names, neighbors, and reverse DNS when that local context is available. + +The first fields to inspect are `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `_HOSTNAME`, `TRAP_REVERSE_DNS`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `ND_NIDL_NODE`, and `TRAP_ENRICHMENT`. + +Use this page to understand what those fields mean and how much trust to place in them. + +## Source identity model + +Every accepted trap has a selected source identity. How it is chosen depends on whether the device sent the trap directly or through a relay: + +```mermaid +flowchart LR + Dev([Device 192.0.2.10]) -->|direct| ND[Netdata listener] + ND --> S1["TRAP_SOURCE_IP = UDP peer = 192.0.2.10"] + Dev2([Device 192.0.2.10]) --> Relay([Relay 192.0.2.250]) + Relay -->|"UDP peer = relay"| ND2[Netdata listener] + ND2 --> Q{"relay trusted +
valid snmpTrapAddress.0?"} + Q -->|yes| S2["TRAP_SOURCE_IP = device 192.0.2.10
TRAP_SOURCE_UDP_PEER = relay"] + Q -->|no| S3["TRAP_SOURCE_IP = relay
candidate rejected"] +``` + +| Field | Meaning | +|---|---| +| `TRAP_SOURCE_IP` | The selected source identity for the trap. This is the address Netdata uses for source attribution and enrichment lookups. | +| `TRAP_SOURCE_UDP_PEER` | The normalized IP address of the host that sent the UDP packet to the Netdata listener. | +| `TRAP_ENRICHMENT.source.udp_peer` | The UDP peer recorded in the audit trail. It should match `TRAP_SOURCE_UDP_PEER` when the packet source was available. | +| `TRAP_ENRICHMENT.source.snmp_trap_address` | The usable relay-supplied `snmpTrapAddress.0` candidate, when the trap carried one. Invalid candidates are recorded in `rejected_candidates` instead. | +| `TRAP_ENRICHMENT.source.selected` | The selected source recorded in the audit trail. It should match `TRAP_SOURCE_IP`. | +| `TRAP_ENRICHMENT.source.method` | How Netdata selected the source. Normal production values are `udp_peer` for direct delivery and `trusted_relay_snmpTrapAddress.0` for trusted relay override. | + +For direct device-to-Netdata delivery, `TRAP_SOURCE_IP` and `TRAP_SOURCE_UDP_PEER` are normally the same value. + +For relayed delivery, they can be different: + +- `TRAP_SOURCE_UDP_PEER` remains the relay that sent the UDP packet to Netdata. +- `TRAP_SOURCE_IP` becomes the original device address only when Netdata treats the sender path as trusted and the trap carries a valid original source address. + +Do not treat a relayed original source as trustworthy unless the UDP peer is explicitly configured as a trusted relay. + +## Direct senders vs trusted relays + +By default, the UDP peer is authoritative. This is the safest model for direct device-to-Netdata delivery. + +`allowlist.source_cidrs` is also evaluated against the UDP peer before the packet is parsed. It controls which packets may enter the receiver, not whether a relayed `snmpTrapAddress.0` value is trusted as the original device identity. The default allowlist is open (`0.0.0.0/0` and `::/0`); restrict it for production listeners in [Configuration](/docs/snmp-traps/configuration). + +A relay can override source identity only when all of these are true: + +- The UDP peer matches `source.trusted_relays`. +- The trap includes a usable `snmpTrapAddress.0` value. +- The `snmpTrapAddress.0` value is a valid, non-unspecified, non-multicast IP address. + +When these conditions are met: + +- `TRAP_SOURCE_IP` is the `snmpTrapAddress.0` value. +- `TRAP_SOURCE_UDP_PEER` is the relay address. +- `TRAP_ENRICHMENT.source.method` is `trusted_relay_snmpTrapAddress.0`. +- `TRAP_ENRICHMENT.source.trusted_relay` is `true`. + +When the relay is not trusted, Netdata keeps the UDP peer as the selected source and records the rejected candidate in `TRAP_ENRICHMENT.source.rejected_candidates`. + +Because a catch-all trusted-relay range lets any sender on that path influence source attribution through `snmpTrapAddress.0`, keep the list narrow. Configure `source.trusted_relays` in [Configuration](/docs/snmp-traps/configuration#trust-relays-carefully). + +## Reverse DNS + +Reverse DNS is optional annotation. It is disabled by default. + +When enabled, Netdata can add `TRAP_REVERSE_DNS` after a PTR lookup result is available for the selected source IP. + +Important trust rules: + +- `TRAP_REVERSE_DNS` never replaces `TRAP_SOURCE_IP`. +- Reverse DNS is not authoritative device identity. +- Absence of `TRAP_REVERSE_DNS` does not mean the trap is invalid. +- If the reverse-DNS cache is cold when the trap is processed, `TRAP_REVERSE_DNS` is empty for that row and is not backfilled later. Later traps from the same source may include the PTR name after the lookup result is cached. + +Enable it only when PTR names help operators read logs faster. Keep source trust decisions based on `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, and `TRAP_ENRICHMENT.source`. + +See the reverse DNS option in [Configuration](/docs/snmp-traps/configuration). + +## SNMP device registry enrichment + +Trap receiving does not require SNMP polling. Netdata can receive, decode, store, and forward traps with only the listener job. + +When the same Netdata Agent is also running SNMP collector jobs for the trap-sending devices, those jobs populate the local Netdata device registry. Trap enrichment looks up the selected trap source in that registry. + +Registry enrichment applies only when the selected trap source has exactly one local device match. If there are zero matches or multiple matches, Netdata leaves the trap accepted and records the lookup result in `TRAP_ENRICHMENT.registry`. + +When registry enrichment matches, Netdata can add: + +| Field | Meaning | +|---|---| +| `_HOSTNAME` | Device hostname from the local SNMP device identity, when available. | +| `TRAP_DEVICE_VENDOR` | Device vendor from the local SNMP device identity, when available. | +| `ND_NIDL_NODE` | Virtual-node identity for the trap source, when the SNMP device has one. | + +The match is local to the Agent receiving the trap. Running an SNMP collector for the same device on a different Agent does not enrich traps received by this Agent. + +If registry enrichment does not provide `_HOSTNAME`, topology enrichment can still fill it from the local topology cache. If neither enrichment source provides a hostname, `_HOSTNAME` falls back to `TRAP_SOURCE_IP`, then `TRAP_SOURCE_UDP_PEER`, so every row still carries a source label. Check `TRAP_ENRICHMENT.applied` when you need to know whether enrichment populated `_HOSTNAME`. + +## Topology, interface, and neighbor enrichment + +Topology enrichment is local and cache-backed. + +Netdata can enrich a trap with topology context only when: + +- The same Agent runs an `snmp_topology` job. +- The topology job has completed a successful refresh for the relevant SNMP-polled device. +- The selected trap source matches exactly one device in that local topology cache. + +Source-device topology can add device hostname, `TRAP_DEVICE_VENDOR`, or `ND_NIDL_NODE` when those values were not already set by the SNMP device registry. + +Topology enrichment is rejected when the SNMP device registry and topology cache assign different `ND_NIDL_NODE` values to the same source. In that case, `TRAP_ENRICHMENT.topology.status` is `conflict` and `TRAP_ENRICHMENT.topology.reason` is `vnode_mismatch`. + +Interface and neighbor context needs interface identity: + +- If the trap carries `ifName` or `ifDescr`, Netdata can use that value for `TRAP_INTERFACE`. +- If the trap carries `ifIndex` and topology has a matching interface, Netdata can use the topology interface name for `TRAP_INTERFACE`. +- If the trap carries `ifIndex` and topology has LLDP or CDP neighbors for that interface, Netdata can add `TRAP_NEIGHBORS`. + +`TRAP_NEIGHBORS` is a comma-separated list of neighbor names known from the local topology cache. + +If topology data, a unique source match, or interface identity is unavailable, the trap is still accepted. Inspect `TRAP_ENRICHMENT.topology`, `TRAP_ENRICHMENT.interface`, and `TRAP_ENRICHMENT.neighbors` to see what happened. + +Treat topology fields as context labels. They help you read the event, but they do not prove why the event happened. + +## Enrichment audit + +`TRAP_ENRICHMENT` is a JSON audit record attached to the trap log entry. Use it when a field is missing, surprising, or security-sensitive. + +Common top-level keys: + +| Key | What it audits | +|---|---| +| `source` | Source selection: UDP peer, `snmpTrapAddress.0`, selected source, method, trusted-relay decision, and rejected candidates. | +| `registry` | SNMP device registry lookup for the selected source. | +| `topology` | Local topology device lookup for the selected source. | +| `interface` | Interface lookup from trap varbinds or topology `ifIndex`. | +| `neighbors` | LLDP/CDP neighbor lookup from topology `ifIndex`. | +| `reverse_dns` | Reverse DNS lookup state and value. | +| `applied` | Fields Netdata populated during enrichment. | + +Lookup records can include: + +| Audit field | Meaning | +|---|---| +| `key` | Lookup key, such as selected source IP or interface index. | +| `status` | Result such as `matched`, `no_match`, `ambiguous`, `skipped`, `pending`, or `conflict`. | +| `method` | Lookup method for that audit record. | +| `matches` | Number of matching local records, when applicable. | +| `reason` | Why a lookup did not apply, when Netdata can report one. | +| `fields` | Output fields populated by that lookup. | +| `value` | Lookup value, used for reverse DNS when a name is available. | + +Common `method` values by audit record: + +| Audit record | Common method values | +|---|---| +| `registry` | `hostname_or_ip` | +| `topology` | `management_ip`, `management_address`, `local_interface_ip` | +| `interface` | `trap_varbind`, `topology_ifindex` | +| `neighbors` | `topology_ifindex` | +| `reverse_dns` | `reverse_dns` | + +The audit is the best place to distinguish "not configured", "no match", "ambiguous match", "waiting for reverse DNS", and "source identity intentionally rejected". + +## How to validate source identity + +Use this checklist when you need to trust the source of a trap: + +1. Compare `TRAP_SOURCE_IP` and `TRAP_SOURCE_UDP_PEER`. + - Same value: Netdata selected the UDP peer. + - Different values: Netdata selected a relayed original source. +2. If the values differ, inspect `TRAP_ENRICHMENT.source`. + - `method` should be `trusted_relay_snmpTrapAddress.0`. + - `trusted_relay` should be `true`. + - `udp_peer` should be one of your configured relays. + - `selected` should match `TRAP_SOURCE_IP`. +3. Check `source.trusted_relays` in [Configuration](/docs/snmp-traps/configuration). + - The list should contain relay IPs or narrow relay CIDRs. + - It should not contain device subnets unless those devices are actual relays. + - Avoid catch-all ranges unless every sender on that path is trusted. +4. Check `TRAP_ENRICHMENT.source.rejected_candidates`. + - A rejected `snmpTrapAddress.0` means Netdata saw a candidate original source but did not trust or accept it. + - Rejected candidate entries use the form `snmpTrapAddress.0:`. + - Common reasons include `untrusted_relay_uses_udp_peer`, `missing_udp_peer`, `unspecified_ip`, `multicast_ip`, `invalid_ip`, and `invalid_type`. +5. Treat `TRAP_REVERSE_DNS` as a label only. + - Do not use PTR names as proof of device identity. +6. Validate device enrichment separately. + - `TRAP_ENRICHMENT.registry.status` should be `matched` when you expect SNMP device registry identity. + - `TRAP_ENRICHMENT.topology.status` should be `matched` when you expect topology identity. + - `ambiguous`, `no_match`, `skipped`, or `conflict` explain why enrichment did not apply. +7. Validate interface and neighbor fields only when the trap contains interface identity. + - `TRAP_INTERFACE` can come from `ifName`, `ifDescr`, or topology `ifIndex`. + - `TRAP_NEIGHBORS` requires topology data and a trap `ifIndex`. + +## Next steps + +- Use [Field Reference](/docs/snmp-traps/field-reference) for the complete list of trap fields. +- Use [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality) to validate receiver health, source controls, and enrichment quality. +- Use [Configuration](/docs/snmp-traps/configuration) to configure source allowlists, trusted relays, reverse DNS, and outputs. diff --git a/docs/SNMP Traps/Field Reference.mdx b/docs/SNMP Traps/Field Reference.mdx new file mode 100644 index 0000000000..46b19c4b18 --- /dev/null +++ b/docs/SNMP Traps/Field Reference.mdx @@ -0,0 +1,280 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/field-reference.md" +sidebar_label: "Field Reference" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Complete reference for journal fields, report types, enrichment fields, varbind fields, tags, and OTLP mappings." +sidebar_position: "80" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/field-reference" +slug: "/snmp-traps/field-reference" +--- + + + + +# Field Reference + +Use this page when you need to map SNMP trap log fields to meaning, source, type, population rules, query use, and sensitive-data handling. + +SNMP trap rows are structured logs. Direct-journal jobs expose these fields through the Cloud-required `snmp:traps` Function and through `journalctl --directory=...`. OTLP export sends the same event as an OTLP LogRecord with OTLP attribute names; see [OTLP mapping notes](#otlp-mapping-notes). + +## On this page — field index + +Saw a field in a log row? Jump straight to its definition. Field families are listed alphabetically; each link lands on the section that defines it. + +| Field | Where it is defined | +|---|---| +| `_HOSTNAME` | [Source identity fields](#source-identity-fields) | +| `MESSAGE` | [Report identity fields](#report-identity-fields) | +| `ND_LOG_SOURCE` | [Report identity fields](#report-identity-fields) | +| `ND_NIDL_NODE` | [Source identity fields](#source-identity-fields) | +| `PRIORITY` | [Report identity fields](#report-identity-fields) | +| `SYSLOG_IDENTIFIER` | [Report identity fields](#report-identity-fields) | +| `TRAP_CATEGORY` | [Trap meaning fields](#trap-meaning-fields), [Decode error fields](#decode-error-fields) | +| `TRAP_DECODE_ERROR` | [Decode error fields](#decode-error-fields) | +| `TRAP_DECODE_ERROR_KIND` | [Decode error fields](#decode-error-fields) | +| `TRAP_DEVICE_VENDOR` | [Enrichment fields](#enrichment-fields) | +| `TRAP_ENGINE_ID` | [Packet audit fields](#packet-audit-fields) | +| `TRAP_ENRICHMENT` | [Enrichment fields](#enrichment-fields) | +| `TRAP_INTERFACE` | [Enrichment fields](#enrichment-fields) | +| `TRAP_JOB` | [Report identity fields](#report-identity-fields) | +| `TRAP_JSON` | [Varbind fields](#varbind-fields), [Dedup summary fields](#dedup-summary-fields), [Packet audit fields](#packet-audit-fields) | +| `TRAP_LISTENER` | [Packet audit fields](#packet-audit-fields) | +| `TRAP_NAME` | [Trap meaning fields](#trap-meaning-fields) | +| `TRAP_NEIGHBORS` | [Enrichment fields](#enrichment-fields) | +| `TRAP_OID` | [Trap meaning fields](#trap-meaning-fields) | +| `TRAP_PACKET_SHA256` | [Packet audit fields](#packet-audit-fields) | +| `TRAP_PACKET_SIZE` | [Packet audit fields](#packet-audit-fields) | +| `TRAP_PDU_TYPE` | [Trap meaning fields](#trap-meaning-fields) | +| `TRAP_REPORT_PERIOD_SEC` | [Dedup summary fields](#dedup-summary-fields) | +| `TRAP_REPORT_TYPE` | [Start with report type](#start-with-report-type), [Report identity fields](#report-identity-fields) | +| `TRAP_REVERSE_DNS` | [Source identity fields](#source-identity-fields) | +| `TRAP_SEVERITY` | [Trap meaning fields](#trap-meaning-fields), [Decode error fields](#decode-error-fields) | +| `TRAP_SOURCE_IP` | [Source identity fields](#source-identity-fields) | +| `TRAP_SOURCE_UDP_PEER` | [Source identity fields](#source-identity-fields) | +| `TRAP_SOURCE_UDP_PORT` | [Packet audit fields](#packet-audit-fields) | +| `TRAP_SUPPRESSED_COUNT` | [Dedup summary fields](#dedup-summary-fields) | +| `TRAP_SUPPRESSED_FINGERPRINTS` | [Dedup summary fields](#dedup-summary-fields) | +| `TRAP_TAG_*` | [Profile tag fields](#profile-tag-fields) | +| `TRAP_VAR_*` | [Varbind fields](#varbind-fields) | +| `TRAP_VAR_*_RAW` | [Varbind fields](#varbind-fields) | +| `TRAP_VERSION` | [Trap meaning fields](#trap-meaning-fields), [Decode error fields](#decode-error-fields) | + +For OTLP attribute names that map to these journal fields, see [OTLP mapping notes](#otlp-mapping-notes). For the default facets used by the `snmp:traps` Function, see [Default query fields](#default-query-fields). + +## Start with report type + +Always check `TRAP_REPORT_TYPE` first. It tells you which field set to expect. + +| `TRAP_REPORT_TYPE` | Meaning | Fields to expect | +|---|---|---| +| `trap` | A decoded, accepted SNMP Trap or INFORM event. | Trap meaning fields, source fields, optional enrichment fields, optional `TRAP_TAG_*`, optional `TRAP_VAR_*`, and `TRAP_JSON`. | +| `deduplication_summary` | A periodic summary for traps suppressed by deduplication. | `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, and summary-shaped `TRAP_JSON`. Do not expect source, trap OID, trap name, or varbind fields on these rows. | +| `decode_error` | A received packet from an accepted source path failed decode, authentication, USM, or engine-ID handling. | Source fields when known, decode-error fields, packet audit fields, and decode-error-shaped `TRAP_JSON`. Do not expect `TRAP_OID`, `TRAP_NAME`, or `TRAP_VAR_*`. | + +## Report identity fields + +These fields identify the row and the listener job that produced it. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `MESSAGE` | Human-readable row message. | Collector render path. | string | All report types. | Good for reading rows. Do not use it as a stable grouping key. It can include device, source, or trap text. | +| `PRIORITY` | Syslog priority derived from trap severity. | Collector severity mapping. | integer string | All report types. | Useful when a downstream journal or syslog tool expects syslog priority. In Netdata queries, prefer `TRAP_SEVERITY`. | +| `SYSLOG_IDENTIFIER` | Journal identifier for the listener job. | Job configuration. | string | All report types. | Same operational identity as `TRAP_JOB`. Prefer `TRAP_JOB` for SNMP trap queries. | +| `ND_LOG_SOURCE` | Netdata log source discriminator. | Collector constant. | string | All SNMP trap rows; value is `snmp-trap`. | Use to separate SNMP trap rows from other journal rows. | +| `TRAP_JOB` | Listener job name. | `go.d/snmp_traps.conf`. | string | All report types. | Primary field for per-listener queries and SIEM routing. Job names may encode site or environment names. | +| `TRAP_REPORT_TYPE` | Row type. | Collector. | enum | All report types. | Filter on this first to avoid treating optional fields as always present. | + +The Cloud-required `snmp:traps` Function also exposes direct-journal jobs as log sources. Individual journal entries use `ND_LOG_SOURCE=snmp-trap`. OTLP-only jobs do not create local journal files, so they do not appear as local job sources in the `snmp:traps` Function. + +## Trap meaning fields + +These fields describe what the trap means after profile resolution and operator overrides. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_OID` | Numeric trap OID. | SNMP PDU. | string | `trap` rows only. | Use for exact matching, profile gaps, and vendor-specific trap searches. | +| `TRAP_NAME` | Resolved trap name. | Trap profile or built-in MIB knowledge. | string | `trap` rows when the OID resolves to a name. | Default facet. It can be absent for unknown traps; fall back to `TRAP_OID`. | +| `TRAP_CATEGORY` | Operational category. | Trap profile, override, or decode-error classifier. | enum | `trap` rows; `decode_error` rows when classified. Not on dedup summaries. | Default facet. Values are `state_change`, `config_change`, `security`, `auth`, `license`, `mobility`, `diagnostic`, and `unknown`. | +| `TRAP_SEVERITY` | Operational severity. | Trap profile, override, or decode-error classifier. | enum | `trap` rows; `decode_error` rows when classified. Not on dedup summaries. | Default facet. Values are `emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, and `debug`. | +| `TRAP_PDU_TYPE` | SNMP PDU kind. | SNMP PDU. | enum | Decoded trap rows when known. | Values are `trap` and `inform`. Useful when INFORM delivery behavior matters. | +| `TRAP_VERSION` | SNMP protocol version. | SNMP decoder. | enum | Decoded trap rows; decode-error rows when the version can be sniffed. | Values are `v1`, `v2c`, and `v3`. Useful for migration, hardening, and decode-error triage. | + +## Source identity fields + +These fields identify where the trap came from and how Netdata selected the source identity. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_SOURCE_IP` | Selected trap source IP. | UDP peer, or trusted relay source attribution. | string | `trap` and `decode_error` rows when a source is known. | Default facet. Use for per-device searches, including decode-error triage. Treat source IPs as sensitive in shared examples and exports. | +| `TRAP_SOURCE_UDP_PEER` | Immediate UDP peer address. | UDP packet metadata. | string | `trap` and `decode_error` rows when known. | Use to distinguish direct device delivery from relay delivery. | +| `_HOSTNAME` | Source device hostname, or source address fallback. | Enrichment registry, topology context, or source fallback. | string | Non-dedup rows when a hostname, source IP, or UDP peer is available. | Default facet. Do not assume it came from DNS; check `TRAP_REVERSE_DNS` for PTR annotation. | +| `ND_NIDL_NODE` | Netdata virtual-node identity. | Local Netdata device enrichment. | string | Non-dedup rows when source enrichment finds an unambiguous vnode. | Use when joining trap logs with Netdata node identity. It is optional. | +| `TRAP_REVERSE_DNS` | Reverse-DNS PTR annotation for the source IP. | Optional reverse DNS enrichment. | string | Non-dedup rows when reverse DNS is enabled and a cached lookup is available. | Annotation only. It is not authoritative identity and should not replace `TRAP_SOURCE_IP`. | + +## Enrichment fields + +These fields add operator context when Netdata can resolve it locally. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_DEVICE_VENDOR` | Device vendor slug. | Local SNMP device registry or topology enrichment. | string | Non-dedup rows when vendor is known. | Default facet. Useful for vendor-specific storms and profile coverage checks. | +| `TRAP_INTERFACE` | Interface associated with the trap. | Local topology context. | string | Non-dedup rows when an interface can be resolved. | Use for interface incident triage. Interface names can reveal network design. | +| `TRAP_NEIGHBORS` | Neighbor names associated with the trap interface. | Local topology context. | string | Non-dedup rows when neighbor context is available. | Useful for L2 impact triage. Neighbor names can be sensitive; avoid public examples. | +| `TRAP_ENRICHMENT` | JSON audit trail for source selection and enrichment decisions. | Collector enrichment audit. | JSON string | Rows where enrichment audit data exists. | Use for debugging why source, vnode, vendor, interface, neighbor, or reverse-DNS fields were or were not applied. Avoid faceting on it and review before forwarding wholesale. | + +`TRAP_ENRICHMENT` is for audit/debug. For normal filtering, use the concrete fields above, such as `TRAP_SOURCE_IP`, `_HOSTNAME`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, or `TRAP_NEIGHBORS`. + +## Varbind fields + +Varbinds are the event-specific payload fields inside the trap. Netdata exposes them in two forms: + +- `TRAP_VAR_*` fields for indexed, query-friendly filtering. +- `TRAP_JSON` for the full structured payload and audit copy. + +| Field pattern | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_VAR_` | Decoded event varbind value. Field names are normalized to uppercase. | SNMP PDU plus trap profile varbind labels. | string | `trap` rows only, for non-sensitive, non-redundant varbinds. | Prefer these fields for normal filtering. Examples: interface index, interface status, vendor event code. Do not assume every trap has the same varbind set. | +| `TRAP_VAR__RAW` | Raw numeric value for an enum-backed varbind. | SNMP PDU plus trap profile enum mapping. | string or integer string | `trap` rows only, when `TRAP_VAR_` uses an enum label. | Use when SIEM rules need numeric device values instead of human labels. | +| `TRAP_JSON` | Structured payload JSON. For normal traps, contains non-sensitive varbind entries and `netdata_packet_sequence` when available. For summaries and decode errors, contains the matching summary or decode details. | Collector serialization. | JSON string | All report types. | Use for audit, payload inspection, and residual searches. Prefer `TRAP_VAR_*` for routine filtering. Review before forwarding because varbind values can contain operationally sensitive data. | + +`TRAP_VAR_*` naming rules: + +| Rule | Behavior | +|---|---| +| Profile names | A profile varbind name becomes `TRAP_VAR_`. Non-letter and non-digit characters become underscores. | +| OID fallback | If a varbind has no name, the field is based on the numeric OID, for example `TRAP_VAR_OID_...`. | +| Duplicates | Duplicate field bases get numeric suffixes such as `_2`. | +| Long names | Long field names are shortened and include a stable hash suffix. The full varbind name and OID remain available in `TRAP_JSON`. | +| Enum values | The main field uses the enum label. The `_RAW` field carries the raw numeric value. | +| Skipped fields | `TRAP_VAR_*` skips the sensitive `snmpTrapCommunity` varbind and redundant protocol-control varbinds, including `sysUpTime`, `snmpTrapOID`, `snmpTrapAddress`, and `snmpTrapEnterprise`. | + +`TRAP_JSON` shape for normal trap rows: + +| JSON key | Meaning | +|---|---| +| `netdata_packet_sequence` | Per-job receive counter assigned once per UDP datagram, when available. | +| `` | Object with `oid`, `type`, `value`, and optional `enum`. | +| `#2` | Duplicate key suffix when more than one varbind would use the same JSON key. | + +Binary varbind values are represented as hex strings in `TRAP_JSON`. Journal fields with control characters or invalid UTF-8 can be binary-encoded. Treat binary values as payload data, not display text. + +Unlike `TRAP_VAR_*`, `TRAP_JSON` keeps non-sensitive protocol-control varbinds such as `sysUpTime`, `snmpTrapOID`, `snmpTrapAddress`, and `snmpTrapEnterprise`. Only the sensitive `snmpTrapCommunity` varbind is omitted from `TRAP_JSON`. + +## Profile tag fields + +Trap profiles and per-OID overrides can add operator labels. They are exposed as `TRAP_TAG_*`. + +| Field pattern | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_TAG_` | Profile or override label value. Label keys are uppercased for the journal field name. | Trap profile or job override. | string | Rows where labels are applied. Most commonly `trap` rows. | Use for local policy grouping, such as site class, compliance scope, or ownership. Tags are selectable fields but not default facets. Tag values may reveal internal organization. | + +Long tag keys are shortened with a hash suffix. + +## Dedup summary fields + +Deduplication summary rows are not copies of the suppressed traps. They report suppression activity for a job and period. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_SUPPRESSED_COUNT` | Total traps suppressed in the summary period. | Dedup cache. | integer | `deduplication_summary` rows. | Use to measure repeated-trap storm volume. | +| `TRAP_SUPPRESSED_FINGERPRINTS` | Number of distinct dedup fingerprints suppressed. | Dedup cache. | integer | `deduplication_summary` rows. | Use to tell one repeated event from many repeated event classes. | +| `TRAP_REPORT_PERIOD_SEC` | Summary period length in seconds. | Dedup reporter. | integer | `deduplication_summary` rows. | Use with suppressed count to understand the reporting window. | +| `TRAP_JSON` | Dedup summary JSON with `total_suppressed`, `period_sec`, `fingerprints`, and optional `by_trap`. | Dedup reporter. | JSON string | `deduplication_summary` rows. | Use for audit and per-trap-OID breakdown when present. Avoid treating it like a varbind payload. | + +## Decode error fields + +Decode-error rows are written for accepted source paths when Netdata can record a safe diagnostic without storing raw packet bytes. + +Read this table together with [Packet audit fields](#packet-audit-fields). Packet audit fields such as `TRAP_LISTENER`, `TRAP_ENGINE_ID`, `TRAP_PACKET_SIZE`, `TRAP_PACKET_SHA256`, and `TRAP_SOURCE_UDP_PORT` are also part of decode-error rows. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_DECODE_ERROR_KIND` | Bounded error class. | Decoder classifier. | enum | `decode_error` rows when classified. | Use as the main decode-error facet. Values include `malformed_pdu`, `auth_failures`, `usm_failures`, `unknown_engine_id`, and `decode_failed`. | +| `TRAP_DECODE_ERROR` | Sanitized decoder error text. | Decoder. | string | `decode_error` rows when available. | Useful for local troubleshooting. It is sanitized and shortened, but still avoid pasting operational details into public artifacts. | +| `TRAP_CATEGORY` | Decode-error category. | Decode-error classifier. | enum | `decode_error` rows when classified. | Authentication, USM, and unknown engine-ID failures are categorized as `auth`; other decode failures are usually `diagnostic`. | +| `TRAP_SEVERITY` | Decode-error severity. | Decode-error classifier. | enum | `decode_error` rows when classified. | Decode errors are warning-level diagnostics. | +| `TRAP_VERSION` | Sniffed SNMP version. | Packet sniffer. | enum | `decode_error` rows when the version can be read safely. | Helps separate SNMPv1/v2c malformed packets from SNMPv3 auth or engine-ID problems. | + +## Packet audit fields + +Packet audit fields appear on decode-error rows. They help troubleshoot without writing raw packet bytes. + +| Field | Meaning | Source | Type | Populated when | Query use and cautions | +|---|---|---|---|---|---| +| `TRAP_PACKET_SIZE` | Received datagram size in bytes. | UDP packet metadata. | integer | `decode_error` rows. | Use to spot oversized or truncated payload patterns. | +| `TRAP_PACKET_SHA256` | SHA-256 fingerprint of the received datagram. | Packet digest. | hex string | `decode_error` rows. | Use to group repeated bad packets without storing raw bytes. It is a fingerprint, not packet content. | +| `TRAP_LISTENER` | Local listener endpoint that received the packet. | Listener socket metadata. | string | `decode_error` rows when known. | Useful when a job binds multiple endpoints. It can reveal local bind addresses. | +| `TRAP_ENGINE_ID` | SNMPv3 engine ID extracted from a failed packet when safely available. | SNMPv3 packet inspection. | hex string | `decode_error` rows when extractable. | Not an auth or privacy secret, but it is a device identifier. Treat it as sensitive inventory data. | +| `TRAP_SOURCE_UDP_PORT` | UDP source port. | UDP packet metadata. | integer | `decode_error` rows when known. | Decode-error rows only; not present on normal trap rows. | +| `TRAP_JSON` | Decode-error details JSON. | Collector serialization. | JSON string | `decode_error` rows. | Contains fields such as kind, error, packet size, packet hash, source port, listener, SNMP version, engine ID, and packet sequence when available. Do not confuse it with normal trap varbind JSON. | + +Raw packet bytes are not stored in decode-error rows because SNMP communities and binary payloads can appear inside received datagrams. + +## Default query fields + +The `snmp:traps` Function uses these default facets: + +| Field | Use | +|---|---| +| `TRAP_CATEGORY` | Group by operational category. | +| `TRAP_DEVICE_VENDOR` | Group by vendor when enrichment is available. | +| `TRAP_NAME` | Group by resolved trap name. | +| `TRAP_SEVERITY` | Group by operational severity. | +| `TRAP_SOURCE_IP` | Group by selected source device address. | +| `_HOSTNAME` | Group by resolved or fallback host identity. | +| `TRAP_JOB` | Group by listener job. | + +Recommended query pattern: + +1. Filter `TRAP_REPORT_TYPE`. +2. Narrow with `TRAP_JOB`, `TRAP_SOURCE_IP`, `_HOSTNAME`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, or `TRAP_SEVERITY`. +3. Use `TRAP_VAR_*` only after you know that the selected trap type emits that varbind. +4. Inspect `TRAP_JSON` or `TRAP_ENRICHMENT` only when the indexed fields do not answer the question. + +For examples, see [Usage and output](/docs/snmp-traps/usage-and-output) and [Journal and querying](/docs/snmp-traps/journal-and-querying). + +## Sensitive-data cautions + +Treat trap logs as operational event data. They can contain sensitive inventory, network, security, and user context. + +| Data | What Netdata does | Operator caution | +|---|---|---| +| SNMPv1/v2c community varbind | `snmpTrapCommunity` is omitted from `TRAP_VAR_*`, `TRAP_JSON`, and OTLP varbind payloads. | Do not paste real community strings from configs, packet captures, or device CLIs into examples or tickets. | +| SNMPv3 auth and privacy values | Auth keys and privacy keys are configuration secrets and are not emitted as trap log fields. | Use Netdata secret references in configuration. Do not include resolved values in logs, docs, SIEM examples, or support artifacts. | +| `TRAP_JSON` | Stores structured payloads and audit details. Sensitive community varbinds are skipped, but other varbinds can still contain usernames, interface descriptions, MACs, public IPs, asset tags, locations, or vendor text. | Prefer specific `TRAP_VAR_*` fields for rules. Review and minimize before forwarding, indexing, or sharing full payloads. | +| `TRAP_VAR_*` | Exposes query-friendly event varbinds. | Treat values as device-provided payload. Do not assume they are safe for public examples. | +| `TRAP_ENRICHMENT` | Records source and enrichment decisions. | Can include hostnames, source addresses, interface names, neighbor names, and applied fields. Use for debugging, not broad faceting. | +| `TRAP_ENGINE_ID` | Exposes SNMPv3 engine ID when safely extracted from decode-error packets. | Not a password, but it is an inventory identifier. Avoid public examples with real values. | +| Binary values | `TRAP_JSON` encodes byte values as hex strings; journal fields can be binary-encoded when needed. | Do not display or forward binary payloads without reviewing data classification. | +| OTLP headers | Header values can use Netdata secret references in configuration. | Header values are transport credentials, not trap fields. Protect them like secrets. | + +## OTLP mapping notes + +When `otlp.enabled` is `true`, Netdata exports traps as OTLP LogRecords. OTLP uses attribute names, not journal field names. + +| Journal concept | OTLP location | Notes | +|---|---|---| +| Listener job | Resource attribute `service.instance.id`; resource `service.name` is `netdata-snmptrap`. | Use `service.instance.id` as the OTLP equivalent of `TRAP_JOB`. | +| Message | Log body. | Equivalent to `MESSAGE`. | +| Report type | Attribute `snmp.trap.report_type`. | Values match `TRAP_REPORT_TYPE`. | +| Event name | LogRecord event name. | Normal traps use `snmp.trap.`. Dedup summaries use `snmp.trap.deduplication_summary`. Decode errors use `snmp.trap.decode_error`. | +| Severity | OTLP severity number/text and attribute `snmp.trap.severity`. | The attribute carries the Netdata severity slug. | +| Source IP | Attribute `snmp.source.ip`. | Equivalent to selected `TRAP_SOURCE_IP`; OTLP falls back to the UDP peer when the selected source IP is empty. | +| UDP peer | Attribute `network.peer.address`. | Similar to `TRAP_SOURCE_UDP_PEER`, but OTLP falls back to the selected source IP when the UDP peer is empty. | +| UDP source port | Attribute `network.peer.port`. | Decode-error rows only. | +| Trap OID and name | Attributes `snmp.trap.oid` and `snmp.trap.name`. | Normal trap rows only. | +| Category and PDU type | Attributes `snmp.trap.category` and `snmp.trap.pdu_type`. | Normal trap rows; decode errors may carry category. | +| SNMP version | Attribute `snmp.version`. | Normal trap rows and decode-error rows when known. | +| Device identity and enrichment | Attributes `snmp.device.hostname`, `snmp.device.vendor`, `netdata.nidl.node`, `netdata.topology.interface`, `netdata.topology.neighbors`, and `snmp.source.reverse_dns`. | Populated only when the matching journal enrichment field is available. | +| Profile tags | Attributes named `trap.`. | Equivalent to `TRAP_TAG_*`. | +| Varbind payload | Attribute `snmp.varbinds`. | OTLP does not export separate `TRAP_VAR_*` fields. For normal traps, this is the structured varbind list. For decode-error rows, it contains decode diagnostic details. For dedup-summary rows, it contains summary counters. Sensitive community varbinds are omitted. | +| Dedup summary | Attributes `snmp.trap.suppressed_count`, `snmp.trap.suppressed_fingerprints`, and `snmp.trap.report_period_sec`; summary details in `snmp.varbinds`. | Equivalent to dedup summary journal fields. | +| Decode error and packet audit | Attributes `snmp.trap.decode_error.kind`, `snmp.trap.decode_error.message`, `snmp.trap.packet_size`, `snmp.trap.packet_sha256`, `netdata.trap.listener`, and `snmp.engine_id`; details also in `snmp.varbinds`. | Equivalent to decode-error and packet audit journal fields. | + +When forwarding to a SIEM, decide whether the SIEM ingests direct-journal fields or OTLP attributes. Build rules against the field names that actually arrive in that system. See [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem). + +## What's next + +- [Journal and querying](/docs/snmp-traps/journal-and-querying) - Query direct-journal trap rows locally or through Netdata. +- [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem) - Forward trap events and map fields in an external log system. diff --git a/docs/SNMP Traps/Forwarding to SIEM.mdx b/docs/SNMP Traps/Forwarding to SIEM.mdx new file mode 100644 index 0000000000..93525249a9 --- /dev/null +++ b/docs/SNMP Traps/Forwarding to SIEM.mdx @@ -0,0 +1,120 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/forwarding-to-siem.md" +sidebar_label: "Forwarding to SIEM" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Forward trap events through journal-native workflows or OTLP/gRPC and map fields in downstream log systems." +sidebar_position: "100" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/forwarding-to-siem" +slug: "/snmp-traps/forwarding-to-siem" +--- + + + + +# Forwarding to SIEM + +Use this page when you operate an existing log or SIEM platform and want SNMP trap events from Netdata to reach it with predictable field names, transport behavior, and validation signals. + +For listener setup and output options, see [Configuration](/docs/snmp-traps/configuration). For the complete field list, see [Field Reference](/docs/snmp-traps/field-reference). + +## Supported forwarding methods + +Netdata supports two forwarding methods for SNMP trap logs: + +1. **Direct journal backend.** Netdata writes decoded traps to local journal-compatible files under the Netdata log directory. You can read or export those files with `journalctl --directory=...`, then pipe or ship the output with the journal-aware tooling already used by your log pipeline. +2. **OTLP/gRPC export.** Netdata pushes decoded traps as OTLP LogRecords to an OTLP Logs receiver, such as an OpenTelemetry Collector or another log platform that accepts OTLP/gRPC. + +The two methods can be used independently or together. Choose based on where operators need the system of record and whether local journal querying must remain available. + +## Choose the backend mode + +The `snmp:traps` Function requires a Netdata Cloud connection. Jobs that write local journal files expose trap log sources through this Function. + +| Mode | Configuration | Cloud-required Function source | Local journal files | Use when | +|---|---|---:|---:|---| +| Journal only | `journal.enabled: true`, `otlp.enabled: false` | yes | yes | Local `journalctl` querying or an existing journal-based shipper is the forwarding path. | +| Journal and OTLP | `journal.enabled: true`, `otlp.enabled: true` | yes | yes | Operators need local forensic access, Netdata Cloud Logs access, and a downstream OTLP log platform. | +| OTLP only | `journal.enabled: false`, `otlp.enabled: true` | no | no | The external OTLP receiver is the intended system of record and local trap log files are not needed. | + +At least one output backend must stay enabled. If you disable direct journal output, enable OTLP export or the job fails validation. + +OTLP-only jobs create no local trap journal files and do not appear as job sources in the Cloud-required `snmp:traps` Function that Netdata Cloud uses for SNMP Trap Logs. Use OTLP-only mode only when the downstream OTLP receiver is the intended system of record. + +## Direct journal backend + +Direct journal output is enabled by default for listener jobs and requires Linux. On non-Linux systems, jobs with `journal.enabled: true` fail validation; use OTLP-only mode instead. + +```yaml +journal: + enabled: true +``` + +Netdata writes trap entries as journal-compatible files below the configured Netdata log directory; for the exact per-job path and how the `journalctl --directory` path is built, see [Journal and Querying](/docs/snmp-traps/journal-and-querying). Each entry carries `ND_LOG_SOURCE=snmp-trap`, and these files back the job source exposed through the Cloud-required `snmp:traps` Function; they are not the host systemd-journald service's normal journal. + +The host must have `journalctl` installed. Use `sudo` when the trap journal files are not readable by your user. Use `journalctl --directory` to produce JSON output that your existing log shipper or SIEM ingestion path can consume: + +```bash +JOB=edge-traps +MACHINE_ID=$(tr -d '-' < /etc/machine-id) +sudo journalctl \ + --directory="/var/log/netdata/traps/${JOB}/${MACHINE_ID}" \ + --since "1 hour ago" \ + --output=json \ + --no-pager +``` + +For local query examples, see [Journal and querying](/docs/snmp-traps/journal-and-querying). +For journal retention and rotation controls, see [Configuration](/docs/snmp-traps/configuration#direct-journal-retention). + +## OTLP/gRPC export + +OTLP export is disabled by default. It uses gRPC transport only (HTTP/protobuf receivers on port `4318` are not supported), takes a `host:port`/`http://`/`https://` endpoint, and preflights the receiver at job startup so an unreachable collector blocks the job. For the full `otlp` option block, defaults, endpoint/TLS rules, and preflight behavior, see [Configuration](/docs/snmp-traps/configuration#otlpgrpc-export). + +What matters for forwarding is the delivery behavior under pressure: + +- Brief receiver outages recover on their own; sustained ones overflow the send queue, and over-full records are dropped and counted under `otlp_export_failed`. +- In journal and OTLP mode the local journal is unaffected by OTLP drops, so traps remain queryable locally. In OTLP-only mode a dropped record is lost with no local copy. +- The OTLP queue is not durable: records still waiting to be sent are lost on an ungraceful restart, so do not treat OTLP-only as durable storage. + +The batching, queue, and retry knobs are defined in [Configuration](/docs/snmp-traps/configuration#otlpgrpc-export). + +## OTLP mapping highlights + +OTLP export sends traps as OTLP LogRecords. Build SIEM rules against the OTLP attribute names that arrive downstream, not the direct-journal field names. The listener resource carries `service.name=netdata-snmptrap` and `service.instance.id=`; the message becomes the log body, the report type is `snmp.trap.report_type`, the selected source is `snmp.source.ip`, and varbinds arrive as the structured `snmp.varbinds` attribute rather than separate `TRAP_VAR_*` fields. + +For the complete journal-field-to-OTLP-attribute mapping table, see [Field Reference](/docs/snmp-traps/field-reference#otlp-mapping-notes). + +## Security guidance + +Trap logs can contain sensitive network, inventory, and security context. Treat both local journal files and downstream SIEM copies as operational data. + +- Use [Secrets Management](/docs/collecting-metrics/secrets-management) for SNMP communities, SNMPv3 auth and privacy keys, and OTLP header values. +- Do not place real bearer tokens, API keys, community strings, or SNMPv3 passphrases directly in `go.d/snmp_traps.conf`, docs, tickets, support artifacts, or SIEM examples. +- OTLP metadata headers, including `authorization`, are sent only on the OTLP/gRPC connection. They are not written to `snmp.varbinds` or any other trap attribute, but they are still sensitive and should come from a secret reference. +- Netdata automatically omits the `snmpTrapCommunity` varbind from indexed `TRAP_VAR_*` fields, `TRAP_JSON`, and `snmp.varbinds`. Other varbind values can still contain sensitive operational data. +- Protect `TRAP_JSON` in journal output and `snmp.varbinds` in OTLP output. They can include device-provided varbind values such as hostnames, interface descriptions, public IP addresses, locations, usernames, or vendor text. +- Prefer indexed fields such as `TRAP_SOURCE_IP`, `TRAP_NAME`, `TRAP_SEVERITY`, `snmp.source.ip`, `snmp.trap.name`, and `snmp.trap.severity` for SIEM rules. +- Minimize forwarding or indexing full payload fields where possible. Keep full payloads only where audit, investigation, or compliance requirements need them. + +## Validation signals + +Validate both the Netdata output path and the downstream receiver path. + +| Signal | What to check | +|---|---| +| `otlp_export_failed` metric dimension (`snmp_trap_errors_otlp_export_failed` selector) | OTLP write-path failures occurred, including queue-overflow drops and gRPC export errors. For jobs with OTLP enabled, check the `snmp_trap_otlp_export_failures` alert, endpoint, credentials, TLS trust, queue capacity, and network path. | +| `journal_write_failed` metric dimension (`snmp_trap_errors_journal_write_failed` selector) | Direct journal writes failed. For jobs with journal enabled, check the `snmp_trap_journal_write_failures` alert, disk space, permissions, and the per-job journal directory. | +| Local journal availability | For direct-journal jobs, confirm `/var/log/netdata/traps//` exists, contains the machine-id child directory, and `journalctl --directory=/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id)` can read recent trap rows. | +| Cloud-required `snmp:traps` Function source | For direct-journal jobs, confirm the job appears as a trap log source in Netdata Cloud. OTLP-only jobs are not expected to appear there. | +| Downstream receiver checks | In the SIEM or OTLP receiver, confirm records arrive with `service.name=netdata-snmptrap`, the expected `service.instance.id`, and the expected event names and attributes. | + +For receiver metrics, see [Metrics](/docs/snmp-traps/metrics); for the default health alerts, see [Alerts](/docs/snmp-traps/alerts). + +## Related pages + +- [Configuration](/docs/snmp-traps/configuration) - Configure output backends, retention, OTLP endpoint settings, and secrets. +- [Field Reference](/docs/snmp-traps/field-reference) - Map journal fields and OTLP attributes. +- [Journal and querying](/docs/snmp-traps/journal-and-querying) - Query and export direct-journal trap rows locally. +- [Metrics](/docs/snmp-traps/metrics) - Validate receiver health and forwarding failures. +- [Alerts](/docs/snmp-traps/alerts) - Default alerts on OTLP export and write failures. diff --git a/docs/SNMP Traps/Installation.mdx b/docs/SNMP Traps/Installation.mdx new file mode 100644 index 0000000000..1ab050acdf --- /dev/null +++ b/docs/SNMP Traps/Installation.mdx @@ -0,0 +1,228 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/installation.md" +sidebar_label: "Installation" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +sidebar_position: "10" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/installation" +slug: "/snmp-traps/installation" +--- + + + + +# Installation + +Netdata receives SNMP traps with the **snmp_traps** collector in `go.d.plugin`. Trap receiving is explicit: Netdata does not create a trap listener job or configure devices to send traps by itself. You must create an explicit listener job before Netdata can receive traps. + +The default direct-journal backend requires Linux. OTLP-only jobs are not blocked by the Linux direct-journal requirement, but they do not create local journal files or local SNMP trap log sources. + +The default `listen.endpoints` template uses UDP `0.0.0.0` on port `162`. The stock `go.d/snmp_traps.conf` file ships as a commented template; Netdata does not bind any UDP port until a job is uncommented, created, or applied with Dynamic Configuration. + +## Prerequisites + +- A Netdata Agent host with the `go.d.plugin` component installed. +- A Linux host when you want the default direct-journal backend or local SNMP trap log sources. +- At least one output backend enabled per listener job: `journal.enabled: true` on Linux (the default), `otlp.enabled: true`, or both. +- For direct-journal jobs on Linux, the files `/etc/machine-id` and `/proc/sys/kernel/random/boot_id` must exist, be readable, and contain non-empty values. Minimal containers, chroots, and embedded systems should check these before relying on local journal storage. +- UDP reachability from each trap sender to the Netdata host. +- Network devices configured to send SNMP Trap or INFORM notifications to the Netdata host IP and listener port. +- Firewall, security group, ACL, NAT, and host firewall rules that allow the selected UDP port. +- Permission to bind the selected UDP port. Standard Netdata packages, static installs, and the official Docker image handle this for UDP/162. Custom or hardened deployments may need extra configuration. +- Matching SNMP settings on both sides: + - SNMPv1/v2c: community strings accepted by the Netdata job. + - SNMPv3: USM user, authentication/privacy settings, and sender engine ID policy accepted by the Netdata job. +- For SNMPv3 listener jobs, configure at least one `usm_users` entry and choose exactly one sender engine ID policy: `engine_id_whitelist` or `dynamic_engine_id_discovery`. Static config jobs that fail validation do not bind; Dynamic Configuration jobs are rejected when applied. +- For static SNMPv3 jobs that use `engine_id_whitelist`, each `usm_users` entry must include the sender `engine_id`. Dynamic engine ID discovery allows the `engine_id` field to be omitted. + +If you configure SNMPv3 credentials, use Netdata secret references instead of plain-text passphrases, such as `auth_key: "${file:/run/secrets/snmp-v3-auth-key}"`. See [Secrets Management](/docs/collecting-metrics/secrets-management) for safe credential handling in `go.d/snmp_traps.conf`. + +## Package availability + +SNMP traps are part of the Netdata Go collectors component. On native packages, that component is packaged as **`netdata-plugin-go`**. Standard Netdata package installs normally include it, but minimal, custom, or older installs may not. + +Check for the runtime and stock configuration: + +```bash +sudo ls /usr/libexec/netdata/plugins.d/go.d.plugin +sudo ls /usr/lib/netdata/conf.d/go.d/snmp_traps.conf +``` + +If either file is missing on a native-package install, install the Go collectors package and restart Netdata: + +```bash +# Debian / Ubuntu / Mint +sudo apt update +sudo apt install netdata-plugin-go +sudo systemctl restart netdata +``` + +```bash +# RHEL / Fedora / CentOS / Rocky / Alma +sudo dnf install netdata-plugin-go +sudo systemctl restart netdata +``` + +```bash +# openSUSE +sudo zypper install netdata-plugin-go +sudo systemctl restart netdata +``` + +## Static install (kickstart) + +The static install path bundles `go.d.plugin` and the stock `snmp_traps.conf` template. Verify the files under `/opt/netdata/`: + +```bash +sudo ls /opt/netdata/usr/libexec/netdata/plugins.d/go.d.plugin +sudo ls /opt/netdata/usr/lib/netdata/conf.d/go.d/snmp_traps.conf +``` + +Static installs also set the low-port capability for `go.d.plugin`. If the capability was removed by local hardening, use a high UDP port or restore low-port binding before using UDP/162. + +## Source and custom builds + +Source builds install `go.d.plugin` unless the build or installer is run with Go collectors disabled. If `go.d.plugin` is not built or installed, the SNMP trap listener cannot run. + +After installing from source, verify the runtime and stock configuration in the install prefix you used: + +```bash +sudo ls /usr/libexec/netdata/plugins.d/go.d.plugin +sudo ls /usr/lib/netdata/conf.d/go.d/snmp_traps.conf +``` + +If you installed with `--install-prefix /opt`, use the static paths shown above. + +## Docker + +The official Netdata Docker image includes `go.d.plugin`. To receive traps in Docker, publish the listener UDP port and make sure your Netdata configuration volume includes the `go.d/snmp_traps.conf` job you create. + +Docker port mappings need the UDP suffix, for example `-p 162:162/udp`; without `/udp`, Docker publishes TCP. + +For UDP/162, the container must be allowed to bind low ports. See [UDP/162 permissions](#udp162-permissions) for restricted runtimes and hardened service policies. + +## Listener jobs + +The stock `snmp_traps.conf` file is a commented template. Netdata will not listen for traps until you create a job. There are two ways to add one. + +### Enable via Dynamic Configuration + +This is the recommended way to add a job. Add, edit, test, and remove a listener job from the Netdata UI, with no file editing and no service restart: + +1. In Netdata, open **Integrations** and find **SNMP Trap Listener**. +2. Click **Configure**, then **Add job**. +3. Fill in the job form: listener address and port, SNMP versions, communities or SNMPv3 users, and the source allowlist. +4. Click **Test** to validate the job before it goes live. +5. Deploy the job. It takes effect immediately, with no `netdata` restart, and can be deployed to many nodes at once. + +This path requires a node connected to Netdata Cloud on a paid plan; Dynamic Configuration handles permissions and security through that connection. See [Dynamic Configuration](/docs/netdata-agent/configuration/dynamic-configuration-manager) for the full UI access paths and role requirements. This is the single place this caveat is stated; other pages reference it. + +### Fallback: edit the file and restart + +Use this path for headless or automated deployments, for free-tier nodes, or when the node is not connected to Netdata Cloud. Edit the collector configuration on the Netdata host: + +```bash +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata +sudo ./edit-config go.d/snmp_traps.conf +``` + +After editing, restart Netdata so the listener job is created. See [Verify the listener starts](#verify-the-listener-starts) for the restart commands. + +Either way, each job binds one or more UDP endpoints under the `listen:` key. A job can listen on UDP/162, or on another UDP port if you prefer to avoid privileged bind requirements. If you choose a non-standard port, configure every trap sender to use that same destination port. For the full option list, see [Configuration](/docs/snmp-traps/configuration). + +## Device identity and enrichment + +Trap receiving does not require SNMP polling or topology discovery. A listener can receive, decode, store, and forward traps using the trap source address from the UDP peer or trusted relay configuration. When co-located SNMP or `snmp_topology` jobs are also running, Netdata can enrich traps with device, vendor, interface, and neighbor context. See [Enrichment](/docs/snmp-traps/enrichment). + +## UDP and firewall preflight + +Before creating the job, confirm the network path: + +- The device can route to the Netdata host IP. +- The device sends traps to the same UDP port the job will bind. +- Firewalls allow inbound UDP from the device or relay source IP. +- By default, `allowlist.source_cidrs` accepts any IPv4 or IPv6 source. For production listener jobs, restrict it to the expected sender or relay CIDRs and confirm the sender source IP is inside one of those CIDRs. +- If traps pass through a relay, decide whether the relay itself is the authoritative source or whether it must be configured as a trusted relay in the job. + +SNMP traps are one-way UDP messages. A successful ping or TCP connection test does not prove that UDP traps can reach the listener. + +The listener requests a UDP receive buffer of `4194304` bytes by default. Hardened kernels may clamp that value; use [Configuration](/docs/snmp-traps/configuration) if you need to tune `listen.receive_buffer`. + +## UDP/162 permissions + +Binding to UDP/162 requires low-port privileges. Standard Netdata packages grant `CAP_NET_BIND_SERVICE` to `go.d.plugin`, and the systemd service allows that capability. Static installs set the same capability during installation. + +The official Docker image also handles low-port binding when run with the documented Docker command or Compose file. Custom containers, rootless or restricted runtimes, Kubernetes security contexts, `cap_drop` policies, or service overrides that remove low-port privileges may need extra configuration. + +If your deployment cannot bind UDP/162, use one of these approaches: + +- Use a high UDP port such as `9162` and configure devices to send traps to that port. +- Grant `CAP_NET_BIND_SERVICE` to `go.d.plugin` or to the container/service that runs it. +- Run Netdata in an environment where the service is allowed to bind UDP/162. + +After the job starts, verify that Netdata is listening: + +```bash +sudo ss -ulnp | grep ':162' +``` + +Replace `162` with your configured port when using a custom listener port. + +## Journal and OTLP preflight + +On Linux, direct journal storage is enabled by default for listener jobs. The job writes trap data under the configured Netdata log directory and is exposed as an SNMP trap log source. For the exact per-job path and how the `journalctl --directory` path is built, see [Journal and Querying](/docs/snmp-traps/journal-and-querying). + +For direct-journal jobs, confirm that the Netdata log directory exists and is writable by the service that runs `go.d.plugin`. Standard systemd packages run the Netdata service as root with group `netdata`; if you changed the service user, run equivalent checks as that user. + +```bash +sudo test -d /var/log/netdata && echo "OK: log directory exists" || echo "MISSING: /var/log/netdata" +sudo test -w /var/log/netdata && echo "OK: log directory is writable" || echo "NOT WRITABLE: /var/log/netdata" +sudo test -s /etc/machine-id && echo "OK: /etc/machine-id exists and is non-empty" || echo "MISSING OR EMPTY: /etc/machine-id" +sudo test -s /proc/sys/kernel/random/boot_id && echo "OK: boot_id exists and is non-empty" || echo "MISSING OR EMPTY: /proc/sys/kernel/random/boot_id" +``` + +Replace `/var/log/netdata` with your configured Netdata log directory when it is different. + +If you configure OTLP export, make sure the OTLP/gRPC receiver is reachable before starting the job. When OTLP is enabled, Netdata preflights the receiver during job creation. If the receiver, TLS settings, or headers are wrong, the job fails to start with an OTLP preflight error; Dynamic Configuration jobs are rejected when applied. OTLP can run together with local journal storage, or as the only backend when `journal.enabled: false`. + +OTLP-only jobs do not create local journal files and do not appear as local SNMP trap log sources. + +## Verify the listener starts + +After you add a listener job by editing `go.d/snmp_traps.conf`, restart Netdata with the method for your deployment. Jobs created with Dynamic Configuration take effect after the configuration is applied and do not need a service restart. On systemd hosts: + +```bash +sudo systemctl restart netdata +sudo journalctl --namespace netdata --since "5 minutes ago" | grep -E 'snmp_traps|SNMP trap|trap listener' +``` + +This command checks Netdata service logs, not stored trap rows. If your install logs the Netdata service to the default journal instead of the `netdata` namespace, check the service logs with the same `grep` pattern: + +```bash +sudo journalctl -u netdata --since "5 minutes ago" | grep -E 'snmp_traps|SNMP trap|trap listener' +``` + +After traps arrive, local trap rows are queried from the per-job journal directory; see [Journal and Querying](/docs/snmp-traps/journal-and-querying). + +In Docker, restart the Netdata container and inspect the container logs for the same listener messages. + +```bash +sudo docker restart netdata +sudo docker logs --tail 50 netdata | grep -E 'snmp_traps|SNMP trap|trap listener' +``` + +The first healthy signal is that the configured listener job starts and, when local journal storage is enabled, the job becomes available as an SNMP trap log source through the Cloud-required `snmp:traps` Function. After a device sends a matching trap, receiver metrics update. + +If the listener does not start, check: + +- The configured UDP port is not already in use. +- UDP/162 capability is available, or the job uses a high port. +- The Netdata log directory exists and is writable by the user running `go.d.plugin`. +- SNMPv3 credentials, engine IDs, and dynamic engine ID discovery settings are consistent. +- OTLP is reachable when `otlp.enabled: true`. + +## What's next + +- [Quick Start](/docs/snmp-traps/quick-start) - Configure one listener, send one test trap, and prove it arrived. +- [Configuration](/docs/snmp-traps/configuration) - Harden source allowlists, SNMP versions, outputs, retention, deduplication, and profile metrics. +- [Troubleshooting](/docs/snmp-traps/troubleshooting) - Diagnose inactive listeners, missing rows, SNMPv3 failures, and forwarding issues. diff --git a/docs/SNMP Traps/Investigation Playbooks.mdx b/docs/SNMP Traps/Investigation Playbooks.mdx new file mode 100644 index 0000000000..2bd9f3258e --- /dev/null +++ b/docs/SNMP Traps/Investigation Playbooks.mdx @@ -0,0 +1,135 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/investigation-playbooks.md" +sidebar_label: "Investigation Playbooks" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Follow operator playbooks for storms, critical traps, interface changes, restart signals, missing traps, unknown OIDs, SNMPv3 failures, and forwarding checks." +sidebar_position: "150" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/investigation-playbooks" +slug: "/snmp-traps/investigation-playbooks" +--- + + + + +# Investigation Playbooks + +Use these playbooks during SNMP trap incidents when you need a fast, repeatable investigation path. They are written for NOC, NetOps, SecOps, SRE, and incident response teams. + +Start from the operator signal, then check the trap rows and receiver metrics together. Trap absence is not proof that nothing happened: a device may be quiet, misconfigured, blocked by the network, rejected by policy, rate limited, deduplicated, or failing to write or export rows. + +## Before you start + +Use these rules for every playbook: + +- Check `TRAP_REPORT_TYPE` first. It tells you whether the row is a normal trap, a decode error, or a deduplication summary. +- Treat `TRAP_SEVERITY` and `TRAP_CATEGORY` as profile policy. Use them to sort urgency, then confirm the meaning with `TRAP_NAME`, `TRAP_OID`, `TRAP_VAR_*`, `TRAP_JSON`, device context, and operational evidence. +- Use receiver metrics when rows are missing or incomplete. Compare `received`, `decoded`, `accepted`, `committed`, `dedup_suppressed`, `dropped`, and `write_failed` in `snmp.trap.pipeline`, then inspect `snmp.trap.errors` and source metrics. +- For OTLP-only jobs, inspect the equivalent downstream log attributes instead of local journal field names. Use the OTLP mapping in [Field Reference](/docs/snmp-traps/field-reference#otlp-mapping-notes). +- Keep tickets clean. Do not paste raw sensitive payloads, real SNMP communities, SNMPv3 secrets, full `TRAP_JSON`, full `TRAP_ENRICHMENT`, organization identifiers, or public IPs that identify your environment into tickets. Use placeholders and RFC 5737 example IPs such as `192.0.2.10`, `198.51.100.20`, and `203.0.113.5`. + +For field meanings, query examples, metrics, validation checks, and deeper troubleshooting, see: + +- [Usage and Output](/docs/snmp-traps/usage-and-output) +- [Field Reference](/docs/snmp-traps/field-reference) +- [Journal and Querying](/docs/snmp-traps/journal-and-querying) +- [Metrics](/docs/snmp-traps/metrics) +- [Alerts](/docs/snmp-traps/alerts) +- [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality) +- [Troubleshooting](/docs/snmp-traps/troubleshooting) + +## Trap storm or noisy source + +**Situation.** One source is flooding the receiver with traps, and the noise is drowning out the events that matter. + +- **First signal:** High trap row volume from one source, a high-rate severity alert, rising `snmp.trap.errors` `rate_limited`, rising `dedup_suppressed`, or rising `dropped`. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_VAR_*`, `TRAP_JSON`, `snmp.trap.pipeline`, `snmp.trap.errors`, `snmp.trap.dedup_suppressed`, `snmp.trap.source_pipeline`, `snmp.trap.source_errors`, and `snmp.trap.source_last_seen`. +- **Likely interpretation:** One device or relay is sending repeated events, the same event is being deduplicated, a source exceeded the rate limit, or the receiver is dropping traffic before it becomes committed rows. +- **Next action:** Group by `TRAP_SOURCE_IP`, then by `TRAP_NAME` or `TRAP_OID`. Confirm whether `dedup_suppressed` or `rate_limited` explains missing repeated rows, then work with the device owner to stop the cause or adjust receiver policy only after confirming the storm is expected. + +## Critical, security, or authentication traps + +**Situation.** A high-severity or security trap just fired, and you need to confirm what the device reported before escalating. + +- **First signal:** A default severity alert for `emerg`, `alert`, or `crit`, or a sudden increase in `TRAP_CATEGORY=security` or `TRAP_CATEGORY=auth`. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_VAR_*`, `TRAP_JSON`, `TRAP_ENRICHMENT`, receiver pipeline metrics, receiver error metrics, and source metrics. +- **Likely interpretation:** The sender reported an urgent condition, security event, authentication event, or policy-relevant device event. Severity and category indicate profile or override policy, not final proof of device state. +- **Next action:** Open the matching trap rows, identify the source and trap identity, and verify the event with device-side or security-system evidence. Escalate using the confirmed source, trap name or OID, category, severity, and a minimized payload summary. + +## Link or interface state changes + +**Situation.** A link is reporting up/down transitions and you need to tell a one-time change from a flapping interface. + +- **First signal:** `TRAP_CATEGORY=state_change`, repeated state-change traps from one source, or known interface traps such as `TRAP_NAME=IF-MIB::linkDown` or `TRAP_NAME=IF-MIB::linkUp`. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, relevant `TRAP_VAR_*` interface fields, `TRAP_JSON`, `TRAP_ENRICHMENT`, `snmp.trap.pipeline`, and source metrics. +- **Likely interpretation:** A device is reporting an interface or link state transition. Repeated alternating traps can indicate a flap; a single row can be a one-time administrative or physical event. +- **Next action:** Filter the same source and time window for matching up/down trap names or OIDs. Use `TRAP_VAR_*` fields for the interface identifier when present, and open `TRAP_JSON` only if the indexed varbinds do not identify the affected resource. + +## Device restart signals + +**Situation.** A device reported a restart, and you need to know whether it explains other missing or unexpected traps around the same time. + +- **First signal:** A restart trap such as `TRAP_NAME=SNMPv2-MIB::coldStart` or `TRAP_NAME=SNMPv2-MIB::warmStart`, or a cluster of restart-like trap OIDs from the same source. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_VAR_*`, `TRAP_JSON`, `snmp.trap.pipeline`, and `snmp.trap.source_last_seen`. +- **Likely interpretation:** The sender is reporting a device or agent restart. A restart signal can also explain later missing traps if the device was rebooting, reloading, or changing SNMP sender state. +- **Next action:** Build a short timeline around the restart row. Check whether traps stopped before the restart or resumed after it, then confirm with device uptime, device logs, or change records without copying sensitive payload fields. + +## Missing expected traps + +**Situation.** A trap you expected never showed up, and you need to find where in the path it was lost — or whether it was ever sent. + +- **First signal:** An expected trap did not appear in Netdata Logs, a downstream system has no matching event, or a source has not been seen recently. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, decode-error fields, dedup summary fields, `snmp.trap.pipeline`, `snmp.trap.errors`, `snmp.trap.dedup_suppressed`, `snmp.trap.source_pipeline`, `snmp.trap.source_errors`, and `snmp.trap.source_last_seen`. +- **Likely interpretation:** The trap may not have been sent, may have been blocked before the listener, may have been rejected by allowlist or credentials, may have failed decode, may have been rate limited or deduplicated, or may have failed to write or export. +- **Next action:** Check the receiver pipeline in order: `received`, `decoded`, `accepted`, `committed`. If `received` is flat, check `ipv4.udperrors` (`RcvbufErrors`) for kernel-buffer drops first, then sender and network delivery. If `received` rises but `committed` is flat, inspect `dropped`, `dedup_suppressed`, `write_failed`, and the matching error dimensions. +- **Trap–poll cross-check:** For a critical device, compare the silent trap path against polling. If Netdata's polling collectors still see the device but no traps arrive, the trap path is broken (wrong destination, blocked UDP, allowlist or credential mismatch, or a failing receiver), not the device. Silence is never proof of health — this is why every critical device should be paired with polling. + +## Unknown OID or profile coverage issue + +**Situation.** Traps are arriving as raw numeric OIDs with no name or category, and you need to decide whether to extend profile coverage. + +- **First signal:** Rows with missing `TRAP_NAME`, `TRAP_CATEGORY=unknown`, repeated raw `TRAP_OID` values, or rising `unknown_oid`. +- **Inspect:** `TRAP_OID`, `TRAP_NAME`, `TRAP_CATEGORY`, and `snmp.trap.errors` `unknown_oid` first; for the full field and evidence list, see [Troubleshooting](/docs/snmp-traps/troubleshooting#unknown-oids-profile-load-failures-or-template-issues). +- **Likely interpretation:** The receiver accepted and stored the trap, but the loaded profiles or overrides did not classify that OID. This is a coverage issue, not necessarily an ingestion failure. +- **Next action:** Collect the numeric `TRAP_OID`, the source, a minimized `TRAP_JSON` summary, and the operational meaning from vendor documentation or device evidence. Add or adjust [Trap Profiles](/docs/snmp-traps/trap-profiles) only after confirming the OID and expected severity/category policy. + +## SNMPv3 authentication, USM, or engine-ID failures + +**Situation.** SNMPv3 traps from a device are being rejected, and you need to tell a credential mismatch from an engine-ID problem. + +- **First signal:** Decode-error rows with SNMPv3-related failure classes, or alerts for `auth_failures`, `usm_failures`, or `unknown_engine_id`. +- **Inspect:** `TRAP_REPORT_TYPE=decode_error`, `TRAP_DECODE_ERROR_KIND`, `TRAP_ENGINE_ID`, and the `auth_failures`/`usm_failures`/`unknown_engine_id` error dimensions first; for the full decode-error field list and the v3-silent-but-v2c-works cue, see [Troubleshooting](/docs/snmp-traps/troubleshooting#snmpv3-auth-privacy-usm-or-engine-id-mismatch). +- **Likely interpretation:** The sender and listener disagree on SNMPv3 user, auth or privacy settings, accepted engine ID policy, or sender state. Repeated `TRAP_PACKET_SHA256` values can indicate the same bad packet pattern repeating. +- **Next action:** Verify the sender identity with `TRAP_SOURCE_IP` and `TRAP_SOURCE_UDP_PEER`, then compare the device and listener SNMPv3 configuration without copying secrets into tickets. Treat `TRAP_ENGINE_ID` as inventory data and share only when necessary. + +## Deduplication summaries + +**Situation.** Repeated traps are showing up as summary rows instead of individual events, and you need to confirm deduplication is behaving as intended. + +- **First signal:** `TRAP_REPORT_TYPE=deduplication_summary`, rising `snmp.trap.dedup_suppressed`, or `dedup_suppressed` rising in the receiver or source pipeline. +- **Inspect:** `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, and `TRAP_REPORT_PERIOD_SEC` first; for the full evidence list and config checks, see [Troubleshooting](/docs/snmp-traps/troubleshooting#rate-limiting-or-deduplication-surprise). +- **Likely interpretation:** Repeated matching traps were intentionally summarized instead of written as individual normal trap rows. The summary is job-level reporting, not a normal trap row from one device. +- **Next action:** Use `TRAP_SUPPRESSED_COUNT` and `TRAP_SUPPRESSED_FINGERPRINTS` to separate one repeated event from many repeated event classes. Inspect the first normal trap row and the summary `TRAP_JSON`, then confirm the deduplication policy matches operator expectations. + +## Forwarding and SIEM verification + +**Situation.** Netdata shows the trap rows, but the downstream SIEM is missing events or fields, and you need to find where the forwarding path diverges. + +- **First signal:** Netdata shows trap rows, but the downstream system has no event, incomplete fields, wrong grouping, or unexpected payload size. +- **Inspect:** `TRAP_REPORT_TYPE`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_NAME`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_VAR_*`, `TRAP_JSON`, `TRAP_ENRICHMENT`, decode-error fields, dedup summary fields, `snmp.trap.pipeline` `committed`, `write_failed`, `snmp.trap.errors` `journal_write_failed`, `otlp_export_failed`, and source metrics. +- **Likely interpretation:** The receiver committed the row but the forwarding path, downstream parser, field mapping, or retention policy changed what operators can search. Full payload fields can also be minimized, renamed, or excluded by downstream policy. +- **Next action:** Compare one known trap row in Netdata with the downstream record. Verify that the downstream system preserves report type, source, trap identity, category, severity, selected varbind fields, decode-error fields, and dedup summary fields that your rules depend on. + +## What to record in an incident ticket + +Record enough context for another operator to reproduce the investigation without exposing sensitive data: + +- Time window and affected listener. +- `TRAP_JOB`. +- `TRAP_REPORT_TYPE`. +- Redacted `TRAP_SOURCE_IP` and `TRAP_SOURCE_UDP_PEER`, or RFC 5737 examples in public material. +- `TRAP_NAME` and `TRAP_OID`. +- `TRAP_CATEGORY` and `TRAP_SEVERITY`, with a note that they are profile policy. +- Relevant `TRAP_VAR_*` names and sanitized values. +- Receiver metric evidence, such as `received`, `decoded`, `accepted`, `committed`, `dropped`, `write_failed`, `dedup_suppressed`, and the relevant `snmp.trap.errors` dimension. +- A short sanitized summary of `TRAP_JSON` or `TRAP_ENRICHMENT` only when indexed fields do not explain the event. diff --git a/docs/SNMP Traps/Journal and Querying.mdx b/docs/SNMP Traps/Journal and Querying.mdx new file mode 100644 index 0000000000..5acc680c12 --- /dev/null +++ b/docs/SNMP Traps/Journal and Querying.mdx @@ -0,0 +1,242 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/journal-and-querying.md" +sidebar_label: "Journal and Querying" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Query, export, copy, and inspect direct-journal trap data with Netdata Logs and journalctl-compatible workflows." +sidebar_position: "90" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/journal-and-querying" +slug: "/snmp-traps/journal-and-querying" +--- + + + + +# Journal and Querying + +Use this page when you need to search, export, copy, or integrate SNMP trap data from Netdata Cloud Logs or from local journal-compatible files. + +Direct-journal jobs write journal-compatible files under the configured Netdata log directory. The per-job root is normally: + +```text +/var/log/netdata/traps// +``` + +The effective `journalctl --directory` path is the machine-id child directory inside that job root: + +```text +/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id) +``` + +These files back the job source exposed through the Cloud-required `snmp:traps` Function and appear in Netdata Cloud as **SNMP Trap Logs** when the Agent is connected. Individual journal entries use `ND_LOG_SOURCE=snmp-trap`. They are not the host systemd-journald service's normal journal. When you use `journalctl`, point it at the effective trap journal directory with `--directory`. + +OTLP-only jobs do not create local journal files and do not appear as job sources in the `snmp:traps` Function. Query OTLP-only trap events in the OTLP receiver or downstream log system instead. + +## Choose the query surface + +| Use case | Query surface | Notes | +|---|---|---| +| Interactive triage | Netdata Cloud Logs | Use **SNMP Trap Logs** through the Cloud-required `snmp:traps` Function and the **Trap Jobs** source selector. | +| Local shell search | `journalctl --directory=/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id)` | Reads one direct-journal job directory without reading the host system journal. | +| Export or integration | `journalctl --output=json` | Produces newline-delimited JSON objects for scripts and downstream tools. | + +The `snmp:traps` Function uses these default facets: + +- `TRAP_CATEGORY` +- `TRAP_DEVICE_VENDOR` +- `TRAP_NAME` +- `TRAP_SEVERITY` +- `TRAP_SOURCE_IP` +- `_HOSTNAME` +- `TRAP_JOB` + +Start with these fields before opening large payload fields such as `TRAP_JSON` or `TRAP_ENRICHMENT`. + +## Query in Netdata Cloud Logs + +1. Open **SNMP Trap Logs** through Netdata Cloud Logs. +2. Use the **Trap Jobs** selector to choose one direct-journal job, such as `edge-traps`, or leave all direct-journal jobs selected. +3. Narrow the time window first. +4. Filter by report type, source, trap identity, category, or severity. +5. Open `TRAP_JSON` only when the indexed fields do not answer the question. + +Useful first filters: + +| Question | Fields to use | +|---|---| +| Which listener produced this row? | `TRAP_JOB` | +| Is this a normal trap, decode error, or dedup summary? | `TRAP_REPORT_TYPE` | +| Which device or sender is involved? | `TRAP_SOURCE_IP`, `_HOSTNAME`, `TRAP_SOURCE_UDP_PEER` | +| What trap was decoded? | `TRAP_NAME`, `TRAP_OID` | +| How urgent is it? | `TRAP_SEVERITY`, `PRIORITY` | +| What kind of event is it? | `TRAP_CATEGORY` | +| Which vendor was enriched? | `TRAP_DEVICE_VENDOR` | +| Which event varbind matters? | `TRAP_VAR_*`, `TRAP_VAR_*_RAW` | + +For field meanings and population rules, see [Field Reference](/docs/snmp-traps/field-reference). + +## Query with journalctl \{#canonical-command} + +Use `sudo` when the trap journal files are not readable by your user. + +The canonical command is the same each time — only the filter changes. It reads one direct-journal job from the machine-id child of its per-job root: + +```bash +sudo journalctl --directory=/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id) \ + --since "2 hours ago" --no-pager +``` + +You should see rows like: + +```text +... TRAP_JOB=edge-traps TRAP_REPORT_TYPE=trap TRAP_NAME=IF-MIB::linkDown TRAP_SOURCE_IP=192.0.2.10 +... TRAP_JOB=edge-traps TRAP_REPORT_TYPE=trap TRAP_NAME=SNMPv2-MIB::coldStart TRAP_SOURCE_IP=192.0.2.10 +``` + +Each row carries the full `TRAP_*` field set; the lines above show only a few representative fields. + +Replace `` with your listener job name (examples below use `edge-traps`). To narrow the query, add `FIELD=value` matches before the flags, and optionally `--output=json --output-fields=...` to project specific fields. The examples below show only the filter to add to this canonical command. + +Show one source IP in a time window: + +```bash +... TRAP_SOURCE_IP=192.0.2.10 \ + --since "2 hours ago" \ + --until "now" \ + --no-pager +``` + +Show normal trap rows only: + +```bash +... TRAP_REPORT_TYPE=trap \ + --since "2 hours ago" \ + --no-pager +``` + +Filter by severity and category: + +```bash +... TRAP_SEVERITY=warning \ + TRAP_CATEGORY=state_change \ + --since "2 hours ago" \ + --no-pager +``` + +Filter by source and trap name: + +```bash +... TRAP_SOURCE_IP=192.0.2.10 \ + TRAP_NAME=IF-MIB::linkDown \ + --since "2 hours ago" \ + --no-pager +``` + +`journalctl` treats matches on different fields as logical AND. Repeating the same field acts as OR for that field, for example: + +```bash +... TRAP_SEVERITY=crit \ + TRAP_SEVERITY=err \ + --since "2 hours ago" \ + --no-pager +``` + +## Export JSON + +Use JSON export when you want to copy rows into a ticket, process rows with a script, or feed another tool. Keep exports small and review payload fields before sharing them. + +Building on the [canonical command](#canonical-command), export selected fields for one source: + +```bash +... TRAP_SOURCE_IP=192.0.2.10 \ + --since "2 hours ago" \ + --output=json \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_REPORT_TYPE,TRAP_NAME,TRAP_CATEGORY,TRAP_SEVERITY,TRAP_SOURCE_IP,TRAP_JSON \ + --no-pager > snmp-traps-edge-traps.json +``` + +Export a compact operator view without the full payload: + +```bash +... --since "2 hours ago" \ + --output=json \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_REPORT_TYPE,TRAP_NAME,TRAP_CATEGORY,TRAP_SEVERITY,TRAP_SOURCE_IP \ + --no-pager > snmp-traps-summary.json +``` + +## Decode errors + +Decode-error rows use: + +```text +TRAP_REPORT_TYPE=decode_error +``` + +Use them when packets reached the listener but could not become normal trap rows. With the [canonical command](#canonical-command): + +```bash +... TRAP_REPORT_TYPE=decode_error \ + TRAP_SOURCE_IP=192.0.2.10 \ + --since "2 hours ago" \ + --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_DECODE_ERROR_KIND,TRAP_DECODE_ERROR,TRAP_SOURCE_IP,TRAP_SOURCE_UDP_PEER,TRAP_SOURCE_UDP_PORT,TRAP_PACKET_SIZE,TRAP_PACKET_SHA256,TRAP_LISTENER,TRAP_ENGINE_ID,TRAP_JSON \ + --no-pager +``` + +Useful decode-error fields: + +| Field | Use | +|---|---| +| `TRAP_DECODE_ERROR_KIND` | Main bounded failure class, such as `malformed_pdu`, `auth_failures`, `usm_failures`, `unknown_engine_id`, or `decode_failed`. | +| `TRAP_DECODE_ERROR` | Sanitized and shortened decoder error text. | +| `TRAP_PACKET_SIZE` | Received datagram size. | +| `TRAP_PACKET_SHA256` | Packet fingerprint for grouping repeated bad packets without storing raw packet bytes. | +| `TRAP_ENGINE_ID` | SNMPv3 engine ID when safely extractable. Treat it as inventory data. | +| `TRAP_JSON` | Structured decode-error details and packet sequence when available. | + +Raw packet bytes are not written to decode-error rows because packets can contain community strings or binary payloads; see [Field Reference](/docs/snmp-traps/field-reference#decode-error-fields) for the full decode-error field set. For troubleshooting workflow, see [Troubleshooting](/docs/snmp-traps/troubleshooting). + +## Dedup summaries + +When deduplication is enabled, repeated matching traps are suppressed and reported in a periodic summary row with `TRAP_REPORT_TYPE=deduplication_summary`. For what those rows mean, see [Usage and Output](/docs/snmp-traps/usage-and-output#dedup-summaries). + +Query summary rows with the [canonical command](#canonical-command): + +```bash +... TRAP_REPORT_TYPE=deduplication_summary \ + --since "2 hours ago" \ + --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_SUPPRESSED_COUNT,TRAP_SUPPRESSED_FINGERPRINTS,TRAP_REPORT_PERIOD_SEC,TRAP_JSON \ + --no-pager +``` + +Useful dedup summary fields: + +| Field | Use | +|---|---| +| `TRAP_SUPPRESSED_COUNT` | Total duplicate trap events suppressed in the summary period. | +| `TRAP_SUPPRESSED_FINGERPRINTS` | Number of distinct dedup fingerprints with suppressed events. | +| `TRAP_REPORT_PERIOD_SEC` | Length of the summary period. | +| `TRAP_JSON` | Structured summary with total suppressed count, period, fingerprint count, and optional per-trap breakdown. | + +A dedup summary is a job-level summary row. It is not a normal trap from one device and does not include normal trap varbind fields. + +## Payload and sensitive-data notes + +When querying, prefer the indexed `TRAP_VAR_*` fields for rules and use `TRAP_JSON` for audit, export, and residual searches; `TRAP_ENRICHMENT` is for debugging source/enrichment decisions, not as a broad default facet. For the `TRAP_VAR_*` vs `TRAP_JSON` model, skip rules, and enum `_RAW` handling, see [Field Reference](/docs/snmp-traps/field-reference#varbind-fields). + +Some values can contain newlines, control bytes, or invalid UTF-8. Netdata stores those fields in a binary-safe form so a hostile value cannot inject fake fields. In `journalctl --output=json`, binary fields can appear as arrays of unsigned byte values. Treat them as payload data, not display text. + +Trap logs can contain sensitive inventory and operational details: + +- Do not paste real community strings, SNMPv3 secrets, packet captures, organization names, identifiers, or public IPs that identify your environment into examples or tickets. +- Use placeholders and RFC 5737 example IPs such as `192.0.2.10`. +- Review `TRAP_JSON`, `TRAP_ENRICHMENT`, `TRAP_VAR_*`, `TRAP_ENGINE_ID`, interface names, neighbor names, and hostnames before forwarding or sharing exports. +- Minimize exported fields when integrating with a SIEM. See [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem). + +## Related pages + +- [Usage and Output](/docs/snmp-traps/usage-and-output) - Understand report types, normal trap rows, decode errors, and dedup summaries. +- [Field Reference](/docs/snmp-traps/field-reference) - Check every field, when it appears, and how to query it. +- [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem) - Forward trap events and map fields in an external log system. +- [Troubleshooting](/docs/snmp-traps/troubleshooting) - Investigate listener, decode, journal, and source issues. diff --git a/docs/SNMP Traps/Metrics.mdx b/docs/SNMP Traps/Metrics.mdx new file mode 100644 index 0000000000..86adf599cb --- /dev/null +++ b/docs/SNMP Traps/Metrics.mdx @@ -0,0 +1,197 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/metrics.md" +sidebar_label: "Metrics" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Read receiver pipeline health, severity and category rates, processing errors, deduplication, and per-source metrics." +sidebar_position: "110" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/metrics" +slug: "/snmp-traps/metrics" +--- + + + + +# SNMP Trap Metrics + +Use this page to read the SNMP trap receiver metrics: whether the receiver is healthy, whether traps are flowing, and what the receiver is dropping or suppressing. For the default health alerts that ship for these metrics, see [Alerts](/docs/snmp-traps/alerts). + +SNMP trap metrics describe the receiver and the traps that reached it. They do not prove the complete state of a device. Absence of traps is not proof of absence of events, because a device may be quiet, misconfigured, blocked by the network, or sending to another destination. + +For setup and related operator workflows, see: + +- [Configuration](/docs/snmp-traps/configuration) +- [Usage and Output](/docs/snmp-traps/usage-and-output) +- [Alerts](/docs/snmp-traps/alerts) +- [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality) +- [Troubleshooting](/docs/snmp-traps/troubleshooting) + +## Receiver pipeline + +The **SNMP trap receiver pipeline** chart shows per-job event rates for the receiver path. Use it first when deciding whether the listener is receiving packets and whether accepted traps are reaching the configured output backend. + +Every packet walks the same funnel; the branches are where traps are lost or held: + +```mermaid +flowchart LR + P([UDP datagram]) --> R[received] + R --> D[decoded] + D --> A[accepted] + A --> C[committed] + C --> OUT(["journal and/or OTLP"]) + R -.->|"allowlist, version,
auth, malformed"| DR([dropped]) + D -.->|"post-decode policy,
engine-id, rate-limit"| DR + A -.->|repeated trap| DS([dedup_suppressed]) + A -.->|output rejected| WF([write_failed]) +``` + +| Dimension | What it means | Operator use | +|---|---|---| +| `received` | A UDP packet entered the trap handler. | Confirms traffic reached the listener process. This counts *after* the kernel UDP buffer, so datagrams the kernel drops are invisible here — watch `ipv4.udperrors` (`RcvbufErrors`) for kernel drops and see [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning#kernel-udp-buffer-drops) for buffer tuning. | +| `decoded` | The packet parsed as an SNMP trap or INFORM PDU. | Compare with `received` to find packets rejected before or during decode, such as source allowlist drops, unsupported sniffed versions, authentication failures, or malformed packets. | +| `accepted` | The trap became a normal trap entry after source checks, profile lookup, template rendering, and source attribution. | Compare with `decoded` to find post-decode policy or source-identity checks that stopped a decoded trap before acceptance. | +| `committed` | The trap was accepted by the configured output (journal or OTLP). | This is the strongest receiver-side signal that the receiver accepted the trap for local storage or export. Backend failures are exposed by write and export error metrics. | +| `dedup_suppressed` | A repeated trap matched deduplication and was counted in a periodic summary instead of stored as its own row. | Expected during repeated events when deduplication is enabled. | +| `dropped` | A packet entered the handler but did not become a committed trap, a dedup summary, or a write failure. Decode-error rows can also increment it alongside their error dimension. | Compare with the processing-error dimensions and decode-error rows to separate decode failures, policy drops, and rate limits. | +| `write_failed` | The authoritative output (journal, or OTLP when journal is disabled) could not keep the trap. | Which counters rise depends on the backend mode — see the table below. | + +### Which counters rise on a backend failure \{#backend-write-failures} + +| Job backend mode | On a journal write failure | On an OTLP export failure | +|---|---|---| +| Journal only | `write_failed` + `journal_write_failed` | — (no OTLP) | +| Journal + OTLP | `write_failed` + `journal_write_failed` | `otlp_export_failed` only — the journal copy is unaffected, so `write_failed` does **not** rise | +| OTLP only | — (no journal) | `write_failed` + `otlp_export_failed` — terminal; the trap is lost | + +Interpret gaps in order: + +- `received` rising while `decoded` is flat usually points to source allowlist, unsupported sniffed version, authentication, or malformed packet problems before a parsed trap exists. +- `decoded` rising while `accepted` is flat usually points to post-decode policy checks: version or community allowlist drops, engine ID checks, or rate limits. Profile lookup problems and template issues are data-quality signals on traps that can still become accepted entries. Dedup suppression does not keep `accepted` flat; it is tracked separately. +- `received` rising while `committed` is flat means traps are reaching the receiver but are not being accepted by the configured output writer. Check `dropped`, `dedup_suppressed`, `write_failed`, and the error dimensions. +- `write_failed` rising means the authoritative backend could not keep traps. See [Which counters rise on a backend failure](#backend-write-failures) for which counter maps to which backend mode. +- `dedup_suppressed` rising means repeated rows were intentionally collapsed. Confirm the deduplication policy before treating this as loss. + +## Categories and severities + +Category and severity charts count traps after receiver commit. They classify trap rows accepted by the configured writer; they are not polling metrics and do not prove current device state. + +The **SNMP trap events** chart uses this fixed category set: + +| Category | Typical meaning | +|---|---| +| `state_change` | A device, interface, service, sensor, peer, or component changed state. | +| `config_change` | Configuration changed on the sender. | +| `security` | Security-related event. | +| `auth` | Authentication or authorization event. | +| `license` | License state or entitlement event. | +| `mobility` | Wireless or roaming event. | +| `diagnostic` | Diagnostic, test, or health-reporting event. | +| `unknown` | Netdata could not classify the trap with a loaded profile or override. | + +The **SNMP trap events by severity** chart uses this fixed severity set: + +| Severity | Operator meaning | +|---|---| +| `emerg` | System unusable. Treat as immediate device-side emergency. | +| `alert` | Immediate action required. | +| `crit` | Critical condition. | +| `err` | Error condition. | +| `warning` | Warning condition. | +| `notice` | Normal but significant condition. | +| `info` | Informational event. | +| `debug` | Debug-level event. | + +Severity and category come from trap profiles or local overrides. If `unknown` grows, check profile coverage and any custom profile load errors. + +## Processing errors + +The **SNMP trap processing errors** chart shows per-job error rates. Some errors can still produce a `decode_error` row if the receiver can write one; other drops happen before a row exists and are visible only as metrics. + +| Dimension | What to check | +|---|---| +| `unknown_oid` | The trap was decoded, but no loaded profile matched its trap OID. Add or fix profile coverage if the trap should be classified. | +| `decode_failed` | The packet could not be decoded and did not match a more specific decode error class. Check sender version and packet validity. | +| `template_unresolved` | A profile template referenced a missing varbind or field. Check custom profile templates and the trap payload. | +| `malformed_pdu` | The PDU was structurally invalid, too large, missing required trap fields, or otherwise malformed. Check sender firmware and packet capture. | +| `dropped_allowlist` | The sender, SNMP version, or community was outside the allowed configuration. Check `allowlist.source_cidrs`, `versions`, and `communities`. | +| `rate_limited` | A sender exceeded the configured per-source rate limit. Check `rate_limit` settings and sender storm behavior. | +| `auth_failures` | Authentication or decryption failed. Check SNMP community or SNMPv3 auth/privacy settings. | +| `usm_failures` | SNMPv3 USM processing failed. Check users, protocols, keys, and sender engine state. | +| `unknown_engine_id` | SNMPv3 engine ID was not accepted or could not be resolved according to the job configuration. When `dynamic_engine_id_discovery` is enabled, first-time accepted `(engineID, username)` registrations also increment this counter once per job lifetime as a visibility signal. Check engine ID whitelist, dynamic discovery settings, cap exhaustion, invalid sender state, or unauthorized senders. | +| `inform_response_failed` | The receiver failed to send an INFORM acknowledgement. This is non-blocking: the trap can still continue through the receiver. Check the local socket and network path back to the sender. | +| `binary_encoded` | Structured fields were written with binary journal encoding for CWE-117 log-injection protection. Applies to the direct-journal path; OTLP-only jobs keep this counter at zero. A low background rate can be normal with known binary varbinds, but the default `snmp_trap_binary_encoded_fields` alert warns on any sustained non-zero rate over 10 minutes. Tune or silence that alert for known steady-state binary sources; investigate new or rising rates by checking profile labels, rendered varbind values with control characters, invalid UTF-8, or binary payload values. | +| `profile_load_failed` | Trap profile loading or lookup failed. Check custom profile YAML and profile directories. | +| `journal_write_failed` | Direct journal write failed. Check disk space, permissions, and the per-job journal directory. | +| `otlp_export_failed` | OTLP export failed. Check endpoint, credentials, TLS, queue pressure, and network path. | +| `listener_read_failed` | The listener failed to read from a bound UDP socket. Check operating-system socket errors and listener lifecycle logs. | + +For configuration details, see the [rate limiting, deduplication, and output backend sections](/docs/snmp-traps/configuration). + +## Deduplication suppression + +The **SNMP trap dedup suppressed events** chart appears when deduplication is enabled. Its dimension is `suppressed`, and it counts repeated matching traps that were intentionally suppressed during the deduplication window. The receiver pipeline chart tracks the same suppressed traps as `dedup_suppressed`, so both dimensions rise and fall together. + +Deduplication protects storage and downstream systems from repeated identical rows. A suppressed trap is not committed as a normal trap row and does not update profile-defined metrics. It is represented by deduplication metrics and summary rows instead, so the suppression remains auditable. + +Use this chart with the pipeline: + +- `dedup_suppressed` rising with stable `committed` means repeated events are being collapsed as configured. +- `dedup_suppressed` rising at very high rate can indicate a device-side trap storm. +- If distinct resources are being collapsed together, review `dedup.key_varbinds` in [Configuration](/docs/snmp-traps/configuration). + +## Sources and attribution + +Source metrics help answer which senders are active and which senders are affected by drops or backend failures. + +| Chart | Dimensions | How to use it | +|---|---|---| +| **SNMP trap active sources** | `active` | Number of source identities currently tracked for the job. | +| **SNMP trap source attribution** | `vnode`, `fallback`, `ambiguous`, `failed`, `overflow_dropped`, `source_transitions` | Shows how the receiver assigned trap activity to source identities and whether attribution was ambiguous, failed, exceeded the source-metric cap, or changed route. | +| **SNMP trap source pipeline** | `accepted`, `committed`, `dedup_suppressed`, `write_failed` | Per-source view of normal trap handling after attribution. | +| **SNMP trap source-attributed errors** | `unknown_oid`, `template_unresolved`, `profile_load_failed`, `journal_write_failed`, `otlp_export_failed` | Per-source view of errors that can be attributed to a trap entry. | +| **SNMP trap source last seen** | `seconds_ago` | Time since the receiver last saw activity for that source identity. | + +Per-source charts are labeled by `job_name`, `source_id`, and `source_kind`. When a trap can be tied to a Netdata vnode, the source identity uses that vnode. Otherwise the receiver falls back to the selected trap source, such as the enriched source or the UDP peer. Fallback source IDs are privacy-preserving hashes by default; use trap rows in [Usage and Output](/docs/snmp-traps/usage-and-output) when you need readable source fields. + +Source-attributed receiver metrics are bounded to 2000 active sources per job, so plan source cardinality around that cap. Inactive sources age out automatically. Accepted traps can still be committed if source metric attribution fails or the source cap is full; in that case, per-job pipeline totals can be higher than the sum of per-source charts. + +This source-metric cap applies to the built-in source receiver charts: `snmp.trap.source_pipeline`, `snmp.trap.source_errors`, and `snmp.trap.source_last_seen`. Profile-defined metrics have separate cardinality limits; see [Profile-defined metrics](#profile-defined-metrics). + +Interpret source charts carefully: + +- A high `active` count can be normal on large networks, but sudden growth can also mean unexpected senders or relay behavior. +- `ambiguous` means the receiver saw conflicting or rejected source evidence. Check source attribution fields in trap rows. +- `failed` means the receiver could not create a source metric identity for an entry. +- `overflow_dropped` means source metric tracking hit its cap. Accepted traps can still be committed, but per-source metric visibility is bounded. +- `source_transitions` means the same raw source route changed to a different metric identity. Check relay, vnode, and source attribution configuration. + +## Profile-defined metrics + +Profile-defined metrics convert selected committed traps into time-series. They are disabled by default and must be enabled with `profile_metrics` in [Configuration](/docs/snmp-traps/configuration). + +Important behavior: + +- Only committed traps update profile metrics. A later journal or OTLP failure does not roll back a metric that was already updated, so a metric and its downstream export can briefly diverge. +- Dedup-suppressed traps do not update profile metrics. +- Traps that fail to write (journal write failures or dropped OTLP records) do not update profile metrics. +- Cardinality limits protect the node by bounding enabled rules, sources, resources per source, and total metric instances per job. +- Over-cap profile metric instances are skipped and counted by diagnostics; the accepted trap can still be committed. + +Selection modes decide which loaded profile metric rules run: + +- `none`: no rules are evaluated. +- `auto`: runs only rules marked safe for automatic use. +- `exact`: runs only rule names listed in `profile_metrics.include`. +- `combined`: runs automatic rules plus rule names listed in `profile_metrics.include`. + +When at least one profile metric rule is selected, Netdata also emits the dynamic **SNMP trap profile metric diagnostics** chart, context `snmp.trap.profile_metric_diagnostics`, for the listener job. + +| Dimension | What it means | Operator use | +|---|---|---| +| `rule_missed` | A selected rule did not match the trap, or a missing value used `missing: drop`. | Expected when a rule applies only to some traps. Sudden changes can mean the trap payload or profile predicates changed. | +| `extraction_failed` | A selected rule matched but could not extract a required runtime value. | Check the profile rule, varbind type, and trap payload. | +| `attribution_failed` | Netdata could not derive or accept a source identity for the metric instance. | Check source attribution and profile metric identity settings. | +| `overflow_dropped` | A new metric instance exceeded source, resource, chart, or job cardinality caps. | Tighten rule identity, reduce selected rules, or adjust reviewed cardinality limits. | +| `source_transitions` | The same source route changed between fallback and vnode or device attribution. | Check enrichment, vnode matching, relays, and whether sender identity is stable. | + +Enable only rules with bounded identity and labels. For trap row fields and deduplication summary rows, see [Usage and Output](/docs/snmp-traps/usage-and-output). For validation workflow and data-quality checks, see [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality) and [Troubleshooting](/docs/snmp-traps/troubleshooting). diff --git a/docs/SNMP Traps/Quick Start.mdx b/docs/SNMP Traps/Quick Start.mdx new file mode 100644 index 0000000000..6584705a85 --- /dev/null +++ b/docs/SNMP Traps/Quick Start.mdx @@ -0,0 +1,187 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/quick-start.md" +sidebar_label: "Quick Start" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Configure a listener, send a test trap, and prove Netdata received it." +sidebar_position: "20" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/quick-start" +slug: "/snmp-traps/quick-start" +--- + + + + +# Quick Start + +Get one known SNMP trap into Netdata and prove it arrived. The path: create a small local listener, send a synthetic trap, find the row in Logs, and confirm the receiver pipeline metrics moved. + +## Before you start + +- The Netdata Agent is running on the Linux host that will receive traps. +- The SNMP trap listener is available on that Agent. If not, follow [Installation](/docs/snmp-traps/installation) first. +- You can add a listener job from the Netdata UI (Dynamic Configuration), or by editing `go.d/snmp_traps.conf` and restarting the Agent. +- The host has the Net-SNMP `snmptrap` command, or you can send an equivalent SNMPv2c trap from another test tool. + +This quick start uses UDP/9162 on `127.0.0.1` so you can test safely without changing production devices or binding the standard UDP/162 trap port. + +## Step 1 - Create a local test listener + +The fastest path is the Netdata UI with **Dynamic Configuration** (no restart): Integrations → SNMP Trap Listener → **Configure** → **Add job**, set address `127.0.0.1`, port `9162`, version `v2c`, community `example`, source CIDR `127.0.0.1/32`, and journal enabled, then **Test** and deploy. This needs a Cloud-connected node on a paid plan — see [Installation](/docs/snmp-traps/installation#enable-via-dynamic-configuration). + +Without Cloud, edit the config file instead: + +```bash +cd /etc/netdata 2>/dev/null || cd /opt/netdata/etc/netdata +sudo ./edit-config go.d/snmp_traps.conf +``` + +Add this job: + +```yaml +jobs: + - name: local-test + listen: + endpoints: + - protocol: udp + address: 127.0.0.1 + port: 9162 + versions: + - v2c + communities: + - example + allowlist: + source_cidrs: + - 127.0.0.1/32 + journal: + enabled: true +``` + +`example` is a placeholder community for this loopback test. Community strings travel in cleartext on the wire, so on real networks prefer SNMPv3 — see [Configuration security](/docs/snmp-traps/configuration#snmp-versions-and-communities). + +Then restart Netdata so the file change takes effect. On systemd hosts: + +```bash +sudo systemctl restart netdata +``` + +Check that the listener is bound: + +```bash +sudo ss -ulnp | grep ':9162' +``` + +You should see something like: + +```text +UNCONN 0 0 127.0.0.1:9162 0.0.0.0:* users:(("netdata",pid=1234,fd=42)) +``` + +If the line is missing, the listener did not bind — recheck the YAML and the service logs. + +## Step 2 - Send one known trap + +Send a standard SNMPv2c `coldStart` trap to the local listener: + +```bash +snmptrap -v 2c -c example 127.0.0.1:9162 '' 1.3.6.1.6.3.1.1.5.1 +``` + +The command sends one UDP datagram to the listener. The destination, version, and community must match the listener job: + +- Destination: `127.0.0.1:9162` +- Version: `v2c` +- Community: `example` + +The trap OID in this test is `1.3.6.1.6.3.1.1.5.1`, the standard `coldStart` notification. + +For production devices, this is the point where you configure the device-side trap destination. Set the destination to the Netdata host IP and listener UDP port, then match the device community or SNMPv3 USM settings to the listener job. + +## Step 3 - Find the trap in Logs + +In Netdata Cloud, open **Logs** and select **SNMP Trap Logs** (`snmp:traps`), then choose the `local-test` listener job if the source selector is shown. If this Agent is not connected to Netdata Cloud, skip to [Verify with journalctl](#verify-with-journalctl); that is the primary local verification path for standalone Agents. + +Look for one row with: + +- `TRAP_REPORT_TYPE`: `trap` +- `TRAP_JOB`: `local-test` +- `TRAP_OID`: `1.3.6.1.6.3.1.1.5.1` +- `TRAP_NAME`: `SNMPv2-MIB::coldStart` +- `TRAP_SOURCE_IP`: `127.0.0.1` + +If `TRAP_NAME` is not resolved, the raw `TRAP_OID` still proves that Netdata received and stored the test trap. + +## Step 4 - Confirm receiver metrics moved + +Open the Metrics or Charts view and search for **SNMP trap receiver pipeline** or `snmp.trap.pipeline`. + +For the `local-test` job, the trap should produce activity in these pipeline dimensions: + +- `received` +- `decoded` +- `accepted` +- `committed` + +These are incremental receiver metrics displayed as rates, so a single test trap may appear as a short spike. If you miss the spike, send the test trap again and watch the chart over the last few minutes. + +## Step 5 - If it does not appear + +Work through the checks in this order: + +1. **Listener not bound.** + + ```bash + sudo ss -ulnp | grep ':9162' + ``` + + If nothing is listening, check the YAML indentation, the job name, and the Netdata service logs after restart. + +2. **Trap sent to the wrong address or port.** + + ```bash + sudo tcpdump -i any -nn -c 5 'udp port 9162' + ``` + + If no packet appears, fix the destination IP, destination port, local firewall, or sender command. + +3. **Community, SNMP version, or source allowlist mismatch.** + + The quick-start job accepts only SNMPv2c, community `example`, and source `127.0.0.1/32`. If you send from another host, update the listener address, destination address, and `allowlist.source_cidrs`. + +4. **Production device sends nothing.** + + Netdata does not make devices emit traps. Configure each device to send traps or informs to the Netdata listener address and port, then confirm the device uses the same community or SNMPv3 USM settings as the listener. + +## Verify with journalctl + +When local journal storage is enabled, the same trap is stored in Netdata's own journal files (see [Journal and Querying](/docs/snmp-traps/journal-and-querying) for the path and more query examples). On default installations, you can inspect the local test job with: + +```bash +sudo journalctl \ + --directory=/var/log/netdata/traps/local-test/$(tr -d '-' < /etc/machine-id) \ + --since "5 minutes ago" \ + --output verbose \ + TRAP_OID=1.3.6.1.6.3.1.1.5.1 +``` + +You should see a row like: + +```text +TRAP_REPORT_TYPE=trap +TRAP_JOB=local-test +TRAP_OID=1.3.6.1.6.3.1.1.5.1 +TRAP_NAME=SNMPv2-MIB::coldStart +TRAP_SOURCE_IP=127.0.0.1 +``` + +Look for `TRAP_OID=1.3.6.1.6.3.1.1.5.1` in the output. If present, the trap was stored locally. + +If your Netdata log directory is different, replace `/var/log/netdata` with the configured log directory. + +## What's next + +You proved that one known trap can reach Netdata, appear in Logs, and move the receiver pipeline. + +To understand the row you just found, continue to [Use SNMP trap data](/docs/snmp-traps/usage-and-output). For exact `TRAP_*` field definitions, use the [Field Reference](/docs/snmp-traps/field-reference). + +Before using this in production, go to [Configuration](/docs/snmp-traps/configuration) to harden the listener address, source allowlist, community or SNMPv3 settings, deduplication, retention, and output backends. diff --git a/docs/SNMP Traps/SNMP Trap Profile Format.mdx b/docs/SNMP Traps/SNMP Trap Profile Format.mdx new file mode 100644 index 0000000000..00a448206f --- /dev/null +++ b/docs/SNMP Traps/SNMP Trap Profile Format.mdx @@ -0,0 +1,774 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/config/go.d/snmp.trap-profiles/profile-format.md" +sidebar_label: "SNMP Trap Profile Format" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Reference for SNMP trap profile YAML, trap definitions, varbind metadata, rendering, and profile metric rules." +sidebar_position: "50" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/snmp-trap-profile-format" +slug: "/snmp-traps/snmp-trap-profile-format" +--- + + +# SNMP Trap Profile Format + +## Overview + +An **SNMP trap profile** defines _how a specific class of SNMP trap notifications is decoded, classified, and rendered_ by the Netdata SNMP trap subsystem. + +:::info + +Trap profiles are reusable and declarative — you never need to modify the +collector source code to support a new device or vendor. + +::: + +A profile tells the Netdata SNMP trap plugin: + +- which **trap OIDs** carry well-known notifications +- which **varbinds** ship with each trap (their OIDs, MIB types, value enums) +- how to **classify** each trap (category + severity) +- how to **render** each trap into a human-readable journal `MESSAGE` +- which optional **metrics** and charts can be derived from selected traps + +Trap profiles do **not** define journal field names manually. The plugin derives +indexed `TRAP_VAR_*` journal fields from received non-sensitive, non-redundant +event varbinds, and also keeps the complete structured audit copy in +`TRAP_JSON` (see the SNMP trap subsystem design doc). Profiles may define +optional trap-to-metric rules and chart definitions. Listener jobs still decide +whether to enable those rules through `profile_metrics`. + +A profile is a single YAML file. One file per vendor by convention; stock +profiles ship under `default/` and are organized by inferred enterprise-PEN +vendor (`ciscosystems.yaml`, `huawei-technology-co-ltd.yaml`, +`juniper-networks-inc.yaml`, …) plus the IETF-standard file (`standard.yaml`) +and the IEEE LLDP file (`ieee-lldp.yaml`). + +### How profiles are loaded + +The plugin reads stock profiles from the go.d stock config directory +`snmp.trap-profiles/default/` subdirectory (typically +`/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/`) and operator +profiles from the go.d user config directory `snmp.trap-profiles/` subdirectory +(typically `/etc/netdata/go.d/snmp.trap-profiles/`). Stock files are plain +`.yaml` in the source repository for reviewability; installed packages ship +them as `.yaml.zst`. The loader accepts `.yaml`, `.yml`, `.yaml.zst`, and +`.yml.zst`; draft-era `.yaml.gz` and `.yml.gz` files are also accepted as a +compatibility fallback. + +Profiles are loaded **only when the first runnable SNMP trap job is created** — +Netdata agents that do not receive traps never pay the memory footprint. + +Profile loading is shared across trap jobs: the first runnable job eagerly +loads operator profiles, validates stock profiles, builds a stock OID route +table, and later jobs reuse the same cache. Stock profile definitions are loaded +into memory only when the first matching trap OID needs that stock file. Failed +profile validation is a creation-time job failure surfaced to DynCfg; it does +not leave a permanently poisoned cache. If all trap jobs are removed, the cache +is released and the next trap job creation validates profiles again. + +## File layout + +```yaml +# Optional file-scope metadata +vendor: cisco +mib_count: 390 +trap_count: 1584 + +# File-scoped table of varbind metadata, name-keyed. +# Defined once per file; every trap below references entries by name. +varbinds: + ifIndex: + oid: 1.3.6.1.2.1.2.2.1.1 + type: INTEGER + ifAdminStatus: + oid: 1.3.6.1.2.1.2.2.1.7 + type: INTEGER + enum: + '1': up + '2': down + '3': testing + cospfConfigErrorType: + oid: 1.3.6.1.4.1.9.10.101.1.1.2 + type: INTEGER + enum: + '1': badVersion + '2': areaMismatch + '6': authFailure + # … + +# Trap definitions — each entry references varbinds by name. +traps: + - oid: 1.3.6.1.4.1.9.10.101.0.1 + name: CISCO-OSPF-TRAP-MIB::cospfIfConfigError # MIB-qualified, globally unique + category: state_change + severity: warning + description: | + OSPF configuration mismatch on {{hostname}} + local router ID: {{value "ospfRouterId"}} + interface IP: {{value "ospfIfIpAddress"}} + source of mismatched packet: {{value "cospfPacketSrc"}} + error type: {{value "cospfConfigErrorType"}} + packet type: {{value "cospfPacketType"}} + status: current + varbinds: + - ospfRouterId + - ospfIfIpAddress + - cospfPacketSrc + - cospfConfigErrorType + - cospfPacketType + +# Optional chart definitions for profile metric rules. +charts: + - id: ospf_config_errors + title: OSPF configuration errors + context: snmp.trap.ospf.config.errors + units: events/s + algorithm: incremental + +# Optional trap-to-metric rules. Jobs enable these with profile_metrics. +metrics: + - name: cisco.ospf.config_error + type: counter + auto_safe: true + on_trap: CISCO-OSPF-TRAP-MIB::cospfIfConfigError + output: + metric: snmp_trap_ospf_config_error_events + dimension: events + chart: ospf_config_errors +``` + +## Schema reference + +### File-level `varbinds:` table + +Name-keyed map of varbind metadata shared across every trap in the file. Each +entry is the slim shipping form of a single MIB object: + +| Field | Required | Type | Notes | +|---------------|----------|--------|-------| +| `oid` | yes | string | Numeric OID of the varbind | +| `type` | yes | string | MIB syntax (e.g., `INTEGER`, `OctetString`, `Counter32`, `IpAddress`, `DisplayString`, `ZeroBasedCounter32`) or a TEXTUAL-CONVENTION name from the source MIB | +| `enum` | no | map | Numeric-string → label for `INTEGER` enumerations | +| `constraints` | no | string | Size/range constraint expression (e.g., `SIZE(0..16)`, `(1..65535)`) | + +> **Future field**: a `display_hint` member (render hint such as `1x:` for MAC +> or `1d.1d.1d.1d` for IPv4) will be added when the plugin's renderer needs +> it. The current extractor keeps DISPLAY-HINT data in intermediate JSONL when +> `gomib` exposes it, but the stock profile emitter does not write +> `display_hint`; the field is reserved for the renderer work that will consume +> it. + +Plugin behaviour: varbinds that the plugin sees on a trap but cannot resolve +via the file table fall back to raw OID-keyed rendering — there is **no +runtime MIB compilation** in the plugin. Operators convert custom MIBs to +profile YAMLs offline with the installed helper +`/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen` and drop the generated +YAML files under `/etc/netdata/go.d/snmp.trap-profiles/`. The varbind still +lands in the `TRAP_JSON` journal field with its OID, ASN.1-decoded type, and +value. If it is not a sensitive or protocol-control varbind, the plugin also +emits an indexed `TRAP_VAR_OID_` journal field. + +### Duplicate symbolic name handling in `TRAP_JSON` and `TRAP_VAR_*` + +`TRAP_JSON` is an object keyed by varbind symbolic name. In the rare case +where two varbinds in a single trap share the same symbolic name (e.g. +two vendor MIBs each import a varbind that resolved to the same display +name), later entries use deterministic suffixes (`#2`, `#3`, ...) to avoid +duplicate JSON object keys. Example: + +```json +{ + "ifDescr": {"oid": "1.3.6.1.2.1.31.1.1.1.1", "type": "OctetString", "value": "Gi0/1"}, + "ifDescr#2": {"oid": "1.3.6.1.4.1.99.1.1", "type": "OctetString", "value": "Gi0/2"} +} +``` + +The first occurrence wins the symbolic name; subsequent duplicates use +suffixed keys. Profile authors should avoid this by giving the conflicting +varbinds distinct symbolic names in the file-scoped `varbinds:` table; the +fallback exists only for cases where no such authoring control is possible at +extraction time or where malformed senders repeat OIDs. + +Indexed journal fields use a separate collision-safe namespace. A received +symbolic varbind `ifOperStatus` emits `TRAP_VAR_IFOPERSTATUS`; if its value has +an enum label, the label is written to `TRAP_VAR_IFOPERSTATUS` and the numeric +value is written to `TRAP_VAR_IFOPERSTATUS_RAW`. Duplicate/sanitized field-name +collisions receive deterministic suffixes (`_2`, `_3`, ...). Protocol-control +varbinds that duplicate first-class fields (`sysUpTime.0`, `snmpTrapOID.0`, +`snmpTrapAddress.0`, `snmpTrapEnterprise.0`) are kept in `TRAP_JSON` but not +emitted as `TRAP_VAR_*`; the sensitive SNMP community varbind is omitted. +Generated field names are capped to journald's 64-byte field-name limit. Long +symbolic/OID-derived names keep a readable prefix plus a stable hash suffix; the +complete varbind identity stays in `TRAP_JSON`. + +Generator rule: a varbind record produced by the MIB extractor that does +NOT have both a resolvable `oid` AND a `type` (MIB syntax) is dropped at +emit time — it never enters the `varbinds:` table, and any reference to it +from a trap entry's `varbinds:` list is removed in lockstep. This keeps the +shipped pack free of dangling references; description templates can only +reference varbinds that survive to disk. + +### Optional `metrics:` rules and `charts:` + +Profiles may define trap-to-metric rules next to trap decode information. These +rules are inert until a listener job enables them with `profile_metrics`. + +Metric rules are merged through `extends:` by rule `name`; a child profile can +replace or disable an inherited rule by using the same name. Chart definitions +are merged by chart `id`. + +Custom profile files under `/etc/netdata/go.d/snmp.trap-profiles/` are loaded +eagerly. Stock trap profiles remain lazy when the loaded profile set has no +metric rules and no listener enables `profile_metrics`. When custom profile +metric rules exist, or when a listener enables `profile_metrics`, stock profiles +are loaded before rule selection so custom rules can validate references to +stock trap names before the first matching trap. + +Enable profile metrics in the listener job, not in the profile file: + +```yaml +profile_metrics: + enabled: true + mode: exact # none | auto | exact | combined + include: + - cisco.config.changed + identity: + device: source # source | source_label | listener + unresolved_source: source_label + source_id_privacy: hash + limits: + max_rules: 500 + max_sources: 2000 + max_resources_per_source: 512 + max_instances_per_job: 50000 + overflow: drop_and_count +``` + +Selection modes: + +- `profile_metrics.enabled` defaults to `false`; profile rules are inactive + until the job enables them. +- `none`: no profile metric rules are evaluated. +- `auto`: enable rules marked `auto_safe: true`. +- `exact`: enable only names listed in `profile_metrics.include`. +- `combined`: enable `auto_safe: true` rules plus names listed in `include`. + +`profile_metrics.include` is valid only with `mode: exact` or +`mode: combined`. It is rejected with `mode: none` or `mode: auto`, because it +would otherwise look configured while having no selection effect. + +Use `auto_safe: true` only for rules reviewed as bounded and safe for trap +hubs. A child profile rule with the same `name` fully replaces the inherited +rule; if an operator replacement sets `auto_safe: true`, the operator owns that +safety decision. + +Identity behavior: + +- `identity.device: source` emits device-attributable metrics under vnode host + scope when trap enrichment supplies an unambiguous `SourceVnodeID`. +- When no vnode is known, the metric is emitted under the listener job with + bounded `source_id` and `source_kind` labels. +- Ambiguous or conflicting vnode enrichment falls back to source-label metrics + and increments attribution diagnostics instead of creating or migrating vnode + metrics. +- Vnode-scoped profile metric series also include `source_id` and + `source_kind`; generated chart instances use the same label identity in both + vnode and fallback modes. +- `identity.device: source_label` always emits under the listener job with + bounded `source_id` and `source_kind` labels, even when vnode enrichment is + available. +- `identity.device: listener` is only for listener-owned rules that should merge + all source devices. +- `source_id_privacy: hash` hides raw source values behind a stable local hash + derived from the selected source value, job name, and local Agent identity. + Use `raw` only when source labels are acceptable in your environment. + Treat hashed `source_id` values as local listener identifiers, not portable + join keys across Agents, listeners, or reinstalls. + The local salt is read from `/etc/machine-id`, then + `/var/lib/dbus/machine-id`, then hostname, with a fixed last-resort fallback + only when no stable local identity is available. The emitted `source_id` is + truncated to 16 hex characters. +- `source_kind` is a closed label set: `vnode`, `listener`, + `trusted_trap_address`, `udp_peer`, `entry_source`, `hostname_or_ip`, + `trap_varbind`, `topology_ifindex`, `source`, or `other`. + +Cardinality behavior: + +- `limits.max_sources` caps non-listener source identities tracked by the job, + including vnode and fallback sources. +- `limits.max_resources_per_source` is the default per-source, per-resource-class + resource cap. +- `identity.resource.max_per_source` overrides the default for one rule's + resource class. +- `identity.resource.key_from_varbind` must reference an integer-like bounded + varbind (`INTEGER`, `Integer32`, `Unsigned32`, or `Gauge32`). String, MAC, + username, address, and payload-like fields are rejected as resource keys to + protect metric cardinality. + `Counter32`, `Counter64`, and `TimeTicks` are valid sample values, not + resource identity keys. +- `identity.resource.class` must be one of the stock classes `interface`, + `peer`, `neighbor`, `sensor`, `alarm`, `pool`, `l2_topology`, `component`, or + a site-specific lowercase class beginning with `site_`, such as + `site_foo_sensor`. +- `limits.max_instances_per_job` is the final job-level safety cap. +- `limits.overflow` currently supports `drop_and_count`: accepted traps are + still committed, but over-cap metric instances are skipped and diagnostics + increment. +- `charts.lifecycle.expire_after_cycles` counts go.d collection cycles, so + changing the listener job `update_every` changes its wall-clock expiry time. + State rule `state.ttl` uses wall-clock duration syntax and must be greater + than zero when set. +- Expired series are removed. If the same source/resource appears again later, + the next committed trap creates a fresh series; counter charts may show a + reset after idle expiry. +- All rules that share one chart must have the same label shape. Do not mix + resource and non-resource rules in one chart, and do not mix multiple + `identity.resource.class` values in one chart. + +Supported rule types: + +- `counter`: increments a counter when `on_trap` is committed. +- `sample`: reads a numeric varbind from `value_from_varbind` on `on_trap`. +- `state`: sets or clears a gauge using either `problem_trap`/`clear_trap` or + `on_trap` plus `state.set_when` and `state.clear_when`. + For same-OID state rules, `state.set_when` takes precedence when both + `state.set_when` and `state.clear_when` match the same trap. + +Canonical rule fields: + +| Field | Required | Notes | +|-------|----------|-------| +| `name` | yes | Stable rule identity, unique after profile merge | +| `enabled` | no | Defaults to enabled; set `false` in a child profile to disable an inherited rule | +| `type` | yes | `counter`, `sample`, or `state` | +| `auto_safe` | no | Allows `profile_metrics.mode: auto` to enable the rule | +| `on_trap` | yes for `counter`/`sample` | Trap name or numeric OID | +| `problem_trap` / `clear_trap` | yes for separate-trap `state` | Trap names or numeric OIDs | +| `where` | no | Predicate list or compact varbind map for filtering | +| `identity.resource` | no | Bounded resource identity, such as interface index | +| `value_from_varbind` | yes for `sample` | Symbolic varbind name; must be numeric | +| `scale.multiplier` / `scale.divisor` | no | Applied to `sample` values before emission | +| `missing` | no | `drop`, `zero`, `unknown_dimension`, or `error` | +| `output.metric` | no | Defaults to a deterministic `snmp_trap_*` name | +| `output.dimension` | no | Defaults to `events`, `value`, or `state` by rule type | +| `output.chart` | no | Chart ID; defaults from rule name | +| `state.set_when` / `state.clear_when` | yes for same-OID `state` | Predicate objects used with `on_trap`; `set_when` takes precedence if both match | +| `state.problem_value` / `state.clear_value` | no | State values; defaults are `1` and `0` | +| `state.ttl` | no | Positive duration after which state is cleared/expired during `Collect()` | +| `state.ttl_behavior` | no | Only `clear_and_expire` is supported | +| `chart_meta` | no | Inline chart definition for compact single-chart rules | + +Predicate behavior: + +- Multiple `where` predicates are ANDed. +- Predicates may reference one of the synthetic fields `category`, `severity`, + `trap_name`, or `trap_oid`. +- Varbind predicates must reference varbinds declared on every trap the rule can + process; typos fail profile validation instead of silently missing. +- Each predicate must include at least one condition operator: `equals`, `in`, + `exists`, `absent`, `greater_than`, `less_than`, or `range`. +- Compact map-form `where` is accepted for hand-authored rules, for example + `where: { ccmHistoryEventTerminalType: { in: [console, terminal] } }`. +- `equals` and `in` match enum labels when the referenced varbind has an enum. +- Numeric predicates support `greater_than`, `less_than`, and inclusive + two-value `range`; bounds must be finite numbers and `range` must have + exactly two values ordered with `lower \<= upper`. +- Non-finite runtime varbind values such as `NaN` or `Inf` do not match numeric + predicates and increment the rule-miss diagnostic. +- `exists` and `absent` match varbind presence. +- `not: true` negates a predicate only when the referenced varbind is present; + use `absent: true` to match missing varbinds. `not` cannot be combined with + `exists` or `absent`. + +Missing-value behavior: + +- `drop` skips the metric update and increments the rule-miss diagnostic. +- `zero` is supported only for `sample` rules when absence explicitly means + zero. It is not valid for `counter` or `state`; state rules must use explicit + set/clear predicates or trap pairs. +- `unknown_dimension` is supported only with `identity.resource`; it emits the + bounded resource ID `unknown`. +- `error` skips the metric update and increments the extraction-failure + diagnostic. + +Numeric sample behavior: + +- Accepted numeric source types are `INTEGER`, `Integer32`, `Unsigned32`, + `Gauge32`, `Counter32`, `Counter64`, and `TimeTicks`. +- `Counter32`, `Counter64`, and `TimeTicks` are accepted only for sample rules; + they are not valid `identity.resource.key_from_varbind` types. +- `TimeTicks` values are converted from hundredths of seconds to seconds before + `scale` is applied. +- `scale.multiplier` and `scale.divisor` are applied before the metric is + emitted. Use chart units and metric names that describe the scaled value. +- `Counter32` and `Counter64` trap varbinds are treated as absolute + trap-reported snapshots. They are not converted into rates from sparse trap + arrivals. + +Diagnostics are emitted as continuous receiver metrics on the +`snmp.trap.profile_metric_diagnostics` chart with these dimensions: + +- `rule_missed` +- `extraction_failed` +- `attribution_failed` +- `overflow_dropped` +- `source_transitions` + +Diagnostics are listener-scoped receiver metrics. They are not emitted under +per-device vnode scopes. `attribution_failed` includes cases where +`identity.unresolved_source: drop_metric_instance` refuses fallback source-label +emission. `overflow_dropped` is reserved for source, resource, chart, or job +cardinality caps. `source_transitions` counts when the same raw source maps to a +different metric identity, for example from fallback source labels to vnode +scope after enrichment starts resolving the device. + +Runtime ordering: + +- Profile metrics update only after the trap is successfully committed to the + authoritative output backend. When journal and OTLP are both enabled, journal + commitment is authoritative and OTLP failures are `otlp_export_failed` + export/source errors. When OTLP is the only output backend, OTLP export + failures are terminal write failures and also increment + `pipeline.write_failed` and source-attributed `source_pipeline.write_failed` + when the source is known. +- Dedup-suppressed traps and write-failed traps do not update profile metrics. +- Trap-derived samples and states are last-reported values. They are not + continuously polled measurements. + +Compact aliases are accepted for common hand-authored rules: + +- Compact aliases are for operator-authored profiles. Stock and generated + profile output should use canonical fields for reviewability. +- `metric`: alias for `output.metric` +- `dimension`: alias for `output.dimension` +- `chart_id`: alias for `output.chart` +- `value`: alias for `value_from_varbind` +- `resource.key`: alias for `identity.resource.key_from_varbind` +- `resource.max`: alias for `identity.resource.max_per_source` +- `state.varbind` plus `state.set` and `state.clear`: compact same-OID state + rule syntax. Both `set` and `clear` are required. + +Chart metadata defaults and validation: + +- `chart_meta.type` and `charts[].type` default to `line`. +- Supported chart types are `line`, `area`, `stacked`, and `heatmap`. +- `chart_meta.algorithm` and `charts[].algorithm` default to `incremental`. +- `sample` and `state` rule charts must use `algorithm: absolute`. +- `counter` rule charts must use `algorithm: incremental`. + +Example compact counter rule with inline chart metadata: + +```yaml +metrics: + - name: cisco.config.changed + type: counter + auto_safe: true + on_trap: CISCO-CONFIG-MAN-MIB::ccmCLIRunningConfigChanged + metric: snmp_trap_cisco_config_events + chart_id: cisco_config_changes + chart_meta: + title: Cisco configuration changes + context: snmp.trap.cisco.config.changes + units: events/s + algorithm: incremental +``` + +Example per-resource counter rule: + +```yaml +metrics: + - name: cisco.port_security.ifindex + type: counter + on_trap: CISCO-PORT-SECURITY-MIB::cpsSecureMacAddrViolation + resource: + class: interface + key: ifIndex + max: 48 + output: + metric: snmp_trap_cisco_port_security_violations + dimension: violations + chart: port_security_violations + +charts: + - id: port_security_violations + title: Port security violations + context: snmp.trap.cisco.port.security.violations + units: events/s + algorithm: incremental +``` + +Profile metric validation rejects: + +- unknown `metrics:` or `charts:` fields; +- duplicate rule names or chart IDs after merge; +- unknown traps or varbind references; +- sample rules that read non-numeric varbinds; +- negative `scale.multiplier` and non-positive `scale.divisor`; +- invalid predicate combinations such as `not` with `exists` or `absent`; +- metric names that collide with built-in SNMP trap metric prefixes; +- chart IDs or contexts that collide with built-in SNMP trap charts. +- chart algorithms other than `incremental` or `absolute`. + +Reserved metric name prefixes: + +- `snmp_trap_events_` +- `snmp_trap_severity_` +- `snmp_trap_errors_` +- `snmp_trap_dedup_` +- `snmp_trap_pipeline_` +- `snmp_trap_source_` +- `snmp_trap_sources_` +- `snmp_trap_metric_` +- `snmp_trap_profile_metrics_` + +Built-in source receiver metrics are automatic. Profile authors should not +recreate receiver pipeline health with profile rules; use profile metrics for +vendor or site semantics, such as trap-derived state, counters, and bounded +resource samples. + +### Trap entries (`traps:` list) + +Each list entry defines one trap notification. + +| Field | Required | Type | Notes | +|---------------|----------|---------|-------| +| `oid` | yes | string | Numeric OID of the trap. Use the canonical OID form produced by the source MIB/tooling; the receiver tolerates the SMIv1 / SMIv2 `.0.` trap-OID ambiguity described below. | +| `name` | yes | string | **MIB-qualified canonical form** `::` (e.g. `IF-MIB::linkDown`, `CISCO-CONFIG-MAN-MIB::ccmCLIRunningConfigChanged`). Globally unique — different OIDs MUST have different names. Mirrors the canonical SMI form produced by `snmptranslate`/`snmptrapd`/MIB browsers. The plugin writes this exact string to the `TRAP_NAME` journal field. | +| `category` | yes | string | One of the 8 canonical categories — see below | +| `severity` | yes | string | One of the 8 syslog severities — see below | +| `description` | rec. | string | Template rendered into the journal `MESSAGE` field | +| `status` | no | string | MIB status: `current`, `deprecated`, `mandatory`, `obsolete`, or `optional`; unknown values are profile validation errors | +| `varbinds` | no | list | Names referencing the file-level table, or inline dicts (see below) | +| `labels` | no | map | Operator-overridable: key → template producing a `TRAP_TAG_` journal field. Dynamic references must be bounded-cardinality. | +| `dedup_key_varbinds` | no | list | Names of varbinds that participate in the deduplication fingerprint; every name must resolve to the file-scoped `varbinds:` table | + +> Note: the `name:` field encodes the source MIB module already. There is no +> separate `mib:` field on a trap entry — that would be redundant. + +#### Trap OID `.0.` tolerance + +SMIv1 `TRAP-TYPE` notifications use the RFC 3584 `enterprise.0.specific` +notification OID form. SMIv2 `NOTIFICATION-TYPE` notifications often use +`parent.specific` without the inserted `.0.` segment. Some MIB conversion +tools can emit either form for the same trap family. + +The plugin matches trap profile entries exact-first. If exact lookup misses, it +tries one alternate trap OID by adding or removing a single `.0.` immediately +before the final OID arc. For example, a received +`1.3.6.1.4.1.14179.2.6.3.0.24` can match a profile `oid:` of +`1.3.6.1.4.1.14179.2.6.3.24`, and the reverse is also true. If both forms are +present as separate profile entries, the exact match wins. + +This tolerance applies only to trap OID lookup. + +Varbind OID resolution is exact-match-first. If a profile varbind OID does not +exactly match a received PDU varbind OID, it also matches received varbind OIDs +under `profile_oid + "."`. This covers SMI table cells such as `ifIndex.1` for +a profile column OID `ifIndex`, and scalar `.0` instances for profiles that use +the base scalar OID. When mapping a received PDU varbind OID back to profile +metadata, exact match wins; otherwise the longest matching profile varbind OID +prefix wins. The trap-OID `.0.` alternate spelling rule is not applied to +varbind OIDs. + +When deduplication includes configured `dedup_key_varbinds` and one of those +varbinds is absent from a received PDU, the fingerprint uses a missing-value +sentinel distinct from the empty string. Profile authors should list only +varbinds normally present on every PDU for that trap OID. + +#### Varbind references + +`varbinds:` on a trap entry is a list. Each element is either: + +- **a string** — the varbind name, resolved via the file-level `varbinds:` + table (the normal case for stock profiles), or +- **a dict** — a full inline `varbind` definition for varbinds that are + not in the table (operator additions, vendor-specific one-offs): + + ```yaml + varbinds: + - ifIndex # reference into the file table + - oid: 1.3.6.1.4.1.99.0.42 # inline definition + name: customIndex + type: Counter32 + ``` + +The order of `varbinds:` on a trap entry is not significant — the plugin +matches arriving varbinds by OID at runtime. + +#### Description template + +`description:` is a restricted Go `text/template` string substituted at render +time. Supported functions: + +| Reference | Resolved to | +|---|---| +| `{{hostname}}` | Resolved device hostname from enrichment, or source IP fallback; the writer does not perform DNS lookup | +| `{{source_ip}}` | Authoritative trap source address after trusted-relay handling | +| `{{trap_name}}` | The trap's symbolic name | +| `{{vendor}}` | Inferred device vendor slug | +| `{{trap_interface}}` | Topology-resolved interface, when topology is co-located | +| `{{trap_neighbors}}` | Topology-resolved upstream neighbours, when topology is co-located | +| `{{value "varbindName"}}` | Varbind value, formatted per its enum (and future `display_hint`) | +| `{{raw "varbindName"}}` | Varbind raw value (numeric for enums, undecoded bytes for OctetString) | +| `{{first ...}}` | First non-empty argument, for optional-varbind fallback | + +Supported control flow is limited to `{{with ...}}{{else}}{{end}}`, using the +same restricted function calls allowed for plain actions. +Known-but-absent varbinds render as an empty string, not ``, so use +`with` or `first` when optional context is included: + +```yaml +description: '{{with first (value "ifDescr") (value "ifName") (value "ifIndex")}}Interface {{.}} went down{{else}}Interface went down{{end}} on {{hostname}}.' +``` + +Unknown functions, unknown varbind names, malformed templates, variables, +assignments, `if`, `range`, arbitrary pipelines, and template inclusion actions +fail at profile load so configuration errors are visible at job creation time. + +If `description:` is absent the plugin renders the default template +`"{{trap_name}} on {{hostname}}."`. + +The rendered `MESSAGE` is capped at 512 bytes, including the ASCII `...` +truncation marker when truncation is needed. Multi-line MESSAGE values are +written using systemd-journal's binary field encoding so embedded newlines never +inject other journal fields. + +The `status` field is informational. The plugin does not filter, drop, or warn +on `deprecated` / `mandatory` / `obsolete` / `optional` traps. +Known `status` values are still validated so typos fail at profile load instead +of silently entering the shipped pack. + +### Categories — closed set + +`category` MUST be one of these 8 canonical slugs. Stock profiles use this set; +operator overrides cannot extend it. Cross-cutting concerns (compliance scope, +tenant, datacenter, change window…) are expressed as **labels**, not as new +categories. + +| Slug | Meaning | +|-----------------|---------| +| `state_change` | Interface/port state, system lifecycle, routing protocol state, environmental state transitions (`linkDown`, `coldStart`, BGP transitions, fan/PSU/temp) | +| `config_change` | Configuration change audit (`ccmCLIRunningConfigChanged` and analogues — who / what / when / from-where) | +| `security` | Security violations with per-event detail (port-security MAC violations, DHCP-snooping drops, DAI drops, ACL hits, IPS hits) | +| `auth` | Authentication events with source identity (`authenticationFailure` with source IP, user attempt) | +| `license` | License / compliance events (expired, violated, feature unlocked) | +| `mobility` | MAC mobility / topology events with the actor (`macAddressMoved`, STP `newRoot`) | +| `diagnostic` | Vendor diagnostic events with device-determined context (reboot reasons, module insertion, RAID array, optical transceiver) | +| `unknown` | No profile coverage — default for OIDs not in the catalogue, or vendor user-defined trap slots whose semantics are operator-determined | + +### Severities — closed set, mapped to syslog PRIORITY + +`severity` MUST be one of these 8 syslog levels. The plugin maps each to a +numeric `PRIORITY` field on the journal entry: + +| Slug | PRIORITY | Use it for | +|-----------|----------|------------| +| `emerg` | 0 | System is unusable — exceptional vendor catastrophe | +| `alert` | 1 | Action must be taken immediately | +| `crit` | 2 | Critical conditions: hardware failure, security breach in progress | +| `err` | 3 | Error conditions: failure, fault, denial | +| `warning` | 4 | Warning conditions: threshold breach, degradation, recoverable error | +| `notice` | 5 | Normal-but-significant: routine state changes, completed operations | +| `info` | 6 | Informational: status updates, periodic events | +| `debug` | 7 | Debug-level: rare; reserved for traps the MIB explicitly marks debug | + +## Cardinality discipline + +The trap subsystem enforces cardinality discipline at the metric / label +surface only — the journal (including the rendered MESSAGE) has no +cardinality restriction. See the trap subsystem design doc §4 for full +rationale. + +In profile terms: + +- `description:` and `varbinds:` references — **no restriction**. Free use of + any varbind including high-cardinality data (MAC, IP, username, packet + content). These land in MESSAGE, indexed `TRAP_VAR_*` journal fields, and + `TRAP_JSON` unless the varbind is sensitive or a protocol-control duplicate. +- `labels:` — **bounded-cardinality only**. Templates that reference + unbounded varbinds (MAC, IP, username) are rejected at profile load with + a clear error. Labels become `TRAP_TAG_=` journal fields and + propagate to metric labels. + +## Operator overrides + +Operators do not copy entire stock profiles to make changes. Instead they +place small override files under `/etc/netdata/go.d/snmp.trap-profiles/`. +The plugin loader mirrors the SNMP polling plugin's multipath pattern +(`src/go/plugin/go.d/collector/snmp/ddsnmp/load.go`): + +1. **Same filename in higher-priority directory replaces the lower-priority + one entirely.** Operator `ciscosystems.yaml` fully replaces stock + `ciscosystems.yaml` or installed `ciscosystems.yaml.zst` — copy + edit the + whole file to customize one vendor. +2. **Different filename adds entries.** Operator `site-additions.yaml` + (different filename) merges its `traps:` into the loaded set without + touching stock files. Metric-only site profiles can also use a different + filename and reference stock traps by MIB-qualified trap name in + `on_trap`, `problem_trap`, or `clear_trap`. +3. **`extends:` chain field-merge** (when an override profile lists + `extends: [_base.yaml, other-base.yaml]`): entries must be YAML filenames + only, not paths. The loader merges trap + entries by OID; fields specified in the override file win over fields + from the extended bases; later entries in `extends:` override earlier + ones for the same field. + +### `TRAP_TAG_*` label namespace and collision-free design + +Operator labels — `labels: { tenant: acme, oper_status: '{{value "ifOperStatus"}}' }` — +always emit as `TRAP_TAG_` journal fields (e.g. +`TRAP_TAG_TENANT=acme`, `TRAP_TAG_OPER_STATUS=down`). The +dedicated `TRAP_TAG_*` namespace structurally prevents collisions with +plugin-controlled `TRAP_*` fields, even when an operator label key +happens to match a plugin field name. For example, a profile with +`labels: { interface_state: '{{value "ifOperStatus"}}' }` and a co-located topology plugin +both populate journal fields, but in different namespaces: the operator +label becomes `TRAP_TAG_INTERFACE_STATE`, the topology field becomes +`TRAP_INTERFACE`. Both can co-exist on the same trap entry without +conflict. + +Dynamic label references must be bounded-cardinality at profile-load time. The +MVP accepts static strings, `TRAP_NAME`, `TRAP_DEVICE_VENDOR`, enum-backed +varbinds, booleans, and small numeric ranges. It rejects unbounded values such +as hostnames, source IPs, interface descriptions, MAC addresses, usernames, +packet contents, and raw numeric OID references without profile metadata. + +```yaml +# /etc/netdata/go.d/snmp.trap-profiles/site-additions.yaml +traps: + - oid: 1.3.6.1.4.1.9.9.43.2.0.1 # Cisco config change + labels: + compliance: pci + tenant: acme + change_window: business_hours +``` + +Per-OID metric extraction lives in profile `metrics:` and `charts:` sections. +Listener jobs only enable/select those profile rules and choose identity, +privacy, and cardinality limits through `profile_metrics`. + +## Generated stock profiles + +Stock profiles under `default/` are generated by +`src/go/cmd/snmptrapprofilegen`, shipped as +`/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen`, from public MIB sources +and an LLM classification step. The helper can also convert operator MIBs +offline: + +```sh +/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen generate \ + --source-dir ./mibs \ + --all \ + --out-dir ./snmp-trap-profile-gen-output +``` + +By default the helper reads the bundled IANA PEN snapshot from +`/usr/lib/netdata/conf.d/go.d/snmp.profiles/metadata/iana-enterprise-numbers.txt`. +Pass `--refresh-pen` to fetch the current IANA registry before emission. +The run also writes review artifacts under `--out-dir`: `traps.jsonl`, +`extraction-report.json`, `conflicts.json` for duplicate trap OIDs, and +`source-conflicts.json` when multiple MIB files define the same module name. + +Edits to files under `default/` are overwritten on regeneration; operator +modifications belong in the user override directory, not in stock files. diff --git a/docs/SNMP Traps/SNMP Traps.mdx b/docs/SNMP Traps/SNMP Traps.mdx new file mode 100644 index 0000000000..074f573c8d --- /dev/null +++ b/docs/SNMP Traps/SNMP Traps.mdx @@ -0,0 +1,82 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/README.md" +sidebar_label: "SNMP Traps" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Receive, decode, store, query, and forward SNMP Trap and INFORM events with the Netdata Agent." +sidebar_position: "120" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps" +slug: "/snmp-traps" +--- + + + + +# SNMP Traps + +Netdata listens for SNMP Trap and INFORM notifications from your network devices, decodes them into named, categorized, structured log entries, summarizes receiver activity as metrics, and can forward the same events to a SIEM or log system. + +This section is for NetOps, NOC, SRE, SecOps, and MSP operators who need to know which network events a device reported, whether the receiver is healthy, and when trap data should be queried or forwarded. + +## What trap data is + +An SNMP trap is an *asynchronous event notification*. A device sends one when it decides something happened — an interface changed state, an authentication failed, a configuration changed, a sensor crossed a threshold. It is one telemetry leg among several: traps and streaming telemetry carry events, polling confirms current state, syslog carries narrative, flow carries traffic. Traps are indispensable because every device supports them and they catch transient transitions that polling would miss between intervals. + +Three facts decide how you read every trap, and they are how trap monitoring works everywhere — not Netdata specifics: + +- **Traps are pushed, and they are lossy.** A device sends a trap once, over UDP, with no retransmit and no acknowledgement (INFORMs are the acknowledged exception). A trap that is dropped in transit, blocked by a firewall, or lost to a full buffer leaves no trace. So **silence is never proof of health** — see [What you cannot answer](#what-you-cannot-answer). +- **Most traps are noise.** The large majority of traps are low-severity informational events. The value is not in any single trap but in the *stream* — rates, repeats, clusters, and the ones you have never seen before. +- **Traps need a meaning layer.** Without a profile (a compiled MIB), a trap is an opaque numeric OID. Netdata's [trap profiles](/docs/snmp-traps/trap-profiles) are that layer: they turn OIDs into names, categories, severities, and labeled fields. + +## What you can answer + +- Did this device, listener, or site send traps — and which trap names, categories, and severities are active now? +- Which devices are reporting state changes, authentication failures, configuration changes, security, or license events? +- Is a surge mostly repeated duplicates, a rate-limited flap, decode errors, or many real distinct events? +- Is the receiver healthy, or is it dropping, suppressing, or failing to write traps? +- Are traps also reaching my SIEM when OTLP export is enabled? + +## What you cannot answer + +- **Is the device healthy because no traps arrived?** No. Silence is ambiguous: the device may be quiet, not configured to send traps, blocked by a firewall or allowlist, using the wrong credentials — or the receiver may be dropping. The trap path is independent of the device's data plane, and a hard-faulted device may never get to send a trap at all. **Pair every critical device with polling; traps are the ceiling, polling is the floor.** +- **Can traps replace polling metrics?** No. Traps are events, not a current-state stream. Use Netdata's metrics collectors for continuous device state. +- **Is high trap volume the same as a severe incident?** No. It can be a flap, a duplicate storm, or a retransmission pattern. Read the name, category, severity, source, and dedup before reacting. +- **Did an event definitely not happen?** Not from trap absence alone. Reachability, credentials, allowlists, and receiver health all gate delivery. + +If those are your questions, use traps together with polling, device configuration, and receiver health. + +## Two things to know on day one + +These two truths prevent the most common first-week mistakes. + +### Silence is not health + +Netdata does not create listener jobs or configure devices for you. You create a listener job, then point devices at it. Until you have confirmed the first trap arrived — and you are watching receiver metrics — a quiet receiver tells you nothing: it could be a quiet network, an unconfigured device, a blocked port, wrong credentials, or a broken receiver. Confirm first receipt before you trust silence. + +### Trap count is only the start + +A count tells you the receiver saw activity, not whether it matters. Use the resolved trap name, category, severity, source, and varbinds to understand meaning, then check dedup, drops, decode errors, and export errors to confirm the receiver handled the traffic cleanly. + +## What ships with the collector + +- **A listener** for SNMPv1, SNMPv2c, and SNMPv3 Trap and INFORM notifications, with USM authentication and privacy and SNMPv3 engine-ID controls. Netdata acknowledges every INFORM. +- **A trap profile catalogue** — 800+ stock vendor profiles covering 6,000+ MIBs — that decodes OIDs into names, categories, severities, and labeled varbinds out of the box. Per-OID overrides and custom profiles cover the rest. +- **Local journal storage** (default, Linux): structured trap entries you query with the Netdata Logs UI or `journalctl`. +- **Optional OTLP/gRPC export** to forward traps as log records to a SIEM or log pipeline. At least one output — journal or OTLP — must be enabled. +- **Receiver self-metrics and alerts**: a pipeline funnel, events by category and severity, processing errors, deduplication, and per-source health. +- **A closed taxonomy** of 8 categories (`state_change`, `config_change`, `security`, `auth`, `license`, `mobility`, `diagnostic`, `unknown`) and 8 severities (`emerg` … `debug`), so categories and severities mean the same thing across every device. + +Trap data can carry sensitive operational values (hostnames, locations, usernames, vendor text); treat it as sensitive when querying and forwarding. + +## Where to start + +Pick the page that matches your situation: + +- **You're setting up for the first time** — [Installation](/docs/snmp-traps/installation), then [Quick Start](/docs/snmp-traps/quick-start) to prove the first trap arrives, then [Configuration](/docs/snmp-traps/configuration) to harden the listener. +- **You want decoded traps to mean something** — [Trap Profiles](/docs/snmp-traps/trap-profiles) turn OIDs into names and severities, and [Enrichment](/docs/snmp-traps/enrichment) adds device, vendor, and topology context. +- **You have traps and need to find or triage one** — [Investigation Playbooks](/docs/snmp-traps/investigation-playbooks), then [Usage and Output](/docs/snmp-traps/usage-and-output) to read a row and the [Field Reference](/docs/snmp-traps/field-reference) to look up any field. +- **You want to trust what you see** — [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality), and avoid the common mistakes in [Anti-patterns](/docs/snmp-traps/anti-patterns). +- **You want to search or export trap data** — [Journal and Querying](/docs/snmp-traps/journal-and-querying). +- **You want to alert or forward** — [Alerts](/docs/snmp-traps/alerts) for receiver health, [Metrics](/docs/snmp-traps/metrics) for the signals they watch, and [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem) to send events downstream. +- **You're planning for scale** — [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning). +- **Something's wrong** — [Troubleshooting](/docs/snmp-traps/troubleshooting). diff --git a/docs/SNMP Traps/Sizing and Capacity Planning.mdx b/docs/SNMP Traps/Sizing and Capacity Planning.mdx new file mode 100644 index 0000000000..01564673d8 --- /dev/null +++ b/docs/SNMP Traps/Sizing and Capacity Planning.mdx @@ -0,0 +1,122 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/sizing-and-capacity.md" +sidebar_label: "Sizing and Capacity Planning" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Plan receiver capacity, output backends, retention, storm controls, profile metrics, source visibility, and validation." +sidebar_position: "130" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/sizing-and-capacity-planning" +slug: "/snmp-traps/sizing-and-capacity-planning" +--- + + + + +# Sizing and Capacity Planning + +A practical guide to where the trap receiver runs and how big it has to be. Read it before you point production devices at a listener. + +The number that matters: **size for the storm, not the average.** A failure that generates traps — a flapping core link, a spanning-tree reconvergence, a power or environmental cascade — produces 10–100× your steady-state trap rate, and it does so at exactly the moment you need every trap. A receiver sized for a quiet Tuesday goes blind during the outage it exists to catch. + +## What one listener is built for + +The trap receiver is designed to receive, decode, enrich, and store traps from **one site** — the routers, switches, and devices that send to one Netdata Agent. That is the unit you size. + +On a well-provisioned single Agent, the receiver sustains roughly **50,000 traps/s** to durable local storage. Treat that as a planning ceiling, not a guaranteed SLA — it moves with disk speed, packet size, SNMPv3 authentication, and host load. + +Decode is not the bottleneck — the receiver decodes traps far faster than it persists them. The limit is the **durable write path**, which appends each trap to the journal and flushes to disk once per second. That has two consequences: + +- **More CPU does not raise the ceiling.** The decode path has headroom to spare; the durable write path is the wall. +- **The way past the ceiling is more Agents, not a bigger box** — see [Distributed deployment](#distributed-deployment-is-the-scaling-answer). + +If your worst-case sustained rate stays at or below ~50,000 traps/s, you have headroom on one Agent. If it does not, plan distributed before you plan bigger iron. + +## Kernel UDP buffer drops + +Before a trap reaches the collector, it sits in the **kernel UDP receive buffer**. If that buffer fills faster than the receiver drains it, the kernel drops the datagram. The trap collector's `received` counter counts packets *after* the kernel buffer, so these kernel drops never appear in the receiver's own pipeline metrics — **but Netdata catches them at the system level.** The `ipv4.udperrors` chart records exactly these drops on its `RcvbufErrors` dimension, and Netdata ships the **`1m_ipv4_udp_receive_buffer_errors`** alert on it. (That alert is routed `to: silent` by default — it raises in the dashboard but sends no notification until you route it to a recipient.) + +So during a storm, watch `ipv4.udperrors` alongside the trap pipeline: if `RcvbufErrors` climbs while traps are flowing, the kernel buffer — not the collector — is your bottleneck. + +Two buffers are in play: + +- **Netdata's request:** `listen.receive_buffer` defaults to **4 MiB** per bound endpoint (max 256 MiB) — what the listener *asks* the kernel for. +- **The kernel's ceiling:** the OS grants no more than `net.core.rmem_max`, whose Linux default is ~208 KiB. The kernel silently caps the request at this value, so on an untuned host the 4 MiB request becomes ~208 KiB. + +Raise the kernel ceiling so the request can be honored, then size `listen.receive_buffer` for your burst: + +```bash +# Allow larger UDP receive buffers; persist in /etc/sysctl.d/. +sudo sysctl -w net.core.rmem_max=33554432 # 32 MiB +sudo sysctl -w net.core.netdev_max_backlog=5000 +``` + +A bigger buffer absorbs bursts but cannot fix sustained overload — for that, shed load with [storm controls](#storm-controls) or add Agents. + +## Distributed deployment is the scaling answer + +Aggregating every device's traps into one central receiver is rarely the right shape: you almost always investigate one site, one device, or one interface at a time, and a single receiver is both a bottleneck and a single point of failure. Netdata scales the other way — **one Agent per site (or per data center, or per branch), each its own SNMP hub**, federated by Netdata Cloud: + +- Each Agent's load is bounded by **one site's** trap rate, not the whole estate's. +- No single host is the bottleneck for receive, decode, storage, or query. +- Losing one Agent loses one site's local history, not everything. +- You don't pay the WAN cost of shipping every trap datagram to a central collector. + +Use a central relay only for sites too small to host their own Agent. + +## Storage and retention + +Local trap history is bounded by `retention.max_size` (default **10 GB per job**); when the journal reaches it, the oldest rows are evicted. Size that cap to your incident-review window, not to device count — a chatty 50-device site can outproduce a quiet 500-device one. + +Per-trap journal cost depends on varbind count and enrichment, so the reliable way to size disk is to **measure your own rate**: run representative traffic, then watch the on-disk growth of `/var/log/netdata/traps//` over a known trap count and extrapolate to your retention window. Put the journal directory on **NVMe** — the same disk that bounds throughput also serves your queries. + +A few fixed internal behaviors bound the write path; you cannot tune them and they need no action beyond watching `journal_write_failed`: + +- Under sustained overload, when the write path cannot keep up, traps are rejected and counted as `write_failed`. +- Traps are flushed to disk once per second. An abrupt power loss or OS crash can therefore lose up to the last second of traps; a clean `netdata` restart loses nothing. (Forwarded OTLP records have the same one-second-window caveat — keep that in mind when the journal is your only local copy.) +- Job creation fails if direct-journal storage is enabled and the Netdata log directory is missing or not writable. + +For the byte-unit details of `max_size` and rotation, see [Configuration](/docs/snmp-traps/configuration#direct-journal-retention). + +## Shipped limits and defaults + +Useful starting points and the fixed caps that bound capacity — not capacity promises. For the full configurable option list, see [Configuration](/docs/snmp-traps/configuration#option-map). + +| Limit / default | Value | What it bounds | +|---|---|---| +| `listen.receive_buffer` | 4 MiB / endpoint (max 256 MiB) | Requested UDP buffer; capped by `net.core.rmem_max` | +| Oversized packets | 8 KiB datagram, 256 varbinds | Larger PDUs become decode-error rows, not trap rows | +| `rate_limit.per_source_pps` | 1000 (when enabled) | Per-source trap rate before drop/sample | +| Rate-limiter source tracking | 10,000 sources / job (fixed) | Distinct source IPs tracked when rate limiting | +| `dedup.window_sec` / `cache_max_entries` | 5 s / 100,000 (when enabled) | Dedup window and distinct fingerprints / job | +| `dynamic_engine_id_max_pairs` | 4096 / job | SNMPv3 `(engineID, username)` pairs under dynamic discovery | +| `retention.max_size` | 10 GB / job | Local journal disk before oldest rows are evicted | +| Receiver per-source charts | 2000 sources / job (fixed) | Per-source visibility; excess counted as `overflow_dropped` | +| `profile_metrics.limits.max_instances_per_job` | 50,000 | Profile-derived metric series / job | + +Profile-defined metrics stay **disabled by default** and are the main cardinality risk — a rule with an unbounded label can create uncontrolled series. Enable selected rules only, and keep the caps as guardrails; for the cardinality model and limits see [Configuration](/docs/snmp-traps/configuration#profile-metrics). + +## Storm controls + +Storm controls trade completeness for survival, per source: + +- **Rate limiting** (`rate_limit`, off by default) drops or samples a source above `per_source_pps`. Rate-limit the **storming source only** — never globally disable `linkUp`/`linkDown`, because a flap is a leading indicator of failing hardware. +- **Deduplication** (`dedup`, off by default) summarizes repeated matching traps inside a window. Add `dedup.key_varbinds` (for example `ifIndex`) when one trap OID covers distinct resources, so a line-card failure on 48 ports is not collapsed into one suppressed row. + +For how each control reads out in the receiver counters, see [Metrics](/docs/snmp-traps/metrics#receiver-pipeline). + +## Validate before you trust it + +A receiver that has never been load-tested will fail during the next major outage. Before pointing production devices at it: + +1. Build a lab job that matches the production config. +2. Replay representative traffic **at 10× your steady-state rate** for ~30 minutes — normal flow, maintenance bursts, relay behavior, SNMPv3 if used, unknown OIDs, and repeated traps. +3. Require: **no `dropped`/`write_failed` growth, no climbing `RcvbufErrors`, and host CPU/disk below saturation.** If any fails, tune buffers, shed load, or move to distributed before go-live. + +For the full quality checklist, see [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## What's next + +- [Configuration](/docs/snmp-traps/configuration) — buffer, retention, storm-control, and OTLP options. +- [Metrics](/docs/snmp-traps/metrics) — the receiver counters to watch during a storm. +- [Alerts](/docs/snmp-traps/alerts) — the default storm and dedup alerts, plus the kernel UDP buffer-drop alert. +- [Troubleshooting](/docs/snmp-traps/troubleshooting) — missing traps, silent loss, and backend failures. diff --git a/docs/SNMP Traps/Trap Profiles.mdx b/docs/SNMP Traps/Trap Profiles.mdx new file mode 100644 index 0000000000..a8d66aad55 --- /dev/null +++ b/docs/SNMP Traps/Trap Profiles.mdx @@ -0,0 +1,194 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/trap-profiles.md" +sidebar_label: "Trap Profiles" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Understand stock trap coverage, custom profiles, overrides, MIB conversion, and profile-defined metrics." +sidebar_position: "40" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/trap-profiles" +slug: "/snmp-traps/trap-profiles" +--- + + + + +# Trap Profiles + +Trap profiles are the meaning layer for SNMP traps. They tell Netdata how to turn a raw trap OID into useful log fields, tags, messages, and optional metrics. + +Use this page when you need to understand why a trap has a specific name, category, severity, message, tag, or profile-derived chart when profile metrics are enabled. For listener setup and hardening, see [Configuration](/docs/snmp-traps/configuration). + +## What profiles do + +An SNMP trap packet carries a numeric trap OID and a set of varbinds. A trap profile maps that data to operator-friendly output: + +- `TRAP_OID`: the numeric trap OID used to match the loaded profile entry. +- `TRAP_NAME`: the MIB-qualified trap name, such as `SNMPv2-MIB::coldStart`. +- `TRAP_CATEGORY`: one of Netdata's trap categories, such as `state_change`, `config_change`, `security`, or `unknown`. +- `TRAP_SEVERITY`: one of the syslog severity slugs, such as `warning`, `notice`, or `crit`. +- `MESSAGE`: the human-readable trap message rendered from the profile description. +- `TRAP_TAG_*`: profile-defined or override-defined labels that are safe to index and filter. +- `TRAP_VAR_*` and `TRAP_JSON`: decoded varbind fields and the structured varbind payload. +- Profile-defined metrics and charts, when loaded profiles define metric rules and the listener job enables selected rules. + +There is no separate `TRAP_MESSAGE` journal field. The profile-rendered message is written to the standard journal `MESSAGE` field. + +Profiles also define varbind metadata, including symbolic names, OIDs, types, and enum labels. For enum-backed varbinds, `TRAP_VAR_*` shows the readable enum label in Logs and a sibling `TRAP_VAR_*_RAW` field keeps the original numeric value. + +## What ships + +Netdata ships with a stock trap profile pack covering **800+ vendors**, **6,000+ MIBs**, and **150,000+ trap definitions**. These profiles cover many common network devices without manual MIB work. + +Stock profiles provide: + +- Numeric trap OID to `TRAP_NAME` mapping. +- Closed-set `TRAP_CATEGORY` and `TRAP_SEVERITY` values. +- Human-readable `MESSAGE` templates. +- Varbind names, types, and enum labels. + +The current stock pack provides trap decoding coverage. It does not ship profile metric rules or chart definitions, so profile-derived charts require operator profile files that define `metrics:` and `charts:` rules. + +The category set is fixed: `state_change`, `config_change`, `security`, `auth`, `license`, `mobility`, `diagnostic`, and `unknown`. + +The severity set is fixed: `emerg`, `alert`, `crit`, `err`, `warning`, `notice`, `info`, and `debug`. Netdata maps these to the journal `PRIORITY` field. + +## Unknown OIDs + +An unknown OID is not the same as broken ingestion. + +When Netdata receives and accepts a trap whose OID is not in the loaded profile set: + +- the trap is still stored or exported if the configured output backend succeeds; +- `TRAP_OID` keeps the numeric trap OID; +- `TRAP_CATEGORY` is `unknown`; +- `TRAP_SEVERITY` is `notice`; +- `MESSAGE` uses a plain fallback form that includes the OID and source; +- profile-derived names, labels, descriptions, and metrics are not added. + +Use unknown OIDs as a coverage signal. If the device is sending a valid trap that your operators need to recognize, add an operator profile file or convert the vendor MIBs into a profile. + +Profile lookup tries the exact trap OID first, then tries a single `.0.` insertion or removal around the last arc to handle SMIv1 and SMIv2 trap OID form differences. For example, `1.3.6.1.4.1.14179.2.6.3.24` and `1.3.6.1.4.1.14179.2.6.3.0.24` resolve to the same profile entry. `TRAP_OID` still shows the OID sent by the device. + +## Profile locations + +| Path | Purpose | +|---|---| +| `/etc/netdata/go.d/snmp.trap-profiles/` | Operator profile files and profile metric rules. Edits here survive package upgrades. | +| `/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/` | Stock trap profiles shipped with Netdata. Reference only. | + +Depending on installation type, paths may be prefixed with `/opt/netdata`. + +Operator profiles should normally stay as editable `.yaml` or `.yml` files. Stock profiles are reference-only; they are not the place for site-specific edits, and package updates can replace them. + +For the profile YAML schema, see [SNMP Trap Profile Format](/docs/snmp-traps/snmp-trap-profile-format). + +## Custom MIB conversion + +Netdata does not compile ASN.1 MIB files while traps arrive. Runtime trap decoding uses loaded YAML profiles. + +If you have vendor MIBs that are not covered by the stock pack, convert them offline with the installed helper: + +```sh +/usr/libexec/netdata/plugins.d/snmp-trap-profile-gen generate \ + --source-dir ./mibs \ + --all \ + --out-dir ./snmp-trap-profile-gen-output +``` + +The helper writes generated profile YAML files under: + +```text +./snmp-trap-profile-gen-output/profiles/ +``` + +Copy the needed YAML files into: + +```text +/etc/netdata/go.d/snmp.trap-profiles/ +``` + +Then confirm the next matching trap resolves to the expected `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `MESSAGE`, and `TRAP_VAR_*` fields in Logs. Generated profiles should be reviewed before use; add or adjust `metrics:` and `charts:` sections only when you intentionally want profile-derived metrics. + +## Per-OID overrides vs profile files + +Use the smallest control that matches the job. + +| Need | Use | Why | +|---|---|---| +| Change category, severity, or labels for one already known OID | `overrides` in `go.d/snmp_traps.conf` | It adjusts loaded profile output without copying profile files. | +| Add a name, message, varbind definitions, or metric rules for an unknown OID | Operator profile file | Overrides do not create a new trap definition. | +| Add many OIDs from a vendor MIB | Custom MIB conversion | It generates profile YAML from the MIB source instead of hand-writing every trap. | +| Replace stock behavior for one vendor file | Operator profile with the same filename | The operator file fully replaces the stock file of the same name. | +| Add site-specific traps without replacing stock vendor files | Operator profile with a different filename; use `extends:` when the file should inherit an existing profile | It adds entries alongside the stock profile set without copying the whole stock vendor file. | + +`extends:` entries are bare `.yaml` or `.yml` filenames without path separators. Netdata resolves them across the operator and stock profile directories, operator files first. They can inherit traps, varbinds, metric rules, and chart definitions from another visible profile file, and fields in the extending file win where they overlap. Deeply nested or circular `extends:` chains are rejected at profile load time. + +For simple policy overrides, configure the listener job: + +```yaml +overrides: + - oid: 1.3.6.1.4.1.9.9.43.2.0.1 + category: config_change + severity: notice + labels: + change_window: business_hours +``` + +Label keys become `TRAP_TAG_` fields. For example, `change_window` becomes `TRAP_TAG_CHANGE_WINDOW`. Label keys must start with a lowercase letter and then use only lowercase letters, digits, and underscores. + +Job overrides use static label values. Profile-file labels can also use templates, but templated label values must come from bounded sources such as enum-backed varbinds, booleans, small numeric ranges, `TRAP_NAME`, or `TRAP_DEVICE_VENDOR`; unbounded values such as source IPs, hostnames, interface descriptions, MAC addresses, usernames, packet contents, and free-form descriptions are rejected at profile load time. + +## Profile reload behavior + +- While a listener job is running, edits to operator profiles under `/etc/netdata/go.d/snmp.trap-profiles/` are picked up automatically. +- If a changed operator profile is invalid, the failure is logged and the last valid profiles stay active. +- Stock profile updates apply after the Netdata Agent restarts. +- If no listener job is active, the next listener job creation loads and validates the profile files. + +Profile validation failures are visible as collector errors and profile-load-failure metrics. After editing profiles, check Logs and receiver metrics before assuming a change is active; see [Metrics](/docs/snmp-traps/metrics) for the receiver diagnostics. + +## Verify profile changes + +After adding or changing an operator profile: + +- Check the Netdata Agent logs for profile reload messages or profile validation errors. +- Check the `profile_load_failed`, `unknown_oid`, and `template_unresolved` dimensions in the SNMP trap processing errors chart. +- Send or wait for a matching trap, then confirm the expected `TRAP_NAME`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `MESSAGE`, `TRAP_VAR_*`, and `TRAP_TAG_*` fields in Logs. +- If `profile_metrics.include` names a missing rule, the listener job fails validation with `profile_metrics.include rule "" not found`. If the rule exists but is disabled in the profile, validation fails with `profile_metrics.include rule "" is disabled by profile`. Fix the rule name, select another rule, or enable the intended rule in the loaded operator profile. + +For field-level query details, see [Usage and Output](/docs/snmp-traps/usage-and-output) and [Field Reference](/docs/snmp-traps/field-reference). + +## Profile-defined metrics and cardinality + +Profiles can define optional trap-to-metric rules and chart definitions. Listener jobs decide whether to evaluate those rules with `profile_metrics`. + +Profile metrics are disabled by default, and the current stock pack does not ship metric rules. To create profile-derived charts today: + +1. Add `metrics:` and `charts:` rules to an operator profile file under `/etc/netdata/go.d/snmp.trap-profiles/`. +2. Wait for the automatic reload if a listener job is already running, or start a listener job to load the profile files. +3. Enable `profile_metrics` in the listener job and select the loaded rule names. + +Rule names in `include` come from metric rule `name` fields in loaded profile YAML files. If no loaded profile defines metric rules, enabling `profile_metrics` creates no profile-derived charts. + +The listener-side `profile_metrics` settings — selection `mode`, `include`, the identity controls, and the cardinality `limits` — are documented in [Configuration](/docs/snmp-traps/configuration#profile-metrics). Rule and chart syntax live in [SNMP Trap Profile Format](/docs/snmp-traps/snmp-trap-profile-format). + +Use profile metrics for bounded, operator-useful trap signals, such as: + +- counting committed configuration change traps; +- tracking trap-derived state where the profile defines a clear problem and clear condition; +- sampling numeric varbind values from traps when the varbind type is supported. + +Do not use high-cardinality values as metric labels or resource identities. Avoid MAC addresses, source IPs, usernames, interface descriptions, packet contents, event IDs, and other per-event values as labels. Put those values in `MESSAGE`, `TRAP_VAR_*`, and `TRAP_JSON` instead. + +Only committed traps update profile metrics. For the exact update rule (dedup-suppressed and failed-write traps do not update metrics, and an OTLP export failure does not roll back an already-updated metric), see [Metrics](/docs/snmp-traps/metrics#profile-defined-metrics). + +If metric rules exceed source, resource, chart, or job limits, Netdata skips the over-cap metric instance, keeps accepting traps, and increments profile metric diagnostics. + +For full metric rule syntax, validation rules, and examples, see [SNMP Trap Profile Format](/docs/snmp-traps/snmp-trap-profile-format). + +## Next steps + +- To configure listener jobs, overrides, outputs, and `profile_metrics`, see [Configuration](/docs/snmp-traps/configuration). +- To query received traps and read profile-enriched output, see [Usage and Output](/docs/snmp-traps/usage-and-output). +- To understand source identity, relay handling, and device context, see [Enrichment](/docs/snmp-traps/enrichment). +- To understand every emitted trap field, see [Field Reference](/docs/snmp-traps/field-reference). diff --git a/docs/SNMP Traps/Troubleshooting.mdx b/docs/SNMP Traps/Troubleshooting.mdx new file mode 100644 index 0000000000..37063b4709 --- /dev/null +++ b/docs/SNMP Traps/Troubleshooting.mdx @@ -0,0 +1,445 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/troubleshooting.md" +sidebar_label: "Troubleshooting" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Diagnose missing rows, inactive listeners, UDP delivery, allowlist drops, SNMPv3 failures, profile issues, backend failures, and retention problems." +sidebar_position: "170" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/troubleshooting" +slug: "/snmp-traps/troubleshooting" +--- + + + + +# Troubleshooting + +Use this page when traps do not appear, appear with unexpected fields, or stop reaching the backend you rely on. Jump straight to the section that matches what you see: + +- [No traps arriving / `received` flatlined](#no-traps-arriving) +- [Thousands of identical traps, or fewer rows than packets](#rate-limiting-or-deduplication-surprise) +- [v3 silent but v2c works](#snmpv3-auth-privacy-usm-or-engine-id-mismatch) +- [Numeric OIDs / `unknown` category](#unknown-oids-profile-load-failures-or-template-issues) +- [No local rows, or backend write failures](#journal-write-failures-or-no-local-trap-log-source) + +Start with receiver metrics, then inspect rows, configuration, and packet delivery. Deep packet or device debugging comes last, because the receiver pipeline usually tells you where the packet stopped. + +## First decision: where did the pipeline stop? + +Open Netdata Metrics or Charts and search for **SNMP trap receiver pipeline** or `snmp.trap.pipeline`. Select the affected listener job, then walk the funnel from the top — the first dimension that stops rising is where to look: + +```mermaid +flowchart TD + S(["snmp.trap.pipeline
for the affected job"]) --> Q1{"received rising?"} + Q1 -->|no| K["ipv4.udperrors RcvbufErrors,
listener bound, port, firewall, device"] + Q1 -->|yes| Q2{"decoded rising?"} + Q2 -->|no| V["pre-decode rejects:
allowlist, version, auth, malformed"] + Q2 -->|yes| Q3{"accepted rising?"} + Q3 -->|no| P["post-decode policy:
community, engine-id, rate-limit"] + Q3 -->|yes| Q4{"committed rising?"} + Q4 -->|no| B["backend: dedup_suppressed,
journal/OTLP health, write_failed"] + Q4 -->|yes| OK["pipeline healthy —
inspect rows and enrichment"] +``` + +The table below details each branch: + +| If this is happening | First place to look | Likely area | +|---|---|---| +| `received` is flat or flatlined under load | `ipv4.udperrors` (`RcvbufErrors`) **first**, then listener job, bind address, port, device destination, network path | No packets are entering the trap handler. | +| `received` rises but `decoded` is flat | `snmp.trap.errors`, decode-error rows, SNMP version, community, SNMPv3 settings | Packets arrived but did not decode as allowed traps. | +| `decoded` rises but `accepted` is flat | `dropped_allowlist`, `rate_limited`, `unknown_engine_id`, source policy, SNMP version/community, SNMPv3 engine ID, rate-limit settings | Packets decoded but did not become accepted trap entries. | +| `accepted` rises but `committed` is flat | `dedup_suppressed`, `write_failed`, `journal_write_failed`, `otlp_export_failed`, deduplication settings, output backend health | Entries were accepted but not written or exported as normal rows. | +| `dedup_suppressed` rises | Deduplication summary rows and `dedup` configuration | Repeated traps are intentionally summarized. | +| `write_failed` rises | Direct journal or OTLP backend health | The configured output backend is failing. | + +Use the **SNMP trap processing errors** chart, `snmp.trap.errors`, next. For the full dimension list and what each one means, see [Metrics](/docs/snmp-traps/metrics#processing-errors). + +Some dimensions are diagnostic, not pipeline blockers. `inform_response_failed` means Netdata could not send an INFORM acknowledgement, but the trap can still continue through the receiver. `binary_encoded` means journal fields were encoded safely for storage; it does not by itself mean packet loss. `listener_read_failed` means the listener socket returned a read error. + +## Reading trap rows with journalctl \{#reading-rows} + +Every per-symptom check below reads the affected job's journal. The canonical command is the same each time — only the filter changes: + +```bash +sudo journalctl --directory=/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id) \ + --since "2 hours ago" --no-pager +``` + +Replace `` with your listener job name (examples below use `edge-traps`). To narrow to a row type or field, add a `FIELD=value` match before the flags — for example `TRAP_REPORT_TYPE=decode_error` — and optionally `--output=json-pretty --output-fields=...` to project specific fields. The sections below show only the filter to add. + +## No traps arriving / no rows visible \{#no-traps-arriving} + +You expected trap rows and see none. + +1. Confirm the expected output backend. Direct-journal jobs create local files and appear in the `snmp:traps` Function; OTLP-only jobs do not — query the OTLP receiver instead. +2. Check the pipeline. If `received` is flat, go to [Listener or job not active](#listener-or-job-not-active) and [UDP packets are not reaching Netdata](#udp-packets-are-not-reaching-netdata). If `received` rises, check `snmp.trap.errors` before changing device configuration. +3. Check whether rows exist for the job using the [canonical command](#reading-rows). Add `TRAP_REPORT_TYPE=trap` to see only normal traps, or `TRAP_REPORT_TYPE=decode_error` (with the decode-error field projection below) to see packets that arrived but could not be decoded: + +```bash +... TRAP_REPORT_TYPE=decode_error --since "2 hours ago" --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_DECODE_ERROR_KIND,TRAP_DECODE_ERROR,TRAP_VERSION,TRAP_SOURCE_IP,TRAP_SOURCE_UDP_PEER,TRAP_PACKET_SIZE,TRAP_PACKET_SHA256,TRAP_LISTENER,TRAP_ENGINE_ID,TRAP_JSON --no-pager +``` + +See [Journal and Querying](/docs/snmp-traps/journal-and-querying) and [Field Reference](/docs/snmp-traps/field-reference). + +## Listener or job not active + +SNMP trap collection is explicit. The stock file is a commented template, so a listener is not active until an enabled `jobs:` entry exists in: + +```text +/etc/netdata/go.d/snmp_traps.conf +``` + +Depending on installation type, paths may be prefixed with `/opt/netdata`. + +Check: + +- The job exists under `jobs:`. +- The job name is stable and valid. +- `listen.endpoints` contains the local address and UDP port the devices send to. +- At least one output backend is enabled: `journal.enabled: true`, `otlp.enabled: true`, or both. +- Netdata was restarted after listener endpoint changes. + +Conservative checks: + +```bash +sudo systemctl status netdata --no-pager +``` + +```bash +sudo journalctl -u netdata \ + --since "30 minutes ago" \ + --no-pager +``` + +If the listener port is below `1024`, such as UDP `162`, the process needs permission to bind it. Netdata packages grant the needed capability to `go.d.plugin`. For listener configuration details, see [Configuration](/docs/snmp-traps/configuration). + +## UDP packets are not reaching Netdata + +This is the likely path when `received` is flat for the job. + +**Check `ipv4.udperrors` first.** The collector's `received` counter counts packets *after* the kernel UDP receive buffer, so datagrams the kernel drops never appear in the trap pipeline — traps can flatline while the device is still sending. Netdata's system-level `ipv4.udperrors` chart records these on its `RcvbufErrors` dimension (the `1m_ipv4_udp_receive_buffer_errors` alert watches it). If `RcvbufErrors` is climbing, the kernel buffer is your bottleneck, not the network; tune it as described in [Sizing and Capacity](/docs/snmp-traps/sizing-and-capacity-planning#kernel-udp-buffer-drops). + +Then check the receiving side: + +- The job is active. +- The configured address exists on the host. +- The configured port matches the device destination. +- Another process is not already bound to the same UDP address and port. +- Host firewall, network ACLs, routing, and NAT allow UDP delivery to the listener. + +Check local UDP listeners: + +```bash +sudo ss -ulnp | grep ':162' +``` + +If the job listens on a non-privileged test port, replace `162` with that port. + +Then check the sending side: + +- The device sends traps or informs to the Netdata host address. +- The device sends to the configured UDP port. +- Any relay forwards to the Netdata listener, not only to another trap receiver. +- Network devices between sender and receiver allow UDP in that direction. + +Do not start by changing communities or SNMPv3 keys when `received` is flat. Credential mismatches usually require packets to reach the receiver first. + +## Source allowlist drops + +`allowlist.source_cidrs` is checked against the UDP peer before the packet is parsed. If a relay forwards traps, the allowlist must include the relay UDP peer, not only the original device address carried inside the trap. + +Evidence: + +- `snmp.trap.errors` dimension `dropped_allowlist` +- `snmp.trap.pipeline` dimension `dropped` +- Job configuration under `allowlist.source_cidrs` + +Common causes: + +- The device or relay source IP is outside the configured CIDRs. +- A relay is expected, but only the original device subnet is allowlisted. +- NAT changes the UDP peer seen by Netdata. +- IPv4 and IPv6 source ranges are not both represented when needed. + +Fix the allowlist with the narrowest CIDRs that match the actual UDP peers: + +```yaml +allowlist: + source_cidrs: + - 192.0.2.0/24 + - 198.51.100.0/24 +``` + +For source controls, see [Configuration](/docs/snmp-traps/configuration). + +## SNMP version or community mismatch + +For SNMPv1 and SNMPv2c, check the configured versions and community allowlist without exposing the real community value. + +Evidence: + +- `received` rises while `decoded` is flat when Netdata can identify a disallowed version before full decode. +- `decoded` rises while `accepted` is flat when a decoded v1/v2c trap uses a version or community that the job does not allow. +- `snmp.trap.errors` has `dropped_allowlist`. +- Decode-error rows can include `TRAP_VERSION` when Netdata can safely read it from malformed or otherwise undecodable packets. + +Check: + +- `versions` includes the version the device sends, such as `v2c`. +- `communities` uses secret references or placeholders, not inline real values. +- An empty `communities: []` accepts all SNMPv1/v2c communities and should be used only when that is intentional. +- Device-side trap settings use the same version as the listener job. + +Safe example: + +```yaml +versions: + - v2c +communities: + - "${file:/run/secrets/snmp-trap-community}" +``` + +Do not paste real community strings into tickets, docs, shell history, or examples. + +## SNMPv3 auth, privacy, USM, or engine ID mismatch + +**Common cue: v3 is silent but v2c from the same device works.** When v2c traps arrive and v3 traps do not, the listener is reachable, so the problem is almost always SNMPv3-specific: a USM credential mismatch (username, auth/privacy protocol, or key) or an engine-ID mismatch. Read the receiver's own signals first — the `usm_failures` and `unknown_engine_id` error dimensions on `snmp.trap.errors`, and the decode-error rows (`TRAP_REPORT_TYPE=decode_error`) with `TRAP_DECODE_ERROR_KIND`, `TRAP_DECODE_ERROR`, and `TRAP_ENGINE_ID` — rather than reaching for external SNMP tools. + +**After a device reboot, v3 can reject for a while.** A reboot resets the sender's engine boots/time. If the receiver still has the pre-reboot engine time cached for that engine ID, time-window checks can reject otherwise-valid messages until the new engine state is learned, showing up as `usm_failures`. If v3 was working and started failing right after a known device restart, correlate with a `coldStart`/`warmStart` trap from the same source and allow the engine state to resynchronize before assuming a credential change. + +SNMPv3 failures usually show up as one of these error dimensions: + +- `auth_failures` +- `usm_failures` +- `unknown_engine_id` +- `decode_failed` + +Query decode errors for the affected job with the [canonical command](#reading-rows): + +```bash +... TRAP_REPORT_TYPE=decode_error --since "2 hours ago" --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_DECODE_ERROR_KIND,TRAP_VERSION,TRAP_SOURCE_IP,TRAP_SOURCE_UDP_PEER,TRAP_ENGINE_ID,TRAP_JSON --no-pager +``` + +Check: + +- `versions` includes `v3`. +- `usm_users[].username` matches the device. +- `auth_proto` and `priv_proto` match the device. +- `auth_key` and `priv_key` resolve from secret references and are not pasted inline. +- Static v3 jobs include the sender engine ID in `engine_id_whitelist`. +- Dynamic engine ID discovery has `dynamic_engine_id_discovery: true` and an empty `engine_id_whitelist`. +- Dynamic discovery cap, `dynamic_engine_id_max_pairs`, has not rejected new `(engineID, username)` pairs. +- SNMPv3 INFORM senders use the receiver-local engine ID expected by the device. + +`TRAP_ENGINE_ID` is not a password, but it is inventory data. Treat it as sensitive operational context. + +For SNMPv3 configuration, see [Configuration](/docs/snmp-traps/configuration). + +## Malformed or decode failures + +Malformed packets reached the listener but could not become normal trap rows. + +Evidence: + +- `snmp.trap.errors` dimensions `malformed_pdu` or `decode_failed` +- `TRAP_REPORT_TYPE=decode_error` +- `TRAP_DECODE_ERROR_KIND` +- `TRAP_PACKET_SIZE` +- `TRAP_PACKET_SHA256` +- `TRAP_LISTENER` + +Use the packet hash (`TRAP_PACKET_SHA256`) to group repeated bad packets without storing raw bytes. With the [canonical command](#reading-rows): + +```bash +... TRAP_REPORT_TYPE=decode_error --since "2 hours ago" --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,TRAP_DECODE_ERROR_KIND,TRAP_PACKET_SIZE,TRAP_PACKET_SHA256,TRAP_LISTENER,TRAP_SOURCE_IP,TRAP_SOURCE_UDP_PEER,TRAP_JSON --no-pager +``` + +Check: + +- The sender is using SNMP Trap or INFORM, not another UDP protocol. +- The trap version is one the job accepts. +- The sender firmware or relay is not truncating or corrupting packets. +- The packet source is expected and allowed. + +Raw packet captures can contain communities, engine IDs, hostnames, interface names, and device payload. Use them only under your local security process and do not share raw captures in public issues. + +## Unknown OIDs, profile load failures, or template issues + +Unknown OIDs are coverage signals, not always ingestion failures. A trap can be accepted and committed while still using `TRAP_CATEGORY=unknown`. + +Evidence: + +- `snmp.trap.errors` dimension `unknown_oid` +- Normal rows with `TRAP_OID` but missing or unexpected `TRAP_NAME` +- `TRAP_CATEGORY=unknown` +- `snmp.trap.errors` dimensions `profile_load_failed` or `template_unresolved` + +Check profile locations: + +```text +/etc/netdata/go.d/snmp.trap-profiles/ +/usr/lib/netdata/conf.d/go.d/snmp.trap-profiles/default/ +``` + +Depending on installation type, paths may be prefixed with `/opt/netdata`. + +Common causes: + +- The vendor trap OID is not covered by loaded profiles. +- A custom profile YAML file is invalid. +- A profile template references a varbind that is not present in the trap. +- An operator profile overrides a stock profile file unexpectedly. +- The job has not been recreated since stock profile updates were installed. + +For custom profile behavior and safe profile changes, see [Trap Profiles](/docs/snmp-traps/trap-profiles) and [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## Rate limiting or deduplication surprise + +Thousands of identical traps, or fewer rows than packets sent: rate limiting and deduplication intentionally change what appears as rows. + +- **Rate limiting evidence:** `snmp.trap.errors` `rate_limited`, `snmp.trap.pipeline` `dropped`, and job `rate_limit` config. +- **Deduplication evidence:** `snmp.trap.pipeline` `dedup_suppressed`, `snmp.trap.dedup_suppressed` `suppressed`, rows with `TRAP_REPORT_TYPE=deduplication_summary`, and fields `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`. + +Query dedup summaries with the [canonical command](#reading-rows): + +```bash +... TRAP_REPORT_TYPE=deduplication_summary --since "2 hours ago" --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_JOB,TRAP_SUPPRESSED_COUNT,TRAP_SUPPRESSED_FINGERPRINTS,TRAP_REPORT_PERIOD_SEC,TRAP_JSON --no-pager +``` + +Check: + +- `rate_limit.enabled` +- `rate_limit.mode`, especially `drop` versus `sample` +- `dedup.enabled` +- `dedup.window_sec` +- `dedup.key_varbinds` + +If operators expect every repeated PDU to appear as an individual row, deduplication is the first setting to check. Dedup-suppressed traps do not update profile-defined metrics. + +## Journal write failures or no local trap log source + +No local rows for a direct-journal job, or `write_failed` rising. Committed rows are written under the per-job root `/var/log/netdata/traps//` (or `${NETDATA_LOG_DIR}/traps//`); `journalctl --directory` reads the machine-id child of that root. + +**Evidence:** `snmp.trap.pipeline` `write_failed`, `snmp.trap.errors` `journal_write_failed`, a missing/unreadable journal directory, or no local trap log source for a direct-journal job. + +Check the job output mode first: + +- `journal.enabled: true` means local files should exist. +- `journal.enabled: false` with `otlp.enabled: true` means OTLP-only; no local source is expected. +- Disabling journal without enabling OTLP fails validation. + +Conservative checks — list the directory (`sudo ls -lh /var/log/netdata/traps/edge-traps`), read it with the [canonical command](#reading-rows), and confirm disk space (`df -h /var/log/netdata`). + +Common causes: + +- Disk is full or nearly full. +- The Netdata process cannot write the per-job directory. +- The configured log directory is on a read-only or unavailable filesystem. +- Retention or rotation removed older rows. +- The job is OTLP-only, so local journal files are intentionally absent. + +For journal querying and local source behavior, see [Journal and Querying](/docs/snmp-traps/journal-and-querying). + +## OTLP export failures + +OTLP export is optional and disabled by default. When enabled, failures show as: + +- `snmp.trap.errors` dimension `otlp_export_failed` +- `snmp.trap.pipeline` dimension `write_failed` when OTLP is the failing authoritative write path +- Missing records in the downstream OTLP receiver or log system + +In journal+OTLP jobs, secondary OTLP export failures raise `otlp_export_failed` but do not remove rows already accepted by the journal backend. In OTLP-only jobs, terminal OTLP failures raise `write_failed` with `otlp_export_failed`. + +Check: + +- `otlp.enabled` and `otlp.endpoint` +- TLS scheme: `https://` for TLS, `http://` or bare `host:port` for plaintext gRPC +- Secret references for `otlp.headers` +- The transport knobs (`request_timeout`, `flush_interval`, `batch_size`, `queue_capacity`) — see [Configuration](/docs/snmp-traps/configuration#otlpgrpc-export) +- Network path from the Netdata host to the collector, and downstream receiver logs and storage + +Safe example: + +```yaml +otlp: + enabled: true + endpoint: "https://otel-collector.example.net:4317" + headers: + authorization: "${file:/run/secrets/snmp-trap-otlp-authorization}" +``` + +If the job is OTLP-only, do not expect local trap rows in the `snmp:traps` Function. Query the downstream system. + +## Missing or surprising enrichment and source identity + +Use row fields before changing enrichment configuration. + +Start with `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `_HOSTNAME`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `TRAP_REVERSE_DNS`, `TRAP_ENRICHMENT`, and `ND_NIDL_NODE`. + +Compare selected source and UDP peer with the [canonical command](#reading-rows): + +```bash +... TRAP_SOURCE_IP=192.0.2.10 --since "2 hours ago" --output=json-pretty \ + --output-fields=__REALTIME_TIMESTAMP,MESSAGE,TRAP_SOURCE_IP,TRAP_SOURCE_UDP_PEER,_HOSTNAME,TRAP_DEVICE_VENDOR,TRAP_INTERFACE,TRAP_NEIGHBORS,TRAP_REVERSE_DNS,TRAP_ENRICHMENT --no-pager +``` + +Check: + +- Direct senders usually have the same `TRAP_SOURCE_IP` and `TRAP_SOURCE_UDP_PEER`. +- Relayed traps should show the relay as `TRAP_SOURCE_UDP_PEER`. +- Only peers in `source.trusted_relays` may make `snmpTrapAddress.0` become the selected source. +- `TRAP_REVERSE_DNS` is annotation only. It is not authoritative identity. +- `TRAP_ENRICHMENT` explains selected, rejected, missing, ambiguous, or skipped enrichment decisions. +- Source attribution metrics can show `ambiguous`, `failed`, `overflow_dropped`, and `source_transitions`. + +Keep `source.trusted_relays` narrow. A broad trusted-relay range lets senders on that path influence source attribution. + +For field meanings, see [Field Reference](/docs/snmp-traps/field-reference). For source validation workflow, see [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality). + +## Retention or disk pressure + +Retention applies only when `journal.enabled` is `true`. + +Check: + +- `retention.max_size` +- `retention.max_duration` +- `retention.rotation_size` +- `retention.rotation_duration` +- Disk free space for the Netdata log directory +- `journal_write_failed` +- Whether the time window you are querying is older than retained local files + +Conservative checks — confirm disk space (`df -h /var/log/netdata`), measure the job's footprint (`sudo du -sh /var/log/netdata/traps/edge-traps`), and read the window with the [canonical command](#reading-rows). + +Common causes: + +- Local retention evicted older trap files. +- Storm volume filled the retention budget faster than expected. +- Disk pressure caused direct journal writes to fail. +- The job was changed to OTLP-only, so local history is no longer written. + +Choose retention based on how long operators need local forensic access. If an external backend is the system of record, validate that backend before reducing local retention. + +## Safe troubleshooting rules + +- Do not paste real community strings, SNMPv3 auth keys, SNMPv3 privacy keys, OTLP headers, organization names, or public IPs that identify your environment into tickets or examples. +- Use placeholders for secrets. +- Use RFC 5737 example IPs such as `192.0.2.10`, `198.51.100.20`, and `203.0.113.5`. +- Review `TRAP_JSON`, `TRAP_ENRICHMENT`, `TRAP_VAR_*`, `TRAP_ENGINE_ID`, interface names, neighbor names, and hostnames before sharing output. +- Keep packet captures private and minimal. Raw packets can contain credentials or sensitive device payload. +- Prefer receiver counters and decoded fields before packet captures. + +## Related pages + +- [Configuration](/docs/snmp-traps/configuration) - Configure jobs, listeners, allowlists, SNMP versions, SNMPv3, outputs, retention, rate limiting, and deduplication. +- [Journal and Querying](/docs/snmp-traps/journal-and-querying) - Query direct-journal trap rows, decode errors, and dedup summaries. +- [Field Reference](/docs/snmp-traps/field-reference) - Check every emitted field and OTLP mapping. +- [Metrics](/docs/snmp-traps/metrics) - Interpret receiver pipeline, processing errors, dedup counters, and source metrics. +- [Alerts](/docs/snmp-traps/alerts) - Understand the default health alerts and how to route or silence them. +- [Validation and Data Quality](/docs/snmp-traps/validation-and-data-quality) - Validate source identity, profile coverage, output backends, and data handling. +- [Trap Profiles](/docs/snmp-traps/trap-profiles) - Understand unknown OIDs, profile reloads, template failures, overrides, and profile-derived fields. diff --git a/docs/SNMP Traps/Usage and Output.mdx b/docs/SNMP Traps/Usage and Output.mdx new file mode 100644 index 0000000000..dfcf511201 --- /dev/null +++ b/docs/SNMP Traps/Usage and Output.mdx @@ -0,0 +1,166 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/usage-and-output.md" +sidebar_label: "Usage and Output" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Read normal trap rows, decode errors, deduplication summaries, varbinds, tags, and payload fields." +sidebar_position: "70" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/usage-and-output" +slug: "/snmp-traps/usage-and-output" +--- + + + + +# Usage and Output + +Use this page when a trap row is already visible and you need to understand what happened. Start with the row type, then read the trap name, source, severity, category, message, varbinds, tags, and any summary or decode-error details. + +The fastest first pass is: + +1. Check `TRAP_REPORT_TYPE`. +2. For a normal trap, read `TRAP_NAME`, `TRAP_SOURCE_IP`, `TRAP_SEVERITY`, `TRAP_CATEGORY`, and `MESSAGE`. +3. Use `TRAP_VAR_*` fields for indexed varbinds. +4. Open `TRAP_JSON` when the row needs full non-sensitive varbind detail, duplicate varbind names, original OIDs, or packet sequence. + +## Where to read traps + +When the Agent is connected to Netdata Cloud, direct-journal jobs appear in **Logs** as **SNMP Trap Logs** through the Cloud-required `snmp:traps` Function. Choose the listener job from the source selector when you want one listener, or leave all sources selected when you want all direct-journal jobs on the node. + +You can also read direct-journal jobs with normal journal tooling. The per-job root is normally below `/var/log/netdata/traps//`; the effective `journalctl --directory` path is its machine-id child, such as `/var/log/netdata/traps//$(tr -d '-' < /etc/machine-id)`. Use [Journal and Querying](/docs/snmp-traps/journal-and-querying) for query examples. + +If a job is configured as OTLP-only, it does not create local journal files and does not appear as a local SNMP trap log source. Read those trap events in the OTLP receiver or downstream log system. + +## Report types + +Every trap output row has `TRAP_REPORT_TYPE`. Read that field first because the rest of the row depends on it. + +| `TRAP_REPORT_TYPE` | Meaning | First fields to inspect | +|---|---|---| +| `trap` | A decoded Trap or INFORM accepted by the listener and written to the configured output. | `TRAP_NAME`, `TRAP_OID`, `TRAP_SOURCE_IP`, `TRAP_SEVERITY`, `TRAP_CATEGORY`, `MESSAGE`, `TRAP_VAR_*`, `TRAP_JSON` | +| `decode_error` | A packet reached the decode-error path but could not become a normal trap row. | `TRAP_DECODE_ERROR_KIND`, `TRAP_DECODE_ERROR`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_PACKET_SIZE`, `TRAP_PACKET_SHA256` | +| `deduplication_summary` | Deduplication was enabled and repeated matching traps were suppressed during a summary period. | `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, `TRAP_JSON` | + +Drops that happen before the collector writes a row are visible in receiver metrics, not as trap rows. For drop and error counters, see [Metrics](/docs/snmp-traps/metrics). + +## Reading a normal trap row + +For `TRAP_REPORT_TYPE=trap`, read the row in this order, starting with the core triage fields: + +| Field | How to use it | +|---|---| +| `TRAP_NAME` | The resolved MIB-qualified trap name. If it is absent, use `TRAP_OID` and `TRAP_CATEGORY=unknown` to investigate profile coverage. | +| `TRAP_OID` | The numeric trap identifier. Use it when the name is unknown, when comparing device documentation, or when writing profile overrides. | +| `TRAP_SOURCE_IP` | The selected source device address after source attribution. This is the main source field for operator triage. | +| `TRAP_SEVERITY` | The profile or override severity. Use it to sort urgency, then confirm with the message and varbinds. | +| `TRAP_CATEGORY` | The profile or override category. Use it to group operational intent. | +| `MESSAGE` | The rendered human-readable trap description. It is the best quick summary, but the structured fields remain the reliable query surface. | + +After these, source/peer, host, version, PDU type, and the enrichment fields (`TRAP_SOURCE_UDP_PEER`, `_HOSTNAME`, `TRAP_VERSION`, `TRAP_PDU_TYPE`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `ND_NIDL_NODE`, `TRAP_REVERSE_DNS`, `TRAP_ENRICHMENT`, `PRIORITY`) refine the picture. For each field's meaning, source, type, and population rule, see [Field Reference](/docs/snmp-traps/field-reference). + +Severity and category come from trap profiles or operator overrides. They describe the trap meaning; they do not prove the current device state. For state questions, use traps together with polling metrics. + +### Worked example: an interface goes down + +A switch at `192.0.2.10` sends an `IF-MIB::linkDown` trap to the `edge-traps` listener. With the stock profile pack resolving the OID, the journal row looks like this: + +```text +TRAP_REPORT_TYPE=trap +TRAP_OID=1.3.6.1.6.3.1.1.5.3 +TRAP_NAME=IF-MIB::linkDown +TRAP_CATEGORY=state_change +TRAP_SEVERITY=warning +TRAP_SOURCE_IP=192.0.2.10 +TRAP_VAR_IFINDEX=2 +TRAP_VAR_IFADMINSTATUS=up +TRAP_VAR_IFADMINSTATUS_RAW=1 +TRAP_VAR_IFOPERSTATUS=down +TRAP_VAR_IFOPERSTATUS_RAW=2 +``` + +`TRAP_CATEGORY` and `TRAP_SEVERITY` are what the stock pack assigns to this OID; a per-OID override can change them. The enum varbinds carry a human label in the main field and the numeric device value in `_RAW`, so `ifOperStatus` reads `down` with `TRAP_VAR_IFOPERSTATUS_RAW=2`. + +Find it with the canonical journal query, filtering on the trap OID: + +```bash +sudo journalctl \ + --directory=/var/log/netdata/traps/edge-traps/$(tr -d '-' < /etc/machine-id) \ + --since "2 hours ago" \ + TRAP_OID=1.3.6.1.6.3.1.1.5.3 \ + --no-pager +``` + +On the receiver side, this one event increments the `state_change` dimension of `snmp.trap.events` and the `committed` stage of the pipeline funnel. + +## Varbinds and TRAP_JSON + +Varbinds are the event-specific data inside the trap. Netdata exposes them in two layers. + +| Surface | Use it for | +|---|---| +| `TRAP_VAR_*` | Fast field selection and filtering for non-sensitive, non-redundant event varbinds. | +| `TRAP_JSON` | The structured non-sensitive varbind payload, original varbind OIDs, types, values, enum labels, duplicate keys, and `netdata_packet_sequence`. | + +`TRAP_VAR_*` is intentionally not a full varbind dump: it skips redundant protocol-control varbinds (device uptime, trap OID, trap address, trap enterprise) and the sensitive community varbind. Use `TRAP_JSON` when you need the full non-sensitive structure. For the complete `TRAP_VAR_*` naming and skip rules, enum `_RAW` handling, and `TRAP_JSON` shape, see [Field Reference](/docs/snmp-traps/field-reference#varbind-fields). + +`TRAP_JSON` also includes `netdata_packet_sequence` when the packet sequence is available. This is a per-job receive counter. Use it for receiver-side ordering and troubleshooting; it is not a device timestamp. + +## Tags and profile labels + +Profiles and operator overrides can attach labels to a trap row. They appear as `TRAP_TAG_*` fields. + +Use tags to filter operational groupings that profiles or local overrides define, such as site class, compliance scope, device role, or change-window classification. Tags are separate from core fields like `TRAP_SOURCE_IP`, `TRAP_NAME`, `TRAP_SEVERITY`, and `TRAP_CATEGORY`. + +Tag keys are normalized to uppercase after the `TRAP_TAG_` prefix. If a tag key is long, the field name may be shortened. + +## Dedup summaries + +When deduplication is enabled, the first matching trap is written normally. Later matching traps inside the dedup window are suppressed and counted. Netdata then writes a summary row with `TRAP_REPORT_TYPE=deduplication_summary`. + +Read these fields: + +| Field | Meaning | +|---|---| +| `TRAP_SUPPRESSED_COUNT` | Total duplicate trap events suppressed during the summary period. | +| `TRAP_SUPPRESSED_FINGERPRINTS` | Number of distinct dedup fingerprints that had suppressed events. | +| `TRAP_REPORT_PERIOD_SEC` | Length of the summary period in seconds. | +| `MESSAGE` | Human-readable summary, including per-trap counts when available. | +| `TRAP_JSON` | Structured summary with total suppressed count, period, fingerprint count, and counts by trap OID. | + +A dedup summary is not a normal trap from one device. It is a job-level summary row for suppressed duplicates. If you expected every repeated PDU to appear as an individual row, check whether deduplication is enabled for that listener job. + +## Decode errors + +Decode-error rows use `TRAP_REPORT_TYPE=decode_error`. They help you investigate packets that reached the decode-error path but could not be written as normal trap rows. + +Read these first: + +| Field | Meaning | +|---|---| +| `TRAP_DECODE_ERROR_KIND` | Bounded failure class: `malformed_pdu`, `auth_failures`, `usm_failures`, `unknown_engine_id`, or `decode_failed`. | +| `TRAP_DECODE_ERROR` | Sanitized decoder error text. It is shortened and cleaned before storage. | +| `TRAP_SOURCE_IP` | Source address available for the failed packet. | +| `TRAP_PACKET_SHA256` | Packet fingerprint for comparing repeated bad packets without storing raw packet bytes. | + +The remaining decode-error and packet-audit fields (`TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_SOURCE_UDP_PEER`, `TRAP_SOURCE_UDP_PORT`, `TRAP_VERSION`, `TRAP_PACKET_SIZE`, `TRAP_LISTENER`, `TRAP_ENGINE_ID`, `TRAP_JSON`) and why raw packet bytes are never stored are in [Field Reference](/docs/snmp-traps/field-reference#decode-error-fields). + +## Binary-encoded fields + +Some field values can contain newlines, NUL bytes, control characters, or invalid UTF-8. Netdata stores those values in a binary-safe form, so a hostile value cannot inject fake fields. Binary encoding does not mean the trap was dropped; the trap was stored normally. + +To track how often it happens, watch the `binary_encoded` counter; for its meaning and rate, see [Metrics](/docs/snmp-traps/metrics#processing-errors), and for the default alert, see [Alerts](/docs/snmp-traps/alerts). + +## Receive time vs device uptime + +The log row timestamp is the time Netdata received and wrote the trap event. Use that timestamp for incident timelines in Netdata, journalctl, and downstream log systems. + +Do not confuse that timestamp with `sysUpTime`. In SNMP traps, `sysUpTime` is device uptime at the time the device generated the trap. It is not wall-clock time, and it is not the receive time. Netdata does not index device uptime as a `TRAP_VAR_*` field because it is a protocol-control varbind; inspect `TRAP_JSON` when you need the original non-sensitive varbind payload. + +`netdata_packet_sequence` is also not time. It is a receiver-side per-job counter assigned to UDP datagrams. + +## Next steps + +- [Field Reference](/docs/snmp-traps/field-reference) - Check every field, when it appears, and how to query it. +- [Journal and Querying](/docs/snmp-traps/journal-and-querying) - Query trap rows with Netdata Cloud Logs and journal tooling. +- [Metrics](/docs/snmp-traps/metrics) - Use receiver metrics, error counters, and dedup counters to explain what rows do not show by themselves. +- [Alerts](/docs/snmp-traps/alerts) - See the default health alerts that fire on these receiver metrics. diff --git a/docs/SNMP Traps/Validation and Data Quality.mdx b/docs/SNMP Traps/Validation and Data Quality.mdx new file mode 100644 index 0000000000..1645ea3393 --- /dev/null +++ b/docs/SNMP Traps/Validation and Data Quality.mdx @@ -0,0 +1,201 @@ +--- +custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/snmp-traps/validation-and-data-quality.md" +sidebar_label: "Validation and Data Quality" +learn_status: "Published" +learn_rel_path: "SNMP Traps" +description: "Prove first receipt, source identity, profile coverage, enrichment quality, backend health, retention, and downstream fields." +sidebar_position: "140" +learn_link: "https://learn.netdata.cloud/docs/snmp-traps/validation-and-data-quality" +slug: "/snmp-traps/validation-and-data-quality" +--- + + + + +# Validation and Data Quality + +Use this page before relying on SNMP trap logs during incidents. The goal is to prove that trap collection is correct, secure, and useful: packets arrive, source identity is trustworthy, profiles add useful meaning, storm controls behave as intended, and the selected output backend keeps the events you need. + +Validation is not only "did a row appear?" A quiet receiver can be healthy, misconfigured, blocked by network policy, dropping unauthorized packets, or waiting for devices that have not been configured to send traps. Validate trap rows and receiver metrics together. + +## Validation checklist + +Work through these checks in order during first deployment. Use [Quick Start](/docs/snmp-traps/quick-start) to send a known test trap, and use [Journal and Querying](/docs/snmp-traps/journal-and-querying) when you need local `journalctl` or Cloud Logs verification commands. + +| Check | Evidence to inspect | What good looks like | +|---|---|---| +| First receipt | `TRAP_REPORT_TYPE`, `TRAP_JOB`, `TRAP_OID`, `TRAP_NAME`, `TRAP_SOURCE_IP`, `snmp.trap.pipeline` | A known test trap appears as `TRAP_REPORT_TYPE=trap`, and `received`, `decoded`, `accepted`, and `committed` move for the listener job. | +| Source identity | `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_ENRICHMENT.source` | Direct senders usually have matching source and UDP peer. Relayed traps show why Netdata selected the reported source. OTLP-only jobs use equivalent OTLP attributes instead of journal field names. | +| Credentials and version | `TRAP_VERSION`, `TRAP_REPORT_TYPE=decode_error`, `TRAP_DECODE_ERROR_KIND`, `snmp.trap.errors` | Expected SNMP versions are accepted. Authentication, USM, unknown engine ID, and malformed packet errors stay at expected levels. | +| Allowed sources and communities | `TRAP_SOURCE_UDP_PEER`, `snmp.trap.errors` `dropped_allowlist`, job `allowlist.source_cidrs`, job `communities` | Only intended UDP peers are admitted. Only intended SNMPv1/v2c communities are accepted once the packet is parsed. | +| Trusted relays | `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_ENRICHMENT.source.method`, `TRAP_ENRICHMENT.source.snmp_trap_address`, `TRAP_ENRICHMENT.source.trusted_relay` | Direct senders use `udp_peer`. Only configured relay peers can make `snmpTrapAddress.0` become the selected source. | +| Profile coverage | `TRAP_NAME`, `MESSAGE`, `TRAP_OID`, `TRAP_CATEGORY`, `TRAP_SEVERITY`, `snmp.trap.errors` `unknown_oid` | Common device traps resolve to names, rendered messages, categories, severities, and useful varbind labels. Unknown OIDs are tracked as coverage gaps. | +| Profile load health | `snmp.trap.errors` `profile_load_failed`, `template_unresolved` | Loaded profile YAML files parse cleanly, and profile-rendered templates resolve the varbinds and fields they reference. | +| Severity and category policy | `TRAP_CATEGORY`, `TRAP_SEVERITY`, `TRAP_TAG_*`, overrides | The resulting urgency and category match local operations policy for the trap OID. | +| Enrichment quality | `TRAP_ENRICHMENT`, `_HOSTNAME`, `TRAP_DEVICE_VENDOR`, `TRAP_INTERFACE`, `TRAP_NEIGHBORS`, `TRAP_REVERSE_DNS` | Enrichment fields appear when local context exists, and the audit explains skipped, missing, or ambiguous lookups. | +| Varbind quality | `TRAP_VAR_*`, `TRAP_JSON`, `snmp.trap.errors` `template_unresolved`, `binary_encoded` | Important event payload is queryable through indexed fields, with structured payload and audit details available in `TRAP_JSON`; binary-encoded journal fields are counted and need review. | +| Deduplication | `TRAP_REPORT_TYPE=deduplication_summary`, `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `snmp.trap.dedup_suppressed` | Repeated traps are summarized only when deduplication is intentionally enabled and the fingerprint matches operational expectations. | +| Rate limiting | `snmp.trap.errors` `rate_limited`, job `rate_limit.mode` | Over-limit traffic is counted by `rate_limited`. In `drop` mode the packet is discarded; in `sample` mode it is counted and still enters the pipeline. | +| Journal health | `snmp.trap.pipeline` `committed`, `write_failed`, `snmp.trap.errors` `journal_write_failed`, direct journal path | Healthy direct-journal jobs commit rows and do not report write failures. Direct journal output is Linux-only. | +| OTLP health | `snmp.trap.errors` `otlp_export_failed`, downstream receiver records, OTLP resource attributes | OTLP export succeeds, records have `service.name=netdata-snmptrap` and the expected `service.instance.id`, and downstream records contain the expected trap attributes. | +| Retention | Job `retention` settings and direct journal files | Local retention keeps enough trap history for investigation without unexpectedly evicting needed rows. | +| Downstream SIEM fields | Ingested field names or OTLP attributes | SIEM rules use the fields that actually arrive, especially report type, source, OID/name, category, severity, and payload fields. | + +## Start with report type + +Always inspect `TRAP_REPORT_TYPE` first: + +- `trap` means Netdata decoded and accepted an SNMP Trap or INFORM and wrote it to the configured output. +- `decode_error` means a packet reached the decode-error path but did not become a normal trap row. Inspect `TRAP_DECODE_ERROR_KIND`, `TRAP_DECODE_ERROR`, `TRAP_VERSION`, `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, `TRAP_SOURCE_UDP_PORT`, `TRAP_PACKET_SIZE`, `TRAP_PACKET_SHA256`, `TRAP_LISTENER`, `TRAP_ENGINE_ID`, and `TRAP_JSON`. +- `deduplication_summary` means repeated matching traps were suppressed during a deduplication period. Inspect `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, and `TRAP_JSON`. + +Drops that happen before a row is written may be visible only in receiver metrics. Use `snmp.trap.pipeline`, `snmp.trap.errors`, `snmp.trap.dedup_suppressed`, `snmp.trap.sources`, `snmp.trap.source_last_seen`, `snmp.trap.source_attribution`, `snmp.trap.source_pipeline`, and `snmp.trap.source_errors` together with the log rows. + +## Validate source identity + +Source identity controls attribution, filtering, enrichment, and incident routing. Validate it before using trap data for paging or audit workflows. + +Compare `TRAP_SOURCE_IP` with `TRAP_SOURCE_UDP_PEER` (equal for direct senders, different for a trusted-relay override), then inspect the `source` object inside `TRAP_ENRICHMENT` to confirm `selected`, `method`, `trusted_relay`, and any `rejected_candidates`. For the full source-identity model and the step-by-step trust checklist, see [Enrichment](/docs/snmp-traps/enrichment#how-to-validate-source-identity). Keep `source.trusted_relays` narrow: a broad range lets senders on that path influence attribution through `snmpTrapAddress.0`. + +Treat `TRAP_REVERSE_DNS` as a label only; keep trust decisions based on `TRAP_SOURCE_IP`, `TRAP_SOURCE_UDP_PEER`, and `TRAP_ENRICHMENT.source`. + +For OTLP-only jobs, validate the same source relationship with OTLP attributes: `snmp.source.ip` is the selected source and `network.peer.address` is the UDP peer. Use the [Field Reference](/docs/snmp-traps/field-reference#otlp-mapping-notes) for the journal-to-OTLP mapping. + +## Validate credentials and allowed versions + +The listener should accept only the SNMP versions and credentials that devices are expected to use. + +- For SNMPv1 and SNMPv2c, keep community values out of logs, docs, tickets, and command examples. Use secret references in configuration. +- For SNMPv3, protect authentication and privacy keys, and validate engine ID handling with `TRAP_VERSION`, `TRAP_ENGINE_ID`, and error dimensions such as `auth_failures`, `usm_failures`, and `unknown_engine_id`. +- Decode errors with `TRAP_DECODE_ERROR_KIND=auth_failures`, `usm_failures`, or `unknown_engine_id` usually point to sender or listener credential mismatch, engine ID policy, or unauthorized senders. +- A malformed PDU is not the same problem as authentication failure. Separate `malformed_pdu`, `decode_failed`, `auth_failures`, `usm_failures`, and `unknown_engine_id` when triaging. + +## Validate profile coverage + +Profile coverage determines whether rows are useful without manual OID lookup. + +For normal trap rows, inspect: + +- `TRAP_OID`: the numeric trap identifier. +- `TRAP_NAME`: the resolved profile or MIB-qualified name, when known. +- `MESSAGE`: the rendered trap message shown in log views. +- `TRAP_CATEGORY`: the operational category. +- `TRAP_SEVERITY`: the operational severity. +- `TRAP_VAR_*`: indexed event varbinds for filtering and rule logic. +- `TRAP_JSON`: structured payload and audit details. + +An unknown OID is a coverage signal, not an ingestion failure. Netdata can still accept and store the trap with `TRAP_OID` and `TRAP_CATEGORY=unknown`. Use `snmp.trap.errors` `unknown_oid`, missing `TRAP_NAME`, and repeated important raw OIDs to decide whether to add or adjust trap profiles or local overrides. + +Profile load and template health are separate from OID coverage. Use `snmp.trap.errors` `profile_load_failed` for profile files that cannot be loaded, and `template_unresolved` for rendered text that references missing varbinds or fields. + +Validate severity and category as policy, not only parsing. A trap can be decoded correctly while still needing a local override because your organization treats that OID differently. Keep category and severity inside the documented closed values so queries, charts, and downstream rules remain stable. + +## Validate enrichment quality + +Enrichment should help operators understand the row faster. It should not hide the original evidence. + +Use concrete fields for normal filtering: + +- `_HOSTNAME` +- `TRAP_DEVICE_VENDOR` +- `TRAP_INTERFACE` +- `TRAP_NEIGHBORS` +- `TRAP_REVERSE_DNS` +- `ND_NIDL_NODE` + +These fields are conditional. They appear only when Netdata has enough local context to populate them, such as a matched device, interface, neighbor, reverse-DNS result, or topology node. If a field is absent, use `TRAP_ENRICHMENT.registry`, `TRAP_ENRICHMENT.topology`, `TRAP_ENRICHMENT.interface`, and `TRAP_ENRICHMENT.neighbors` to see whether the lookup was missing, ambiguous, skipped, pending, or in `conflict`. + +Use `TRAP_ENRICHMENT` when a field is missing or surprising. It records source selection, local device lookup, interface lookup, neighbor lookup, reverse-DNS state, and applied fields. Common useful statuses include `matched`, `no_match`, `ambiguous`, `skipped`, `pending`, and `conflict`. + +Treat enrichment as context. The selected source fields and the original trap OID remain the primary evidence for what Netdata received. + +## Validate storm controls + +Rate limiting and deduplication change what you see in logs. + +- During first validation, keep storm controls disabled or use settings that make their behavior visible. +- If rate limiting is enabled, watch `snmp.trap.errors` `rate_limited`. With `rate_limit.mode: drop`, over-limit packets are discarded; with `rate_limit.mode: sample`, they are counted and still continue through the receiver. +- If deduplication is enabled, expect the first matching trap row plus later `TRAP_REPORT_TYPE=deduplication_summary` rows. Check `dedup.window_sec`, `dedup.cache_max_entries`, and `dedup.key_varbinds` in [Configuration](/docs/snmp-traps/configuration) when summaries do not match expectations. +- Read `TRAP_SUPPRESSED_COUNT`, `TRAP_SUPPRESSED_FINGERPRINTS`, `TRAP_REPORT_PERIOD_SEC`, and `TRAP_JSON` to understand what was suppressed. +- If one trap OID represents different resources, validate the dedup fingerprint before relying on summaries. + +Dedup-suppressed traps are counted in periodic summary entries instead of stored as individual rows. If an operator expects every repeated PDU to be visible, deduplication is the first setting to check. + +## Validate backend health and retention + +For direct-journal jobs: + +- Confirm trap rows appear in the local job source exposed through the `snmp:traps` Function. +- Use [Journal and Querying](/docs/snmp-traps/journal-and-querying) for `snmp:traps` Function behavior, Cloud requirements, and local `journalctl --directory` commands. +- Confirm `snmp.trap.pipeline` `committed` moves with accepted traps. +- Watch `snmp.trap.pipeline` `write_failed` and `snmp.trap.errors` `journal_write_failed`. +- Check that retention settings keep enough local history for incident investigation. See [Configuration](/docs/snmp-traps/configuration#direct-journal-retention) for retention defaults and settings. + +For OTLP export: + +- Confirm `snmp.trap.errors` `otlp_export_failed` stays clear. +- Confirm the downstream OTLP receiver stores the expected records. +- Confirm records carry `service.name=netdata-snmptrap` and `service.instance.id=`. See [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem) for the OTLP export checks. +- Confirm SIEM rules use the downstream field names that actually arrive. + +If both direct journal and OTLP are enabled, validate both paths. If a job is OTLP-only, it will not create local journal files and will not appear as a local job source in the `snmp:traps` Function. + +## Validate downstream SIEM fields + +Before building SIEM rules, decide whether the SIEM receives direct-journal fields or OTLP attributes. The names differ. + +For direct-journal ingestion, validate that the SIEM preserves at least: + +- `TRAP_REPORT_TYPE` +- `TRAP_JOB` +- `TRAP_SOURCE_IP` +- `TRAP_SOURCE_UDP_PEER` +- `TRAP_OID` +- `TRAP_NAME` +- `TRAP_CATEGORY` +- `TRAP_SEVERITY` +- `TRAP_VERSION` +- `TRAP_VAR_*` +- `TRAP_JSON` +- Decode-error fields when `TRAP_REPORT_TYPE=decode_error` +- Dedup summary fields when `TRAP_REPORT_TYPE=deduplication_summary` + +For OTLP ingestion, use the OTLP mapping in [Field Reference](/docs/snmp-traps/field-reference). Build rules against report type, selected source, UDP peer, trap OID, trap name, category, severity, version, varbind payload, decode-error details, and dedup summary attributes. + +Avoid making `TRAP_JSON` or `TRAP_ENRICHMENT` the primary SIEM grouping key. They are audit payloads and can be large or high-cardinality. Prefer specific stable fields, then inspect the JSON payload when the indexed fields do not answer the question. + +## Data quality vs silence + +Silence has several meanings: + +- No relevant device event happened. +- Devices are not configured to send traps or informs. +- Devices are sending to the wrong address or port. +- Network ACLs or firewalls block UDP delivery. +- Listener `allowlist.source_cidrs` rejects the UDP peer. +- SNMP version, community, USM user, key, or engine ID settings do not match. +- Profile files fail to load, or templates reference fields that are not present in received traps. +- Rate limiting or deduplication changes what appears as rows by design. +- Journal writing or OTLP export is failing. +- Retention has already removed older direct-journal rows. + +Do not treat a quiet receiver as proof of device health. Send a known test trap, check `snmp.trap.pipeline`, inspect `snmp.trap.errors`, and verify the configured output backend. + +## Security and data handling cautions + +Trap data can include sensitive network and device context. Validate useful data, but minimize what you copy, forward, or expose. Treat communities, SNMPv3 keys, and OTLP headers as credentials (use secret references), and review `TRAP_JSON`, `TRAP_VAR_*`, and `TRAP_ENRICHMENT` before forwarding because device-provided varbinds and enrichment can carry usernames, interface descriptions, MACs, asset tags, locations, or public addresses. For the complete per-field sensitivity guidance, see [Field Reference](/docs/snmp-traps/field-reference#sensitive-data-cautions). + +Use RFC 5737 example IPs such as `192.0.2.10`, `198.51.100.20`, and `203.0.113.5` in examples. Use placeholders for secrets, device names, organization names, and private endpoints. + +## Related pages + +- [Enrichment](/docs/snmp-traps/enrichment) - Source identity, trusted relays, reverse DNS, and enrichment audit details. +- [Configuration](/docs/snmp-traps/configuration) - Source controls, credentials, deduplication, rate limiting, retention, and output settings. +- [Trap Profiles](/docs/snmp-traps/trap-profiles) - How profiles turn OIDs and varbinds into names, categories, severities, labels, and profile-defined metrics. +- [Field Reference](/docs/snmp-traps/field-reference) - Complete field meanings, population rules, sensitive-data cautions, and OTLP mapping. +- [Journal and Querying](/docs/snmp-traps/journal-and-querying) - Local `journalctl` and Cloud Logs query workflows. +- [Forwarding to SIEM](/docs/snmp-traps/forwarding-to-siem) - OTLP export, resource attributes, and SIEM field validation. +- [Metrics](/docs/snmp-traps/metrics) - Receiver metrics, pipeline counters, and errors. +- [Alerts](/docs/snmp-traps/alerts) - Default health alert behavior on these receiver metrics. +- [Troubleshooting](/docs/snmp-traps/troubleshooting) - Failure investigation paths when validation does not match expectations. +- [Anti-Patterns](/docs/snmp-traps/anti-patterns) - Configurations and operational habits to avoid. diff --git a/docs/Security and Privacy Design/Security and Privacy Design.mdx b/docs/Security and Privacy Design/Security and Privacy Design.mdx index 92450d1fdc..b3c4ed666e 100644 --- a/docs/Security and Privacy Design/Security and Privacy Design.mdx +++ b/docs/Security and Privacy Design/Security and Privacy Design.mdx @@ -3,7 +3,7 @@ custom_edit_url: "https://github.com/netdata/netdata/edit/master/docs/security-a sidebar_label: "Security and Privacy Design" learn_status: "Published" learn_rel_path: "Security and Privacy Design" -sidebar_position: "170" +sidebar_position: "180" learn_link: "https://learn.netdata.cloud/docs/security-and-privacy-design" slug: "/security-and-privacy-design" --- diff --git a/docs/Welcome to Netdata/Monitor Anything.mdx b/docs/Welcome to Netdata/Monitor Anything.mdx index d7ce030593..0a9905806a 100644 --- a/docs/Welcome to Netdata/Monitor Anything.mdx +++ b/docs/Welcome to Netdata/Monitor Anything.mdx @@ -155,17 +155,17 @@ Need a dedicated integration? [Submit a feature request](https://github.com/netd | [Cilium Operator](/docs/collecting-metrics/collectors/containers-and-vms/cilium-operator) | Monitor Cilium Operator metrics for efficient Kubernetes network security management. | | [Cilium Proxy](/docs/collecting-metrics/collectors/containers-and-vms/cilium-proxy) | Track Cilium Proxy metrics for enhanced network security and performance. | | [containerd Containers](/docs/collecting-metrics/collectors/containers-and-vms/containerd-containers) | Monitor containerd container resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | -| [Containers](/docs/collecting-metrics/collectors/containers-and-vms/containers) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | +| [Containers](/docs/collecting-metrics/collectors/containers-and-vms/containers) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. | | [Docker](/docs/collecting-metrics/collectors/containers-and-vms/docker) | This collector monitors Docker containers state, health status and more. | | [Docker Containers](/docs/collecting-metrics/collectors/containers-and-vms/docker-containers) | Monitor Docker container resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | | [Docker Engine](/docs/collecting-metrics/collectors/containers-and-vms/docker-engine) | This collector monitors the activity and health of Docker Engine and Docker Swarm. | | [Docker Hub repository](/docs/collecting-metrics/collectors/containers-and-vms/docker-hub-repository) | This collector keeps track of DockerHub repositories statistics such as the number of stars, pulls, current status, and more. | -| [Hyper-V](/docs/collecting-metrics/collectors/containers-and-vms/hyper-v) | This collector monitors website requests and logins. | +| [Hyper-V](/docs/collecting-metrics/collectors/containers-and-vms/hyper-v) | This collector monitors Hyper-V virtualization metrics including virtual machine health status, root partition virtualization layer statistics (TLB flushes, address spaces, attached devices, GPA space), per-VM CPU usage, memory allocation and pressure, storage device I/O and errors, network interface traffic and packets, and virtual switch traffic, packets, and dropped packets. | | [Kubelet](/docs/collecting-metrics/collectors/containers-and-vms/kubelet) | This collector monitors Kubelet instances. | | [Kubeproxy](/docs/collecting-metrics/collectors/containers-and-vms/kubeproxy) | This collector monitors Kubeproxy instances. | | [Kubernetes API Server](/docs/collecting-metrics/collectors/containers-and-vms/kubernetes-api-server) | This collector monitors Kubernetes API Server health, performance, and request metrics. | | [Kubernetes Cluster State](/docs/collecting-metrics/collectors/containers-and-vms/kubernetes-cluster-state) | This collector monitors Kubernetes Nodes, Pods and Containers. | -| [Kubernetes Containers](/docs/collecting-metrics/collectors/containers-and-vms/kubernetes-containers) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | +| [Kubernetes Containers](/docs/collecting-metrics/collectors/containers-and-vms/kubernetes-containers) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. | | [Libvirt VMs and Containers](/docs/collecting-metrics/collectors/containers-and-vms/libvirt-vms-and-containers) | Monitor libvirt-managed VM and container resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | | [LXC Containers](/docs/collecting-metrics/collectors/containers-and-vms/lxc-containers) | Monitor LXC/LXD/Incus container resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | | [Mesos](/docs/collecting-metrics/collectors/containers-and-vms/mesos) | Monitor Apache Mesos cluster manager metrics for efficient resource management and performance. | @@ -234,7 +234,7 @@ Need a dedicated integration? [Submit a feature request](https://github.com/netd | [System statistics](/docs/collecting-metrics/collectors/operating-systems/system-statistics-windows-plugin) | This collector monitors the current number of processes, threads, and context switches on Windows systems. | | [System Uptime](/docs/collecting-metrics/collectors/operating-systems/system-uptime) | The amount of time the system has been up (running). | | [system.ram](/docs/collecting-metrics/collectors/operating-systems/system.ram) | Show information about system memory usage. | -| [Systemd Services](/docs/collecting-metrics/collectors/operating-systems/systemd-services) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, and network — via Linux cgroups. | +| [Systemd Services](/docs/collecting-metrics/collectors/operating-systems/systemd-services) | Monitor containers and virtual machines resource utilization — CPU, memory, disk I/O, network, and page cache activity — via Linux cgroups. | | [Systemd Units](/docs/collecting-metrics/collectors/operating-systems/systemd-units) | This collector monitors the state of Systemd units and unit files. | | [systemd-logind users](/docs/collecting-metrics/collectors/operating-systems/systemd-logind-users) | This collector monitors number of sessions and users as reported by the `org.freedesktop.login1` DBus API. | | [uptime](/docs/collecting-metrics/collectors/operating-systems/uptime) | Show period of time server is up. | @@ -309,6 +309,7 @@ Need a dedicated integration? [Submit a feature request](https://github.com/netd | [RIPE Atlas](/docs/collecting-metrics/collectors/networking/ripe-atlas) | Keep tabs on RIPE Atlas Internet measurement platform metrics for efficient network monitoring and performance. | | [SCTP Statistics](/docs/collecting-metrics/collectors/networking/sctp-statistics) | This integration provides statistics about the Stream Control Transmission Protocol (SCTP). | | [SNMP devices](/docs/collecting-metrics/collectors/networking/snmp-devices) | This collector discovers and monitors any SNMP-enabled network device. | +| [SNMP trap listener](/docs/collecting-metrics/collectors/networking/snmp-trap-listener) | This collector listens for incoming SNMP Trap and INFORM notifications from network devices and persists them as enriched, structured log entries. | | [Socket statistics](/docs/collecting-metrics/collectors/networking/socket-statistics) | This integration provides socket statistics. | | [SoftEther VPN Server](/docs/collecting-metrics/collectors/networking/softether-vpn-server) | Monitor SoftEther VPN Server metrics for efficient virtual private network (VPN) management and performance. | | [Softnet Statistics](/docs/collecting-metrics/collectors/networking/softnet-statistics) | `/proc/net/softnet_stat` provides statistics that relate to the handling of network packets by softirq. | diff --git a/ingest/generated_map.yaml b/ingest/generated_map.yaml index 31837b1066..5f1fc9613e 100644 --- a/ingest/generated_map.yaml +++ b/ingest/generated_map.yaml @@ -2338,7 +2338,8 @@ sidebar_label: Hyper-V learn_status: Published learn_rel_path: Collecting Metrics/Collectors/Containers and VMs - keywords: '[''windows'', ''microsoft'', ''hyperv'', ''virtualization'', ''vm'']' + keywords: '[''windows'', ''microsoft'', ''hyperv'', ''virtualization'', ''vm'', + ''azure-local'', ''azure-stack-hci'']' description: .nan meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml @@ -3765,7 +3766,8 @@ sidebar_label: Network Connections learn_status: Published learn_rel_path: Collecting Metrics/Collectors/Networking - keywords: '[''network'', ''connections'', ''sockets'', ''tcp'', ''udp'', ''ports'']' + keywords: '[''network'', ''connections'', ''sockets'', ''tcp'', ''udp'', ''ports'', + ''freebsd'']' description: .nan meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/network-viewer.plugin/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml @@ -3956,6 +3958,17 @@ meta_yaml: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp_traps/README.md + sidebar_label: SNMP trap listener + learn_status: Published + learn_rel_path: Collecting Metrics/Collectors/Networking + keywords: '[''snmp'', ''trap'', ''inform'', ''snmpv3'', ''usm'', ''syslog'', ''network + events'', ''event monitoring'', ''notifications'', ''fault management'', ''network + management'']' + description: .nan + meta_yaml: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp_traps/metadata.yaml + message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml + FILE - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/socket_statistics.md sidebar_label: Socket statistics learn_status: Published @@ -4462,22 +4475,22 @@ meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_statistics.md +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_statistics.md sidebar_label: System statistics learn_status: Published learn_rel_path: Collecting Metrics/Collectors/Operating Systems - keywords: '[''cpu utilization'', ''process counts'']' + keywords: '[''process counts'', ''threads'', ''context switch'']' description: .nan - meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/metadata.yaml + meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_statistics.md +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_statistics.md sidebar_label: System statistics learn_status: Published learn_rel_path: Collecting Metrics/Collectors/Operating Systems - keywords: '[''process counts'', ''threads'', ''context switch'']' + keywords: '[''cpu utilization'', ''process counts'']' description: .nan - meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/metadata.yaml + meta_yaml: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/metadata.yaml message: DO NOT EDIT THIS FILE DIRECTLY, IT IS GENERATED BY THE COLLECTOR'S metadata.yaml FILE - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_uptime.md @@ -6137,6 +6150,167 @@ description: null meta_yaml: .nan message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/README.md + sidebar_label: SNMP Traps + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Receive, decode, store, query, and forward SNMP Trap and INFORM events + with the Netdata Agent. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/installation.md + sidebar_label: Installation + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: null + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/quick-start.md + sidebar_label: Quick Start + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Configure a listener, send a test trap, and prove Netdata received + it. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/configuration.md + sidebar_label: Configuration + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Configure listener endpoints, SNMP versions, source controls, storage, + forwarding, deduplication, and profile metrics. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/trap-profiles.md + sidebar_label: Trap Profiles + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Understand stock trap coverage, custom profiles, overrides, MIB conversion, + and profile-defined metrics. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/config/go.d/snmp.trap-profiles/profile-format.md + sidebar_label: SNMP Trap Profile Format + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Reference for SNMP trap profile YAML, trap definitions, varbind metadata, + rendering, and profile metric rules. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/enrichment.md + sidebar_label: Enrichment + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Understand source identity, trusted relays, reverse DNS, device identity, + interface context, and enrichment audit fields. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/usage-and-output.md + sidebar_label: Usage and Output + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Read normal trap rows, decode errors, deduplication summaries, varbinds, + tags, and payload fields. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/field-reference.md + sidebar_label: Field Reference + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Complete reference for journal fields, report types, enrichment fields, + varbind fields, tags, and OTLP mappings. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/journal-and-querying.md + sidebar_label: Journal and Querying + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Query, export, copy, and inspect direct-journal trap data with Netdata + Logs and journalctl-compatible workflows. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/forwarding-to-siem.md + sidebar_label: Forwarding to SIEM + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Forward trap events through journal-native workflows or OTLP/gRPC and + map fields in downstream log systems. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/metrics.md + sidebar_label: Metrics + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Read receiver pipeline health, severity and category rates, processing + errors, deduplication, and per-source metrics. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/alerts.md + sidebar_label: Alerts + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Understand, route, and silence the default SNMP trap health alerts. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/sizing-and-capacity.md + sidebar_label: Sizing and Capacity Planning + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Plan receiver capacity, output backends, retention, storm controls, + profile metrics, source visibility, and validation. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/validation-and-data-quality.md + sidebar_label: Validation and Data Quality + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Prove first receipt, source identity, profile coverage, enrichment + quality, backend health, retention, and downstream fields. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/investigation-playbooks.md + sidebar_label: Investigation Playbooks + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Follow operator playbooks for storms, critical traps, interface changes, + restart signals, missing traps, unknown OIDs, SNMPv3 failures, and forwarding + checks. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/anti-patterns.md + sidebar_label: Anti-patterns + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Avoid unsafe listeners, broad relay trust, inline secrets, high-cardinality + metrics, noisy alerting, and storage blind spots. + meta_yaml: .nan + message: .nan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/troubleshooting.md + sidebar_label: Troubleshooting + learn_status: Published + learn_rel_path: SNMP Traps + keywords: null + description: Diagnose missing rows, inactive listeners, UDP delivery, allowlist + drops, SNMPv3 failures, profile issues, backend failures, and retention problems. + meta_yaml: .nan + message: .nan - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/README.md sidebar_label: Systemd Journal Plugin Reference learn_status: Published diff --git a/ingest/one_commit_back_file-dict.yaml b/ingest/one_commit_back_file-dict.yaml index a6c37625f8..ea16b61ea9 100644 --- a/ingest/one_commit_back_file-dict.yaml +++ b/ingest/one_commit_back_file-dict.yaml @@ -1,1756 +1,1794 @@ -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/netdata-cloud-onprem/RELEASE-NOTES.md - learn_path: /docs/netdata-cloud-on-prem/release-notes -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/installation.md - learn_path: /docs/netdata-cloud-on-prem/installation -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/hardening-guide.md - learn_path: /docs/netdata-cloud-on-prem/security-hardening-guide -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/poc-without-k8s.md - learn_path: /docs/netdata-cloud-on-prem/poc-without-k8s -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/troubleshooting.md - learn_path: /docs/netdata-cloud-on-prem/troubleshooting -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/sbom.md - learn_path: /docs/netdata-cloud-on-prem/software-bill-of-materials -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/netpol.md - learn_path: /docs/netdata-cloud-on-prem/kubernetes-network-policy-configuration -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/ecr-mirror.md - learn_path: /docs/netdata-cloud-on-prem/mirroring-image-registry -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/README.md - learn_path: /docs/netdata-cloud-on-prem -- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/image-signature-verification.md - learn_path: /docs/netdata-cloud-on-prem/container-image-signature-verification -- custom_edit_url: https://github.com/netdata/agent-service-discovery/edit/master/README.md - learn_path: /docs/collecting-metrics/service-discovery -- custom_edit_url: https://github.com/netdata/netdata-grafana-datasource-plugin/edit/master/README.md - learn_path: /docs/dashboards-and-charts/grafana-plugin -- custom_edit_url: https://github.com/netdata/helmchart/edit/master/charts/netdata/README.md - learn_path: /docs/netdata-agent/installation/kubernetes-helm-chart-reference - custom_edit_url: https://github.com/netdata/netdata/edit/master/REDISTRIBUTED.md learn_path: /docs/developer-and-contributor-corner/redistributed-software -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/scim.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/scim -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/oidc.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/oidc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/okta_sso.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/okta-sso -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/pagerduty.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/pagerduty +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/windows_event_logs.md + learn_path: /docs/logs/windows-event-logs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/systemd_journal_logs.md + learn_path: /docs/logs/systemd-journal-logs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/opentelemetry_logs.md + learn_path: /docs/logs/opentelemetry-logs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/splunk.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/splunk +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/ilert.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/ilert - custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/amazon_sns.md learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/amazon-sns -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/opsgenie.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/opsgenie -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/splunk_victorops.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/splunk-victorops -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/webhook.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/webhook +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/discord.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/discord +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/pagerduty.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/pagerduty +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/microsoft_teams.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/microsoft-teams - custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/slack.md learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/slack -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/servicenow.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/servicenow -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/telegram.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/telegram +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/opsgenie.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/opsgenie - custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/mattermost.md learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/mattermost - custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/rocketchat.md learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/rocketchat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/splunk.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/splunk -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/discord.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/discord -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/microsoft_teams.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/microsoft-teams - custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/netdata_mobile_app.md learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/netdata-mobile-app -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/ilert.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/ilert -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/systemd_journal_logs.md - learn_path: /docs/logs/systemd-journal-logs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/windows_event_logs.md - learn_path: /docs/logs/windows-event-logs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/logs/integrations/opentelemetry_logs.md - learn_path: /docs/logs/opentelemetry-logs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/Demo-Sites.md - learn_path: /docs/live-demo -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-oss-limitations.md - learn_path: /docs/security-and-privacy-design/access-control-and-feature-availability -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/fleet-configuration-management.md - learn_path: /docs/welcome-to-netdata/fleet-deployment-and-configuration-management +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/telegram.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/telegram +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/webhook.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/webhook +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/servicenow.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/servicenow +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-notifications/integrations/splunk_victorops.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/splunk-victorops +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/scim.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/scim +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/oidc.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/oidc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/integrations/cloud-authentication/integrations/okta_sso.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/cloud-authentication-&-authorization-integrations/okta-sso +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/streaming-routing.md + learn_path: /docs/netdata-parents/streaming-routing-reference - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/guidelines.md learn_path: /docs/developer-and-contributor-corner/contribute-to-the-documentation -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/scalability.md - learn_path: /docs/welcome-to-netdata/scalability -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/reporting.md - learn_path: /docs/welcome-to-netdata/reporting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-oss-limitations.md + learn_path: /docs/security-and-privacy-design/access-control-and-feature-availability - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/nodes-ephemerality.md learn_path: /docs/netdata-parents/node-types-and-lifecycle-reference - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-enterprise-evaluation-corrected.md learn_path: /docs/welcome-to-netdata/enterprise-evaluation-guide -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/welcome-to-netdata.md - learn_path: /docs/welcome-to-netdata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/realtime-monitoring.md - learn_path: /docs/welcome-to-netdata/real-time-monitoring - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/NIDL-Framework.md learn_path: /docs/dashboards-and-charts/nidl-framework +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/reporting.md + learn_path: /docs/welcome-to-netdata/reporting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/scalability.md + learn_path: /docs/welcome-to-netdata/scalability +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/metric-correlations.md + learn_path: /docs/netdata-ai/troubleshooting/metric-correlations - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/top-monitoring-netdata-functions.md learn_path: /docs/live-view -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/streaming-routing.md - learn_path: /docs/netdata-parents/streaming-routing-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/realtime-monitoring.md + learn_path: /docs/welcome-to-netdata/real-time-monitoring +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/Demo-Sites.md + learn_path: /docs/live-demo - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/glossary.md learn_path: /docs/developer-and-contributor-corner/glossary -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/metric-correlations.md - learn_path: /docs/netdata-ai/troubleshooting/metric-correlations +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/fleet-configuration-management.md + learn_path: /docs/welcome-to-netdata/fleet-deployment-and-configuration-management +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/welcome-to-netdata.md + learn_path: /docs/welcome-to-netdata - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/getting-started-netdata/guide.md learn_path: /docs/getting-started -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/anomaly-advisor.md - learn_path: /docs/netdata-ai/troubleshooting/anomaly-advisor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ai-insights.md - learn_path: /docs/netdata-ai/insights -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ml-anomaly-detection/ml-accuracy.md - learn_path: /docs/netdata-ai/anomaly-detection/ml-accuracy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ml-anomaly-detection/ml-anomaly-detection.md - learn_path: /docs/netdata-ai/anomaly-detection -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/functions/databases.md - learn_path: /docs/live-view/database-queries -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/functions/processes.md - learn_path: /docs/live-view/processes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/netdata-cloud-security.md - learn_path: /docs/security-and-privacy-design/netdata-cloud -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/netdata-agent-security.md - learn_path: /docs/security-and-privacy-design/netdata-agent -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/README.md - learn_path: /docs/security-and-privacy-design -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself.md - learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/collect-unbound-metrics.md - learn_path: /docs/developer-and-contributor-corner/monitor-unbound-dns-servers-with-netdata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/monitor-debug-applications-ebpf.md - learn_path: /docs/developer-and-contributor-corner/monitor-troubleshoot-and-debug-applications-with-ebpf-metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/dyncfg.md - learn_path: /docs/developer-and-contributor-corner/dynamic-configuration -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/collect-apache-nginx-web-logs.md - learn_path: /docs/developer-and-contributor-corner/monitor-nginx-or-apache-web-server-log-files-with-netdata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/style-guide.md - learn_path: /docs/developer-and-contributor-corner/contribute-to-the-documentation/netdata-style-guide -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/running-through-cf-tunnels.md - learn_path: /docs/developer-and-contributor-corner/running-a-local-dashboard-through-cloudflare-tunnels -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/monitor-hadoop-cluster.md - learn_path: /docs/developer-and-contributor-corner/monitor-a-hadoop-cluster-with-netdata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/README.md - learn_path: /docs/developer-and-contributor-corner -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/best-practices.md - learn_path: /docs/netdata-parents/parent-configuration-best-practices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/passive-journal-centralization-without-encryption.md - learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/passive-journal-centralization-without-encryption -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/passive-journal-centralization-with-encryption-using-self-signed-certificates.md - learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/passive-journal-centralization-with-encryption-using-self-signed-certificates -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/README.md - learn_path: /docs/logs/logs-centralization-points-with-systemd-journald -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/faq.md - learn_path: /docs/netdata-parents/metrics-centralization-points/faq-on-metrics-centralization-points -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/replication-of-past-samples.md - learn_path: /docs/netdata-parents/metrics-centralization-points/replication-of-past-samples -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/configuration.md - learn_path: /docs/netdata-parents/metrics-centralization-points/configuring-metrics-centralization-points -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/README.md - learn_path: /docs/netdata-parents/metrics-centralization-points -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/clustering-and-high-availability-of-netdata-parents.md - learn_path: /docs/netdata-parents/metrics-centralization-points/clustering-and-high-availability-of-netdata-parents +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/README.md + learn_path: /docs/netdata-agent/quickstart-deployment +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/standalone-deployment.md + learn_path: /docs/netdata-agent +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/deployment-with-centralization-points.md + learn_path: /docs/netdata-parents +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/deployment-strategies.md + learn_path: /docs/netdata-parents/configuration-examples - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/securing-netdata-agents.md learn_path: /docs/netdata-agent/configuration/securing-agents - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/start-stop-restart.md learn_path: /docs/netdata-agent/maintenance/service-control -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/backup-and-restore-an-agent.md - learn_path: /docs/netdata-agent/maintenance/backup-and-restore-an-agent - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configure-netdata-for-cybersecurity-platforms.md learn_path: /docs/netdata-agent/configuration/securing-agents/configure-netdata-for-cybersecurity-platforms -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts.md - learn_path: /docs/netdata-agent/configuration/organize-systems-metrics-and-alerts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/optimize-the-netdata-agents-performance.md - learn_path: /docs/netdata-agent/configuration/performance-optimization +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/backup-and-restore-an-agent.md + learn_path: /docs/netdata-agent/maintenance/backup-and-restore-an-agent +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/using-custom-ca-certificates-with-netdata.md + learn_path: /docs/netdata-agent/configuration/using-custom-ca-certificates-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/README.md + learn_path: /docs/netdata-agent/configuration - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/anonymous-telemetry-events.md learn_path: /docs/netdata-agent/anonymous-telemetry-events - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/secure-your-netdata-agent-with-bearer-token.md learn_path: /docs/netdata-agent/configuration/securing-agents/bearer-token-protection +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/optimize-the-netdata-agents-performance.md + learn_path: /docs/netdata-agent/configuration/performance-optimization +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/organize-systems-metrics-and-alerts.md + learn_path: /docs/netdata-agent/configuration/organize-systems-metrics-and-alerts - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/dynamic-configuration.md learn_path: /docs/netdata-agent/configuration/dynamic-configuration-manager -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/README.md - learn_path: /docs/netdata-agent/configuration -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/using-custom-ca-certificates-with-netdata.md - learn_path: /docs/netdata-agent/configuration/using-custom-ca-certificates-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-apache.md + learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/apache +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/README.md + learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-haproxy.md learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/haproxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-h2o.md - learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/h2o +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-caddy.md + learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/caddy - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-nginx.md learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/nginx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-h2o.md + learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/h2o - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-lighttpd.md learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/lighttpd-v1.4.x -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/README.md - learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-apache.md - learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/apache -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/configuration/running-the-netdata-agent-behind-a-reverse-proxy/Running-behind-caddy.md - learn_path: /docs/netdata-agent/configuration/securing-agents/running-the-agent-behind-a-reverse-proxy/caddy - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/cpu-requirements.md learn_path: /docs/netdata-agent/resource-utilization/cpu +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/README.md + learn_path: /docs/netdata-agent/resource-utilization +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/bandwidth-requirements.md + learn_path: /docs/netdata-agent/resource-utilization/bandwidth - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/ram-requirements.md learn_path: /docs/netdata-agent/resource-utilization/ram - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/disk-requirements-and-retention.md learn_path: /docs/netdata-agent/resource-utilization/disk-&-retention -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/bandwidth-requirements.md - learn_path: /docs/netdata-agent/resource-utilization/bandwidth -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-agent/sizing-netdata-agents/README.md - learn_path: /docs/netdata-agent/resource-utilization -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/node-filter.md - learn_path: /docs/dashboards-and-charts/node-filter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/import-export-print-snapshot.md - learn_path: /docs/developer-and-contributor-corner/import-export-and-print-a-snapshot -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/events-feed.md - learn_path: /docs/dashboards-and-charts/tabs/events -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/kubernetes-tab.md - learn_path: /docs/dashboards-and-charts/tabs/kubernetes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/nodes-tab.md - learn_path: /docs/dashboards-and-charts/tabs/nodes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/alerts-tab.md - learn_path: /docs/dashboards-and-charts/tabs/alerts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/home-tab.md - learn_path: /docs/dashboards-and-charts/tabs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/live-tab.md - learn_path: /docs/dashboards-and-charts/tabs/live -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/visualization-date-and-time-controls.md - learn_path: /docs/dashboards-and-charts/time-controls -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/expanded-chart-analysis.md - learn_path: /docs/dashboards-and-charts/expanded-chart-analysis -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/themes.md - learn_path: /docs/dashboards-and-charts/theme -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/dashboards-tab.md - learn_path: /docs/dashboards-and-charts/tabs/dashboards -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/anomaly-advisor-tab.md - learn_path: /docs/dashboards-and-charts/tabs/anomalies -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/netdata-charts.md - learn_path: /docs/dashboards-and-charts/charts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/README.md - learn_path: /docs/dashboards-and-charts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md - learn_path: /docs/dashboards-and-charts/tabs/metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/logs-tab.md - learn_path: /docs/dashboards-and-charts/tabs/logs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/functions/databases.md + learn_path: /docs/live-view/database-queries +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/functions/processes.md + learn_path: /docs/live-view/processes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/delete/netdata/account.md + learn_path: /docs/netdata-cloud/account-deletion - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/conversations.md learn_path: /docs/netdata-ai/conversations - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/alerts-automation/alerts-automation.md learn_path: /docs/netdata-ai/alerts-automation -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/ai-chat-netdata.md - learn_path: /docs/netdata-ai/mcp/chat-with-netdata - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/README.md learn_path: /docs/netdata-ai/mcp -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/crush.md - learn_path: /docs/netdata-ai/mcp/mcp-clients/crush -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/claude-desktop.md - learn_path: /docs/netdata-ai/mcp/mcp-clients/claude-desktop +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/ai-chat-netdata.md + learn_path: /docs/netdata-ai/mcp/chat-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/ai-devops-copilot.md + learn_path: /docs/netdata-ai/mcp/mcp-clients +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/codex-cli.md + learn_path: /docs/netdata-ai/mcp/mcp-clients/openai-codex-cli - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/vs-code.md learn_path: /docs/netdata-ai/mcp/mcp-clients/visual-studio-code -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/opencode.md - learn_path: /docs/netdata-ai/mcp/mcp-clients/opencode -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/jetbrains-ides.md - learn_path: /docs/netdata-ai/mcp/mcp-clients/jetbrains-ides - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/cursor.md learn_path: /docs/netdata-ai/mcp/mcp-clients/cursor - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/claude-code.md learn_path: /docs/netdata-ai/mcp/mcp-clients/claude-code -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/ai-devops-copilot.md - learn_path: /docs/netdata-ai/mcp/mcp-clients +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/claude-desktop.md + learn_path: /docs/netdata-ai/mcp/mcp-clients/claude-desktop +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/jetbrains-ides.md + learn_path: /docs/netdata-ai/mcp/mcp-clients/jetbrains-ides +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/crush.md + learn_path: /docs/netdata-ai/mcp/mcp-clients/crush +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/opencode.md + learn_path: /docs/netdata-ai/mcp/mcp-clients/opencode - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/gemini-cli.md learn_path: /docs/netdata-ai/mcp/mcp-clients/gemini-cli -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/mcp/mcp-clients/codex-cli.md - learn_path: /docs/netdata-ai/mcp/mcp-clients/openai-codex-cli -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/troubleshooting/index.md - learn_path: /docs/netdata-ai/troubleshooting - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/investigations/custom-investigations.md learn_path: /docs/netdata-ai/investigations/custom-investigations -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/investigations/index.md - learn_path: /docs/netdata-ai/investigations - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/investigations/scheduled-investigations.md learn_path: /docs/netdata-ai/investigations/scheduled-investigations -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/scheduled-reports.md - learn_path: /docs/netdata-ai/insights/scheduled-reports -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/capacity-planning.md - learn_path: /docs/netdata-ai/insights/capacity-planning +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/investigations/index.md + learn_path: /docs/netdata-ai/investigations - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/anomaly-analysis.md learn_path: /docs/netdata-ai/insights/anomaly-analysis +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/capacity-planning.md + learn_path: /docs/netdata-ai/insights/capacity-planning - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/infrastructure-summary.md learn_path: /docs/netdata-ai/insights/infrastructure-summary - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/performance-optimization.md learn_path: /docs/netdata-ai/insights/performance-optimization -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/node-states-and-transitions.md - learn_path: /docs/netdata-cloud/node-states-and-transitions -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/view-plan-and-billing.md - learn_path: /docs/netdata-cloud/netdata-plans-&-billing -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md - learn_path: /docs/netdata-cloud/spaces-and-rooms -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/node-rule-based-room-assignment.md - learn_path: /docs/netdata-cloud/spaces-and-rooms/node-rule-based-room-assignment -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/README.md - learn_path: /docs/netdata-cloud -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/enterprise-sso-authentication.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/enterprise-sso-authentication -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/api-tokens.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/api-tokens -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md - learn_path: /docs/netdata-cloud/authentication-&-authorization/role-based-access-model -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/README.md - learn_path: /docs/netdata-cloud/authentication-&-authorization -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/exporting-metrics/enable-an-exporting-connector.md - learn_path: /docs/exporting-metrics/enable-an-exporting-connector -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/exporting-metrics/README.md - learn_path: /docs/exporting-metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/delete/netdata/account.md - learn_path: /docs/netdata-cloud/account-deletion -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/category-overview-pages/machine-learning-and-assisted-troubleshooting.md - learn_path: /docs/netdata-ai +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/insights/scheduled-reports.md + learn_path: /docs/netdata-ai/insights/scheduled-reports +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-ai/troubleshooting/index.md + learn_path: /docs/netdata-ai/troubleshooting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/best-practices.md + learn_path: /docs/netdata-parents/parent-configuration-best-practices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/README.md + learn_path: /docs/logs/logs-centralization-points-with-systemd-journald +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/passive-journal-centralization-without-encryption.md + learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/passive-journal-centralization-without-encryption +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/logs-centralization-points-with-systemd-journald/passive-journal-centralization-with-encryption-using-self-signed-certificates.md + learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/passive-journal-centralization-with-encryption-using-self-signed-certificates +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/replication-of-past-samples.md + learn_path: /docs/netdata-parents/metrics-centralization-points/replication-of-past-samples +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/README.md + learn_path: /docs/netdata-parents/metrics-centralization-points +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/configuration.md + learn_path: /docs/netdata-parents/metrics-centralization-points/configuring-metrics-centralization-points +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/faq.md + learn_path: /docs/netdata-parents/metrics-centralization-points/faq-on-metrics-centralization-points +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/observability-centralization-points/metrics-centralization-points/clustering-and-high-availability-of-netdata-parents.md + learn_path: /docs/netdata-parents/metrics-centralization-points/clustering-and-high-availability-of-netdata-parents - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/category-overview-pages/maintenance-operations-on-netdata-agents.md learn_path: /docs/netdata-agent/maintenance -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/troubleshooting/troubleshoot.md - learn_path: /docs/netdata-ai/troubleshooting/alert-troubleshooting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/category-overview-pages/machine-learning-and-assisted-troubleshooting.md + learn_path: /docs/netdata-ai +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/enrichment.md + learn_path: /docs/snmp-traps/enrichment +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/validation-and-data-quality.md + learn_path: /docs/snmp-traps/validation-and-data-quality +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/journal-and-querying.md + learn_path: /docs/snmp-traps/journal-and-querying +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/forwarding-to-siem.md + learn_path: /docs/snmp-traps/forwarding-to-siem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/alerts.md + learn_path: /docs/snmp-traps/alerts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/metrics.md + learn_path: /docs/snmp-traps/metrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/README.md + learn_path: /docs/snmp-traps +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/usage-and-output.md + learn_path: /docs/snmp-traps/usage-and-output +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/quick-start.md + learn_path: /docs/snmp-traps/quick-start +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/anti-patterns.md + learn_path: /docs/snmp-traps/anti-patterns +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/installation.md + learn_path: /docs/snmp-traps/installation +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/sizing-and-capacity.md + learn_path: /docs/snmp-traps/sizing-and-capacity-planning +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/configuration.md + learn_path: /docs/snmp-traps/configuration +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/trap-profiles.md + learn_path: /docs/snmp-traps/trap-profiles +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/troubleshooting.md + learn_path: /docs/snmp-traps/troubleshooting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/investigation-playbooks.md + learn_path: /docs/snmp-traps/investigation-playbooks +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/snmp-traps/field-reference.md + learn_path: /docs/snmp-traps/field-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/running-through-cf-tunnels.md + learn_path: /docs/developer-and-contributor-corner/running-a-local-dashboard-through-cloudflare-tunnels +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/README.md + learn_path: /docs/developer-and-contributor-corner +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/collect-apache-nginx-web-logs.md + learn_path: /docs/developer-and-contributor-corner/monitor-nginx-or-apache-web-server-log-files-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/monitor-hadoop-cluster.md + learn_path: /docs/developer-and-contributor-corner/monitor-a-hadoop-cluster-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/collect-unbound-metrics.md + learn_path: /docs/developer-and-contributor-corner/monitor-unbound-dns-servers-with-netdata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/style-guide.md + learn_path: /docs/developer-and-contributor-corner/contribute-to-the-documentation/netdata-style-guide +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/monitor-debug-applications-ebpf.md + learn_path: /docs/developer-and-contributor-corner/monitor-troubleshoot-and-debug-applications-with-ebpf-metrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/build-the-netdata-agent-yourself.md + learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/developer-and-contributor-corner/dyncfg.md + learn_path: /docs/developer-and-contributor-corner/dynamic-configuration - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/install/windows-release-channels.md learn_path: /docs/netdata-agent/installation/windows/switching-install-types-and-release-channels -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/retention-querying.md - learn_path: /docs/network-flows/retention-and-tiers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/troubleshooting/troubleshoot.md + learn_path: /docs/netdata-ai/troubleshooting/alert-troubleshooting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/unclaim-reclaim-node.md + learn_path: /docs/netdata-cloud/unclaim-and-reclaim-a-node +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/switching-install-types.md + learn_path: /docs/netdata-agent/installation/linux/switch-install-types-and-release-channels +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/vm-templates.md + learn_path: /docs/netdata-agent/vm-templates +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/remove-node.md + learn_path: /docs/netdata-cloud/remove-agent +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/node-identities.md + learn_path: /docs/netdata-agent/node-identities +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/anomaly-advisor.md + learn_path: /docs/netdata-ai/troubleshooting/anomaly-advisor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ai-insights.md + learn_path: /docs/netdata-ai/insights +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ml-anomaly-detection/ml-accuracy.md + learn_path: /docs/netdata-ai/anomaly-detection/ml-accuracy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/ml-ai/ml-anomaly-detection/ml-anomaly-detection.md + learn_path: /docs/netdata-ai/anomaly-detection +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/kubernetes-tab.md + learn_path: /docs/dashboards-and-charts/tabs/kubernetes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/README.md + learn_path: /docs/dashboards-and-charts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/logs-tab.md + learn_path: /docs/dashboards-and-charts/tabs/logs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/events-feed.md + learn_path: /docs/dashboards-and-charts/tabs/events +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/dashboards-tab.md + learn_path: /docs/dashboards-and-charts/tabs/dashboards +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/visualization-date-and-time-controls.md + learn_path: /docs/dashboards-and-charts/time-controls +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/import-export-print-snapshot.md + learn_path: /docs/developer-and-contributor-corner/import-export-and-print-a-snapshot +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/themes.md + learn_path: /docs/dashboards-and-charts/theme +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/nodes-tab.md + learn_path: /docs/dashboards-and-charts/tabs/nodes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/alerts-tab.md + learn_path: /docs/dashboards-and-charts/tabs/alerts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/home-tab.md + learn_path: /docs/dashboards-and-charts/tabs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/node-filter.md + learn_path: /docs/dashboards-and-charts/node-filter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/anomaly-advisor-tab.md + learn_path: /docs/dashboards-and-charts/tabs/anomalies +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/netdata-charts.md + learn_path: /docs/dashboards-and-charts/charts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/expanded-chart-analysis.md + learn_path: /docs/dashboards-and-charts/expanded-chart-analysis +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/live-tab.md + learn_path: /docs/dashboards-and-charts/tabs/live +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/dashboards-and-charts/metrics-tab-and-single-node-tabs.md + learn_path: /docs/dashboards-and-charts/tabs/metrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/README.md + learn_path: /docs/security-and-privacy-design +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/netdata-cloud-security.md + learn_path: /docs/security-and-privacy-design/netdata-cloud +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/security-and-privacy-design/netdata-agent-security.md + learn_path: /docs/security-and-privacy-design/netdata-agent - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/enrichment.md learn_path: /docs/network-flows/enrichment -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/field-reference.md - learn_path: /docs/network-flows/field-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/investigation-playbooks.md - learn_path: /docs/network-flows/investigation-playbooks +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/README.md + learn_path: /docs/network-flows +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/quick-start.md + learn_path: /docs/network-flows/quick-start - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/anti-patterns.md learn_path: /docs/network-flows/anti-patterns - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/installation.md learn_path: /docs/network-flows/installation -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/quick-start.md - learn_path: /docs/network-flows/quick-start +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/configuration.md + learn_path: /docs/network-flows/configuration - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/validation.md learn_path: /docs/network-flows/validation-and-data-quality +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/retention-querying.md + learn_path: /docs/network-flows/retention-and-tiers - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/troubleshooting.md learn_path: /docs/network-flows/troubleshooting -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/configuration.md - learn_path: /docs/network-flows/configuration -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/sizing-capacity.md - learn_path: /docs/network-flows/sizing-and-capacity-planning - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/intel-downloader.md learn_path: /docs/network-flows/enrichment-intel-downloader -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/README.md - learn_path: /docs/network-flows -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/time-series.md - learn_path: /docs/network-flows/visualization/time-series -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/dashboard-cards.md - learn_path: /docs/network-flows/visualization/plugin-health-charts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/summary-sankey.md - learn_path: /docs/network-flows/visualization/sankey-and-table -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/filters-facets.md - learn_path: /docs/network-flows/visualization/filters-and-facets +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/sizing-capacity.md + learn_path: /docs/network-flows/sizing-and-capacity-planning +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/investigation-playbooks.md + learn_path: /docs/network-flows/investigation-playbooks +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/field-reference.md + learn_path: /docs/network-flows/field-reference - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/overview.md learn_path: /docs/network-flows/visualization - custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/maps-globe.md learn_path: /docs/network-flows/visualization/maps-and-globe -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/deployment-strategies.md - learn_path: /docs/netdata-parents/configuration-examples -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/deployment-with-centralization-points.md - learn_path: /docs/netdata-parents -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/README.md - learn_path: /docs/netdata-agent/quickstart-deployment -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/deployment-guides/standalone-deployment.md - learn_path: /docs/netdata-agent -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/creating-alerts-with-netdata-alerts-configuration-manager.md - learn_path: /docs/alerts-&-notifications/creating-alerts-with-the-alerts-configuration-manager -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/README.md - learn_path: /docs/alerts-&-notifications/notifications -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/manage-alert-notification-silencing-rules.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-alert-notification-silencing-rules -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/manage-notification-methods.md - learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-notification-methods -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/vm-templates.md - learn_path: /docs/netdata-agent/vm-templates -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/switching-install-types.md - learn_path: /docs/netdata-agent/installation/linux/switch-install-types-and-release-channels -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/node-identities.md - learn_path: /docs/netdata-agent/node-identities -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/remove-node.md - learn_path: /docs/netdata-cloud/remove-agent -- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/learn/unclaim-reclaim-node.md - learn_path: /docs/netdata-cloud/unclaim-and-reclaim-a-node -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/claim/README.md - learn_path: /docs/netdata-cloud/connect-agent -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/FUNCTION_UI_DEVELOPER_GUIDE.md - learn_path: /docs/developer-and-contributor-corner/external-plugins/functions-developer-guide -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/README.md - learn_path: /docs/developer-and-contributor-corner/external-plugins -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/FUNCTION_UI_REFERENCE.md - learn_path: /docs/developer-and-contributor-corner/external-plugins/functions-v3-protocol-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/exporters/shell/README.md - learn_path: /docs/exporting-metrics/shell-scripts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/formatters -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/json/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/json-formatter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/csv/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/csv-formatter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/value/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/value-formatter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/ssv/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/ssv-formatter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/health/README.md - learn_path: /docs/alerts-&-notifications/health-api-calls -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/ses/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/single-or-simple-exponential-smoothing-ses -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/incremental_sum/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/incremental-sum-incremental_sum -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/countif/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/countif -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/max/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/max -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/median/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/median -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/average/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/average-or-mean -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/sum/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/sum -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/stddev/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/standard-deviation-stddev -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/des/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/double-exponential-smoothing -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/trimmed_mean/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/trimmed-mean -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/percentile/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/percentile -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/min/README.md - learn_path: /docs/developer-and-contributor-corner/rest-api/queries/min -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/server/README.md - learn_path: /docs/netdata-agent/configuration/securing-agents/web-server-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/cli/README.md - learn_path: /docs/netdata-agent/agent-cli +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/summary-sankey.md + learn_path: /docs/network-flows/visualization/sankey-and-table +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/dashboard-cards.md + learn_path: /docs/network-flows/visualization/plugin-health-charts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/filters-facets.md + learn_path: /docs/network-flows/visualization/filters-and-facets +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/network-flows/visualization/time-series.md + learn_path: /docs/network-flows/visualization/time-series +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/README.md + learn_path: /docs/netdata-cloud +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/organize-your-infrastructure-invite-your-team.md + learn_path: /docs/netdata-cloud/spaces-and-rooms +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/node-rule-based-room-assignment.md + learn_path: /docs/netdata-cloud/spaces-and-rooms/node-rule-based-room-assignment +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/view-plan-and-billing.md + learn_path: /docs/netdata-cloud/netdata-plans-&-billing +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/node-states-and-transitions.md + learn_path: /docs/netdata-cloud/node-states-and-transitions +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/README.md + learn_path: /docs/netdata-cloud/authentication-&-authorization +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/enterprise-sso-authentication.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/enterprise-sso-authentication +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/role-based-access-model.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/role-based-access-model +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/netdata-cloud/authentication-and-authorization/api-tokens.md + learn_path: /docs/netdata-cloud/authentication-&-authorization/api-tokens +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/exporting-metrics/enable-an-exporting-connector.md + learn_path: /docs/exporting-metrics/enable-an-exporting-connector +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/exporting-metrics/README.md + learn_path: /docs/exporting-metrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/creating-alerts-with-netdata-alerts-configuration-manager.md + learn_path: /docs/alerts-&-notifications/creating-alerts-with-the-alerts-configuration-manager +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/README.md + learn_path: /docs/alerts-&-notifications/notifications +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/centralized-cloud-notifications-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/manage-alert-notification-silencing-rules.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-alert-notification-silencing-rules +- custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/alerts-and-notifications/notifications/centralized-cloud-notifications/manage-notification-methods.md + learn_path: /docs/alerts-&-notifications/notifications/centralized-cloud-notifications/manage-notification-methods - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/as400/README.md learn_path: /docs/collecting-metrics/collectors/operating-systems/ibm-i-as-400 +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/mq/README.md + learn_path: /docs/collecting-metrics/collectors/applications/ibm-mq - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/websphere/mp/README.md learn_path: /docs/collecting-metrics/collectors/applications/ibm-websphere-microprofile -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/websphere/pmi/README.md - learn_path: /docs/collecting-metrics/collectors/applications/ibm-websphere-pmi - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/websphere/jmx/README.md learn_path: /docs/collecting-metrics/collectors/applications/ibm-websphere-jmx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/websphere/pmi/README.md + learn_path: /docs/collecting-metrics/collectors/applications/ibm-websphere-pmi - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/db2/README.md learn_path: /docs/collecting-metrics/collectors/databases/ibm-db2 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/ibm.d/modules/mq/README.md - learn_path: /docs/collecting-metrics/collectors/applications/ibm-mq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/vault/README.md - learn_path: /docs/collecting-metrics/secrets-management/secret-stores/vault +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/gcp/README.md + learn_path: /docs/collecting-metrics/secrets-management/secret-stores/google-secret-manager - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/azure/README.md learn_path: /docs/collecting-metrics/secrets-management/secret-stores/azure-key-vault - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/aws/README.md learn_path: /docs/collecting-metrics/secrets-management/secret-stores/aws-secrets-manager -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/gcp/README.md - learn_path: /docs/collecting-metrics/secrets-management/secret-stores/google-secret-manager +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/agent/secrets/secretstore/backends/vault/README.md + learn_path: /docs/collecting-metrics/secrets-management/secret-stores/vault +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/scripts.d/collector/nagios/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/nagios-plugins-and-custom-scripts - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/README.md learn_path: /docs/developer-and-contributor-corner/external-plugins/go.d.plugin -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/uwsgi/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/uwsgi -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/isc_dhcpd/README.md - learn_path: /docs/collecting-metrics/collectors/networking/isc-dhcp -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/maxscale/README.md - learn_path: /docs/collecting-metrics/collectors/databases/maxscale -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/docker/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_state/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-cluster-state +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/dockersd/README.md + learn_path: /docs/collecting-metrics/service-discovery/docker +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/httpsd/README.md + learn_path: /docs/collecting-metrics/service-discovery/http-endpoint +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/netlistensd/README.md + learn_path: /docs/collecting-metrics/service-discovery/local-listening-processes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/snmpsd/README.md + learn_path: /docs/collecting-metrics/service-discovery/snmp +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/k8ssd/README.md + learn_path: /docs/collecting-metrics/service-discovery/kubernetes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/config/go.d/snmp.trap-profiles/profile-format.md + learn_path: /docs/snmp-traps/snmp-trap-profile-format +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/envoy/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/envoy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/sql/README.md + learn_path: /docs/collecting-metrics/collectors/databases/sql-databases-generic +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vcsa/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/vcenter-server-appliance +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vsphere/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/vmware-vcenter-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mongodb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/mongodb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/monit/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/monit - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/logind/README.md learn_path: /docs/collecting-metrics/collectors/operating-systems/systemd-logind-users - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerdns_recursor/README.md learn_path: /docs/collecting-metrics/collectors/networking/powerdns-recursor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/phpdaemon/README.md - learn_path: /docs/collecting-metrics/collectors/applications/phpdaemon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/zfspool/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs-pools -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/yugabytedb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/yugabytedb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ntpd/README.md - learn_path: /docs/collecting-metrics/collectors/networking/ntpd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/scaleio/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-emc-scaleio +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openvpn/README.md + learn_path: /docs/collecting-metrics/collectors/networking/openvpn +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hdfs/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hadoop-distributed-file-system-hdfs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/phpfpm/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/php-fpm +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/uwsgi/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/uwsgi +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/litespeed/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/litespeed +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openldap/README.md + learn_path: /docs/collecting-metrics/collectors/applications/openldap +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nsd/README.md + learn_path: /docs/collecting-metrics/collectors/networking/nsd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dovecot/README.md + learn_path: /docs/collecting-metrics/collectors/applications/dovecot +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powervault/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-powervault-me4-me5 +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ap/README.md + learn_path: /docs/collecting-metrics/collectors/networking/access-points +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cato_networks/README.md + learn_path: /docs/collecting-metrics/collectors/networking/cato-networks - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/w1sensor/README.md learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/1-wire-sensors -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mssql/README.md - learn_path: /docs/collecting-metrics/collectors/databases/microsoft-sql-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsmasq_dhcp/README.md - learn_path: /docs/collecting-metrics/collectors/networking/dnsmasq-dhcp -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nats/README.md - learn_path: /docs/collecting-metrics/collectors/databases/nats -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cockroachdb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/cockroachdb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxplus/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-plus - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dmcache/README.md learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dmcache-devices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apache/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/apache -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apache/integrations/httpd.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/httpd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/redis/README.md - learn_path: /docs/collecting-metrics/collectors/databases/redis -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/icecast/README.md - learn_path: /docs/collecting-metrics/collectors/applications/icecast -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerdns/README.md - learn_path: /docs/collecting-metrics/collectors/networking/powerdns-authoritative-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/sql/README.md - learn_path: /docs/collecting-metrics/collectors/databases/sql-databases-generic +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/lvm/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/lvm-logical-volumes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginx/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tor/README.md + learn_path: /docs/collecting-metrics/collectors/networking/tor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/panos/README.md + learn_path: /docs/collecting-metrics/collectors/networking/palo-alto-networks-pan-os +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dockerhub/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker-hub-repository +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tengine/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/tengine +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsmasq_dhcp/README.md + learn_path: /docs/collecting-metrics/collectors/networking/dnsmasq-dhcp +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/yugabytedb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/yugabytedb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/phpdaemon/README.md + learn_path: /docs/collecting-metrics/collectors/applications/phpdaemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rabbitmq/README.md + learn_path: /docs/collecting-metrics/collectors/databases/rabbitmq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/systemdunits/README.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/systemd-units +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/smartctl/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/s.m.a.r.t. +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ceph/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ceph +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/squidlog/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/squid-log-files +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/traefik/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/traefik +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rspamd/README.md + learn_path: /docs/collecting-metrics/collectors/applications/rspamd - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/intelgpu/README.md learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/intel-gpu -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vernemq/README.md - learn_path: /docs/collecting-metrics/collectors/databases/vernemq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pihole/README.md - learn_path: /docs/collecting-metrics/collectors/networking/pi-hole -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hddtemp/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hdd-temperature -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hpssa/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hpe-smart-arrays -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/adaptecraid/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/adaptec-raid -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/postgres/README.md - learn_path: /docs/collecting-metrics/collectors/databases/postgresql -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/oracledb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/oracle-db -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/exim/README.md - learn_path: /docs/collecting-metrics/collectors/applications/exim -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/boinc/README.md - learn_path: /docs/collecting-metrics/collectors/applications/boinc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apcupsd/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/apc-ups +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ethtool/README.md + learn_path: /docs/collecting-metrics/collectors/networking/optical-modules +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/typesense/README.md + learn_path: /docs/collecting-metrics/collectors/databases/typesense +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/couchbase/README.md + learn_path: /docs/collecting-metrics/collectors/databases/couchbase +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/redis/README.md + learn_path: /docs/collecting-metrics/collectors/databases/redis +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ipfs/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ipfs - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ping/README.md learn_path: /docs/collecting-metrics/collectors/synthetic-testing/ping -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/wireguard/README.md - learn_path: /docs/collecting-metrics/collectors/networking/wireguard -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rspamd/README.md - learn_path: /docs/collecting-metrics/collectors/applications/rspamd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/proxysql/README.md - learn_path: /docs/collecting-metrics/collectors/databases/proxysql -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp/profile-format.md - learn_path: /docs/collecting-metrics/snmp-profile-format -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp/README.md - learn_path: /docs/collecting-metrics/collectors/networking/snmp-devices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/upsd/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ups-nut -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nvidia_smi/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nvidia-gpu -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/lighttpd/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/lighttpd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/storcli/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/storecli-raid -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rethinkdb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/rethinkdb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rabbitmq/README.md - learn_path: /docs/collecting-metrics/collectors/databases/rabbitmq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsdist/README.md - learn_path: /docs/collecting-metrics/collectors/networking/dnsdist -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/elasticsearch/README.md - learn_path: /docs/collecting-metrics/collectors/databases/elasticsearch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/elasticsearch/integrations/opensearch.md - learn_path: /docs/collecting-metrics/collectors/databases/opensearch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/haproxy/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/haproxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/clickhouse/README.md - learn_path: /docs/collecting-metrics/collectors/databases/clickhouse -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openldap/README.md - learn_path: /docs/collecting-metrics/collectors/applications/openldap -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxunit/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-unit -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ceph/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ceph -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_functions.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-functions -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_mysql_flexible_server.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-mysql-flexible-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_storage_account.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-storage-account -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_data_explorer_cluster.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-data-explorer-cluster -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cognitive_services.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cognitive-services -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_elastic_pool.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-elastic-pool -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_apps.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-apps -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_kubernetes_service_cluster.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-kubernetes-service-cluster -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_event_grid_topic.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-event-grid-topic -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_app_service.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-app-service -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_postgresql_flexible_server.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-postgresql-flexible-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_virtual_machine.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-virtual-machine -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_instances.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-instances -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_firewall.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-firewall -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_database.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-database -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_registry.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-registry -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_key_vault.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-key-vault -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_expressroute_gateway.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-expressroute-gateway -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-monitor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_log_analytics_workspace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-log-analytics-workspace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_nat_gateway.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-nat-gateway -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_front_door.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-front-door -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_load_balancer.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-load-balancer -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_api_management.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-api-management -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_synapse_analytics_workspace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-synapse-analytics-workspace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_vpn_gateway.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-vpn-gateway -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_data_factory.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-data-factory -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_event_hubs_namespace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-event-hubs-namespace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cache_for_redis.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cache-for-redis -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cosmos_db_account.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cosmos-db-account -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_virtual_machine_scale_set.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-virtual-machine-scale-set -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_logic_apps_workflow.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-logic-apps-workflow -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_application_gateway.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-application-gateway -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_iot_hub.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-iot-hub -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_machine_learning_workspace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-machine-learning-workspace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_managed_instance.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-managed-instance -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_expressroute_circuit.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-expressroute-circuit -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_service_bus_namespace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-service-bus-namespace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_application_insights.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-application-insights -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_stream_analytics_job.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-stream-analytics-job -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/docker_engine/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker-engine -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginx/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_kubelet/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubelet -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/phpfpm/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/php-fpm -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vcsa/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/vcenter-server-appliance -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tor/README.md - learn_path: /docs/collecting-metrics/collectors/networking/tor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dockerhub/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker-hub-repository -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/squidlog/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/squid-log-files -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tomcat/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/tomcat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/x509check/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/x.509-certificate -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/puppet/README.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/puppet -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vsphere/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/vmware-vcenter-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/portcheck/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/tcp-udp-endpoints -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pgbouncer/README.md - learn_path: /docs/collecting-metrics/collectors/databases/pgbouncer -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/litespeed/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/litespeed -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/httpcheck/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/http-endpoints -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/monit/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/monit -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/freeradius/README.md - learn_path: /docs/collecting-metrics/collectors/applications/freeradius -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openvpn/README.md - learn_path: /docs/collecting-metrics/collectors/networking/openvpn -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/samba/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/samba -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsmasq/README.md - learn_path: /docs/collecting-metrics/collectors/networking/dnsmasq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hdfs/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hadoop-distributed-file-system-hdfs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/README.md - learn_path: /docs/collecting-metrics/collectors/databases/mysql -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/integrations/percona_mysql.md - learn_path: /docs/collecting-metrics/collectors/databases/percona-mysql -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/integrations/mariadb.md - learn_path: /docs/collecting-metrics/collectors/databases/mariadb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/scaleio/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-emc-scaleio -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/lvm/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/lvm-logical-volumes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/panos/README.md - learn_path: /docs/collecting-metrics/collectors/networking/palo-alto-networks-pan-os -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/whoisquery/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/domain-expiration-date -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ipfs/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ipfs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/traefik/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/traefik -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/activemq/README.md - learn_path: /docs/collecting-metrics/collectors/databases/activemq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/systemdunits/README.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/systemd-units -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/geth/README.md - learn_path: /docs/collecting-metrics/collectors/applications/go-ethereum -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/memcached/README.md - learn_path: /docs/collecting-metrics/collectors/databases/memcached -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dovecot/README.md - learn_path: /docs/collecting-metrics/collectors/applications/dovecot -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cato_networks/README.md - learn_path: /docs/collecting-metrics/collectors/networking/cato-networks -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/filecheck/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/files-and-directories -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/couchdb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/couchdb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/weblog/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/web-server-log-files -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/fluentd/README.md - learn_path: /docs/collecting-metrics/collectors/applications/fluentd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/docker/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/beanstalk/README.md learn_path: /docs/collecting-metrics/collectors/databases/beanstalk -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/logstash/README.md - learn_path: /docs/collecting-metrics/collectors/applications/logstash -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/sensors/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/linux-sensors -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_kubeproxy/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubeproxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/typesense/README.md - learn_path: /docs/collecting-metrics/collectors/databases/typesense -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dcgm/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nvidia-data-center-gpu-manager-dcgm -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/smartctl/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/s.m.a.r.t. -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/zookeeper/README.md - learn_path: /docs/collecting-metrics/collectors/applications/zookeeper -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nsd/README.md - learn_path: /docs/collecting-metrics/collectors/networking/nsd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsquery/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/dns-query -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pulsar/README.md - learn_path: /docs/collecting-metrics/collectors/databases/apache-pulsar -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/spigotmc/README.md - learn_path: /docs/collecting-metrics/collectors/applications/spigotmc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/unbound/README.md - learn_path: /docs/collecting-metrics/collectors/networking/unbound -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/consul/README.md - learn_path: /docs/collecting-metrics/collectors/applications/consul -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/riakkv/README.md - learn_path: /docs/collecting-metrics/collectors/databases/riak-kv -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxvts/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-vts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ethtool/README.md - learn_path: /docs/collecting-metrics/collectors/networking/optical-modules -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/postfix/README.md - learn_path: /docs/collecting-metrics/collectors/applications/postfix -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openvpn_status_log/README.md - learn_path: /docs/collecting-metrics/collectors/networking/openvpn-status-log -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/varnish/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/varnish -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/envoy/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/envoy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/supervisord/README.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/supervisor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/megacli/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/megacli-megaraid -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/squid/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/squid -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pika/README.md - learn_path: /docs/collecting-metrics/collectors/databases/pika -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tengine/README.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/tengine -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/fail2ban/README.md - learn_path: /docs/collecting-metrics/collectors/applications/fail2ban -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerstore/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-powerstore -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ap/README.md - learn_path: /docs/collecting-metrics/collectors/networking/access-points -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/gearman/README.md - learn_path: /docs/collecting-metrics/collectors/applications/gearman -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/coredns/README.md - learn_path: /docs/collecting-metrics/collectors/networking/coredns -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_apiserver/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-api-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powervault/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-powervault-me4-me5 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nvme/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nvme-devices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/couchbase/README.md - learn_path: /docs/collecting-metrics/collectors/databases/couchbase +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsmasq/README.md + learn_path: /docs/collecting-metrics/collectors/networking/dnsmasq - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/README.md learn_path: /docs/collecting-metrics/collectors/applications/prometheus-endpoint -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nrpe_daemon.md - learn_path: /docs/collecting-metrics/collectors/applications/nrpe-daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/podman.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/podman +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/crowdsec.md + learn_path: /docs/collecting-metrics/collectors/applications/crowdsec +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clamav_daemon.md + learn_path: /docs/collecting-metrics/collectors/applications/clamav-daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/yourls_url_shortener.md + learn_path: /docs/collecting-metrics/collectors/applications/yourls-url-shortener +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/salicru_eqx_inverter.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/salicru-eqx-inverter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/patroni.md + learn_path: /docs/collecting-metrics/collectors/databases/patroni +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_quota.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/aws-quota +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dynatrace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/dynatrace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/steam.md + learn_path: /docs/collecting-metrics/collectors/applications/steam +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ripe_atlas.md + learn_path: /docs/collecting-metrics/collectors/networking/ripe-atlas +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/openrc.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/openrc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jenkins.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/jenkins +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sma_inverters.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sma-inverters +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gcp_gce.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/gcp-gce +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/strongswan.md + learn_path: /docs/collecting-metrics/collectors/networking/strongswan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dmarc.md + learn_path: /docs/collecting-metrics/collectors/applications/dmarc - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/fastd.md learn_path: /docs/collecting-metrics/collectors/networking/fastd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/siemens_s7_plc.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/siemens-s7-plc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/shelly_humidity_sensor.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/shelly-humidity-sensor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jmx.md - learn_path: /docs/collecting-metrics/collectors/applications/jmx -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/powerpal_devices.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/powerpal-devices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_rds.md - learn_path: /docs/collecting-metrics/collectors/databases/aws-rds -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/google_cloud_platform.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/google-cloud-platform -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sunspec_solar_energy.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sunspec-solar-energy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sphinx.md - learn_path: /docs/collecting-metrics/collectors/databases/sphinx -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/blackbox.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/blackbox -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/hubble.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/hubble -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_cryptoexpress_cex_cards.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ibm-cryptoexpress-cex-cards -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/solis_ginlong_5g_inverters.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/solis-ginlong-5g-inverters -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/pimoroni_enviro+.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/pimoroni-enviro+ +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/openroadm_devices.md + learn_path: /docs/collecting-metrics/collectors/networking/openroadm-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_z_hardware_management_console.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ibm-z-hardware-management-console +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tankerkoenig_api.md + learn_path: /docs/collecting-metrics/collectors/applications/tankerkoenig-api - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_spectrum.md learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ibm-spectrum -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cilium_operator.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/cilium-operator -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/radio_thermostat.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/radio-thermostat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/frrouting.md - learn_path: /docs/collecting-metrics/collectors/networking/frrouting -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freifunk_network.md - learn_path: /docs/collecting-metrics/collectors/networking/freifunk-network -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clamscan_results.md - learn_path: /docs/collecting-metrics/collectors/applications/clamscan-results -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/pgpool-ii.md - learn_path: /docs/collecting-metrics/collectors/databases/pgpool-ii -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/patroni.md - learn_path: /docs/collecting-metrics/collectors/databases/patroni +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vertica.md + learn_path: /docs/collecting-metrics/collectors/databases/vertica +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/github_repository.md + learn_path: /docs/collecting-metrics/collectors/applications/github-repository +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sabnzbd.md + learn_path: /docs/collecting-metrics/collectors/applications/sabnzbd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka_zookeeper.md + learn_path: /docs/collecting-metrics/collectors/databases/kafka-zookeeper +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dutch_electricity_smart_meter.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/dutch-electricity-smart-meter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freebsd_nfs.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/freebsd-nfs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/spacelift.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/spacelift +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/solar_logging_stick.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/solar-logging-stick +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/grafana.md + learn_path: /docs/collecting-metrics/collectors/applications/grafana +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/4d_server.md + learn_path: /docs/collecting-metrics/collectors/databases/4d-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/blackbox.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/blackbox +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nrpe_daemon.md + learn_path: /docs/collecting-metrics/collectors/applications/nrpe-daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/honeypot.md + learn_path: /docs/collecting-metrics/collectors/applications/honeypot +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/craftbeerpi.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/craftbeerpi +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/radius.md + learn_path: /docs/collecting-metrics/collectors/applications/radius +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/elgato_key_light_devices..md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/elgato-key-light-devices. +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/redis_queue.md + learn_path: /docs/collecting-metrics/collectors/databases/redis-queue - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cilium_agent.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/cilium-agent -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vault_pki.md - learn_path: /docs/collecting-metrics/collectors/applications/vault-pki +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/linode.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/linode +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bosh.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/bosh +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/personal_weather_station.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/personal-weather-station +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gpsd.md + learn_path: /docs/collecting-metrics/collectors/applications/gpsd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sonic_nos.md + learn_path: /docs/collecting-metrics/collectors/networking/sonic-nos - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/warp10.md learn_path: /docs/collecting-metrics/collectors/databases/warp10 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/openrc.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/openrc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/radius.md - learn_path: /docs/collecting-metrics/collectors/applications/radius -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/christ_elektronik_clm5ip_power_panel.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/christ-elektronik-clm5ip-power-panel -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/storidge.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/storidge -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/xiaomi_mi_flora.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/xiaomi-mi-flora +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/8430ft_modem.md + learn_path: /docs/collecting-metrics/collectors/networking/8430ft-modem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/generic_storage_enclosure_tool.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/generic-storage-enclosure-tool +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bird_routing_daemon.md + learn_path: /docs/collecting-metrics/collectors/networking/bird-routing-daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/concourse.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/concourse +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/shelly_humidity_sensor.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/shelly-humidity-sensor - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/collectd.md learn_path: /docs/collecting-metrics/collectors/applications/collectd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/keepalived.md - learn_path: /docs/collecting-metrics/collectors/networking/keepalived -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_z_hardware_management_console.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ibm-z-hardware-management-console -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dynatrace.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/dynatrace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/discourse.md - learn_path: /docs/collecting-metrics/collectors/applications/discourse -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/google_stackdriver.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/google-stackdriver -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/openroadm_devices.md - learn_path: /docs/collecting-metrics/collectors/networking/openroadm-devices -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/netatmo_sensors.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/netatmo-sensors - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sysload.md learn_path: /docs/collecting-metrics/collectors/applications/sysload -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/site_24x7.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/site-24x7 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_mq.md - learn_path: /docs/collecting-metrics/collectors/databases/ibm-mq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clamav_daemon.md - learn_path: /docs/collecting-metrics/collectors/applications/clamav-daemon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/scylladb.md - learn_path: /docs/collecting-metrics/collectors/databases/scylladb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/energomera_smart_power_meters.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/energomera-smart-power-meters +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/influxdb.md + learn_path: /docs/collecting-metrics/collectors/databases/influxdb - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mqtt_blackbox.md learn_path: /docs/collecting-metrics/collectors/synthetic-testing/mqtt-blackbox -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/github_repository.md - learn_path: /docs/collecting-metrics/collectors/applications/github-repository -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nature_remo_e_lite_devices.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nature-remo-e-lite-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/site_24x7.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/site-24x7 +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_rds.md + learn_path: /docs/collecting-metrics/collectors/databases/aws-rds +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloudwatch.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloudwatch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cryptowatch.md + learn_path: /docs/collecting-metrics/collectors/applications/cryptowatch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_ec2_compute_instances.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/aws-ec2-compute-instances +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gobetween.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/gobetween +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/hubble.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/hubble +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sphinx.md + learn_path: /docs/collecting-metrics/collectors/databases/sphinx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/proxmox_ve.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/proxmox-ve - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tesla_wall_connector.md learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/tesla-wall-connector -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/redis_queue.md - learn_path: /docs/collecting-metrics/collectors/databases/redis-queue -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freebsd_rctl-racct.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/freebsd-rctl-racct -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sma_inverters.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sma-inverters -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/salicru_eqx_inverter.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/salicru-eqx-inverter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/open_vswitch.md - learn_path: /docs/collecting-metrics/collectors/networking/open-vswitch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cilium_proxy.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/cilium-proxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mosquitto.md - learn_path: /docs/collecting-metrics/collectors/databases/mosquitto - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/graylog_server.md learn_path: /docs/collecting-metrics/collectors/applications/graylog-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/8430ft_modem.md - learn_path: /docs/collecting-metrics/collectors/networking/8430ft-modem -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/synology_activebackup.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/synology-activebackup -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka.md - learn_path: /docs/collecting-metrics/collectors/databases/kafka +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/proftpd.md + learn_path: /docs/collecting-metrics/collectors/applications/proftpd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clash.md + learn_path: /docs/collecting-metrics/collectors/networking/clash +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/alamos_fe2_server.md + learn_path: /docs/collecting-metrics/collectors/applications/alamos-fe2-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mesos.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/mesos +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/lustre_metadata.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/lustre-metadata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vscode.md + learn_path: /docs/collecting-metrics/collectors/applications/vscode - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ubiquiti_ufiber_olt.md learn_path: /docs/collecting-metrics/collectors/networking/ubiquiti-ufiber-olt -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloud_foundry_firehose.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloud-foundry-firehose -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/personal_weather_station.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/personal-weather-station -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dmarc.md - learn_path: /docs/collecting-metrics/collectors/applications/dmarc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jarvis_standing_desk.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/jarvis-standing-desk -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/lynis_audit_reports.md - learn_path: /docs/collecting-metrics/collectors/applications/lynis-audit-reports -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka_consumer_lag.md - learn_path: /docs/collecting-metrics/collectors/databases/kafka-consumer-lag -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/4d_server.md - learn_path: /docs/collecting-metrics/collectors/databases/4d-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/discourse.md + learn_path: /docs/collecting-metrics/collectors/applications/discourse +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/solis_ginlong_5g_inverters.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/solis-ginlong-5g-inverters +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/scylladb.md + learn_path: /docs/collecting-metrics/collectors/databases/scylladb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tado_smart_heating_solution.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/tado-smart-heating-solution - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/openweathermap.md learn_path: /docs/collecting-metrics/collectors/applications/openweathermap -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/smart_meters_sml.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/smart-meters-sml -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/apicast.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/apicast -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sabnzbd.md - learn_path: /docs/collecting-metrics/collectors/applications/sabnzbd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/suricata.md - learn_path: /docs/collecting-metrics/collectors/applications/suricata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/meilisearch.md - learn_path: /docs/collecting-metrics/collectors/databases/meilisearch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/homebridge.md - learn_path: /docs/collecting-metrics/collectors/applications/homebridge -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/generic_storage_enclosure_tool.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/generic-storage-enclosure-tool +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/github_api_rate_limit.md + learn_path: /docs/collecting-metrics/collectors/applications/github-api-rate-limit - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/softether_vpn_server.md learn_path: /docs/collecting-metrics/collectors/networking/softether-vpn-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gobetween.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/gobetween -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mtail.md - learn_path: /docs/collecting-metrics/collectors/applications/mtail -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/proftpd.md - learn_path: /docs/collecting-metrics/collectors/applications/proftpd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/chia.md - learn_path: /docs/collecting-metrics/collectors/applications/chia -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/minecraft.md - learn_path: /docs/collecting-metrics/collectors/applications/minecraft -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vertica.md - learn_path: /docs/collecting-metrics/collectors/databases/vertica -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/homey.md - learn_path: /docs/collecting-metrics/collectors/applications/homey -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/eos.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/eos -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freebsd_nfs.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/freebsd-nfs - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/hana.md learn_path: /docs/collecting-metrics/collectors/databases/hana -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/podman.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/podman -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_spectrum_virtualize.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ibm-spectrum-virtualize -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bird_routing_daemon.md - learn_path: /docs/collecting-metrics/collectors/networking/bird-routing-daemon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/etcd.md - learn_path: /docs/collecting-metrics/collectors/applications/etcd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloud_foundry.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloud-foundry -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/amd_cpu_&_gpu.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/amd-cpu-&-gpu -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/grafana.md - learn_path: /docs/collecting-metrics/collectors/applications/grafana -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/statuspage.md - learn_path: /docs/collecting-metrics/collectors/applications/statuspage -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gpsd.md - learn_path: /docs/collecting-metrics/collectors/applications/gpsd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bosh.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/bosh -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/twitch.md - learn_path: /docs/collecting-metrics/collectors/applications/twitch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tankerkoenig_api.md - learn_path: /docs/collecting-metrics/collectors/applications/tankerkoenig-api -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/strongswan.md - learn_path: /docs/collecting-metrics/collectors/networking/strongswan -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/journald.md - learn_path: /docs/collecting-metrics/collectors/applications/journald -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gcp_gce.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/gcp-gce -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kannel.md - learn_path: /docs/collecting-metrics/collectors/applications/kannel -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gitlab_runner.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/gitlab-runner -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/github_api_rate_limit.md - learn_path: /docs/collecting-metrics/collectors/applications/github-api-rate-limit -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/steam.md - learn_path: /docs/collecting-metrics/collectors/applications/steam -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tado_smart_heating_solution.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/tado-smart-heating-solution -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bungeecord.md - learn_path: /docs/collecting-metrics/collectors/applications/bungeecord -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_aix_systems_njmon.md - learn_path: /docs/collecting-metrics/collectors/applications/ibm-aix-systems-njmon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/starlink_spacex.md - learn_path: /docs/collecting-metrics/collectors/networking/starlink-spacex -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/craftbeerpi.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/craftbeerpi -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/slurm.md - learn_path: /docs/collecting-metrics/collectors/applications/slurm -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dutch_electricity_smart_meter.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/dutch-electricity-smart-meter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka_zookeeper.md - learn_path: /docs/collecting-metrics/collectors/databases/kafka-zookeeper +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clustercontrol_cmon.md + learn_path: /docs/collecting-metrics/collectors/databases/clustercontrol-cmon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freifunk_network.md + learn_path: /docs/collecting-metrics/collectors/networking/freifunk-network +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/uptimerobot.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/uptimerobot +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloud_foundry.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloud-foundry +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/twitch.md + learn_path: /docs/collecting-metrics/collectors/applications/twitch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/hitron_coda_cable_modem.md + learn_path: /docs/collecting-metrics/collectors/networking/hitron-coda-cable-modem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/christ_elektronik_clm5ip_power_panel.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/christ-elektronik-clm5ip-power-panel +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/freebsd_rctl-racct.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/freebsd-rctl-racct +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sunspec_solar_energy.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sunspec-solar-energy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cilium_proxy.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/cilium-proxy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/zerto.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/zerto +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/philips_hue.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/philips-hue +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka.md + learn_path: /docs/collecting-metrics/collectors/databases/kafka +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/open_vswitch.md + learn_path: /docs/collecting-metrics/collectors/networking/open-vswitch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/google_stackdriver.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/google-stackdriver - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/loki.md learn_path: /docs/collecting-metrics/collectors/applications/loki +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/statuspage.md + learn_path: /docs/collecting-metrics/collectors/applications/statuspage +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/etcd.md + learn_path: /docs/collecting-metrics/collectors/applications/etcd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/lynis_audit_reports.md + learn_path: /docs/collecting-metrics/collectors/applications/lynis-audit-reports +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jarvis_standing_desk.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/jarvis-standing-desk +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nextcloud_servers.md + learn_path: /docs/collecting-metrics/collectors/applications/nextcloud-servers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jmx.md + learn_path: /docs/collecting-metrics/collectors/applications/jmx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/siemens_s7_plc.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/siemens-s7-plc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/radio_thermostat.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/radio-thermostat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/smart_meters_sml.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/smart-meters-sml +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/chia.md + learn_path: /docs/collecting-metrics/collectors/applications/chia +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/storidge.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/storidge - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/obs_studio.md learn_path: /docs/collecting-metrics/collectors/applications/obs-studio -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/uptimerobot.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/uptimerobot -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/yourls_url_shortener.md - learn_path: /docs/collecting-metrics/collectors/applications/yourls-url-shortener -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vscode.md - learn_path: /docs/collecting-metrics/collectors/applications/vscode +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kannel.md + learn_path: /docs/collecting-metrics/collectors/applications/kannel +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/xiaomi_mi_flora.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/xiaomi-mi-flora +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/starlink_spacex.md + learn_path: /docs/collecting-metrics/collectors/networking/starlink-spacex +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/minecraft.md + learn_path: /docs/collecting-metrics/collectors/applications/minecraft +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sense_energy.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sense-energy - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/halon.md learn_path: /docs/collecting-metrics/collectors/applications/halon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/influxdb.md - learn_path: /docs/collecting-metrics/collectors/databases/influxdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/journald.md + learn_path: /docs/collecting-metrics/collectors/applications/journald +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_spectrum_virtualize.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ibm-spectrum-virtualize +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/homebridge.md + learn_path: /docs/collecting-metrics/collectors/applications/homebridge +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/modbus_protocol.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/modbus-protocol +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dnsbl.md + learn_path: /docs/collecting-metrics/collectors/networking/dnsbl +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/eos.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/eos +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tesla_vehicle.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/tesla-vehicle +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/google_cloud_platform.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/google-cloud-platform +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tacacs.md + learn_path: /docs/collecting-metrics/collectors/applications/tacacs - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/pgbackrest.md learn_path: /docs/collecting-metrics/collectors/databases/pgbackrest -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloudwatch.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloudwatch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/philips_hue.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/philips-hue -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sense_energy.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sense-energy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/hitron_coda_cable_modem.md - learn_path: /docs/collecting-metrics/collectors/networking/hitron-coda-cable-modem - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/authlog.md learn_path: /docs/collecting-metrics/collectors/applications/authlog -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cryptowatch.md - learn_path: /docs/collecting-metrics/collectors/applications/cryptowatch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/honeypot.md - learn_path: /docs/collecting-metrics/collectors/applications/honeypot -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/alamos_fe2_server.md - learn_path: /docs/collecting-metrics/collectors/applications/alamos-fe2-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/netapp_ontap_api.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/netapp-ontap-api -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/dnsbl.md - learn_path: /docs/collecting-metrics/collectors/networking/dnsbl -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/celery.md - learn_path: /docs/collecting-metrics/collectors/applications/celery +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/amd_cpu_&_gpu.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/amd-cpu-&-gpu +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clamscan_results.md + learn_path: /docs/collecting-metrics/collectors/applications/clamscan-results +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cloud_foundry_firehose.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/cloud-foundry-firehose - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/netapp_solidfire.md learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/netapp-solidfire +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/slurm.md + learn_path: /docs/collecting-metrics/collectors/applications/slurm +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/cilium_operator.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/cilium-operator +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/synology_activebackup.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/synology-activebackup +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/frrouting.md + learn_path: /docs/collecting-metrics/collectors/networking/frrouting +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mtail.md + learn_path: /docs/collecting-metrics/collectors/applications/mtail +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/raritan_pdu.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/raritan-pdu +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/kafka_consumer_lag.md + learn_path: /docs/collecting-metrics/collectors/databases/kafka-consumer-lag - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mogilefs.md learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/mogilefs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_aix_systems_njmon.md + learn_path: /docs/collecting-metrics/collectors/applications/ibm-aix-systems-njmon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/bungeecord.md + learn_path: /docs/collecting-metrics/collectors/applications/bungeecord +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/vault_pki.md + learn_path: /docs/collecting-metrics/collectors/applications/vault-pki +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mosquitto.md + learn_path: /docs/collecting-metrics/collectors/databases/mosquitto +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/keepalived.md + learn_path: /docs/collecting-metrics/collectors/networking/keepalived +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_cryptoexpress_cex_cards.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ibm-cryptoexpress-cex-cards +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/meilisearch.md + learn_path: /docs/collecting-metrics/collectors/databases/meilisearch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/pgpool-ii.md + learn_path: /docs/collecting-metrics/collectors/databases/pgpool-ii +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/netatmo_sensors.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/netatmo-sensors +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/gitlab_runner.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/gitlab-runner +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/homey.md + learn_path: /docs/collecting-metrics/collectors/applications/homey +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/energomera_smart_power_meters.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/energomera-smart-power-meters - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nextdns.md learn_path: /docs/collecting-metrics/collectors/networking/nextdns - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/google_pagespeed.md learn_path: /docs/collecting-metrics/collectors/applications/google-pagespeed -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/sonic_nos.md - learn_path: /docs/collecting-metrics/collectors/networking/sonic-nos -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/crowdsec.md - learn_path: /docs/collecting-metrics/collectors/applications/crowdsec -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/elgato_key_light_devices..md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/elgato-key-light-devices. -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/mesos.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/mesos -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/raritan_pdu.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/raritan-pdu -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_quota.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/aws-quota -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/jenkins.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/jenkins -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/modbus_protocol.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/modbus-protocol -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/linode.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/linode -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/proxmox_ve.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/proxmox-ve -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/spacelift.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/spacelift -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nextcloud_servers.md - learn_path: /docs/collecting-metrics/collectors/applications/nextcloud-servers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tacacs.md - learn_path: /docs/collecting-metrics/collectors/applications/tacacs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clustercontrol_cmon.md - learn_path: /docs/collecting-metrics/collectors/databases/clustercontrol-cmon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/lustre_metadata.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/lustre-metadata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ripe_atlas.md - learn_path: /docs/collecting-metrics/collectors/networking/ripe-atlas -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/zerto.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/zerto -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/tesla_vehicle.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/tesla-vehicle -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/aws_ec2_compute_instances.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/aws-ec2-compute-instances -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/clash.md - learn_path: /docs/collecting-metrics/collectors/networking/clash -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/solar_logging_stick.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/solar-logging-stick -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/concourse.md - learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/concourse +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/suricata.md + learn_path: /docs/collecting-metrics/collectors/applications/suricata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/celery.md + learn_path: /docs/collecting-metrics/collectors/applications/celery +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/netapp_ontap_api.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/netapp-ontap-api +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/apicast.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/apicast +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/nature_remo_e_lite_devices.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nature-remo-e-lite-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/pimoroni_enviro+.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/pimoroni-enviro+ +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/ibm_mq.md + learn_path: /docs/collecting-metrics/collectors/databases/ibm-mq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/prometheus/integrations/powerpal_devices.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/powerpal-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_kubeproxy/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubeproxy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/spigotmc/README.md + learn_path: /docs/collecting-metrics/collectors/applications/spigotmc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxvts/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-vts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsquery/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/dns-query +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxunit/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-unit +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nvidia_smi/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nvidia-gpu +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/consul/README.md + learn_path: /docs/collecting-metrics/collectors/applications/consul +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/coredns/README.md + learn_path: /docs/collecting-metrics/collectors/networking/coredns +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/oracledb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/oracle-db +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apache/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/apache +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apache/integrations/httpd.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/httpd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/weblog/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/web-server-log-files +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nginxplus/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/nginx-plus +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/wireguard/README.md + learn_path: /docs/collecting-metrics/collectors/networking/wireguard +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/megacli/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/megacli-megaraid +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dnsdist/README.md + learn_path: /docs/collecting-metrics/collectors/networking/dnsdist +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pulsar/README.md + learn_path: /docs/collecting-metrics/collectors/databases/apache-pulsar +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/lighttpd/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/lighttpd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/memcached/README.md + learn_path: /docs/collecting-metrics/collectors/databases/memcached +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/tomcat/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/tomcat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nats/README.md + learn_path: /docs/collecting-metrics/collectors/databases/nats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/icecast/README.md + learn_path: /docs/collecting-metrics/collectors/applications/icecast +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pika/README.md + learn_path: /docs/collecting-metrics/collectors/databases/pika +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/varnish/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/varnish +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/whoisquery/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/domain-expiration-date +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/logstash/README.md + learn_path: /docs/collecting-metrics/collectors/applications/logstash +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/supervisord/README.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/supervisor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pgbouncer/README.md + learn_path: /docs/collecting-metrics/collectors/databases/pgbouncer +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/activemq/README.md + learn_path: /docs/collecting-metrics/collectors/databases/activemq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/README.md + learn_path: /docs/collecting-metrics/collectors/databases/mysql +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/integrations/percona_mysql.md + learn_path: /docs/collecting-metrics/collectors/databases/percona-mysql +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mysql/integrations/mariadb.md + learn_path: /docs/collecting-metrics/collectors/databases/mariadb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/gearman/README.md + learn_path: /docs/collecting-metrics/collectors/applications/gearman +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/httpcheck/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/http-endpoints +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/samba/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/samba +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/squid/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/squid +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/vernemq/README.md + learn_path: /docs/collecting-metrics/collectors/databases/vernemq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/exim/README.md + learn_path: /docs/collecting-metrics/collectors/applications/exim +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/apcupsd/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/apc-ups +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hddtemp/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hdd-temperature +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_apiserver/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-api-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/zfspool/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs-pools +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/docker_engine/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker-engine +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp/profile-format.md + learn_path: /docs/collecting-metrics/snmp-profile-format +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp/README.md + learn_path: /docs/collecting-metrics/collectors/networking/snmp-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/x509check/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/x.509-certificate +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/ntpd/README.md + learn_path: /docs/collecting-metrics/collectors/networking/ntpd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/snmp_traps/README.md + learn_path: /docs/collecting-metrics/collectors/networking/snmp-trap-listener - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/chrony/README.md learn_path: /docs/collecting-metrics/collectors/networking/chrony -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mongodb/README.md - learn_path: /docs/collecting-metrics/collectors/databases/mongodb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cassandra/README.md - learn_path: /docs/collecting-metrics/collectors/databases/cassandra -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/httpsd/README.md - learn_path: /docs/collecting-metrics/service-discovery/http-endpoint -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/snmpsd/README.md - learn_path: /docs/collecting-metrics/service-discovery/snmp -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/netlistensd/README.md - learn_path: /docs/collecting-metrics/service-discovery/local-listening-processes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/dockersd/README.md - learn_path: /docs/collecting-metrics/service-discovery/docker -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/discovery/sdext/discoverer/k8ssd/README.md - learn_path: /docs/collecting-metrics/service-discovery/kubernetes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/scripts.d/collector/nagios/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/nagios-plugins-and-custom-scripts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/registry/CONFIGURATION.md - learn_path: /docs/netdata-agent/configuration/registry -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/registry/README.md - learn_path: /docs/netdata-agent/registry -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/alert-configuration-ordering.md - learn_path: /docs/alerts-&-notifications/alert-configuration-ordering -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/overriding-stock-alerts.md - learn_path: /docs/alerts-&-notifications/overriding-stock-alerts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/REFERENCE.md - learn_path: /docs/alerts-&-notifications/alert-configuration-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/README.md - learn_path: /docs/alerts-&-notifications -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/agent-notifications-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/irc/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/irc -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/flock/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/flock -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/dynatrace/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/dynatrace -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/rocketchat/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/rocketchat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/matrix/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/matrix -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/ilert/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/ilert -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/opsgenie/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/opsgenie -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/messagebird/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/messagebird -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/msteams/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/microsoft-teams -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/email/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/email -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/slack/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/slack -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/ntfy/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/ntfy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/twilio/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/twilio -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/prowl/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/prowl -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pagerduty/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pagerduty -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/smseagle/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/smseagle -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/alerta/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/alerta -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/smstools3/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/sms -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/discord/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/discord -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/custom/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/custom -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pushover/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pushover -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/awssns/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/aws-sns -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/signl4/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/signl4 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/kavenegar/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/kavenegar -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/telegram/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/telegram -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/syslog/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/syslog -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pushbullet/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pushbullet -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/gotify/README.md - learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/gotify +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/hpssa/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/hpe-smart-arrays +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/dcgm/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/nvidia-data-center-gpu-manager-dcgm +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_event_hubs_namespace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-event-hubs-namespace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cosmos_db_account.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cosmos-db-account +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_virtual_machine.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-virtual-machine +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_firewall.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-firewall +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_log_analytics_workspace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-log-analytics-workspace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_synapse_analytics_workspace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-synapse-analytics-workspace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_functions.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-functions +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cognitive_services.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cognitive-services +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_monitor.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-monitor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_apps.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-apps +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_mysql_flexible_server.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-mysql-flexible-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_data_factory.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-data-factory +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_expressroute_circuit.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-expressroute-circuit +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_key_vault.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-key-vault +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_nat_gateway.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-nat-gateway +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_api_management.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-api-management +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_logic_apps_workflow.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-logic-apps-workflow +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_application_insights.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-application-insights +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_postgresql_flexible_server.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-postgresql-flexible-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_event_grid_topic.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-event-grid-topic +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_vpn_gateway.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-vpn-gateway +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_kubernetes_service_cluster.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-kubernetes-service-cluster +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_cache_for_redis.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-cache-for-redis +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_storage_account.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-storage-account +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_iot_hub.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-iot-hub +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_instances.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-instances +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_database.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-database +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_virtual_machine_scale_set.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-virtual-machine-scale-set +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_service_bus_namespace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-service-bus-namespace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_front_door.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-front-door +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_load_balancer.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-load-balancer +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_stream_analytics_job.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-stream-analytics-job +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_container_registry.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-container-registry +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_managed_instance.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-managed-instance +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_machine_learning_workspace.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-machine-learning-workspace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_data_explorer_cluster.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-data-explorer-cluster +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_sql_elastic_pool.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-sql-elastic-pool +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_application_gateway.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-application-gateway +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_expressroute_gateway.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-expressroute-gateway +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/azure_monitor/integrations/azure_app_service.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/azure-app-service +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/geth/README.md + learn_path: /docs/collecting-metrics/collectors/applications/go-ethereum +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/unbound/README.md + learn_path: /docs/collecting-metrics/collectors/networking/unbound +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/maxscale/README.md + learn_path: /docs/collecting-metrics/collectors/databases/maxscale +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_state/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-cluster-state +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/fluentd/README.md + learn_path: /docs/collecting-metrics/collectors/applications/fluentd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/storcli/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/storecli-raid +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerdns/README.md + learn_path: /docs/collecting-metrics/collectors/networking/powerdns-authoritative-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/fail2ban/README.md + learn_path: /docs/collecting-metrics/collectors/applications/fail2ban +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/proxysql/README.md + learn_path: /docs/collecting-metrics/collectors/databases/proxysql +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/puppet/README.md + learn_path: /docs/collecting-metrics/collectors/cloud-and-devops/puppet +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/zookeeper/README.md + learn_path: /docs/collecting-metrics/collectors/applications/zookeeper +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/adaptecraid/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/adaptec-raid +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/riakkv/README.md + learn_path: /docs/collecting-metrics/collectors/databases/riak-kv +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/portcheck/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/tcp-udp-endpoints +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/openvpn_status_log/README.md + learn_path: /docs/collecting-metrics/collectors/networking/openvpn-status-log +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/haproxy/README.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/haproxy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/couchdb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/couchdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/pihole/README.md + learn_path: /docs/collecting-metrics/collectors/networking/pi-hole +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/boinc/README.md + learn_path: /docs/collecting-metrics/collectors/applications/boinc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/k8s_kubelet/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubelet +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/isc_dhcpd/README.md + learn_path: /docs/collecting-metrics/collectors/networking/isc-dhcp +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/rethinkdb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/rethinkdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/elasticsearch/README.md + learn_path: /docs/collecting-metrics/collectors/databases/elasticsearch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/elasticsearch/integrations/opensearch.md + learn_path: /docs/collecting-metrics/collectors/databases/opensearch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/nvme/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nvme-devices +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/filecheck/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/files-and-directories +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/clickhouse/README.md + learn_path: /docs/collecting-metrics/collectors/databases/clickhouse +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/postfix/README.md + learn_path: /docs/collecting-metrics/collectors/applications/postfix +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/powerstore/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/dell-powerstore +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/mssql/README.md + learn_path: /docs/collecting-metrics/collectors/databases/microsoft-sql-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cockroachdb/README.md + learn_path: /docs/collecting-metrics/collectors/databases/cockroachdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/cassandra/README.md + learn_path: /docs/collecting-metrics/collectors/databases/cassandra +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/freeradius/README.md + learn_path: /docs/collecting-metrics/collectors/applications/freeradius +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/upsd/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/ups-nut +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/postgres/README.md + learn_path: /docs/collecting-metrics/collectors/databases/postgresql +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/go/plugin/go.d/collector/sensors/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/linux-sensors +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/claim/README.md + learn_path: /docs/netdata-cloud/connect-agent +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/formatters +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/csv/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/csv-formatter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/json/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/json-formatter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/ssv/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/ssv-formatter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/formatters/value/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/formatters/value-formatter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/exporters/shell/README.md + learn_path: /docs/exporting-metrics/shell-scripts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/min/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/min +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/stddev/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/standard-deviation-stddev +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/average/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/average-or-mean +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/sum/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/sum +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/des/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/double-exponential-smoothing +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/ses/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/single-or-simple-exponential-smoothing-ses +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/incremental_sum/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/incremental-sum-incremental_sum +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/countif/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/countif +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/trimmed_mean/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/trimmed-mean +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/median/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/median +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/percentile/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/percentile +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/queries/max/README.md + learn_path: /docs/developer-and-contributor-corner/rest-api/queries/max +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/api/health/README.md + learn_path: /docs/alerts-&-notifications/health-api-calls +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/web/server/README.md + learn_path: /docs/netdata-agent/configuration/securing-agents/web-server-reference - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/streaming/README.md learn_path: /docs/netdata-parents/parent-child-configuration-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/daemon/README.md - learn_path: /docs/netdata-agent/daemon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/daemon/config/README.md - learn_path: /docs/netdata-agent/configuration/daemon -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/COLLECTORS.md - learn_path: /docs/welcome-to-netdata/monitor-anything +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/README.md + learn_path: /docs/collecting-metrics - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/REFERENCE.md learn_path: /docs/collecting-metrics/collectors-configuration - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/SECRETS.md learn_path: /docs/collecting-metrics/secrets-management -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/README.md - learn_path: /docs/collecting-metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cups.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/applications/cups -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows-events.plugin/README.md - learn_path: /docs/logs/windows-event-logs/windows-events-plugin-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/macos.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/macos -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/softirq_statistics.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/softirq-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_load_average.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/system-load-average -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/interrupts.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/interrupts -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/nfs_client.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nfs-client -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/wireless_network_interfaces.md - learn_path: /docs/collecting-metrics/collectors/networking/wireless-network-interfaces -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_uptime.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/system-uptime -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/kernel_same-page_merging.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/kernel-same-page-merging -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_modules_dimms.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/memory-modules-dimms -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/socket_statistics.md - learn_path: /docs/collecting-metrics/collectors/networking/socket-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/sctp_statistics.md - learn_path: /docs/collecting-metrics/collectors/networking/sctp-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/entropy.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/entropy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/zfs_adaptive_replacement_cache.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs-adaptive-replacement-cache -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/network_statistics.md - learn_path: /docs/collecting-metrics/collectors/networking/network-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/network_interfaces.md - learn_path: /docs/collecting-metrics/collectors/networking/network-interfaces -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/amd_gpu.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/amd-gpu -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_usage.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-usage -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/inter_process_communication.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/inter-process-communication -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/pressure_stall_information.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/pressure-stall-information -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/infiniband.md - learn_path: /docs/collecting-metrics/collectors/networking/infiniband -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/md_raid.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/md-raid -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/conntrack.md - learn_path: /docs/collecting-metrics/collectors/networking/conntrack -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/zram.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/zram -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/synproxy.md - learn_path: /docs/collecting-metrics/collectors/networking/synproxy -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_statistics.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/non-uniform_memory_access.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/non-uniform-memory-access -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/ip_virtual_server.md - learn_path: /docs/collecting-metrics/collectors/networking/ip-virtual-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/bcache.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/bcache -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/softnet_statistics.md - learn_path: /docs/collecting-metrics/collectors/networking/softnet-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/power_supply.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/power-supply -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/nfs_server.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nfs-server -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/btrfs.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/btrfs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/ipv6_socket_statistics.md - learn_path: /docs/collecting-metrics/collectors/networking/ipv6-socket-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/disk_statistics.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/disk-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/page_types.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/page-types -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_statistics.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/system-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/slabinfo.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-kernel-slab-allocator-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ioping.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/synthetic-testing/ioping -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/nfacct.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/networking/netfilter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/users.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/users -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/applications.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/applications -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/user_groups.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/user-groups -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/windows_services.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/windows-services -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/xenstat.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/xen-xcp-ng -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/README.md - learn_path: /docs/developer-and-contributor-corner/external-plugins/python.d.plugin -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/am2320/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/am2320 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/pandas/README.md - learn_path: /docs/collecting-metrics/collectors/databases/pandas -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/go_expvar/README.md - learn_path: /docs/collecting-metrics/collectors/applications/go-applications-expvar -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/perf.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/cpu-performance -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.tcp.stats.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet.tcp.stats -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.tcp.states.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet.tcp.states +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/COLLECTORS.md + learn_path: /docs/welcome-to-netdata/monitor-anything +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/log2journal/README.md + learn_path: /docs/logs/log2journal +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet6.icmp6.stats.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet6.icmp6.stats - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.vmtotal.md learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.vmtotal -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/ipfw.md - learn_path: /docs/collecting-metrics/collectors/networking/ipfw -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.icmp.stats.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet.icmp.stats -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/devstat.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/devstat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.ipc.shm.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.ipc.shm -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.loadavg.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.loadavg -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/dev.cpu.0.freq.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/dev.cpu.0.freq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/getmntinfo.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/getmntinfo -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/getifaddrs.md - learn_path: /docs/collecting-metrics/collectors/networking/getifaddrs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.swap_info.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.swap_info -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.ipc.msq.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.ipc.msq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/hw.intrcnt.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/hw.intrcnt - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.sys.v_soft.md learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.sys.v_soft -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet6.ip6.stats.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet6.ip6.stats -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.udp.stats.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet.udp.stats -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.isr.md - learn_path: /docs/collecting-metrics/collectors/networking/net.isr -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.vm.v_swappgs.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.vm.v_swappgs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/dev.cpu.temperature.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/dev.cpu.temperature - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/system.ram.md learn_path: /docs/collecting-metrics/collectors/operating-systems/system.ram -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/zfs.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/getmntinfo.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/getmntinfo +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.tcp.stats.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet.tcp.stats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/uptime.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/uptime +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet6.ip6.stats.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet6.ip6.stats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/devstat.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/devstat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.ipc.msq.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.ipc.msq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.tcp.states.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet.tcp.states +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.loadavg.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.loadavg - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.vm.v_pgfaults.md learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.vm.v_pgfaults -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet6.icmp6.stats.md - learn_path: /docs/collecting-metrics/collectors/networking/net.inet6.icmp6.stats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.isr.md + learn_path: /docs/collecting-metrics/collectors/networking/net.isr +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.swap_info.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.swap_info +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.ipc.shm.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.ipc.shm +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.sys.v_intr.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.sys.v_intr +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/dev.cpu.0.freq.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/dev.cpu.0.freq - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.ipc.sem.md learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.ipc.sem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/getifaddrs.md + learn_path: /docs/collecting-metrics/collectors/networking/getifaddrs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/zfs.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.sys.v_swtch.md learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.sys.v_swtch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.udp.stats.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet.udp.stats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/hw.intrcnt.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/hw.intrcnt - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.ip.stats.md learn_path: /docs/collecting-metrics/collectors/networking/net.inet.ip.stats - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/kern.cp_time.md learn_path: /docs/collecting-metrics/collectors/operating-systems/kern.cp_time -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.sys.v_intr.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.sys.v_intr -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/uptime.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/uptime -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freeipmi.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/intelligent-platform-management-interface-ipmi -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/tc.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/networking/tc-qos-classes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/network-viewer.plugin/integrations/network_connections.md - learn_path: /docs/collecting-metrics/collectors/networking/network-connections -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/network-viewer.plugin/integrations/windows_network_protocols.md - learn_path: /docs/collecting-metrics/collectors/networking/windows-network-protocols -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/profile.plugin/README.md - learn_path: /docs/developer-and-contributor-corner/external-plugins/profile.plugin -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/log2journal/README.md - learn_path: /docs/logs/log2journal -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/timex.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/networking/timex -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_softirq.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-softirq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_sync.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-sync -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_mdflush.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-mdflush -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_filesystem.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-filesystem -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_shm.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-shm -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_processes.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-processes -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_process.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-process -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_disk.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-disk -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_hardirq.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-hardirq -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_vfs.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-vfs -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_dcstat.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-dcstat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_oomkill.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-oomkill -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_mount.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-mount -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_filedescriptor.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-filedescriptor -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_swap.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-swap -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_cachestat.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-cachestat -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_socket.md - learn_path: /docs/collecting-metrics/collectors/networking/ebpf-socket -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/diskspace.plugin/README.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/disk-space +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/vm.stats.vm.v_swappgs.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/vm.stats.vm.v_swappgs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/dev.cpu.temperature.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/dev.cpu.temperature +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/net.inet.icmp.stats.md + learn_path: /docs/collecting-metrics/collectors/networking/net.inet.icmp.stats +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freebsd.plugin/integrations/ipfw.md + learn_path: /docs/collecting-metrics/collectors/networking/ipfw +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/users.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/users +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/user_groups.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/user-groups +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/applications.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/applications +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/apps.plugin/integrations/windows_services.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/windows-services +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/forward_secure_sealing.md + learn_path: /docs/logs/systemd-journal-logs/forward-secure-sealing-fss-in-systemd-journal +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/README.md + learn_path: /docs/logs/systemd-journal-logs/systemd-journal-plugin-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/active_journal_centralization_guide_no_encryption.md + learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/active-journal-source-without-encryption +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/linux_zswap.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-zswap +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/power_capping.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/power-capping +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/linux_audit_subsystem.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-audit-subsystem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/system_memory_fragmentation.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/system-memory-fragmentation +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/sensors.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sensors - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/active_directory_federation_service.md learn_path: /docs/collecting-metrics/collectors/applications/active-directory-federation-service -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/network_subsystem.md - learn_path: /docs/collecting-metrics/collectors/networking/network-subsystem -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/hyper-v.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/hyper-v -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/memory_statistics_win.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-statistics-win -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/hardware_information_collected_from_kernel_ring..md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/hardware-information-collected-from-kernel-ring. -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/smb_server_shares.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/smb-server-shares -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/net_framework.md - learn_path: /docs/collecting-metrics/collectors/applications/net-framework -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/physical_and_logical_disk_performance_metrics.md - learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/physical-and-logical-disk-performance-metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/semaphore_statistics.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/semaphore-statistics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/iis.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/iis -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/processor.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/processor - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/power_supply_win.md learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/power-supply-win -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/sensors.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/sensors +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/processor.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/processor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/iis.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/iis - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/active_directory.md learn_path: /docs/collecting-metrics/collectors/applications/active-directory -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/asp.net.md - learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/asp.net -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_thermal_zone.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/system-thermal-zone +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/memory_statistics_win.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-statistics-win - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/numa_architecture.md learn_path: /docs/collecting-metrics/collectors/operating-systems/numa-architecture -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/windows_services.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/windows-services-windows-plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_thermal_zone.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/system-thermal-zone - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/ms_exchange.md learn_path: /docs/collecting-metrics/collectors/applications/ms-exchange -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_statistics.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/system-statistics-windows-plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/windows_services.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/windows-services-windows-plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/hyper-v.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/hyper-v +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/asp.net.md + learn_path: /docs/collecting-metrics/collectors/web-servers-and-proxies/asp.net +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/smb_server_shares.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/smb-server-shares - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/active_directory_certificate_service.md learn_path: /docs/collecting-metrics/collectors/applications/active-directory-certificate-service -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/guides/proxmox/README.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/proxmox-ve-monitoring -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/README.md - learn_path: /docs/developer-and-contributor-corner/external-plugins/charts.d.plugin -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/opensips/README.md - learn_path: /docs/collecting-metrics/collectors/applications/opensips -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/libreswan/README.md - learn_path: /docs/collecting-metrics/collectors/networking/libreswan -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/nomad_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/nomad-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/openshift_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/openshift-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/net_framework.md + learn_path: /docs/collecting-metrics/collectors/applications/net-framework +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/semaphore_statistics.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/semaphore-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/network_subsystem.md + learn_path: /docs/collecting-metrics/collectors/networking/network-subsystem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/hardware_information_collected_from_kernel_ring..md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/hardware-information-collected-from-kernel-ring. +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/system_statistics.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/system-statistics-windows-plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows.plugin/integrations/physical_and_logical_disk_performance_metrics.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/physical-and-logical-disk-performance-metrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/diskspace.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/disk-space +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/md_raid.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/md-raid +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/entropy.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/entropy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/inter_process_communication.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/inter-process-communication +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/kernel_same-page_merging.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/kernel-same-page-merging +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/bcache.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/bcache +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/sctp_statistics.md + learn_path: /docs/collecting-metrics/collectors/networking/sctp-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/non-uniform_memory_access.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/non-uniform-memory-access +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_modules_dimms.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/memory-modules-dimms +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/disk_statistics.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/disk-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/ip_virtual_server.md + learn_path: /docs/collecting-metrics/collectors/networking/ip-virtual-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/page_types.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/page-types +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/network_statistics.md + learn_path: /docs/collecting-metrics/collectors/networking/network-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/softnet_statistics.md + learn_path: /docs/collecting-metrics/collectors/networking/softnet-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/btrfs.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/btrfs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/ipv6_socket_statistics.md + learn_path: /docs/collecting-metrics/collectors/networking/ipv6-socket-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_load_average.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/system-load-average +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/nfs_client.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nfs-client +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/softirq_statistics.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/softirq-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/power_supply.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/power-supply +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_statistics.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/pressure_stall_information.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/pressure-stall-information +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/synproxy.md + learn_path: /docs/collecting-metrics/collectors/networking/synproxy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/memory_usage.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/memory-usage +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/interrupts.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/interrupts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/zfs_adaptive_replacement_cache.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/zfs-adaptive-replacement-cache +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/nfs_server.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/nfs-server +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_uptime.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/system-uptime +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/network_interfaces.md + learn_path: /docs/collecting-metrics/collectors/networking/network-interfaces +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/infiniband.md + learn_path: /docs/collecting-metrics/collectors/networking/infiniband +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/zram.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/zram +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/socket_statistics.md + learn_path: /docs/collecting-metrics/collectors/networking/socket-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/amd_gpu.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/amd-gpu +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/conntrack.md + learn_path: /docs/collecting-metrics/collectors/networking/conntrack +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/wireless_network_interfaces.md + learn_path: /docs/collecting-metrics/collectors/networking/wireless-network-interfaces +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/proc.plugin/integrations/system_statistics.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/system-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/macos.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/macos +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/timex.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/networking/timex +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/statsd.plugin/README.md + learn_path: /docs/collecting-metrics/statsd +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/windows-events.plugin/README.md + learn_path: /docs/logs/windows-event-logs/windows-events-plugin-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/README.md + learn_path: /docs/developer-and-contributor-corner/external-plugins/python.d.plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/am2320/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/am2320 +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/pandas/README.md + learn_path: /docs/collecting-metrics/collectors/databases/pandas +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/python.d.plugin/go_expvar/README.md + learn_path: /docs/collecting-metrics/collectors/applications/go-applications-expvar +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/perf.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/cpu-performance +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/kubernetes_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-containers - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/ovirt_vms.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/ovirt-vms +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/lxc_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/lxc-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/aws_ecs_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/aws-ecs-containers - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/systemd_services.md learn_path: /docs/collecting-metrics/collectors/operating-systems/systemd-services -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/systemd-nspawn_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/systemd-nspawn-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/virtual_machines.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/virtual-machines +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/containers - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/libvirt_vms_and_containers.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/libvirt-vms-and-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/openstack_vms.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/openstack-vms +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/openshift_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/openshift-containers - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/docker_containers.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/docker-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/podman_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/podman-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/systemd-nspawn_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/systemd-nspawn-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/nomad_containers.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/nomad-containers - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/containerd_containers.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/containerd-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/lxc_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/lxc-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/openstack_vms.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/openstack-vms - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/proxmox_vms_and_containers.md learn_path: /docs/collecting-metrics/collectors/containers-and-vms/proxmox-vms-and-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/kubernetes_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/kubernetes-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/aws_ecs_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/aws-ecs-containers -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/podman_containers.md - learn_path: /docs/collecting-metrics/collectors/containers-and-vms/podman-containers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cgroups.plugin/integrations/virtual_machines.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/virtual-machines +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_oomkill.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-oomkill +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_dcstat.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-dcstat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_softirq.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-softirq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_hardirq.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-hardirq +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_swap.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-swap +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_filesystem.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-filesystem +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_mount.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-mount +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_sync.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-sync +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_socket.md + learn_path: /docs/collecting-metrics/collectors/networking/ebpf-socket +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_shm.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-shm +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_process.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-process +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_disk.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-disk +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_cachestat.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-cachestat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_filedescriptor.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-filedescriptor +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_processes.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/ebpf-processes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_vfs.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-vfs +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ebpf.plugin/integrations/ebpf_mdflush.md + learn_path: /docs/collecting-metrics/collectors/storage-and-filesystems/ebpf-mdflush +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/guides/proxmox/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/proxmox-ve-monitoring - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/idlejitter.plugin/README.md learn_path: /docs/collecting-metrics/collectors/synthetic-testing/idle-os-jitter -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/system_memory_fragmentation.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/system-memory-fragmentation -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/linux_zswap.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-zswap -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/linux_audit_subsystem.md - learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-audit-subsystem -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/debugfs.plugin/integrations/power_capping.md - learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/power-capping -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/statsd.plugin/README.md - learn_path: /docs/collecting-metrics/statsd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/forward_secure_sealing.md - learn_path: /docs/logs/systemd-journal-logs/forward-secure-sealing-fss-in-systemd-journal -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/active_journal_centralization_guide_no_encryption.md - learn_path: /docs/logs/logs-centralization-points-with-systemd-journald/active-journal-source-without-encryption -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/systemd-journal.plugin/README.md - learn_path: /docs/logs/systemd-journal-logs/systemd-journal-plugin-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/ml/ml-configuration.md - learn_path: /docs/netdata-ai/anomaly-detection/ml-configuration -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/aclk/README.md - learn_path: /docs/netdata-cloud/agent-cloud-link-aclk -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/CONFIGURATION.md - learn_path: /docs/netdata-agent/configuration/database -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/README.md - learn_path: /docs/netdata-agent/database -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/engine/README.md - learn_path: /docs/developer-and-contributor-corner/database-engine +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/nfacct.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/networking/netfilter +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/freeipmi.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/hardware-and-sensors/intelligent-platform-management-interface-ipmi +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/slabinfo.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/operating-systems/linux-kernel-slab-allocator-statistics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/tc.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/networking/tc-qos-classes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/README.md + learn_path: /docs/developer-and-contributor-corner/external-plugins/charts.d.plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/opensips/README.md + learn_path: /docs/collecting-metrics/collectors/applications/opensips +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/charts.d.plugin/libreswan/README.md + learn_path: /docs/collecting-metrics/collectors/networking/libreswan +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/xenstat.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/containers-and-vms/xen-xcp-ng +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/profile.plugin/README.md + learn_path: /docs/developer-and-contributor-corner/external-plugins/profile.plugin +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/network-viewer.plugin/integrations/windows_network_protocols.md + learn_path: /docs/collecting-metrics/collectors/networking/windows-network-protocols +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/network-viewer.plugin/integrations/network_connections.md + learn_path: /docs/collecting-metrics/collectors/networking/network-connections +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/cups.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/applications/cups +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/collectors/ioping.plugin/README.md + learn_path: /docs/collecting-metrics/collectors/synthetic-testing/ioping - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/json/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/json -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/url/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/url -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/storage_number/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/storage-number -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/statistical/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/statistical-functions -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/avl/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/avl -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/locks/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/locks -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/circular_buffer/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/circular-buffer +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/dictionary/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/dictionaries - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/clocks/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/clocks +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/onewayalloc/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/one-way-allocator - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/worker_utilization/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/worker-utilization +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/threads/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/threads +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/url/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/url +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/procfile/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/procfile - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/simple_pattern/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/simple-patterns -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/onewayalloc/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/one-way-allocator -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/log/systemd-cat-native.md - learn_path: /docs/logs/systemd-cat-native +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/circular_buffer/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/circular-buffer +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/buffer/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/buffer-library - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/log/README.md learn_path: /docs/netdata-agent/logging +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/log/systemd-cat-native.md + learn_path: /docs/logs/systemd-cat-native +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/json/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/json - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/string/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/string -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/dictionary/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/dictionaries -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/buffer/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/buffer-library -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/adaptive_resortable_list/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/adaptive-re-sortable-list-arl +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/locks/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/locks +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/storage_number/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/storage-number - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/socket/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/socket +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/adaptive_resortable_list/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/adaptive-re-sortable-list-arl +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/statistical/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/statistical-functions - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/aral/README.md learn_path: /docs/developer-and-contributor-corner/libnetdata/array-allocator -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/threads/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/threads -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/procfile/README.md - learn_path: /docs/developer-and-contributor-corner/libnetdata/procfile +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/libnetdata/avl/README.md + learn_path: /docs/developer-and-contributor-corner/libnetdata/avl +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/registry/README.md + learn_path: /docs/netdata-agent/registry +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/registry/CONFIGURATION.md + learn_path: /docs/netdata-agent/configuration/registry +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/aclk/README.md + learn_path: /docs/netdata-cloud/agent-cloud-link-aclk +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/README.md + learn_path: /docs/developer-and-contributor-corner/external-plugins +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/FUNCTION_UI_REFERENCE.md + learn_path: /docs/developer-and-contributor-corner/external-plugins/functions-v3-protocol-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/plugins.d/FUNCTION_UI_DEVELOPER_GUIDE.md + learn_path: /docs/developer-and-contributor-corner/external-plugins/functions-developer-guide - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netdata-otel/otel-plugin/README.md learn_path: /docs/collecting-metrics/opentelemetry/opentelemetry-metrics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/netbox.md - learn_path: /docs/network-flows/enrichment-methods/netbox -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/maxmind_geoip_-_geolite2.md - learn_path: /docs/network-flows/enrichment-methods/maxmind-geoip-geolite2 -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipfix.md - learn_path: /docs/network-flows/flow-protocols/ipfix +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/classifiers.md + learn_path: /docs/network-flows/enrichment-methods/classifiers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/db-ip_ip_intelligence.md + learn_path: /docs/network-flows/enrichment-methods/db-ip-ip-intelligence +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/gcp_ip_ranges.md + learn_path: /docs/network-flows/enrichment-methods/gcp-ip-ranges - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/bmp_bgp_monitoring_protocol.md learn_path: /docs/network-flows/enrichment-methods/bmp-bgp-monitoring-protocol -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/caida_routeviews_prefix-to-as.md - learn_path: /docs/network-flows/enrichment-methods/caida-routeviews-prefix-to-as -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipip_country_database.md - learn_path: /docs/network-flows/enrichment-methods/ipip-country-database - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/iptoasn.md learn_path: /docs/network-flows/enrichment-methods/iptoasn -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/gcp_ip_ranges.md - learn_path: /docs/network-flows/enrichment-methods/gcp-ip-ranges -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/bio-rd_-_ripe_ris.md - learn_path: /docs/network-flows/enrichment-methods/bio-rd-ripe-ris -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/classifiers.md - learn_path: /docs/network-flows/enrichment-methods/classifiers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/caida_routeviews_prefix-to-as.md + learn_path: /docs/network-flows/enrichment-methods/caida-routeviews-prefix-to-as +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/aws_ip_ranges.md + learn_path: /docs/network-flows/enrichment-methods/aws-ip-ranges - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/decapsulation.md learn_path: /docs/network-flows/enrichment-methods/decapsulation +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/netbox.md + learn_path: /docs/network-flows/enrichment-methods/netbox +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/maxmind_geoip_-_geolite2.md + learn_path: /docs/network-flows/enrichment-methods/maxmind-geoip-geolite2 - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/generic_json-over-http_ipam.md learn_path: /docs/network-flows/enrichment-methods/generic-json-over-http-ipam -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/static_metadata.md - learn_path: /docs/network-flows/enrichment-methods/static-metadata -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/aws_ip_ranges.md - learn_path: /docs/network-flows/enrichment-methods/aws-ip-ranges +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipdeny_country_zones.md + learn_path: /docs/network-flows/enrichment-methods/ipdeny-country-zones +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipfix.md + learn_path: /docs/network-flows/flow-protocols/ipfix +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/netflow.md + learn_path: /docs/network-flows/flow-protocols/netflow - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ip2location_lite_ip-country.md learn_path: /docs/network-flows/enrichment-methods/ip2location-lite-ip-country - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/azure_ip_ranges.md learn_path: /docs/network-flows/enrichment-methods/azure-ip-ranges -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/netflow.md - learn_path: /docs/network-flows/flow-protocols/netflow -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/custom_mmdb_database.md - learn_path: /docs/network-flows/enrichment-methods/custom-mmdb-database -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/db-ip_ip_intelligence.md - learn_path: /docs/network-flows/enrichment-methods/db-ip-ip-intelligence +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipip_country_database.md + learn_path: /docs/network-flows/enrichment-methods/ipip-country-database - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/sflow.md learn_path: /docs/network-flows/flow-protocols/sflow -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/ipdeny_country_zones.md - learn_path: /docs/network-flows/enrichment-methods/ipdeny-country-zones -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/README.md - learn_path: /docs/exporting-metrics/exporting-reference -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/json/README.md - learn_path: /docs/exporting-metrics/connectors/json -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/pubsub/README.md - learn_path: /docs/exporting-metrics/connectors/google-cloud-pub-sub -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/opentsdb/README.md - learn_path: /docs/exporting-metrics/connectors/opentsdb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/aws_kinesis/README.md - learn_path: /docs/exporting-metrics/connectors/aws-kinesis +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/bio-rd_-_ripe_ris.md + learn_path: /docs/network-flows/enrichment-methods/bio-rd-ripe-ris +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/static_metadata.md + learn_path: /docs/network-flows/enrichment-methods/static-metadata +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/crates/netflow-plugin/integrations/custom_mmdb_database.md + learn_path: /docs/network-flows/enrichment-methods/custom-mmdb-database +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/README.md + learn_path: /docs/exporting-metrics/exporting-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/mongodb/README.md + learn_path: /docs/exporting-metrics/connectors/mongodb - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/graphite/README.md learn_path: /docs/exporting-metrics/connectors/graphite -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/graphite/integrations/kairosdb.md - learn_path: /docs/exporting-metrics/connectors/kairosdb - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/graphite/integrations/blueflood.md learn_path: /docs/exporting-metrics/connectors/blueflood +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/graphite/integrations/kairosdb.md + learn_path: /docs/exporting-metrics/connectors/kairosdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/aws_kinesis/README.md + learn_path: /docs/exporting-metrics/connectors/aws-kinesis - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/README.md learn_path: /docs/exporting-metrics/prometheus -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/new_relic.md - learn_path: /docs/exporting-metrics/connectors/new-relic -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/cratedb.md - learn_path: /docs/exporting-metrics/connectors/cratedb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/cortex.md - learn_path: /docs/exporting-metrics/connectors/cortex -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/opeansearch.md - learn_path: /docs/exporting-metrics/connectors/opeansearch -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/splunk_signalfx.md - learn_path: /docs/exporting-metrics/connectors/splunk-signalfx -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/google_bigquery.md - learn_path: /docs/exporting-metrics/connectors/google-bigquery -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/kafka.md - learn_path: /docs/exporting-metrics/connectors/kafka -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/quasardb.md - learn_path: /docs/exporting-metrics/connectors/quasardb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/tikv.md - learn_path: /docs/exporting-metrics/connectors/tikv -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/gnocchi.md - learn_path: /docs/exporting-metrics/connectors/gnocchi +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/wavefront.md + learn_path: /docs/exporting-metrics/connectors/wavefront - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/azure_data_explorer.md learn_path: /docs/exporting-metrics/connectors/azure-data-explorer +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/irondb.md + learn_path: /docs/exporting-metrics/connectors/irondb - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/elasticsearch.md learn_path: /docs/exporting-metrics/connectors/elasticsearch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/gnocchi.md + learn_path: /docs/exporting-metrics/connectors/gnocchi - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/appoptics.md learn_path: /docs/exporting-metrics/connectors/appoptics -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/azure_event_hub.md - learn_path: /docs/exporting-metrics/connectors/azure-event-hub -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/postgresql.md - learn_path: /docs/exporting-metrics/connectors/postgresql -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/metricfire.md - learn_path: /docs/exporting-metrics/connectors/metricfire -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/victoriametrics.md - learn_path: /docs/exporting-metrics/connectors/victoriametrics - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/chronix.md learn_path: /docs/exporting-metrics/connectors/chronix -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/wavefront.md - learn_path: /docs/exporting-metrics/connectors/wavefront +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/metricfire.md + learn_path: /docs/exporting-metrics/connectors/metricfire - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/thanos.md learn_path: /docs/exporting-metrics/connectors/thanos -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/greptimedb.md - learn_path: /docs/exporting-metrics/connectors/greptimedb - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/timescaledb.md learn_path: /docs/exporting-metrics/connectors/timescaledb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/greptimedb.md + learn_path: /docs/exporting-metrics/connectors/greptimedb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/azure_event_hub.md + learn_path: /docs/exporting-metrics/connectors/azure-event-hub +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/new_relic.md + learn_path: /docs/exporting-metrics/connectors/new-relic +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/cratedb.md + learn_path: /docs/exporting-metrics/connectors/cratedb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/quasardb.md + learn_path: /docs/exporting-metrics/connectors/quasardb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/tikv.md + learn_path: /docs/exporting-metrics/connectors/tikv +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/kafka.md + learn_path: /docs/exporting-metrics/connectors/kafka - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/m3db.md learn_path: /docs/exporting-metrics/connectors/m3db - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/vmware_aria.md learn_path: /docs/exporting-metrics/connectors/vmware-aria -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/irondb.md - learn_path: /docs/exporting-metrics/connectors/irondb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/cortex.md + learn_path: /docs/exporting-metrics/connectors/cortex +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/google_bigquery.md + learn_path: /docs/exporting-metrics/connectors/google-bigquery +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/opeansearch.md + learn_path: /docs/exporting-metrics/connectors/opeansearch +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/victoriametrics.md + learn_path: /docs/exporting-metrics/connectors/victoriametrics +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/splunk_signalfx.md + learn_path: /docs/exporting-metrics/connectors/splunk-signalfx +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/integrations/postgresql.md + learn_path: /docs/exporting-metrics/connectors/postgresql - custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/prometheus/remote_write/README.md learn_path: /docs/exporting-metrics/connectors/prometheus-remote-write -- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/mongodb/README.md - learn_path: /docs/exporting-metrics/connectors/mongodb -- custom_edit_url: https://github.com/netdata/netdata/edit/master/tests/health_mgmtapi/README.md - learn_path: /docs/developer-and-contributor-corner/health-command-api-tester +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/json/README.md + learn_path: /docs/exporting-metrics/connectors/json +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/opentsdb/README.md + learn_path: /docs/exporting-metrics/connectors/opentsdb +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/exporting/pubsub/README.md + learn_path: /docs/exporting-metrics/connectors/google-cloud-pub-sub +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/README.md + learn_path: /docs/netdata-agent/database +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/CONFIGURATION.md + learn_path: /docs/netdata-agent/configuration/database +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/database/engine/README.md + learn_path: /docs/developer-and-contributor-corner/database-engine +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/daemon/README.md + learn_path: /docs/netdata-agent/daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/daemon/config/README.md + learn_path: /docs/netdata-agent/configuration/daemon +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/cli/README.md + learn_path: /docs/netdata-agent/agent-cli +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/README.md + learn_path: /docs/alerts-&-notifications +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/REFERENCE.md + learn_path: /docs/alerts-&-notifications/alert-configuration-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/alert-configuration-ordering.md + learn_path: /docs/alerts-&-notifications/alert-configuration-ordering +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/overriding-stock-alerts.md + learn_path: /docs/alerts-&-notifications/overriding-stock-alerts +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/agent-notifications-reference +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/signl4/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/signl4 +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/twilio/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/twilio +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/discord/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/discord +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/email/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/email +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/opsgenie/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/opsgenie +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/awssns/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/aws-sns +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/smseagle/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/smseagle +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/telegram/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/telegram +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/custom/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/custom +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/ilert/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/ilert +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/smstools3/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/sms +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/flock/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/flock +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/slack/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/slack +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/gotify/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/gotify +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/dynatrace/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/dynatrace +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/ntfy/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/ntfy +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pushover/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pushover +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pushbullet/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pushbullet +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/messagebird/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/messagebird +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/alerta/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/alerta +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/irc/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/irc +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/matrix/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/matrix +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/pagerduty/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/pagerduty +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/kavenegar/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/kavenegar +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/syslog/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/syslog +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/rocketchat/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/rocketchat +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/msteams/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/microsoft-teams +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/health/notifications/prowl/README.md + learn_path: /docs/alerts-&-notifications/notifications/agent-dispatched-notifications/prowl +- custom_edit_url: https://github.com/netdata/netdata/edit/master/src/ml/ml-configuration.md + learn_path: /docs/netdata-ai/anomaly-detection/ml-configuration - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/building-native-packages-locally.md learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/how-to-build-native-deb-rpm-packages-locally-for-testing - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/PLATFORM_SUPPORT.md learn_path: /docs/netdata-agent/versions-&-platforms -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/docker/README.md - learn_path: /docs/netdata-agent/installation/docker - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/makeself/README.md learn_path: /docs/netdata-agent/installation/linux/static-binary-linux-packages +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/maintainers/README.md + learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/package-maintainers +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/docker/README.md + learn_path: /docs/netdata-agent/installation/docker +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/README.md + learn_path: /docs/netdata-agent/installation - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/UPDATE.md learn_path: /docs/netdata-agent/maintenance/update - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/UNINSTALL.md learn_path: /docs/netdata-agent/maintenance/uninstall -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/README.md - learn_path: /docs/netdata-agent/installation -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/freebsd.md - learn_path: /docs/netdata-agent/installation/freebsd -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/pfsense.md - learn_path: /docs/netdata-agent/installation/pfsense - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/source.md learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/compile-from-source-code -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/aws.md - learn_path: /docs/netdata-agent/installation/aws -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/azure.md - learn_path: /docs/netdata-agent/installation/azure -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/macos.md - learn_path: /docs/netdata-agent/installation/macos +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/kickstart.md + learn_path: /docs/netdata-agent/installation/linux - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/synology.md learn_path: /docs/netdata-agent/installation/synology -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/ansible.md - learn_path: /docs/netdata-agent/installation/ansible -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/manual.md - learn_path: /docs/developer-and-contributor-corner/install-the-netdata-agent-from-a-git-checkout -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/packages.md - learn_path: /docs/netdata-agent/installation/linux/native-linux-distribution-packages +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/macos.md + learn_path: /docs/netdata-agent/installation/macos +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/freebsd.md + learn_path: /docs/netdata-agent/installation/freebsd - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/kubernetes.md learn_path: /docs/netdata-agent/installation/kubernetes +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/packages.md + learn_path: /docs/netdata-agent/installation/linux/native-linux-distribution-packages +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/azure.md + learn_path: /docs/netdata-agent/installation/azure +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/manual.md + learn_path: /docs/developer-and-contributor-corner/install-the-netdata-agent-from-a-git-checkout - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/gcp.md learn_path: /docs/netdata-agent/installation/gcp +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/pfsense.md + learn_path: /docs/netdata-agent/installation/pfsense +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/ansible.md + learn_path: /docs/netdata-agent/installation/ansible - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/offline.md learn_path: /docs/netdata-agent/installation/linux/offline-systems -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/kickstart.md - learn_path: /docs/netdata-agent/installation/linux +- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/installer/methods/aws.md + learn_path: /docs/netdata-agent/installation/aws - custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/windows/WINDOWS_INSTALLER.md learn_path: /docs/netdata-agent/installation/windows -- custom_edit_url: https://github.com/netdata/netdata/edit/master/packaging/maintainers/README.md - learn_path: /docs/developer-and-contributor-corner/build-the-netdata-agent-yourself/package-maintainers -- custom_edit_url: https://github.com/netdata/.github/edit/main/CODE_OF_CONDUCT.md - learn_path: /docs/developer-and-contributor-corner/community-code-of-conduct -- custom_edit_url: https://github.com/netdata/.github/edit/main/CONTRIBUTING.md - learn_path: /docs/developer-and-contributor-corner/contributing +- custom_edit_url: https://github.com/netdata/netdata/edit/master/tests/health_mgmtapi/README.md + learn_path: /docs/developer-and-contributor-corner/health-command-api-tester +- custom_edit_url: https://github.com/netdata/agent-service-discovery/edit/master/README.md + learn_path: /docs/collecting-metrics/service-discovery +- custom_edit_url: https://github.com/netdata/helmchart/edit/master/charts/netdata/README.md + learn_path: /docs/netdata-agent/installation/kubernetes-helm-chart-reference +- custom_edit_url: https://github.com/netdata/netdata-grafana-datasource-plugin/edit/master/README.md + learn_path: /docs/dashboards-and-charts/grafana-plugin +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/hardening-guide.md + learn_path: /docs/netdata-cloud-on-prem/security-hardening-guide +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/image-signature-verification.md + learn_path: /docs/netdata-cloud-on-prem/container-image-signature-verification +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/README.md + learn_path: /docs/netdata-cloud-on-prem +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/poc-without-k8s.md + learn_path: /docs/netdata-cloud-on-prem/poc-without-k8s +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/installation.md + learn_path: /docs/netdata-cloud-on-prem/installation +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/ecr-mirror.md + learn_path: /docs/netdata-cloud-on-prem/mirroring-image-registry +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/sbom.md + learn_path: /docs/netdata-cloud-on-prem/software-bill-of-materials +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/netpol.md + learn_path: /docs/netdata-cloud-on-prem/kubernetes-network-policy-configuration +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/docs/learn.netdata.cloud/troubleshooting.md + learn_path: /docs/netdata-cloud-on-prem/troubleshooting +- custom_edit_url: https://github.com/netdata/netdata-cloud-onprem/edit/master/netdata-cloud-onprem/RELEASE-NOTES.md + learn_path: /docs/netdata-cloud-on-prem/release-notes - custom_edit_url: https://github.com/netdata/.github/edit/main/SECURITY.md learn_path: /docs/developer-and-contributor-corner/security-policy +- custom_edit_url: https://github.com/netdata/.github/edit/main/CONTRIBUTING.md + learn_path: /docs/developer-and-contributor-corner/contributing +- custom_edit_url: https://github.com/netdata/.github/edit/main/CODE_OF_CONDUCT.md + learn_path: /docs/developer-and-contributor-corner/community-code-of-conduct