Prometheus监控Docker Swarm集群

使用Prometheus监控Docker[macOS Mojave] Prometheus是一个开源的系统监控报警工具。本文示例将Docker作为其监控目标的配置方法。 配置Docker 在daemon.json加入如下配置后重启docker。 //指定metrics采集端口 { "metrics-addr" : "127.0.0.1:9323", "experimental" : true } 配置和启动Prometheus 创建docker sw... 阅读详情

cAdvisor+Prometheus+Grafana监控Docker Swarm集群

参考:https://docs.docker.com/config/daemon/prometheus/

           https://github.com/cyancow/swarmprom

按照github开源项目来进行配置:https://github.com/cyancow/swarmprom

github项目clone到本地

$ git clone https://github.com/stefanprodan/swarmprom.git
$ cd swarmprom

修改docker配置文件

修改docker默认配置文件增加以下两项内容,以便于promethus共享守护进程的数据

Linux修改: /etc/docker/daemon.json
Windows Server修改: C:\ProgramData\docker\config\daemon.json

增加以下两行内容,如果已经有其他配置则往原有大括号内追加以下两项内容,如果文件不存在则创建文件,内容如下:


{
  "metrics-addr" : "127.0.0.1:9323",
  "experimental" : true
}

 

修改docker-compose.yml配置文件

修改网络及相关端口映射,将原配置文件中的网络net修改为,自有集群中的网络,这样现有集群中在当前网络中的服务即可以本检测到;

version: "3.3"

#原网络配置
#networks:
#  net:
#    driver: overlay
#    attachable: true

#切换现有集群网络
networks:
  mon_net:
    driver: overlay
    attachable: true

volumes:
    prometheus: {}
    grafana: {}
    alertmanager: {}

configs:
  caddy_config:
    file: ./caddy/Caddyfile
  dockerd_config:
    file: ./dockerd-exporter/Caddyfile
  node_rules:
    file: ./prometheus/rules/swarm_node.rules.yml
  task_rules:
    file: ./prometheus/rules/swarm_task.rules.yml

services:
  dockerd-exporter:
    image: stefanprodan/caddy
    networks:
      - mon_net
    environment:
      - DOCKER_GWBRIDGE_IP=172.18.0.1
    configs:
      - source: dockerd_config
        target: /etc/caddy/Caddyfile
    deploy:
      mode: global
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

  cadvisor:
    image: google/cadvisor
    networks:
      - mon_net
    command: -logtostderr -docker_only
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /:/rootfs:ro
      - /var/run:/var/run
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    deploy:
      mode: global
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

  grafana:
    image: stefanprodan/swarmprom-grafana:5.3.4
    networks:
      - mon_net
    environment:
      - GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
      - GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
      - GF_USERS_ALLOW_SIGN_UP=false
      #- GF_SERVER_ROOT_URL=${GF_SERVER_ROOT_URL:-localhost}
      #- GF_SMTP_ENABLED=${GF_SMTP_ENABLED:-false}
      #- GF_SMTP_FROM_ADDRESS=${GF_SMTP_FROM_ADDRESS:-grafana@test.com}
      #- GF_SMTP_FROM_NAME=${GF_SMTP_FROM_NAME:-Grafana}
      #- GF_SMTP_HOST=${GF_SMTP_HOST:-smtp:25}
      #- GF_SMTP_USER=${GF_SMTP_USER}
      #- GF_SMTP_PASSWORD=${GF_SMTP_PASSWORD}
    volumes:
      - grafana:/var/lib/grafana
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

  alertmanager:
    image: stefanprodan/swarmprom-alertmanager:v0.14.0
    networks:
      - mon_net
    environment:
      - SLACK_URL=${SLACK_URL:-https://hooks.slack.com/services/TOKEN}
      - SLACK_CHANNEL=${SLACK_CHANNEL:-general}
      - SLACK_USER=${SLACK_USER:-alertmanager}
    command:
      - '--config.file=/etc/alertmanager/alertmanager.yml'
      - '--storage.path=/alertmanager'
    volumes:
      - alertmanager:/alertmanager
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

  unsee:
    image: cloudflare/unsee:v0.8.0
    networks:
      - mon_net
    environment:
      - "ALERTMANAGER_URIS=default:http://alertmanager:9093"
    deploy:
      mode: replicated
      replicas: 1

  node-exporter:
    image: stefanprodan/swarmprom-node-exporter:v0.16.0
    networks:
      - mon_net
    environment:
      - NODE_ID={{.Node.ID}}
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
      - /etc/hostname:/etc/nodename
    command:
      - '--path.sysfs=/host/sys'
      - '--path.procfs=/host/proc'
      - '--collector.textfile.directory=/etc/node-exporter/'
      - '--collector.filesystem.ignored-mount-points=^/(sys|proc|dev|host|etc)($$|/)'
      - '--no-collector.ipvs'
    deploy:
      mode: global
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

  prometheus:
    image: stefanprodan/swarmprom-prometheus:v2.5.0
    networks:
      - mon_net
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--storage.tsdb.retention=${PROMETHEUS_RETENTION:-24h}'
    volumes:
      - prometheus:/prometheus
    configs:
      - source: node_rules
        target: /etc/prometheus/swarm_node.rules.yml
      - source: task_rules
        target: /etc/prometheus/swarm_task.rules.yml
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          memory: 2048M
        reservations:
          memory: 128M

  caddy:
    image: stefanprodan/caddy
    ports:
      - "3000:3000"
      - "9090:9090"
      - "9093:9093"
      - "9094:9094"
    networks:
      - mon_net
    environment:
      - ADMIN_USER=${ADMIN_USER:-admin}
      - ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
    configs:
      - source: caddy_config
        target: /etc/caddy/Caddyfile
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000"]
      interval: 5s
      timeout: 1s
      retries: 5

启动promethus服务

启动命令这里比github改了一下,暂时不需要添加slack报警通知。可以后续再加。且报警方式有很多种,不一定选择slack;这里启动命令修改为:

ADMIN_USER=admin ADMIN_PASSWORD=admin docker stack deploy -c docker-compose.yml mon

查看服务

[root@elcndc2zhda01 swarmprom]# docker service ls | grep mon
cympto586gtr        mon_alertmanager       replicated          1/1                 stefanprodan/swarmprom-alertmanager:v0.14.0                 
ksg0ysst4zm6        mon_caddy              replicated          1/1                 stefanprodan/caddy:latest                                   *:9090->9090/tcp, *:9093-9094->9093-9094/tcp, *:10009->3000/tcp
ym4kz7ske9fy        mon_cadvisor           global              2/3                 google/cadvisor:latest                                      
ylfwmwttjek7        mon_dockerd-exporter   global              3/3                 stefanprodan/caddy:latest                                   
mqpoup34kjn9        mon_grafana            replicated          1/1                 stefanprodan/swarmprom-grafana:5.3.4                        
inu71tv3lp0o        mon_node-exporter      global              3/3                 stefanprodan/swarmprom-node-exporter:v0.16.0                
sisf76m0vnr7        mon_prometheus         replicated          1/1                 stefanprodan/swarmprom-prometheus:v2.5.0                    
pkww94r8rtm1        mon_unsee              replicated          1/1                 cloudflare/unsee:v0.8.0                                     
[root@elcndc2zhda01 swarmprom]# 

检查一下,promethus、caddy、grafana的日志保证都没有报错,则启动成功了;

服务启动正常后通过caddy服务的容器所在node节点的ip加端口号来服务;(这里没有专门配置域名)

相关服务对应访问端口对应关系:

Services:

prometheus (metrics database) http://<swarm-ip>:9090
grafana (visualize metrics) http://<swarm-ip>:3000
node-exporter (host metrics collector)
cadvisor (containers metrics collector)
dockerd-exporter (Docker daemon metrics collector, requires Docker experimental metrics-addr to be enabled)
alertmanager (alerts dispatcher) http://<swarm-ip>:9093
unsee (alert manager dashboard) http://<swarm-ip>:9094
caddy (reverse proxy and basic auth provider for prometheus, alertmanager and unsee)

主要用到的是grafana:用来查看图标

http://<swarm-ip>:3000

promethus的服务不常用,如果熟悉使用也可以登录:

http://<swarm-ip>:9090

上述密码是在启动集群是命中带的admin:admin

登录grafana:

首页:

 

自带报表

以上就已经完成了,promethus监控组合的基础搭建;

创建账号:

打开设置->用户->邀请用户

 填写用户信息,点invite邀请

查看邀请用户,并复制邀请链接

邀请链接会复制到剪切板,直接黏贴出来如下,是一个邀请地址,这里需要把localhost和端口替换为我们grafana的ip和端口后进行访问

http://localhost:3000/invite/aZRgdHbJudW3RnOiZzcFQLi0kwOWKv

修改为

http://<swarm-ip>:3000/invite/aZRgdHbJudW3RnOiZzcFQLi0kwOWKv

打开链接后输入邮箱/密码点击注册,账号就可以用了

 

 

Linux进阶 | Docker Swarm+Prometheus+Grafana实现web服务集群的监控 本期内容为Docker第八期,通过本期内容将会掌握Prometheus的基本架构的使用以及grafana的简单使用。 阅读详情

相关推荐

项目实战2 | 基于Swarm+Prometheus实现双VIP可监控Web高可用集群

本次项目实战利用swarm+Prometheus实现一个双VIP高可用可监控的Web服务器集群,使用Nginx做负载均衡器,同时采用swarm管理的Docker集群并对外提供Web服务,使用keepalived的双vip实现HA,使用Prometheus+Grafana实现对Web服务器的监控。

REPCHAOCHAO的博客 4639

Prometheus抓取Docker Swarm集群副本服务

promethus抓取docker swarm内的服务指标

yoqu的专栏 2239

从‘它怎么又挂了’到‘服务稳如狗’:我是如何用Docker Swarm搭建高可用微服务集群的

本文分享了如何利用Docker Swarm构建高可用微服务集群的实战经验。通过对比Kubernetes的复杂性,作者选择了轻量化的Docker Swarm,详细介绍了从硬件准备、服务栈部署到存储方案改造的全过程,最终实现服务可用性从99%提升到99.99%,大幅降低运维成本和故障时间。

weixin_30369041的博客 539

Prometheus监控Docker-Swarm集群(二)

Prometheus监控Docker Swarm集群(二) 前面我讲解了对于Docker的一些监控知识以及Docker监控开源工具Weave Scope做了一个概述,以及简单安装。 同时也了解了Weave Scope的不足之处,而引出来了cAdvisor配合Prometheus来监控容器,本篇主要是针对Swarm集群的监控详细讲解; Swarm简介 Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。.

青牛踏雪御苍穹的博客 1900

EPLAN 设备接线图模板制作

属性摆放 设备连接图设置(选项 - - 设置) 连接图生成

weixin_36447711的博客 7864

Vben Admin权限管理全解析:从动态菜单到按钮级控制(附代码示例)

本文全面解析Vben Admin框架的权限管理系统,从动态菜单生成到按钮级细粒度控制,提供完整的实现方案和代码示例。深入探讨基于角色-权限模型的架构设计,分享前后端协作的最佳实践,帮助开发者快速构建安全高效的企业级后台系统。

weixin_30919429的博客 485

Docker可视化容器监控工具portainer.io(docker监控docker)(Docker Standalone、Docker Swarm、Kubernetes、ACI、Nomad)监控容器

通过使用"Stacks"界面,可以方便地管理和部署多个相关的服务和容器,实现应用程序的整体部署和管理。portainer支持添加不同的环境,如图所示,下面分别介绍不同环境的功能。这些环境之间的区别主要体现在功能和适用场景上。Docker Standalone适用于单个主机上的容器管理,Docker Swarm适用于小规模集群,Kubernetes适用于大规模集群,ACI适用于云平台上的容器服务,Nomad适用于多个主机上的容器编排和调度。

Dontla的博客 1万+

Halcon-AOI外观缺陷检测系列

Halcon-AOI外观缺陷检测系列

Jumy_S的博客 1667

Prometheus监控Docker Swarm集群(一)

Prometheus监控Docker Swarm集群 cAdvisor简介 为了解决容器的监控问题,Google开发了一款容器监控工具cAdvisor(Container Advisor),它为容器用户提供了对其运行容器的资源使用和性能特征的直观展示。 它是一个运行守护程序,用于收集,聚合,处理和导出有关正在运行的容器的信息。 cAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU、内存、网络及文件系统使用情况。 cAdvisor使用go语言开发,如果想了解更多请访问其官方g.

青牛踏雪御苍穹的博客 1410

从CT扫描到3D模型:手把手教你用NII文件在3D Slicer中重建脊柱(附Verse数据集实战)

本文详细介绍了如何利用NII文件在3D Slicer中从CT扫描数据重建脊柱3D模型的全流程,包括环境配置、数据获取、方向校准、结构分割和模型优化等关键步骤。通过Verse数据集实战演示,帮助医学从业者快速掌握医学图像处理技术,提升临床诊疗与教学效率。

weixin_42651281的博客 203

【异常】Claude Code 在 Windows CMD 中出现重影现象的排查与解决

Windows CMD运行Claude Code时出现文字重影、乱码等问题,原因是传统CMD对现代ANSI终端控制序列支持不足。解决方案包括:1)推荐安装Windows Terminal(完全支持ANSI标准);2)使用PowerShell 7;3)优化CMD设置(启用虚拟终端、UTF-8编码);4)关闭Claude Code视觉特效。建议优先使用Windows Terminal以获得最佳体验,这是最彻底的解决方案。其他方案仅能部分改善或缓解问题。

奶爸的编程之路,也就一周冷个三天 1961

Docker swarm (四)监控 prometheus 和 protainer swar集群web管理页面

这两个工具放在一起说是为了使用 protainer 来提交 prometheus 的部署任务 本文通过swarm stack安装 环境: master+node 172.17.236.102 node 172.17.236.101 其他: vim粘贴时可能出现缩进问题 vim中执行 :set paste后粘贴 执行 :set nopaste退出该模式 前提条件: 部署docker swarm 1、部署portainer protainer可以通过web页面管理swarm,所以一般部署在管理节.

weixin_38367535的博客 790

18、探索隐私工程技术的前沿:从理论到实践

本文深入探讨了隐私工程技术的核心概念、关键技术及其应用场景,分析了加密技术、访问控制和用户界面设计等在隐私保护中的作用,并结合数据库保护、物联网设备等实际场景进行阐述。同时,文章还讨论了隐私工程技术面临的挑战与未来发展趋势,提出了数据最小化原则、差分隐私、隐私增强技术等优化策略以及隐私设计、隐私影响评估等最佳实践,最后展望了新兴技术对隐私保护的影响及法规推动下的发展方向。

weixin_35307279的博客 373

探索Swarmprom:Docker Swarm监控的利器

![Swarmprom Logo](https://gitcode.net/stefanprodan/swarmprom/-/raw/master/assets/logo.png) ## 项目简介 是一个开源项目,由开发者[Stefan Prodan](https://github.com/stefanprodan)构建,旨在为[Docker Swarm](https://docs.dock

gitblog_00048的博客 582

【毕业设计之python系列】基于Flask的在线音乐网设计与实现

本论文旨在通过使用Python的Web框架Flask,设计和实现一个具有完整功能的在线音乐网站。该网站包括用户注册、登录、注销、歌曲上传、编辑、删除、歌单创建、编辑、删除、评论、搜索、音乐播放等功能,并针对不同用户角色(如普通用户、管理员)实现了不同的权限管理。同时,本论文还介绍了如何使用第三方API(如网易云音乐API)获取歌曲信息等技术实现。在设计上,本论文采用了MVC(Model-View-Controller)架构模式,将后端数据处理与前端展示分离,以便于代码的管理和维护。在数据库设计方面,本论文设

m0_56073435的博客 3243

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

7个树莓派节点打造Docker集群:gh_mirrors/do/docker-arm项目可视化与监控方案全攻略

在物联网与边缘计算快速发展的今天,使用树莓派构建Docker集群成为开发者探索分布式系统的理想选择。**gh_mirrors/do/docker-arm**项目专注于在ARM架构设备(如树莓派)上构建Docker与Swarm集群,本文将通过7个树莓派节点的实战案例,详解从环境搭建到可视化监控的完整流程,帮助新手轻松掌握ARM集群部署技巧。 ## 📋 树莓派Docker集群的核心优势 树莓派作

gitblog_00951的博客 517

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

多主机Docker Swarm集群网络拓扑可视化监控方案的部署规范

本文将从网络架构设计、监控工具选型、数据采集规范、可视化实现和安全策略五个维度,详细解析符合企业级标准的部署方案,帮助运维团队构建高可用、易维护的集群监控体系。

cpsvps_net的博客 781

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SwarmStack:构建高可用Docker Swarm集群的利器

SwarmStack:构建高可用Docker Swarm集群的利器 项目介绍 SwarmStack 是一个为高可用 Docker Swarm 集群提供安装、维护、操作和监控的起点。它集成了现代 DevOps 工具链,包括 Prometheus、Alertmanager 和 Grafana,用于监控和告警。此外,SwarmStack 还提供了可选的 Docker Swarm 节点管理功能,包括自动安...

gitblog_00389的博客 573

【Swarm集群运维必知】:3大故障排查技巧让你快速定位节点异常

快速掌握Docker Swarm集群异常排查方法,本文结合常见故障场景,详解节点状态检查、服务日志分析与网络连通性测试三大技巧。适合Docker Swarm集群管理入门用户提升运维效率,值得收藏。

BreakNexus的博客 1151

Portainer实战:除了管理本地Docker,如何用它无缝监控远程Swarm集群?(附Agent探针避坑指南)

本文深入探讨Portainer在跨集群监控与Swarm管理中的高级应用,提供从Agent部署到生产级集群监控的完整解决方案。通过实战案例和避坑指南,帮助用户实现安全、高效的Docker集群管理,特别针对远程Swarm集群的监控需求给出了详细配置步骤和性能优化建议。

weixin_30859423的博客 713

Docker Swarm部署应用的总结

原文 大纲 本文只是一种实际部署方案的例子,涉及到的技术有(除Docker/Docker Swarm外): Docker overlay network Fluentd Prometheus stack vegasbrianc的Prometheus监控方案 步骤大纲: 部署Docker machine 基本配置 配置网络 启动...

weixin_33724059的博客 221

企业级实战:Windows Docker Desktop集群部署指南

此外,还可以配置Docker守护进程(Docker Daemon)的访问权限,确保只有授权的用户才能执行敏感操作。此外,还需要配置Swarm的管理节点(Manager)和工作节点(Worker),并确保它们之间的通信是加密的。配置过程中,需要注意HTTPS证书的生成和配置,以确保数据传输的安全性。在配置过程中,需要注意Prometheus的数据源配置和Grafana的仪表盘导入。在企业级应用中,Docker Desktop的部署不仅仅是简单的安装,还需要考虑到权限管理、镜像加速、集群搭建等多个方面。

ObsidianRaven13的博客 620

Swarmprom: Docker Swarm 监控套件指南

Swarmprom 是一个用于 Docker Swarm 集群监控的基础工具包,包括了 Prometheus、Grafana、cAdvisor、Node Exporter 和 Alert Manager 等组件。其目录结构如下: ``` . ├── alertmanager # Alert Manager 的配置和服务定义 ├── caddy # Caddy

gitblog_01060的博客 522

基于docker swarm的web集群项目

项目名称: 基于docker swarm的web集群项目 项目环境: docker centos8 nginx 服务器数量:6台 配置:1G1核 项目步骤: 1、规划构建好整个集群的架构:前端使用nginx做负载均衡,keepalived实现高可用,后端使用swarm来实现 2、准备好6台安装好docker 3、打开manege虚拟机,建立一个swarm集群 docker swarm init --advertise-addr 192.168.203.129 将返回的d...

铃铃铃铃铃的博客 418
上一篇: html字符解码处理以及括号贝转义为& #40;和& #41;后台解析方式(正则方式)
下一篇: 创建远程git仓库、同步代码指引、修改远程仓库地址
grootblockchain
博客等级 码龄11年 55粉丝 101原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值