阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker Compose 部署监控系统 Prometheus + Grafana + Node Exporter + Cadvisor

145次阅读
没有评论

共计 3104 个字符,预计需要花费 8 分钟才能阅读完成。

前言

Prometheus + Grafana + Node Exporter + Cadvisor是一款开源的服务器系统状态监控平台系统, 用于管理和存储各服务器的实时信息数据, 方便监控和排查服务器故障. 博主经过一段时间的安装, 配置, 测试也基本满足了个人以及中小企业团队对于日志管理的需求. 整合了相对详细的部署和配置教程分享给大家.

本教程使用 docker-compose 整合部署, 参考 stefanprodan/dockprom.


项目流程

服务端: 部署 Prometheus + Grafana 到主监控服务器
客户端: 部署 Node Exporter + Cadvisor 到需要被监控的服务器

常规流程

客户端通过 Node Exporter 采集系统状态信息,Cadvisor采集 docker 容器信息, 并开放端口, 由服务端 Prometheus 进行抓取, 并由 Grafana 提供前端展示.

服务器部署 Prometheus + Grafana

拉取代码

git clone -b master https://github.com/stefanprodan/dockprom prom

创建 cadday 密码

docker run --rm caddy caddy hash-password --plaintext 'youtpasswd'
# 获取 hash 密码
JDJhJDE0JHJmeldKeDB0NjJnY0tjQk5wZXVYaC50QjdSbi9aVlVZeFYyV012UkI2Y

docker-compose.yml

volumes:

创建数据目录

cd prom
mkdir prometheus_data grafana_data
# 创建数据目录

修改 docker-compose.yml 中顶级卷配置到指定目录用于存储数据

volumes:
    prometheus_data:
      driver: local
      driver_opts:
        type: 'none'
        o: 'bind'
        device: '/root/prom/prometheus_data'
    grafana_data:
      driver: local
      driver_opts:
        type: 'none'
        o: 'bind'
        device: '/root/prom/grafana_data'

配置 grafana 密码

yourpasswd修改为你的 grafana 登陆密码

    environment:
      - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-yourpasswd}
      - GF_USERS_ALLOW_SIGN_UP=false

配置 caddy 密码

修改上文生成的 caddy hash 密码

    environment:
      - ADMIN_USER=${ADMIN_USER:-admin}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
      - ADMIN_PASSWORD_HASH=${ADMIN_PASSWORD_HASH:-JDJhJDE0JHJmeldKeDB0NjJnY0tjQk5wZXVYaC50QjdSbi9aVlVZeFYyV012UkI2Y

配置 prometheus.yml

创建独立配置目录

./prometheus 创建 jobs 目录, 创建独立配置文件:

  • nodeexporter.yml
  • cadvisor.yml
  • prometheus.yml
  • pushgateway.yml

独立配置文件

参考示例./prometheus/jobs/nodeexporter.yml

- targets: 
  - "127.127.127.127:9100"
  labels: 
    hostname: Server
- targets: 
  - "127.127.127.128:9100"
  labels: 
    hostname: Server1
- targets: 
  - "127.127.127.129:9100"
  labels: 
    hostname: Server2

参考示例./prometheus/jobs/cadvisor.yml

- targets: 
  - "127.127.127.127:8080"
  labels: 
    hostname: Server
- targets: 
  - "127.127.127.128:8080"
  labels: 
    hostname: Server1
- targets: 
  - "127.127.127.129:8080"
  labels: 
    hostname: Server2

配置 prometheus.yml

参考修改独立配置文件路径./prometheus/prometheus.yml

scrape_configs:
  - job_name: 'nodeexporter'
    file_sd_configs:
      - files:
        - "/etc/prometheus/jobs/nodeexporter.yml"
        refresh_interval: 5s

  - job_name: 'cadvisor'
    file_sd_configs:
      - files:
        - "/etc/prometheus/jobs/cadvisor.yml"
        refresh_interval: 5s

  - job_name: 'prometheus'
    file_sd_configs:
      - files:
        - "/etc/prometheus/jobs/prometheus.yml"
        refresh_interval: 5s

  - job_name: 'pushgateway'
    file_sd_configs:
      - files:
        - "/etc/prometheus/jobs/pushgateway.yml"
        refresh_interval: 5s

客户端配置

docker-compose.yml

version: '3.2'
services:
  nodeexporter:
    image: prom/node-exporter:v1.1.2
    container_name: nodeexporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    # ports:
      # - 9100:9100
    environment:
      TZ: Asia/Shanghai
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
    labels:
      org.label-schema.group: "monitoring"
    restart: always
    network_mode: host


  cadvisor:
    image: gcr.io/cadvisor/cadvisor:v0.39.0
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro
      #- /cgroup:/cgroup:ro #doesn't work on MacOS only for Linux
    ports:
      - 8080:8080
    environment:
      TZ: Asia/Shanghai
    labels:
      org.label-schema.group: "monitoring"
    restart: always   

结语

Prometheus的安装部署教程已经分享给大家, 欢迎大家留言交流.

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2023-08-16发表,共计3104字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中