使用docker compose 部署prometheus

670 阅读1分钟

编写docker-compose.xml

version: "3.9"
services:
  prometheus:
    image: "prom/prometheus:v2.42.0"
    networks:
      - prometheus
    restart: always
    volumes:
      - prometheus:/etc/prometheus
    ports:
      - "9090:9090"
    depends_on:
      - alertmanager
  alertmanager:
    image: "bitnami/alertmanager:0.25.0"
    networks:
      - prometheus
    restart: always
    volumes:
      - alertmanager:/opt/bitnami/alertmanager/conf
    ports:
      - "9093:9093"
volumes:
  prometheus:
  alertmanager:

networks:
  prometheus:

配置存储卷prometheus,alertmanager方便配置

测试启动一下

docker compose -f docker-compose.xml up -d

使用的是docker compose v2 Docker Compose,启动成功后会创建存储卷和网络

编辑配置文件

/home/docker/lib/docker/volumes/prometheus_prometheus/_data/prometheus.yml

global:
  scrape_interval:     10s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute.

alerting:
  alertmanagers:
  - static_configs:
    - targets:
       - alertmanager:9093

rule_files:
  - "rules/*.yml"

scrape_configs:
  - job_name: 'feng'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    scheme: "https"
    static_configs:
      - targets: ['feng.com']

配置prometheus规则文件

  • 在当前目录创建rules文件夹
[root@localhost _data]# ls
console_libraries  consoles  prometheus.yml  rules
  • 在文件夹创建rule.yml
groups:
- name: feng-down
  rules:
  - alert: test-node-down
    expr: up{instance="feng.com:443"} == 0
    for: 5s
    labels:
      status: Warn
      team: test
    annotations:
      description: "feng service is Down ! ! !"
      summary:  "测试服务停了,请留意!!!"

配置prometheus规则文件

/home/docker/lib/docker/volumes/prometheus_alertmanager/_data/config.yml

global:
  resolve_timeout: 5m #解析的超时时间
  smtp_smarthost: 'smtp.163.com:465' #邮箱smtp地址
  smtp_from: 'feng@163.com' #来自哪个邮箱发出的
  smtp_auth_username: 'feng@163.com' #邮箱的用户名
  smtp_auth_password: '123456' #这里是邮箱的授权密码,不是登录密码
  smtp_require_tls: false #是否启用tls

route:
  group_by: ['feng']
  group_wait: 3s
  group_interval: 10s
  repeat_interval: 3h
  receiver: 'mail'
receivers:
- name: 'mail'
  email_configs: #email的配置
  - to: 'feng@163.com,666@qq.com' #报警接收人的邮件地址
    send_resolved: true  #发送恢复通知
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

重启docker compose服务

docker compose -f docker-compose.xml restart

链接