You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/Alerts & Notifications/Alert Configuration Reference.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1038,7 +1038,7 @@ Several stock health configurations use host variables to reference dimensions f
1038
1038
1039
1039
##### Prometheus Collector Variables
1040
1040
1041
-
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.<metric_name>-<label_set>` only when the job name is literally `prometheus`; otherwise it is `prometheus_<job_name>.<metric_name>-<label_set>` (for example, `prometheus_local.<metric_name>-<label_set>` or `prometheus_kubelet.<metric_name>-<label_set>`). For summary and histogram metric families, the collector may also emit related chart IDs such as `<id>`, `<id>_sum`, and `<id>_count`, so verify the exact chart ID you want to reference.
1041
+
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.<metric_name>-<label_set>` only when the job name is literally `prometheus`; otherwise it is `prometheus_<job_name>.<metric_name>-<label_set>` (for example, `prometheus_local.<metric_name>-<label_set>` or `prometheus_kubelet.<metric_name>-<label_set>`). Summary and histogram families also emit separate `_sum` and `_count` charts; the suffix is part of the metric name, so the IDs are `<metric_name>_sum-<label_set>` and `<metric_name>_count-<label_set>` (just `<metric_name>_sum` / `<metric_name>_count` when the series has no labels), while histogram buckets are dimensions of the base `<metric_name>` chart. Verify the exact chart ID you want to reference.
1042
1042
1043
1043
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_<job_name>` prefix and the special-case plain `prometheus` prefix, including any `_sum` or `_count` chart variants.
Copy file name to clipboardExpand all lines: docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Agent Notifications Reference.mdx
+48-2Lines changed: 48 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -100,6 +100,7 @@ Use the `edit-config` script to safely edit configuration files. It automaticall
100
100
:::
101
101
102
102
1. Open the Agent's health notification config:
103
+
103
104
```bash
104
105
sudo ./edit-config health_alarm_notify.conf
105
106
```
@@ -109,6 +110,7 @@ Use the `edit-config` script to safely edit configuration files. It automaticall
- Sends only critical-related alerts to `user2@example.com`
303
+
- 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.
302
304
303
305
Works for all supported methods: email, Slack, Telegram, Twilio, Discord, etc.
When an alert returns to normal, Netdata sends a **CLEAR** (recovered) notification. You can control when and whether these are sent.
312
+
313
+
**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.
314
+
315
+
**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:
316
+
317
+
```ini
318
+
clear_alarm_always='YES'
319
+
```
320
+
321
+
**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:
322
+
323
+
-**WARNING** notifications are suppressed unless the alarm has previously reached CRITICAL.
324
+
-**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.
**Suppress all CLEAR notifications:** Use the `|noclear` modifier to completely block CLEAR notifications for a recipient while still receiving WARNING and CRITICAL alerts:
You can combine modifiers. This example notifies only for alarms that have reached CRITICAL (WARNING is suppressed until then), and excludes CLEAR notifications entirely:
Copy file name to clipboardExpand all lines: docs/Alerts & Notifications/Notifications/Agent Dispatched Notifications/Email.mdx
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,6 +42,7 @@ Send notifications via Email using Netdata's Agent alert notification feature, w
42
42
```
43
43
44
44
- Update your container with `docker compose up -d`.
45
+
- 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.
Copy file name to clipboardExpand all lines: docs/Alerts & Notifications/Notifications/Centralized Cloud Notifications/Webhook.mdx
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -105,13 +105,13 @@ By default, the following headers will be sent in the HTTP request
105
105
106
106
Netdata webhook integration supports 3 different authentication mechanisms:
107
107
108
-
##### Mutual TLS authentication (recommended)
108
+
##### Mutual TLS authentication
109
109
110
-
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.
110
+
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.
111
111
112
-
This is the default authentication mechanism used if no other method is selected.
112
+
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.
113
113
114
-
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.
114
+
If you want to verify Netdata's client certificate on your end, configure your server to validate it using the Netdata CA certificate below.
115
115
116
116
The steps to perform this validation are as follows:
|| 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 |
98
+
|**Customization**| app | Application name used as the app segment of chart contexts (`prometheus.<app>.<metric>`). When unset, it is taken from a matched profile, otherwise it falls back to the job name. || no |
97
99
|**Filters**|[selector](#option-filters-selector)| Time series selector (filter). || no |
98
100
|**Limits**| max_time_series | Global time series limit. If an endpoint returns more time series than this, the data is not processed. | 2000 | no |
99
101
|| max_time_series_per_metric | Per-metric time series limit. Metrics with more time series than this are skipped. | 200 | no |
100
102
|**Customization**|[fallback_type](#option-customization-fallback-type)| Fallback type rules for untyped metrics. || no |
101
-
|| label_prefix | Optional prefix added to all labels of all charts. Labels will be formatted as `prefix_name`. || no |
103
+
||[relabeling](#option-customization-relabeling)| Prometheus-compatible metric relabeling, applied before charts are built. || no |
104
+
||[profiles](#option-customization-profiles)| Curated, exporter-specific chart profiles. Disable with mode `none`. | auto | no |
102
105
|**HTTP Auth**| username | Username for Basic HTTP authentication. || no |
103
106
|| password | Password for Basic HTTP authentication. || no |
104
107
|| bearer_token_file | Path to a file containing a bearer token (used for `Authorization: Bearer`). || no |
@@ -155,6 +158,57 @@ fallback_type:
155
158
```
156
159
157
160
161
+
<a id="option-customization-relabeling"></a>
162
+
##### relabeling
163
+
164
+
A list of relabeling blocks. Each block applies a list of Prometheus
165
+
`metric_relabel_configs` rules to the metrics whose name matches `match`. See the
`regex`, `modulus`, `target_label`, `replacement`, `action`), applied in order to
175
+
the scraped samples before charts are built.
176
+
177
+
Relabeling that would corrupt a histogram or summary — splitting it, dropping a
178
+
component, mutating the `le`/`quantile` label, or merging two families — is rejected.
179
+
180
+
```yaml
181
+
relabeling:
182
+
- match: 'http_*'
183
+
metric_relabel_configs:
184
+
- source_labels: [code]
185
+
regex: '(\d)\d\d'
186
+
target_label: code_class
187
+
replacement: '${1}xx'
188
+
```
189
+
190
+
191
+
<a id="option-customization-profiles"></a>
192
+
##### profiles
193
+
194
+
Profiles ship curated charts for recognized exporters. `profiles.mode` selects them:
195
+
196
+
- `auto` (default): every profile whose `match` hits at least one scraped metric.
197
+
- `exact`: only the profiles named in `mode_exact.entries` (each must match, or the job fails its check).
198
+
- `combined`: `auto`plus the profiles named in `mode_combined.entries`.
199
+
- `none`: no profiles — generic autogen charts only (the pre-profile behavior).
200
+
201
+
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.
202
+
203
+
```yaml
204
+
profiles:
205
+
mode: exact
206
+
mode_exact:
207
+
entries:
208
+
- name: haproxy
209
+
```
210
+
211
+
158
212
159
213
</details>
160
214
@@ -286,6 +340,55 @@ jobs:
286
340
```
287
341
</details>
288
342
343
+
###### Metric relabeling
344
+
345
+
Derive a `code_class` label (2xx, 4xx, ...) on metrics named `http_*`.
346
+
347
+
<details open>
348
+
<summary>Config</summary>
349
+
350
+
```yaml
351
+
jobs:
352
+
- name: local
353
+
url: http://127.0.0.1:9090/metrics
354
+
relabeling:
355
+
- match: 'http_*'
356
+
metric_relabel_configs:
357
+
- source_labels: [code]
358
+
regex: '(\d)\d\d'
359
+
target_label: code_class
360
+
replacement: '${1}xx'
361
+
362
+
```
363
+
</details>
364
+
365
+
###### Rename labels that collide with Netdata's reserved labels
366
+
367
+
When these metrics are re-exported in Prometheus format, Netdata adds its own `instance`,
368
+
`family`, `chart`, and `dimension` labels. If the scraped endpoint already uses one of those
369
+
names, the re-export emits a duplicate label and a downstream Prometheus rejects the scrape.
370
+
Rename the colliding labels to avoid it (the use case the former `label_prefix` option served).
0 commit comments