Merge pull request 'fix(observability): контейнерные метрики терялись целиком + два хвоста стека' (#3108) from fix/metrics-cadvisor-drop into main
Reviewed-on: #3108
This commit is contained in:
commit
fe8b022ce5
6 changed files with 51 additions and 16 deletions
|
|
@ -75,7 +75,13 @@ services:
|
||||||
mem_limit: 512m
|
mem_limit: 512m
|
||||||
logging: *default-logging
|
logging: *default-logging
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "wget -q --spider http://localhost:12345/-/ready || exit 1"]
|
# В образе grafana/alloy нет wget/curl/nc, только bash — шлём
|
||||||
|
# сырой HTTP-запрос через /dev/tcp и проверяем код 200 в ответе.
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"bash -c 'exec 3<>/dev/tcp/localhost/12345 && printf \"GET /-/ready HTTP/1.0\r\n\r\n\" >&3 && head -1 <&3 | grep -q 200' || exit 1",
|
||||||
|
]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,10 @@ services:
|
||||||
volumes:
|
volumes:
|
||||||
- ./ops/metrics/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
- ./ops/metrics/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||||
- ./ops/metrics/prometheus/rules:/etc/prometheus/rules:ro
|
- ./ops/metrics/prometheus/rules:/etc/prometheus/rules:ro
|
||||||
|
# file_sd для job "alertmanager" — см. комментарий в prometheus.yml.
|
||||||
|
# Забыть этот монт — значит вернуть "no such host" из-за отсутствующего
|
||||||
|
# файла целей (был инцидент, когда похожий пропущенный монт положил Caddy).
|
||||||
|
- ./ops/metrics/prometheus/alertmanager_targets.yml:/etc/prometheus/alertmanager_targets.yml:ro
|
||||||
- prometheus_data:/prometheus
|
- prometheus_data:/prometheus
|
||||||
expose:
|
expose:
|
||||||
- "9090"
|
- "9090"
|
||||||
|
|
|
||||||
|
|
@ -92,10 +92,14 @@ prometheus.relabel "cadvisor_trim" {
|
||||||
action = "keep"
|
action = "keep"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Служебные контейнеры docker без имени только зашумляют графики.
|
||||||
|
// keep .+ вместо drop с пустым regex: в Alloy незаданный regex
|
||||||
|
// документированно дефолтится в (.*), а пустая строка неотличима от
|
||||||
|
// незаданного значения — такой drop рискует выкинуть вообще все ряды.
|
||||||
rule {
|
rule {
|
||||||
source_labels = ["name"]
|
source_labels = ["name"]
|
||||||
regex = ""
|
regex = ".+"
|
||||||
action = "drop"
|
action = "keep"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,10 +64,13 @@ prometheus.relabel "cadvisor_trim" {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Служебные контейнеры docker без имени только зашумляют графики.
|
// Служебные контейнеры docker без имени только зашумляют графики.
|
||||||
|
// keep .+ вместо drop с пустым regex: в Alloy незаданный regex
|
||||||
|
// документированно дефолтится в (.*), а пустая строка неотличима от
|
||||||
|
// незаданного значения — такой drop рискует выкинуть вообще все ряды.
|
||||||
rule {
|
rule {
|
||||||
source_labels = ["name"]
|
source_labels = ["name"]
|
||||||
regex = ""
|
regex = ".+"
|
||||||
action = "drop"
|
action = "keep"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
14
ops/metrics/prometheus/alertmanager_targets.yml
Normal file
14
ops/metrics/prometheus/alertmanager_targets.yml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# file_sd target-файл для job "alertmanager" (см. prometheus.yml).
|
||||||
|
#
|
||||||
|
# Пустой список ([]) — штатное состояние, пока профиль "alerts" в
|
||||||
|
# docker-compose.metrics.yml выключен (#3078, канал доставки не решён):
|
||||||
|
# сервиса alertmanager не существует, и Prometheus просто не видит для
|
||||||
|
# него ни одной цели — без ошибок разрешения имени и без up{job=...}=0.
|
||||||
|
#
|
||||||
|
# Prometheus перечитывает этот файл на лету (file_sd), рестарт не нужен.
|
||||||
|
# Когда профиль alerts включат — заменить [] на:
|
||||||
|
#
|
||||||
|
# - targets: ["alertmanager:9093"]
|
||||||
|
# labels:
|
||||||
|
# host: infra
|
||||||
|
[]
|
||||||
|
|
@ -19,15 +19,18 @@ global:
|
||||||
rule_files:
|
rule_files:
|
||||||
- /etc/prometheus/rules/*.yml
|
- /etc/prometheus/rules/*.yml
|
||||||
|
|
||||||
# Пока профиль alerts выключен, этой цели не существует и Prometheus раз в
|
# Пока профиль alerts выключен, сервиса alertmanager не существует. Со
|
||||||
# интервал пишет в лог, что не смог её разрешить. Это шум, а не отказ: правила
|
# static_configs это раз в интервал давало "lookup alertmanager: no such
|
||||||
# считаются и видны в интерфейсе, просто уведомлять некому. Молча выключать
|
# host" в логах и up{job="alertmanager"}=0. file_sd_configs вместо
|
||||||
# alerting не стали — тогда включение алертов потребовало бы правки конфига,
|
# static_configs делает цель опциональной идиоматично для Prometheus: файл
|
||||||
# а не одной переменной.
|
# целей по умолчанию содержит пустой список ([]) — алертов нет и ошибок
|
||||||
|
# разрешения имени тоже нет. Prometheus перечитывает file_sd на лету, так что
|
||||||
|
# включение профиля alerts сводится к наполнению файла, без рестарта и без
|
||||||
|
# правки этого конфига.
|
||||||
alerting:
|
alerting:
|
||||||
alertmanagers:
|
alertmanagers:
|
||||||
- static_configs:
|
- file_sd_configs:
|
||||||
- targets: ["alertmanager:9093"]
|
- files: ["/etc/prometheus/alertmanager_targets.yml"]
|
||||||
|
|
||||||
scrape_configs:
|
scrape_configs:
|
||||||
# Сам Prometheus. Нужен не для красоты: по нему строится алерт на здоровье
|
# Сам Prometheus. Нужен не для красоты: по нему строится алерт на здоровье
|
||||||
|
|
@ -38,11 +41,12 @@ scrape_configs:
|
||||||
labels:
|
labels:
|
||||||
host: infra
|
host: infra
|
||||||
|
|
||||||
|
# Тот же опциональный source, что и в alerting.alertmanagers выше: пока
|
||||||
|
# профиль alerts не включён, файл целей пуст — up{job="alertmanager"}
|
||||||
|
# просто не появится в выдаче вместо ошибки "no such host".
|
||||||
- job_name: alertmanager
|
- job_name: alertmanager
|
||||||
static_configs:
|
file_sd_configs:
|
||||||
- targets: ["alertmanager:9093"]
|
- files: ["/etc/prometheus/alertmanager_targets.yml"]
|
||||||
labels:
|
|
||||||
host: infra
|
|
||||||
|
|
||||||
- job_name: loki
|
- job_name: loki
|
||||||
static_configs:
|
static_configs:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue