diff --git a/Makefile b/Makefile index b41d0c51146f11cf68d6687cc70bebb3f5579f2e..fe2a04a4520e35f26ee4891cca51a515df55c8a6 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,11 @@ generate-in-docker: @echo ">> Compiling assets and generating Kubernetes manifests" $(CONTAINER_CMD) make $(MFLAGS) generate +.PHONY: clean +clean: + # Remove all files and directories ignored by git. + git clean -Xfd . + generate: manifests **.md **.md: $(EMBEDMD_BINARY) $(shell find examples) build.sh example.jsonnet diff --git a/jsonnet/kube-prometheus/alerts/alerts.libsonnet b/jsonnet/kube-prometheus/alerts/alerts.libsonnet index 1b2d94eb2c207e30fd9b92db70374971e15bc05f..3521aa824bb65b0d2d2952237dcfdbd836c42ace 100644 --- a/jsonnet/kube-prometheus/alerts/alerts.libsonnet +++ b/jsonnet/kube-prometheus/alerts/alerts.libsonnet @@ -1,5 +1,4 @@ (import 'alertmanager.libsonnet') + (import 'general.libsonnet') + (import 'node.libsonnet') + -(import 'prometheus.libsonnet') + (import 'prometheus-operator.libsonnet') diff --git a/jsonnet/kube-prometheus/alerts/prometheus.libsonnet b/jsonnet/kube-prometheus/alerts/prometheus.libsonnet deleted file mode 100644 index a2d0cc67af8a56218028193bcd8d037f74c5e83a..0000000000000000000000000000000000000000 --- a/jsonnet/kube-prometheus/alerts/prometheus.libsonnet +++ /dev/null @@ -1,151 +0,0 @@ -{ - prometheusAlerts+:: { - groups+: [ - { - name: 'prometheus.rules', - rules: [ - { - alert: 'PrometheusConfigReloadFailed', - annotations: { - description: "Reloading Prometheus' configuration has failed for {{$labels.namespace}}/{{$labels.pod}}", - summary: "Reloading Prometheus' configuration failed", - }, - expr: ||| - prometheus_config_last_reload_successful{%(prometheusSelector)s} == 0 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusNotificationQueueRunningFull', - annotations: { - description: "Prometheus' alert notification queue is running full for {{$labels.namespace}}/{{ $labels.pod}}", - summary: "Prometheus' alert notification queue is running full", - }, - expr: ||| - predict_linear(prometheus_notifications_queue_length{%(prometheusSelector)s}[5m], 60 * 30) > prometheus_notifications_queue_capacity{%(prometheusSelector)s} - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusErrorSendingAlerts', - annotations: { - description: 'Errors while sending alerts from Prometheus {{$labels.namespace}}/{{ $labels.pod}} to Alertmanager {{$labels.Alertmanager}}', - summary: 'Errors while sending alert from Prometheus', - }, - expr: ||| - rate(prometheus_notifications_errors_total{%(prometheusSelector)s}[5m]) / rate(prometheus_notifications_sent_total{%(prometheusSelector)s}[5m]) > 0.01 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusErrorSendingAlerts', - annotations: { - description: 'Errors while sending alerts from Prometheus {{$labels.namespace}}/{{ $labels.pod}} to Alertmanager {{$labels.Alertmanager}}', - summary: 'Errors while sending alerts from Prometheus', - }, - expr: ||| - rate(prometheus_notifications_errors_total{%(prometheusSelector)s}[5m]) / rate(prometheus_notifications_sent_total{%(prometheusSelector)s}[5m]) > 0.03 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'critical', - }, - }, - { - alert: 'PrometheusNotConnectedToAlertmanagers', - annotations: { - description: 'Prometheus {{ $labels.namespace }}/{{ $labels.pod}} is not connected to any Alertmanagers', - summary: 'Prometheus is not connected to any Alertmanagers', - }, - expr: ||| - prometheus_notifications_alertmanagers_discovered{%(prometheusSelector)s} < 1 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusTSDBReloadsFailing', - annotations: { - description: '{{$labels.job}} at {{$labels.instance}} had {{$value | humanize}} reload failures over the last four hours.', - summary: 'Prometheus has issues reloading data blocks from disk', - }, - expr: ||| - increase(prometheus_tsdb_reloads_failures_total{%(prometheusSelector)s}[2h]) > 0 - ||| % $._config, - 'for': '12h', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusTSDBCompactionsFailing', - annotations: { - description: '{{$labels.job}} at {{$labels.instance}} had {{$value | humanize}} compaction failures over the last four hours.', - summary: 'Prometheus has issues compacting sample blocks', - }, - expr: ||| - increase(prometheus_tsdb_compactions_failed_total{%(prometheusSelector)s}[2h]) > 0 - ||| % $._config, - 'for': '12h', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusTSDBWALCorruptions', - annotations: { - description: '{{$labels.job}} at {{$labels.instance}} has a corrupted write-ahead log (WAL).', - summary: 'Prometheus write-ahead log is corrupted', - }, - expr: ||| - prometheus_tsdb_wal_corruptions_total{%(prometheusSelector)s} > 0 - ||| % $._config, - 'for': '4h', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusNotIngestingSamples', - annotations: { - description: "Prometheus {{ $labels.namespace }}/{{ $labels.pod}} isn't ingesting samples.", - summary: "Prometheus isn't ingesting samples", - }, - expr: ||| - rate(prometheus_tsdb_head_samples_appended_total{%(prometheusSelector)s}[5m]) <= 0 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - { - alert: 'PrometheusTargetScrapesDuplicate', - annotations: { - description: '{{$labels.namespace}}/{{$labels.pod}} has many samples rejected due to duplicate timestamps but different values', - summary: 'Prometheus has many samples rejected', - }, - expr: ||| - increase(prometheus_target_scrapes_sample_duplicate_timestamp_total{%(prometheusSelector)s}[5m]) > 0 - ||| % $._config, - 'for': '10m', - labels: { - severity: 'warning', - }, - }, - ], - }, - ], - }, -} diff --git a/jsonnet/kube-prometheus/jsonnetfile.json b/jsonnet/kube-prometheus/jsonnetfile.json index 9f7d81f82876d28a2df371a02aa4fe09b35711ff..6240005b83a9e37fb2266aa084ce0093233ef2c5 100644 --- a/jsonnet/kube-prometheus/jsonnetfile.json +++ b/jsonnet/kube-prometheus/jsonnetfile.json @@ -49,6 +49,16 @@ } }, "version": "master" + }, + { + "name": "prometheus", + "source": { + "git": { + "remote": "https://github.com/prometheus/prometheus", + "subdir": "documentation/prometheus-mixin" + } + }, + "version": "master" } ] } diff --git a/jsonnet/kube-prometheus/kube-prometheus.libsonnet b/jsonnet/kube-prometheus/kube-prometheus.libsonnet index 631423bde4094b5873eaeb7363e7b0f236c7f8a8..12fb4b01904a4f3d0cff35fe9ba53257ee699fd3 100644 --- a/jsonnet/kube-prometheus/kube-prometheus.libsonnet +++ b/jsonnet/kube-prometheus/kube-prometheus.libsonnet @@ -10,6 +10,7 @@ local configMapList = k3.core.v1.configMapList; (import 'prometheus/prometheus.libsonnet') + (import 'prometheus-adapter/prometheus-adapter.libsonnet') + (import 'kubernetes-mixin/mixin.libsonnet') + +(import 'prometheus/mixin.libsonnet') + (import 'alerts/alerts.libsonnet') + (import 'rules/rules.libsonnet') + { kubePrometheus+:: { @@ -89,6 +90,7 @@ local configMapList = k3.core.v1.configMapList; alertmanagerSelector: 'job="alertmanager-main",namespace="' + $._config.namespace + '"', prometheusSelector: 'job="prometheus-' + $._config.prometheus.name + '",namespace="' + $._config.namespace + '"', + prometheusName: '{{$labels.namespace}}/{{$labels.pod}}', prometheusOperatorSelector: 'job="prometheus-operator",namespace="' + $._config.namespace + '"', jobs: { @@ -111,5 +113,6 @@ local configMapList = k3.core.v1.configMapList; grafana+:: { dashboards: $.grafanaDashboards, }, + }, } diff --git a/jsonnetfile.lock.json b/jsonnetfile.lock.json index ffc71f1c416b8ae3e3e3f949dc3f73e3ae438f50..1eb6620e579fe0cea872cea3774f6ee60f2b891c 100644 --- a/jsonnetfile.lock.json +++ b/jsonnetfile.lock.json @@ -8,7 +8,7 @@ "subdir": "jsonnet/kube-prometheus" } }, - "version": "daf2e76bc6615ca264d424203ca1584da7cad36e" + "version": "3c02bd5ed7f6cb0094ba2956b32d445d2900b908" }, { "name": "ksonnet", @@ -48,7 +48,7 @@ "subdir": "grafana-builder" } }, - "version": "6daf3fa9b87e45009c377247f64005f6949c886f" + "version": "3daf42722ee2008cae15267ee7380a58988d60cd" }, { "name": "grafana", @@ -79,6 +79,16 @@ } }, "version": "eb7dd97135a5c60d9d9259886100823114e45815" + }, + { + "name": "prometheus", + "source": { + "git": { + "remote": "https://github.com/prometheus/prometheus", + "subdir": "documentation/prometheus-mixin" + } + }, + "version": "28e56d974a8b5bfed7e3d1d621b203d62bac708c" } ] }