Compare commits

..

No commits in common. "fe8b022ce582c9a822157b69e0e9bdc270e67c52" and "8fbcdd29273b28ee9fd518c3b109fc1d0daa6b0a" have entirely different histories.

6 changed files with 16 additions and 51 deletions

View file

@ -75,13 +75,7 @@ services:
mem_limit: 512m mem_limit: 512m
logging: *default-logging logging: *default-logging
healthcheck: healthcheck:
# В образе grafana/alloy нет wget/curl/nc, только bash — шлём test: ["CMD-SHELL", "wget -q --spider http://localhost:12345/-/ready || exit 1"]
# сырой 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

View file

@ -51,10 +51,6 @@ 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"

View file

@ -92,14 +92,10 @@ 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 = "keep" action = "drop"
} }
} }

View file

@ -64,13 +64,10 @@ prometheus.relabel "cadvisor_trim" {
} }
// Служебные контейнеры docker без имени только зашумляют графики. // Служебные контейнеры docker без имени только зашумляют графики.
// keep .+ вместо drop с пустым regex: в Alloy незаданный regex
// документированно дефолтится в (.*), а пустая строка неотличима от
// незаданного значения — такой drop рискует выкинуть вообще все ряды.
rule { rule {
source_labels = ["name"] source_labels = ["name"]
regex = ".+" regex = ""
action = "keep" action = "drop"
} }
} }

View file

@ -1,14 +0,0 @@
# 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
[]

View file

@ -19,18 +19,15 @@ global:
rule_files: rule_files:
- /etc/prometheus/rules/*.yml - /etc/prometheus/rules/*.yml
# Пока профиль alerts выключен, сервиса alertmanager не существует. Со # Пока профиль alerts выключен, этой цели не существует и Prometheus раз в
# static_configs это раз в интервал давало "lookup alertmanager: no such # интервал пишет в лог, что не смог её разрешить. Это шум, а не отказ: правила
# host" в логах и up{job="alertmanager"}=0. file_sd_configs вместо # считаются и видны в интерфейсе, просто уведомлять некому. Молча выключать
# static_configs делает цель опциональной идиоматично для Prometheus: файл # alerting не стали — тогда включение алертов потребовало бы правки конфига,
# целей по умолчанию содержит пустой список ([]) — алертов нет и ошибок # а не одной переменной.
# разрешения имени тоже нет. Prometheus перечитывает file_sd на лету, так что
# включение профиля alerts сводится к наполнению файла, без рестарта и без
# правки этого конфига.
alerting: alerting:
alertmanagers: alertmanagers:
- file_sd_configs: - static_configs:
- files: ["/etc/prometheus/alertmanager_targets.yml"] - targets: ["alertmanager:9093"]
scrape_configs: scrape_configs:
# Сам Prometheus. Нужен не для красоты: по нему строится алерт на здоровье # Сам Prometheus. Нужен не для красоты: по нему строится алерт на здоровье
@ -41,12 +38,11 @@ scrape_configs:
labels: labels:
host: infra host: infra
# Тот же опциональный source, что и в alerting.alertmanagers выше: пока
# профиль alerts не включён, файл целей пуст — up{job="alertmanager"}
# просто не появится в выдаче вместо ошибки "no such host".
- job_name: alertmanager - job_name: alertmanager
file_sd_configs: static_configs:
- files: ["/etc/prometheus/alertmanager_targets.yml"] - targets: ["alertmanager:9093"]
labels:
host: infra
- job_name: loki - job_name: loki
static_configs: static_configs: