Пока что мы пользуемся Prometheus довольно успешно. Однако недавно мы заметили, что один из наборов предупреждений, которые мы настроили, имеет неправильную маркировку: он отображается как другая среда, чем есть. Это происходит с обеими средами, где у нас есть несколько целей, поэтому мне интересно, является ли это синтаксисом (как-то? Остальные в порядке) или (использование) проблемы с экспортером черного ящика.
В частности, в средах с более чем одной целью в списке вторая и последующие цели помечены как следующая среда в списке (.2 и .3 ENV-B1 отображаются как ENV-B2, а значения .2 и .3 для ENV-B2 отображаются как ENV- B3). Остальные верны.
Это мои конфиги (с заменой различной информации):
# prometheus.yml
rule_files:
- /etc/config/rules
- /etc/config/alerts
scrape_configs:
# Note: Prometheus lists these in a different order, it's not clear why.
- job_name: "a client (direct)"
metrics_path: /probe
params:
module: [https_health]
static_configs:
# ACME
- targets: [ "http://1.1.1.1:8089/isAlive" ]
labels:
environment: S1
project: ACME
service: web-api
importance: moderate
- targets: [ "http://2.2.2.2:8089/isAlive" ]
labels:
environment: S2
project: ACME
service: web-api
importance: moderate
# B environments run multiple instances; Check all of them.
- targets:
- "http://3.3.3.1:8089/isAlive"
- "http://3.3.3.2:8089/isAlive"
- "http://3.3.3.3:8089/isAlive"
labels:
environment: B1
project: ACME
service: web-api
importance: high
# B environments run multiple instances; Check all of them.
- targets:
- "http://4.4.4.1:8089/isAlive"
- "http://4.4.4.2:8089/isAlive"
- "http://4.4.4.3:8089/isAlive"
labels:
environment: B2
project: ACME
service: web-api
importance: high
# B environments run multiple instances . . . except B3.
- targets: [ "http://5.5.5.5:9089/isAlive" ]
labels:
environment: B3
project: ACME
service: web-api
importance: high
# (more)
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 10.10.10.10:32222
# (etc)
# alertmanager.yml
global:
receivers:
- name: slack-devteam-acme
slack_configs:
- send_resolved: true
api_url: "...url..."
username: "Prometheus Monitoring"
title: '{{if eq .Status "firing"}}:fire:{{else}}:successful:{{end}} {{.CommonAnnotations.summary}} {{if eq .Status "firing"}}failing{{else}}resolved{{end}}'
title_link: "http://10.10.10.10:32600/alerts"
text: "{{.CommonAnnotations.description}}\nInstance(s):{{range .Alerts}}\n{{.Labels.instance}} {{.Labels.environment}} {{.Labels.project}} {{.Labels.service}}{{ end }}"
# alerts.yml
- name: blackbox-export-basic
rules:
- alert: ProbeFailure
expr: probe_success < 1
for: 5m
# labels:
# severity: page
annotations:
summary: "{{$labels.job}} probe"
description: "{{$labels.job}} failed check for 5+ minutes."
#description: "{{$labels.instance}} ({{$labels.job}}) failed check for 10+ minutes."
# blackbox-exporter.config.yml
modules:
http_build_number:
prober: http
http:
fail_if_body_not_matches_regexp:
- "buildNumber"
https_health:
prober: http
http:
fail_if_body_not_matches_regexp:
- "Success"
# (etc)