2018-05-08 03:10:29 -07:00
{
prometheusAlerts+:: {
groups+: [
{
2018-08-06 01:41:18 -07:00
name: 'node-exporter',
2018-05-08 03:10:29 -07:00
rules: [
{
alert: 'NodeFilesystemSpaceFillingUp',
expr: |||
2019-07-10 11:07:20 -07:00
(
2020-03-02 07:24:51 -08:00
node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_size_bytes{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < %(fsSpaceFillingUpWarningThreshold)d
2019-07-16 12:40:57 -07:00
and
predict_linear(node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s}[6h], 24*60*60) < 0
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
severity: 'warning',
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem is predicted to run out of space within the next 24 hours.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left and is filling up.',
2018-05-08 03:10:29 -07:00
},
},
{
alert: 'NodeFilesystemSpaceFillingUp',
expr: |||
2019-07-10 11:07:20 -07:00
(
2020-03-02 07:24:51 -08:00
node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_size_bytes{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < %(fsSpaceFillingUpCriticalThreshold)d
2019-07-16 12:40:57 -07:00
and
predict_linear(node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s}[6h], 4*60*60) < 0
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-08-14 13:24:24 -07:00
severity: '%(nodeCriticalSeverity)s' % $._config,
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem is predicted to run out of space within the next 4 hours.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left and is filling up fast.',
2018-05-08 03:10:29 -07:00
},
},
{
2019-07-16 12:18:17 -07:00
alert: 'NodeFilesystemAlmostOutOfSpace',
2018-05-08 03:10:29 -07:00
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-07-10 11:09:01 -07:00
node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_size_bytes{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 5
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
severity: 'warning',
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem has less than 5% space left.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left.',
2018-05-08 03:10:29 -07:00
},
},
{
2019-07-16 12:18:17 -07:00
alert: 'NodeFilesystemAlmostOutOfSpace',
2018-05-08 03:10:29 -07:00
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-07-10 11:09:01 -07:00
node_filesystem_avail_bytes{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_size_bytes{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 3
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-08-14 13:24:24 -07:00
severity: '%(nodeCriticalSeverity)s' % $._config,
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem has less than 3% space left.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available space left.',
2018-05-08 03:10:29 -07:00
},
},
{
alert: 'NodeFilesystemFilesFillingUp',
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-09-11 01:47:24 -07:00
node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_files{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 40
2019-07-16 12:40:57 -07:00
and
predict_linear(node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s}[6h], 24*60*60) < 0
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
severity: 'warning',
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem is predicted to run out of inodes within the next 24 hours.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left and is filling up.',
2018-05-08 03:10:29 -07:00
},
},
{
alert: 'NodeFilesystemFilesFillingUp',
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-09-11 01:47:24 -07:00
node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_files{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 20
2019-07-16 12:40:57 -07:00
and
predict_linear(node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s}[6h], 4*60*60) < 0
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-08-14 13:24:24 -07:00
severity: '%(nodeCriticalSeverity)s' % $._config,
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem is predicted to run out of inodes within the next 4 hours.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left and is filling up fast.',
2018-05-08 03:10:29 -07:00
},
},
{
2019-07-16 12:18:17 -07:00
alert: 'NodeFilesystemAlmostOutOfFiles',
2018-05-08 03:10:29 -07:00
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-07-10 11:09:01 -07:00
node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_files{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 5
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
severity: 'warning',
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem has less than 5% inodes left.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left.',
2018-05-08 03:10:29 -07:00
},
},
{
2019-07-16 12:18:17 -07:00
alert: 'NodeFilesystemAlmostOutOfFiles',
2018-05-08 03:10:29 -07:00
expr: |||
2019-07-10 11:07:20 -07:00
(
2019-07-10 11:09:01 -07:00
node_filesystem_files_free{%(nodeExporterSelector)s,%(fsSelector)s} / node_filesystem_files{%(nodeExporterSelector)s,%(fsSelector)s} * 100 < 3
2018-05-10 01:35:35 -07:00
and
2019-07-10 11:09:01 -07:00
node_filesystem_readonly{%(nodeExporterSelector)s,%(fsSelector)s} == 0
2019-07-10 11:07:20 -07:00
)
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-08-14 13:24:24 -07:00
severity: '%(nodeCriticalSeverity)s' % $._config,
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Filesystem has less than 3% inodes left.',
description: 'Filesystem on {{ $labels.device }} at {{ $labels.instance }} has only {{ printf "%.2f" $value }}% available inodes left.',
2018-05-08 03:10:29 -07:00
},
},
{
alert: 'NodeNetworkReceiveErrs',
expr: |||
2018-11-19 07:11:37 -08:00
increase(node_network_receive_errs_total[2m]) > 10
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-07-16 12:18:17 -07:00
severity: 'warning',
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Network interface is reporting many receive errors.',
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} receive errors in the last two minutes.',
2018-05-08 03:10:29 -07:00
},
},
{
alert: 'NodeNetworkTransmitErrs',
expr: |||
2018-11-19 07:11:37 -08:00
increase(node_network_transmit_errs_total[2m]) > 10
2018-05-08 03:10:29 -07:00
||| % $._config,
'for': '1h',
labels: {
2019-07-16 12:18:17 -07:00
severity: 'warning',
2018-05-08 03:10:29 -07:00
},
annotations: {
2019-07-16 12:40:57 -07:00
summary: 'Network interface is reporting many transmit errors.',
description: '{{ $labels.instance }} interface {{ $labels.device }} has encountered {{ printf "%.0f" $value }} transmit errors in the last two minutes.',
2018-05-08 03:10:29 -07:00
},
},
2020-03-04 22:55:11 -08:00
{
alert: 'NodeHighNumberConntrackEntriesUsed',
expr: |||
(node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75
||| % $._config,
annotations: {
2020-03-31 08:09:08 -07:00
summary: 'Number of conntrack are getting close to the limit.',
description: '{{ $value | humanizePercentage }} of conntrack entries are used.',
},
labels: {
severity: 'warning',
},
},
{
alert: 'NodeTextFileCollectorScrapeError',
expr: |||
node_textfile_scrape_error{%(nodeExporterSelector)s} == 1
||| % $._config,
annotations: {
summary: 'Node Exporter text file collector failed to scrape.',
description: 'Node Exporter text file collector failed to scrape.',
2020-03-04 22:55:11 -08:00
},
labels: {
severity: 'warning',
},
},
2019-09-10 07:52:12 -07:00
{
alert: 'NodeClockSkewDetected',
expr: |||
(
node_timex_offset_seconds > 0.05
and
deriv(node_timex_offset_seconds[5m]) >= 0
)
or
(
2020-03-25 05:07:23 -07:00
node_timex_offset_seconds < -0.05
2019-09-10 07:52:12 -07:00
and
deriv(node_timex_offset_seconds[5m]) <= 0
)
||| % $._config,
'for': '10m',
labels: {
severity: 'warning',
},
annotations: {
summary: 'Clock skew detected.',
message: 'Clock on {{ $labels.instance }} is out of sync by more than 300s. Ensure NTP is configured correctly on this host.',
},
},
{
alert: 'NodeClockNotSynchronising',
expr: |||
min_over_time(node_timex_sync_status[5m]) == 0
||| % $._config,
'for': '10m',
labels: {
severity: 'warning',
},
annotations: {
summary: 'Clock not synchronising.',
message: 'Clock on {{ $labels.instance }} is not synchronising. Ensure NTP is configured on this host.',
},
},
2018-05-08 03:10:29 -07:00
],
},
],
},
}