#必然
- 码头工人
前言
现在Docker Swarm已经彻底输给了K8S,但是现在K8S依然很复杂,上手难度较早Docker Swarm高,如果是小规模团队且需要容器编排的话,使用Docker Swarm还是适合的。
目前Docker Swarm有一个问题一直没有解决,如果业务需要知道用户的请求IP,则Docker Swarm满足不了要求。目前部署在Docker Swarm内部的服务中,无法获取到用户的请求IP。
具体可以看看这个问题-> [无法在码头工人模式下恢复用户的IP地址](https://github.com/moby/moby/issues/25526)
使用Influxdb + Grafana + cadvisor,其中cadvisor
负责数据的收集,每一台桌面都部署一个cadvisor服务,Influxdb负责数据的存储,Grafana负责数据的可视化。
![ http://img4.sycdn.imooc.com/5e42731700012c9d05930265.jpg] (http://img4.sycdn.imooc.com/5e42731700012c9d05930265.jpg )
演示环境
主机| IP- |-主(经理)| 192.168.1.60 node1(工人)| 192.168.1.61 node2(工人)| 192.168.1.62
![ http://img2.sycdn.imooc.com/5e42731700016b8906070338.jpg] (http://img2.sycdn.imooc.com/5e42731700016b8906070338.jpg )
我这里是将主控器视为监控数据存储以及可视化服务的中断作为演示,一般是拿一个工人报告做这样的工作。
初始化Docker Swarm
在master机器上初始化初始化,运行 docker swarm init --advertise-addr {MASTER-IP}
[root @ master〜] #docker swarm init --advertise-addr 192.168.1.60已初始化Swarm:当前例程(138n5rwjz83y8goyzepp1cdo7)现在是管理员。将工人添加到该分区,请运行以下命令:docker swarm加入--token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377要向该方向进行管理,然后将其设置为“在上令牌SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377``经理节点初始化集群后,都会有这样一个提示,这个的命令只是给一个示例,实际命令需要根据初始化重新后的真实情况来运行。`` `
[root @ node1〜]#docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377 这个节点作为工作人员加入了swarm。
``` ```
[root@node2 ~]# docker swarm join --token SWMTKN-1-67je7chylnpyt0s4k1ee63rhxgh0qijiah9gadvcr7i6uab909-535nf6qu6v7b8dscc0plghr9j 192.168.1.60:2377
这个节点加入了一群工人。```
## 在master机器上查看当前的节点节点
` `
搬运工节点LS ` `
[根@主〜]#搬运工节点LS
ID HOSTNAME STATUS可用性管理STATUS引擎版本
138n5rwjz83y8goyzepp1cdo7 *主就绪主动组长18.09.8
q03by75rqur63lx36cmordf11节点1准备主动18.09.8
6shdf5ej4b5u7x877bg9nyjk3节点2准备主动```
初步完成已经建设完成了,接下来开始部署服务
在Docker Swarm部署监控服务
搬运工堆部署-c搬运工-撰写-monitor.yml监视器
[根@主〜]#搬运工堆部署-c搬运工-撰写-monitor.yml监视器 创建网络monitor_default 创建服务monitor_influx 创建服务monitor_grafana 创建服务monitor_cadvisor
搬运工-撰写-monitor.yml
文件内容
`
版本:‘3’ 服务: 流入: 图像:influxdb 卷: -流入:/ var / lib / influxdb 部署: 副本:1 放置: 约束: -node.role == manager grafana: 图像:grafana / grafana 端口: - 0.0.0.0:80:3000 卷: - grafana:在/ var / lib中/ grafana depends_on: -潮 部署: 副本:1 位置: 约束: - node.role ==经理 cadvisor: 图片:谷歌/ cadvisor
主机名:'{{.Node.Hostname}}'
命令:-logtostderr -docker_only -storage_driver = influxdb -storage_driver_db = cadvisor -storage_driver_host = influx:8086
卷:
-/:/ rootfs:ro-
/ var /运行:/ var /运行:RW-
/ SYS:/ SYS:RO-
在/ var / lib中/泊坞窗/:在/ var / lib中/泊坞窗:RO
必须:
-潮
部署:
模式:全球卷:潮:驱动程序:本地grafana:驱动程序:本地```
[下载docker-compose-monitor.yml](https://res.cloudinary.com/lyp/raw/upload/v1581252602/hugo/blog.github.io/docker/docker-compose-monitor.yml )
查看服务的部署情况
搬运工服务LS
[root @
master〜] #docker服务ls ID名称模式副本图像端口
qth4tssf2sm1 monitor_cadvisor左右3/3 google / cadvisor:最新
p2vbxe7ic175 monitor_grafana复制了1/1 grafana / grafana:最新*:80-> 3000 / tcp
von1rpeqq monitor_influx复制1/1 influxdb:最新的 ```,已经已经服务完成部署了,三台机器各自部署了一个“ cadvisor”,在主控部署了“ grafana”和``influxdb` ` ##为cadvisor配置influxdb数据库 查看一下主机器上的服务 `` 搬运工PS `` ```
[root @ master〜]#docker ps 容器ID图像命令创建的状态端口名称55965fdf13a3 grafana / grafana:latest“ /run.sh” 3小时前最多3小时3000 / tcp monitor_grafana.1.l9uh0ov7ltk7q2yollmk4x1v9 0bf544lategoogle在/ usr / bin中/ cadvisor - ...” 3小时前最多3小时8080 / TCP monitor_cadvisor.138n5rwjz83y8goyzepp1cdo7.l53vufoivp0oe8tyy14nh0jof 3ce050f0483e influxdb:最新的“/entrypoint.sh INFL ...” 3小时前最多3小时8086 / TCP monitor_influx.1.vraeh8ektium1j1jd27qvq1au [ root @ master〜]#
可以看到是符合预期的,接下来进一步查看cadvisor
容器的日志docker logs -f 0bf544c7d81c
[root @ master〜] #docker logs -f 0bf544c7d81c W0209 09:32:15.730951 1 manager.go:349]无法配置OOM检测源,位置OOM事件:打开/ dev / kmsg:无此类文件或目录 E0209 09:33:15.783705 1 memory.go:94]无法将统计信息写入influxDb- {“错误”:“找不到数据库:\” cadvisor \”“} E0209 09:34:15.818661 1 memory.go: 94]无法将统计信息写入influxDb- {“发现错误”:“找到数据库:\” cadvisor \“”} E0209 09:35:16.009312 1 memory.go:94]无法将统计信息写入E0209 09:36:16.027113 1 memory.go:94]无法将统计信息写入influxDb- {“错误”:“找到数据库:\” cadvisor \“”} :\“ cadvisor \”“} E0209 09:37:16.107051 1 memory.go:94]无法将统计信息写入influxDb- {“错误”:“存在数据库:\” cadvisor \”“} E0209 09: 38:16.215684 1 memory.go:94]无法将统计信息写入influxDb- {“找到 错误的数据库:\“ cadvisor \”“} E0209 09:39:16.305772 1 memory.go:94]无法将统计信息写入influxDb- {“错误”:“找不到数据库:\” cadvisor \“”}
可以看到现在一直是在报错的,因为目前的
涌入
容器中没有
cadvisor
这样的数据库存在,接下来我们进入
涌入
容器并创建对应的
cadvisor
数据库,在主机器上执行以下命令即可。
码头工人的exec '搬运工PS | grep -i涌入| AWK ‘{打印$ 1}’
涌入-execute 'CREATE DATABASE cadvisor'
`当然,也可以分步骤执行1。找到influxdb的容器
2.进入到influxdb容器内并登陆涌入3.数据库创建³³ 这里就不演示了。 ## 配置grafana 到目前为止,数据已经在收集了,并且数据存储在 influxdb
中。接下来配置grafana将数据进行可视化。 因为搬运工-撰写-monitor.yml文件内给grafna配置的端口是80,这里直接访问主机器的IP就可以访问到grafana,在浏览器打开
192.168.1.60
。 grafana 默认的帐号是
管理
默认的密码是
管理
首次登陆后会提示修改密码,新密码继续设置为
管理
也没关系。 登陆成功后开始设置数据源 ###
配置数据源 1。打开左边菜单栏进入数据源配置页面![](http://img1.sycdn.imooc.com/5e4273180001161612220702.jpg) 2.添加新的数据源,我这里是添加过了,所以会有一个influxdb的数据源显示。 ![](http://img3.sycdn.imooc.com/5e42731a0001d5da13300746.jpg) 3.选择influxdb类型的数据源 ![](http://img4.sycdn.imooc.com/5e42731b00016d1413760796。 JPG) 4.填写influxdb对应的信息,姓名填写潮
,因为待会要用到一个grafana模版,所以这里叫涌入名字,URL填
HTTP://潮:8086
,这个也不是固定的,本次
搬运工-撰写-monitor.yml
文件内
influxdb 的容器名叫
涌入,端口开放出来的为8086(
默认),这里所以填
潮:8086
![](http://img4.sycdn.imooc.com/5e42731c0001525206790747.jpg。)到目前为止,数据源相关的内容已经配置完成了###配置grafana 1。首先打开grafana的仪表板市场下载模版[ https://grafana.com/grafana /仪表板/ 4637 /评论](https://grafana.com/grafana/dashboards/4637/reviews)![](http:/ /img1.sycdn.imooc.com/5e42731d0001a93712050669.jpg)2。点划线仪表,导入进行导入![](http://img4.sycdn.imooc.com/5e42731e0001c5dd11870770.jpg)3.打开仪表板就已经可以看到仪表板模版的内容了。![](
总结
一个基本的Docker Swarm实现监控就建造完成了
例如,当某个值(CPU)达到某个阀值,发送钉钉或slack消息进行纠正时
只要明白思路,实操基本上没有什么问题。
共同学习,写下你的评论
评论加载中...
作者其他优质文章