docker部署prometheus+grafana

温馨提醒

创建目录

1
mkdir /data/docker/monitor/{alertmanager,grafana,prometheus}

创建配置文件

  • prometheus.yml

    vim /data/docker/monitor/prometheus/prometheus.yml

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    global:
      scrape_interval: 15s
      evaluation_interval: 15s
    
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
          - targets: ['localhost:9090']
    
      - job_name: "redis"
        static_configs:
          - targets: [192.168.1.100:9121]
    
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
                - alertmanager:9093
    
    rule_files:
      - "/etc/prometheus/rules/*.yml"
  • alertmanager.yml

    vim /data/docker/monitor/alertmanager/alertmanager.yml

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    global:
      resolve_timeout: 5m
    
    route:
      receiver: "webhook-notify"
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 4h
    
    receivers:
      - name: "webhook-notify"
        webhook_configs:
          - url: "http://your-webhook-server:8080/alert"

创建 docker-compose.yml

vim /data/docker/monitor/docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
services:
  prometheus:
    image: prom/prometheus:v3.9.1
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ./prometheus/data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
      - '--web.console.templates=/usr/share/prometheus/consoles'
      - '--storage.tsdb.retention.time=15d'
      - "--web.enable-lifecycle"
    ports:
      - "9090:9090"

  grafana:
    image: grafana/grafana:12.3.1
    container_name: grafana
    restart: unless-stopped
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_SECURITY_ADMIN_PASSWORD=admin
      - GF_USERS_ALLOW_SIGN_UP=false
      - GF_DEFAULT_LANGUAGE=zh-Hans
    volumes:
      - ./grafana/data:/var/lib/grafana
    ports:
      - "3001:3000"

  alertmanager:
    image: prom/alertmanager:v0.30.1
    container_name: alertmanager
    restart: unless-stopped
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
    command:
      - "--config.file=/etc/alertmanager/alertmanager.yml"

启动服务

docker compose up -d