# Prometheus — серверная сторона, живёт на Beget. # # СКРЕЙПА ЧУЖИХ ХОСТОВ ЗДЕСЬ НЕТ. Метрики с Poincare приходят push'ем через # remote-write receiver (--web.enable-remote-write-receiver), потому что открывать # входящие порты на продуктовом хосте ради мониторинга — плохой размен. # Локально скрейпится только то, что стоит на этом же хосте. # # Метка `host` проставляется агентом Alloy на своей стороне (external_labels), # поэтому здесь её нет: если задать и там и тут, honor_labels-семантика сделает # результат неочевидным. global: scrape_interval: 30s scrape_timeout: 10s evaluation_interval: 30s external_labels: cluster: gendesign rule_files: - /etc/prometheus/rules/*.yml # Пока профиль alerts выключен, сервиса alertmanager не существует. Со # static_configs это раз в интервал давало "lookup alertmanager: no such # host" в логах и up{job="alertmanager"}=0. file_sd_configs вместо # static_configs делает цель опциональной идиоматично для Prometheus: пустой # список ([]) — алертов нет и ошибок разрешения имени тоже нет. Prometheus # перечитывает file_sd на лету, так что включение профиля сводится к # наполнению файла, без рестарта и без правки этого конфига. # # Файл ПРОИЗВОДНЫЙ (суффикс .gen, в .gitignore): его рендерит deploy-metrics.yml # тем же условием, которым включает профиль. Одно условие — один результат. # Отслеживаемая git'ом версия этого не давала: 27.08 профиль подняли, а файл # так и остался плейсхолдером []. Alertmanager был Up и healthy, Prometheus же # не видел ни одного приёмника (activeAlertmanagers: []), и 1568 уведомлений # ушли в prometheus_notifications_dropped_total — молча, без единой ошибки ни # в одном логе. Держать включатель и цель в разных местах больше нельзя. alerting: alertmanagers: - file_sd_configs: - files: ["/etc/prometheus/alertmanager_targets.gen.yml"] scrape_configs: # Сам Prometheus. Нужен не для красоты: по нему строится алерт на здоровье # приёмника — пустая панель неотличима от «ошибок нет», и это надо различать. - job_name: prometheus static_configs: - targets: ["localhost:9090"] labels: host: infra # Тот же опциональный source, что и в alerting.alertmanagers выше: пока # профиль alerts не включён, файл целей пуст — up{job="alertmanager"} # просто не появится в выдаче вместо ошибки "no such host". - job_name: alertmanager file_sd_configs: - files: ["/etc/prometheus/alertmanager_targets.gen.yml"] - job_name: loki static_configs: - targets: ["loki:3100"] labels: host: infra - job_name: grafana static_configs: - targets: ["grafana:3000"] labels: host: infra metrics_path: /metrics