当前位置:首页 > 群晖专栏 > 运维部署 > 正文内容

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

admin4年前 (2021-06-06)运维部署696

前言

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


使用 file_sd_configs 配置独立配置文件路径,方便随时修改配置而不需要重启容器,并且方便批量分类管理.

创建独立配置目录

./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


防火墙需开放以下相关端口,注意 nodeexporter 使用 network_mode: host 否则流量监控可能不准.


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的安装部署教程已经分享给大家,欢迎大家留言交流.

本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面


扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=192

标签: 运维部署
分享给朋友:

相关文章

宝塔面板一键安装LNMP和LAMP环境教程

宝塔面板一键安装LNMP和LAMP环境教程

前言本文将详解如何在Linux服务器上通过宝塔面板来快速安装配置LNMP或LAMP环境.LNMP和LAMP是服务器建站环境的简称,LNMP即Linux/Nginx/MySQL/PHP,而LAMP即Linux/Apache/MySQL/PHP...

宝塔面板设置Typecho伪静态去掉index.php教程

宝塔面板设置Typecho伪静态去掉index.php教程

前言Typecho博客初始安装完成后,博客的任何内页面,地址栏都会有index.php(例如https://www.ioiox.com/index.php/archives/about.html)非常影响美观和网站结构,本文将详解在宝塔面板...

服务器安装ServerStatus监控探针教程

服务器安装ServerStatus监控探针教程

前言本文将介绍在服务器上安装ServerStatus来监控多台服务器的运行状态的教程.ServerStatus-Toyo版是一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针~,该云监控(云探针)ServerStatus-Toyo项...

一键安装脚本为CentOS 7 添加Swap交换分区

一键安装脚本为CentOS 7 添加Swap交换分区

前言由于阿里云,腾讯云等云服务器默认系统镜像不带Swap分区,本文将介绍使用简单的一键安装脚本为CentOS7添加Swap交换分区.配置流程一、检查Swap分区登录服务器输入free -mSwap分区为0则表示无Swap分区二、下...

OLAINDEX另一个OneDrive目录索引应用部署教程

OLAINDEX另一个OneDrive目录索引应用部署教程

前言由于OneIndex非常受欢迎,一些优秀的开发者受OneIndex启发,开发出各种OneDrive目录索引应用,例如OLAINDEX,PyOne,CuteOne等等.其功能和主题非常丰富,本文将介绍使用OLAINDEX来部署OneDri...

支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程

支持本地,腾讯,阿里,七牛,又拍云对象存储的Lsky Pro图床安装教程

前言一直在寻找一款外观颜值高,部署简单,功能强大的图床程序.经过多达10款图床程序的测试,最终选择了Lsky Pro来作为正式环境的图床站点程序.Lsky Pro项目地址Lsky Pro的部署相对很多图床来说,环境需求简单,整个部署时间加上...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。