如何使用警报管理器配置普罗米修斯?

Tar*_*ung 8 docker-compose prometheus

docker-compose.yml: 这是运行 prometheus、node-exporter 和 alert-manager 服务的 docker -compose。所有服务都运行良好。甚至prometheus的目标菜单中的健康状况也显示正常。

version: '2'

services:

    prometheus:
        image: prom/prometheus
        privileged: true
        volumes:
            - ./prometheus.yml:/etc/prometheus/prometheus.yml
            - ./alertmanger/alert.rules:/alert.rules
        command:
            - '--config.file=/etc/prometheus/prometheus.yml'
        ports:
            - '9090:9090'

    node-exporter:
        image: prom/node-exporter
        ports:
            - '9100:9100'

    alertmanager:
        image: prom/alertmanager
        privileged: true
        volumes:
             - ./alertmanager/alertmanager.yml:/alertmanager.yml
        command:
            - '--config.file=/alertmanager.yml'
        ports:
            - '9093:9093'
Run Code Online (Sandbox Code Playgroud)

普罗米修斯.yml

这是带有目标和警报目标集的 prometheus 配置文件。警报管理器目标网址工作正常。

global:
  scrape_interval: 5s
  external_labels:
    monitor: 'my-monitor'

# this is where I have simple alert rules
rule_files:
  - ./alertmanager/alert.rules

scrape_configs:
    - job_name: 'prometheus'
      static_configs: 
        - targets: ['localhost:9090']

    - job_name: 'node-exporter'
      static_configs:
        - targets: ['node-exporter:9100']

alerting:
  alertmanagers:
    - static_configs:
      - targets: ['some-ip:9093']
Run Code Online (Sandbox Code Playgroud)

alert.rules: 只是一个简单的警报规则,用于在服务关闭时显示警报

ALERT service_down
  IF up == 0
Run Code Online (Sandbox Code Playgroud)

警报管理器.yml

这是为了在发生警报时在 slack 上发送消息。

global:
  slack_api_url: 'https://api.slack.com/apps/A90S3Q753'

    route:
      receiver: 'slack'

    receivers:
      - name: 'slack'
        slack_configs:
          - send_resolved: true
            username: 'tara gurung'
            channel: '#general'
            api_url: 'https://hooks.slack.com/services/T52GRFN3F/B90NMV1U2/QKj1pZu3ZVY0QONyI5sfsdf'
Run Code Online (Sandbox Code Playgroud)

问题: 所有容器都工作正常我无法弄清楚确切的问题。我真的错过了什么。检查 prometheus 中的警报显示。

警报 未定义警报规则

在此处输入图片说明

Mar*_*arc 5

您的./alertmanager/alert.rules文件未包含在 docker 配置中,因此它在容器中不可用。您需要将其添加到 prometheus 服务中:

prometheus:
    image: prom/prometheus
    privileged: true
    volumes:
        - ./prometheus.yml:/etc/prometheus/prometheus.yml
        - ./alertmanager/alert.rules:/alertmanager/alert.rules
    command:
        - '--config.file=/etc/prometheus/prometheus.yml'

    ports:
        - '9090:9090'
Run Code Online (Sandbox Code Playgroud)

并且可能在里面给出一个绝对路径prometheus.yml

rule_files:
- "/alertmanager/alert.rules"
Run Code Online (Sandbox Code Playgroud)

您还需要确保警报规则有效。有关详细信息和示例,请参阅prometheus 文档。您的alert.rules文件应如下所示:

groups:
- name: example
  rules:

  # Alert for any instance that is unreachable for >5 minutes.
  - alert: InstanceDown
    expr: up == 0
    for: 5m
Run Code Online (Sandbox Code Playgroud)

一旦您有多个文件,最好将整个目录添加为一个卷而不是单个文件。