Docker,Docker-Compose部署Prometheus,Grafana,Alertmanager, Node_exporter

本文介绍了如何使用DockerCompose在A服务器上安装并配置Prometheus,包括grafana,以及如何监控另一台B服务器的node_exporter。详细步骤包括克隆仓库、启动服务、配置Prometheus监控多个目标和重启服务以应用更改。

简易版docker-compose安装prometheus配套监控服务

其他学习笔记
docker:  https://blog.youkuaiyun.com/Fall_enleaves/article/details/130325496?spm=1001.2014.3001.5502
docker-compose: https://blog.youkuaiyun.com/Fall_enleaves/article/details/130971055?spm=1001.2014.3001.5502
  • 在A服务器中
  • 克隆仓库 https://gitee.com/sunnyfe/docker-prometheus.git
  • docker-compose up -d 后台启动
version: '3.3'

volumes:
  prometheus_data: {}
  grafana_data: {}

networks:
  monitoring:
    driver: bridge

services:
  prometheus:
    image: prom/prometheus:v2.45.0
    container_name: prometheus
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./prometheus/:/etc/prometheus/
      - 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'
      #热加载配置
      - '--web.enable-lifecycle'
      #api配置
      #- '--web.enable-admin-api'
      #历史数据最大保留时间,默认15天
      - '--storage.tsdb.retention.time=30d'  
    networks:
      - monitoring
    links:
      - alertmanager
      - cadvisor
      - node_exporter
    expose:
      - '9090'
    ports:
      - 9090:9090
    depends_on:
      - cadvisor

  alertmanager:
    image: prom/alertmanager:v0.25.0
    container_name: alertmanager
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./alertmanager/:/etc/alertmanager/
    command:
      - '--config.file=/etc/alertmanager/config.yml'
      - '--storage.path=/alertmanager'
    networks:
      - monitoring
    expose:
      - '9093'
    ports:
      - 9093:9093

  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    networks:
      - monitoring
    expose:
      - '8080'

  node_exporter:
    image: prom/node-exporter:v1.6.0
    container_name: node-exporter
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command: 
      - '--path.procfs=/host/proc' 
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
    networks:
      - monitoring
    ports:
      - '9100:9100'

  grafana:
    image: grafana/grafana:10.0.1
    container_name: grafana
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning/:/etc/grafana/provisioning/
    env_file:
      - ./grafana/config.monitoring
    networks:
      - monitoring
    links:
      - prometheus
    ports:
      - 3000:3000
    depends_on:
      - prometheus
  • 开放配置文件中相应端口

用prometheus监控另一台服务器(B服务器)

  1. 在B服务器中安装node_exporter
  2. 用docker-compose方式, 或者docker方式启动node_expoter, 这里用docker-compose
version: '3.3'

services:
  node_exporter:
    image: prom/node-exporter:v1.6.0
    container_name: node-exporter
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command: 
      - '--path.procfs=/host/proc' 
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc|rootfs/var/lib/docker)($$|/)'
    ports:
      - '9100:9100'
  1. 开放9100端口
  2. 在A服务器的prometheus配置监控B服务器 , 在node-exporter添加一个节点
  3. 具体配置如下
# 全局配置
global:
	# 将搜刮间隔设置为每15秒一次。默认是每1分钟一次。
  scrape_interval:     15s
  # 每15秒评估一次规则。默认是每1分钟一次。
  evaluation_interval: 15s

# AlertManager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"

# 配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
    - targets: ['localhost:9090']
  - job_name: 'alertmanager'
    scrape_interval: 15s
    static_configs:
    - targets: ['alertmanager:9093']
  - job_name: 'cadvisor'
    scrape_interval: 15s
    static_configs:
    - targets: ['cadvisor:8080']
      labels:
        instance: Prometheus服务器 

  - job_name: 'node-exporter'
    scrape_interval: 15s
    static_configs:
    - targets: ['node_exporter:9100']
      labels:
        instance: Prometheus服务器
    - targets: ['172.16.201.170:9100']
      labels:
        instance: docker2服务器
  1. 重启prometheus, 或以请求方式使配置生效(如果开启了prometheus热加载)
curl -X POST http://localhost:9090/-/reload
  1. 在grafana的dashbord中就能查看到新配的服务器
    grafana监控

以上完成简易版prometheus配套监控服务

一般监控应用操作流程

  1. 监控什么应用, 就安装相应的expoer
  2. 修改prometheus配置文件 添加job
  3. 修改告警配置
  4. 重载prometheus配置文件
  5. 配置grafana

官网expoter 列表

https://prometheus.io/docs/instrumenting/exporters/

Prometheus 是一个开源的监控系统,支持多维数据模型和灵活的查询语言(PromQL)。Alertmanager 则用于处理由 Prometheus 服务器发送的警报,并提供分组、抑制、路由等功能。以下是使用 `docker-compose` 部署 PrometheusAlertmanager 的配置指南。 ### 1. 创建 `docker-compose.yml` 文件 以下是一个完整的 `docker-compose.yml` 文件示例,用于部署 PrometheusAlertmanager: ```yaml version: '3.8' services: prometheus: image: prom/prometheus:latest container_name: prometheus ports: - "9090:9090" volumes: - ./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' restart: unless-stopped alertmanager: image: prom/alertmanager:latest container_name: alertmanager ports: - "9093:9093" volumes: - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml command: - '--config.file=/etc/alertmanager/alertmanager.yml' - '--storage.path=/alertmanager' restart: unless-stopped volumes: prometheus_data: ``` ### 2. 配置 Prometheus (`prometheus.yml`) 创建 `prometheus.yml` 文件,配置 Prometheus 的抓取目标和 Alertmanager 地址: ```yaml global: scrape_interval: 15s evaluation_interval: 15s alerting: alertmanagers: - static_configs: - targets: - alertmanager:9093 rule_files: # 指定警报规则文件路径 - "rules/*.yaml" scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' static_configs: - targets: ['node-exporter:9100'] ``` ### 3. 配置 Alertmanager (`alertmanager.yml`) 创建 `alertmanager.yml` 文件,配置 Alertmanager 的路由规则和通知方式: ```yaml global: resolve_timeout: 5m route: group_by: ['job'] group_wait: 30s group_interval: 5m repeat_interval: 1h receiver: 'default-receiver' receivers: - name: 'default-receiver' webhook_configs: - url: 'http://your-webhook-url' # 替换为实际的Webhook地址 ``` ### 4. 配置警报规则 (可选) 在 `rules` 目录下创建警报规则文件,例如 `instance-down.yaml`: ```yaml groups: - name: instance-health rules: - alert: InstanceDown expr: up == 0 for: 1m labels: severity: page annotations: summary: "Instance {{ $labels.instance }} down" description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute." ``` ### 5. 启动服务 在包含 `docker-compose.yml` 文件的目录中运行以下命令,启动 PrometheusAlertmanager: ```bash docker-compose up -d ``` ### 6. 访问 PrometheusAlertmanager - Prometheus Web UI: [http://localhost:9090](http://localhost:9090) - Alertmanager Web UI: [http://localhost:9093](http://localhost:9093) 通过 Prometheus Web UI,可以查看监控指标和触发的警报。Alertmanager Web UI 则用于查看警报的路由和通知状态。 ### 7. 停止服务 如果需要停止服务,可以运行以下命令: ```bash docker-compose down ``` ### 8. 持久化数据 (可选) Prometheus 的数据存储在 `prometheus_data` 卷中,确保即使容器停止或重启,数据也不会丢失。如果需要备份或迁移数据,可以将该卷挂载到其他位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值