千家信息网

怎么部署docker swarm集群监控

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"怎么部署docker swarm集群监控",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么部署docker swarm集群监控"吧!前提
千家信息网最后更新 2025年12月03日怎么部署docker swarm集群监控

本篇内容主要讲解"怎么部署docker swarm集群监控",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么部署docker swarm集群监控"吧!

前提

  1. Docker

前言

现在Docker Swarm已经彻底输给了K8S,但是现在K8S依然很复杂,上手难度较Docker Swarm高,如果是小规模团队且需要容器编排的话,使用Docker Swarm还是适合的。

目前Docker Swarm有一个问题一直没有解决,如果业务需要知道用户的请求IP,则Docker Swarm满足不了要求。目前部署在Docker Swarm内的服务,无法获取到用户的请求IP。

具体可以看看这个ISSUE->Unable to retrieve user's IP address in docker swarm mode

整体思路

思路整体来说是使用Influxdb+Grafana+cadvisor,其中cadvisor负责数据的收集,每一台节点都部署一个cadvisor服务,Influxdb负责数据的存储,Grafana负责数据的可视化。

演示环境

主机IP
master(manager)192.168.1.60
node1(worker)192.168.1.61
node2(worker)192.168.1.62

我这里是将master节点当作监控数据存储以及可视化服务的节点作为演示,一般是拿一个worker节点做这样的工作。

初始化Docker Swarm

在master机器上初始化集群,运行
docker swarm init --advertise-addr {MASTER-IP}

[root@master ~]# docker swarm init --advertise-addr 192.168.1.60Swarm initialized: current node (138n5rwjz83y8goyzepp1cdo7) is now a manager.To add a worker to this swarm, run the following command:    docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions

在node节点运行提示的命令加入到集群中
docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377
manager节点初始化集群后,都会有这样一个提示,这个的命令只是给个示例,实际命令需要根据初始化集群后的真实情况来运行。

[root@node1 ~]#  docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377This node joined a swarm as a worker.
[root@node2 ~]#  docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377This node joined a swarm as a worker.

在master机器上查看当前的node节点

docker node ls

[root@master ~]# docker node lsID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION138n5rwjz83y8goyzepp1cdo7 *   master              Ready               Active              Leader              18.09.8q03by75rqur63lx36cmordf11     node1               Ready               Active                                  18.09.86shdf5ej4b5u7x877bg9nyjk3     node2               Ready               Active

到目前为止集群已经搭建完成了,接下来开始部署服务

在Docker Swarm部署监控服务

docker stack deploy -c docker-compose-monitor.yml monitor

[root@master ~]# docker stack deploy -c docker-compose-monitor.yml monitorCreating network monitor_defaultCreating service monitor_influxCreating service monitor_grafanaCreating service monitor_cadvisor

docker-compose-monitor.yml文件内容

version: '3'services: influx:   image: influxdb   volumes:     - influx:/var/lib/influxdb   deploy:     replicas: 1     placement:       constraints:         - node.role == manager grafana:   image: grafana/grafana   ports:     - 0.0.0.0:80:3000   volumes:     - grafana:/var/lib/grafana   depends_on:     - influx   deploy:     replicas: 1     placement:       constraints:         - node.role == manager cadvisor:   image: google/cadvisor   hostname: '{{.Node.Hostname}}'   command: -logtostderr -docker_only -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influx:8086   volumes:     - /:/rootfs:ro     - /var/run:/var/run:rw     - /sys:/sys:ro     - /var/lib/docker/:/var/lib/docker:ro   depends_on:     - influx   deploy:     mode: globalvolumes: influx:   driver: local grafana:   driver: local

下载docker-compose-monitor.yml

查看服务的部署情况

docker service ls

[root@master ~]# docker service lsID                  NAME                MODE                REPLICAS            IMAGE                    PORTSqth5tssf2sm1        monitor_cadvisor    global              3/3                 google/cadvisor:latest   p2vbxe7ic175        monitor_grafana     replicated          1/1                 grafana/grafana:latest   *:80->3000/tcpvon1rpeqq7vj        monitor_influx      replicated          1/1                 influxdb:latest

到目前为止,服务已经部署完成了,三台机器各自部署一个cadvisor,在master节点部署了grafanainfluxdb

为cadvisor配置influxdb数据库

查看一下master机器上的服务
docker ps

[root@master ~]# docker psCONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS               NAMES55965fdf13a3        grafana/grafana:latest   "/run.sh"                3 hours ago         Up 3 hours          3000/tcp            monitor_grafana.1.l9uh0ov7ltk7q2yollmk4x1v90bf544c7d81c        google/cadvisor:latest   "/usr/bin/cadvisor -…"   3 hours ago         Up 3 hours          8080/tcp            monitor_cadvisor.138n5rwjz83y8goyzepp1cdo7.l53vufoivp0oe8tyy14nh0jof3ce050f0483e        influxdb:latest          "/entrypoint.sh infl…"   3 hours ago         Up 3 hours          8086/tcp            monitor_influx.1.vraeh8ektium1j1jd27qvq1au[root@master ~]#

可以看到是符合预期的,接下来进一步查看cadvisor容器的日志
docker logs -f 0bf544c7d81c

[root@master ~]# docker logs -f 0bf544c7d81cW0209 09:32:15.730951       1 manager.go:349] Could not configure a source for OOM detection, disabling OOM events: open /dev/kmsg: no such file or directoryE0209 09:33:15.783705       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:34:15.818661       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:35:16.009312       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:36:16.027113       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:37:16.107051       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:38:16.215684       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}E0209 09:39:16.305772       1 memory.go:94] failed to write stats to influxDb - {"error":"database not found: \"cadvisor\""}

可以看到现在一直是在报错的,因为目前的influx容器中没有cadvisor这样的数据库存在,接下来我们进入influx容器并创建对应的cadvisor数据库,在master机器上执行以下命令即可。

docker exec `docker ps | grep -i influx | awk '{print $1}'` influx -execute 'CREATE DATABASE cadvisor'

当然,也可以分步骤执行

  1. 找到influxdb的容器

  2. 进入到influxdb容器内并登陆influx

  3. 创建数据库

这里就不演示了。

配置grafana

到目前为止,数据已经在收集了,并且数据存储在influxdb中。接下来配置grafana将数据进行可视化。

因为docker-compose-monitor.yml文件内给grafna配置的端口是80,这里直接访问master机器的IP就可以访问到grafana,在浏览器打开192.168.1.60.
grafana
默认的帐号是admin
默认的密码是admin
首次登陆后会提示修改密码,新密码继续设置为admin也没关系。

登陆成功后开始设置数据源

配置数据源

  1. 打开左边菜单栏进入数据源配置页面

  2. 添加新的数据源,我这里是添加过了,所以会有一个influxdb的数据源显示。

  3. 选择influxdb类型的数据源

  4. 填写influxdb对应的信息,Name填写influx,因为待会要用到一个grafana模版,所以这里叫influx名字,URL填http://influx:8086,这个也不是固定的,本次docker-compose-monitor.yml文件内influxdb的容器名叫influx,端口开放出来的为8086(默认),所以这里填influx:8086

到目前为止,数据源相关的内容已经配置完成了。

配置grafana视图模版

这里使用模版只是为了演示效果,如果模版的样式不太满意,可以研究下grafana自行调整。

  1. 首先打开grafana的dashboard市场下载模版https://grafana.com/grafana/dashboards/4637/reviews

  2. 选中dashboard菜单,选中import进行导入

  3. 打开dashboard就已经可以看到dashboard模版的内容了.

总结

一个基本的Docker Swarm集群监控就搭建完成了

还有更高级的也许后面会更新一篇blog进行讲述.例如当某个值(CPU)达到某个阀值,发送钉钉或者slack消息进行告警

只要明白思路,实操基本上没有什么问题。

到此,相信大家对"怎么部署docker swarm集群监控"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 集群 节点 服务 配置 容器 数据源 监控 机器 模版 内容 接下来 命令 数据库 演示 思路 文件 可视化 存储 提示 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 mc服务器积分板 做软件开发好还是ui设计好 北京市网络安全教育体验基地 万德数据库现金股利 r语言编辑数据库语言 手机我的世界无政府服务器 用友变动单数据库 小皮怎么远程连接数据库失败 嘉兴网络安全等级保护技术咨询 打开网络安全手抄报抄报简单 没有网络可以访问服务器吗 导出提示无法创建数据库指定文件 嵌入式软件开发 数据库 大数据软件开发专业 国产信创服务器怎么选择 虚拟化接入网络技术 数据库 字段限制 ug安装工程出现服务器 基于web的软件开发技术 应急部网络安全研究所 姑苏区信息化网络技术参考价格 数据库系统对应简称 6月1日网络安全预警通报 便利店的数据库是什么样的 农场有哪些mysql数据库表 阿里云云栖大会云服务器降价 当前网络安全有哪些形势 linux c软件开发 成都软件开发驻场费用 战争雷霆服务器内部错误
0