通过docker构建永不宕机的监控探针
一、容器技术发展的几个阶段
1、docker的由来(核心优势:构建一次,到处运行)
2、docker与传统虚拟机性能对比
3、docker与传统虚拟机架构对比
4、如何理解Docker
Docker的基础理念是:打包应用以及依赖环境到一个可移植的容器中,然后发布到任何平台的主机(Linux、windows、MacOS)上都能正常运行。
想要搞懂Docker,其实看它的两句口号就行。
第一句,是“Build, Ship and Run”,即“搭建、发送、运行”,三板斧。
第二句口号是:“Build once,Run anywhere”即“一次构建,到处运行”。
5、容器技术发展的几个方向
二、一分钟部署一个docker环境
安装docker引擎
[root@snow ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@snow ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@snow ~]# yum makecache fast
[root@snow ~]# yum install docker-ce -y
[root@snow ~]# systemctl restart docker
[root@snow ~]# systemctl enable docker
[root@snow ~]# docker version
1 [root@snow ~]# docker version 2 Client: Docker Engine - Community 3 Version: 20.10.13 4 API version: 1.41 5 Go version: go1.16.15 6 Git commit: a224086 7 Built: Thu Mar 10 14:09:51 2022 8 OS/Arch: linux/amd64 9 Context: default 10 Experimental: true 11 12 Server: Docker Engine - Community 13 Engine: 14 Version: 20.10.21 15 API version: 1.41 (minimum version 1.12) 16 Go version: go1.18.7 17 Git commit: 3056208 18 Built: Tue Oct 25 18:02:38 2022 19 OS/Arch: linux/amd64 20 Experimental: false 21 containerd: 22 Version: 1.5.10 23 GitCommit: 2a1d4dbdb2a1030dc5b01e96fb110a9d9f150ecc 24 runc: 25 Version: 1.0.3 26 GitCommit: v1.0.3-0-gf46b6ba 27 docker-init: 28 Version: 0.19.0 29 GitCommit: de40ad0
三、docker中的镜像、容器和仓库
1、docker镜像
2、docker容器
3、Docker仓库
4、镜像、容器和仓库之间的关系
四、使用docker构建永不宕机的服务器监控探针
3、部署探针服务端程序
环境说明:
操作系统:centos7.9
探针服务端(ss-server)IP:192.168.225.136
探针客户端(ssagent )IP:192.168.225.136
探针程序可通过我们提供的百度网盘获取:
https://pan.baidu.com/s/1mJISHWPeUTp3furqs141fw?pwd=njdy
或者,从我们提供的镜像系统中获取,在/data/day2目录下。其中,ss-server.tar.gz为服务端程序,ss-agent.tar.gz
为客户端程序。
先安装服务端程序:
[root@snow ~]# mkdir /data/ss -p
[root@snow ~]# cd /data/ss
[root@snow ss]# tar zxvf ss-server.tar.gz
然后运行docker命令,部署探针服务端:
[root@ss-server ~]# cd /data/ss/ss-server
[root@snow ss-server]# docker run -itd --name sss --restart unless-stopped -v /data/ss/ss-server/config.json:/ServerStatus/server/config.json -v /data/ss/ss-server/json:/usr/share/nginx/html/json -p 35601:35601 -p 8081:80 swr.cn-north-1.myhuaweicloud.com/iivey/ss-server:v1.0
探针服务端部署完成后,可以通过浏览器访问探针的web界面了,访问方式为:
http://192.168.225.136:8081/
默认是没有任何主机的,所以接下来就需要添加被监控主机。执行ss-server.py程序,将某节点加入到探针服务端,操作
如下:
[root@snow ss-server]# cd /data/ss/ss-server
[root@snow ss-server]# yum install curl wget python3-pip python3 -y
[root@snow ss-server]# pip3 install requests
[root@snow ss-server]# python3 ss-server.py
- - - 欢迎使用最简洁的探针: ServerStatus - - -
---你的jjs如下---
>>> 你好MJJ, 暂时没发现你有任何jj! <<<
-----------------
>>>请输入操作标号:1.查看, 2.添加, 3.删除, 4.更新, 0.退出
此程序提供了监控节点的查看、添加、删除、更新等操作,可根据提示完成监控节点的添加和更新。
例如添加一个http://192.168.225.136/主机,节点添加完成后,会有如下提示:
>>>请输入操作标号:1.查看, 2.添加, 3.删除, 4.更新, 0.退出
2
>>>请输入jj名字:
192.168.225.136
>>>请输入192.168.225.136位置:[us]
zh
>>>请输入192.168.225.136类型:[kvm]
操作完成,等待服务重启
b'sss\n'
添加成功!
---你的jjs如下---
0. name: 192.168.225.136, loc: zh, type: kvm
-----------------
>>>请复制以下命令在机器192.168.225.136安装agent服务
```
chmod +x setup-agent.sh && sudo ./setup-agent.sh 120.244.234.9 c052c748def642d6b285ee558fb02b79 X75r2u8vPLRatFt
记住安装agent服务的指令,将这个命令复制下来,在被监控节点执行即可。
可以发现浏览器上显示如下,但是还没有安装agent程序。
4、部署探针客户端程序
将探针客户端程序ss-agent.tar.gz上传到需要监控的服务器,然后解压,解压后,操作如下:
[root@snow ~]# cd /data/day2
[root@snow day2]# tar axvf ss-agent.tar.gz
[root@snow day2]# cd ss-agent/
[root@snow ss-agent]# ls
client-linux.py setup-agent.sh sss-agent.service
最后,根据在探针服务端上面添加节点后,给出的提示,执行如下命令:
[root@snow ss-agent]# ./setup-agent.sh 192.168.225.136 c052c748def642d6b285ee558fb02b79 X75r2u8vPLRatFt
> 安装监控Agent
部署监控端
> 修改Agent配置
Agent配置 修改成功,请稍等重启生效
Created symlink from /etc/systemd/system/multi-user.target.wants/sss-agent.service to /etc/systemd/system/sss-agent.service.
注意,这里setup-agent.sh脚本后面跟的三个参数分别是探针服务端的IP地址(192.168.225.136)、用户名和密码,用户名和密码是随机生成
的,需要在探针服务端和客户端保持一致。
此脚本执行完毕后,一个节点的监控就部署成功了。
可以看到客户端已经上线了。
5、实现监控探针永不宕机
通过docker技术,可以实现系统故障、软件故障时的快速恢复,仅需几秒钟即可恢复监控系统正常运行。
首先查看当前运行的docker容器:
[root@snow ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a54f2e7f1580 swr.cn-north-1.myhuaweicloud.com/iivey/ss-server:v1.0 "/docker-entrypoint.…" 23 hours ago Up 7 minutes 0.0.0.0:35601->35601/tcp, :::35601->35601/tcp, 0.0.0.0:8081->80/tcp, :::8081->80/tcp sss
[root@snow ~]#
(1)、模拟监控系统宕机
[root@snow ~]# docker exec -it a54f2e7f1580 bash #进入监控的容器
root@a54f2e7f1580:/# rm -rf /usr删除容器的/usr目录
rm: cannot remove '/usr/share/nginx/html/json': Device or resource busy
root@a54f2e7f1580:/# ls发现系统已经异常,执行命令出错
ls: error while loading shared libraries: libpcre2-8.so.0: cannot open shared object file: No such file or directory
root@a54f2e7f1580:/#
此时,再去检查监控探针,发行已经不可用了。
(2)、秒级恢复监控探针
[root@snow ss-server]# docker rm -f a54f2e7f1580
a54f2e7f1580
[root@snow ss-server]# docker run -itd --name sss --restart unless-stopped -v /data/ss/ss-server/config.json:/ServerStatus/server/config.json -v /data/ss/ss-server/json:/usr/share/nginx/html/json -p 35601:35601 -p 8081:80 swr.cn-north-1.myhuaweicloud.com/iivey/ss-server:v1.0
fe9d21b271e959231d3c2d733804ae299e5a50d4ddfcfe71fa4dd293923ee097
好了,监控探针已经恢复,可访问监控页面查看,最厉害的是,数据还没丢失。这一切都是docker的功劳。
五、docker可视化容器管理工具Portainer
1、 Portainer介绍
Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 它可以与Docker、Docker Swarm、Kubernetes 和无服务器环境(如Azure ACI)无缝协作。而且完全免费,基于容器化的安装方式,方便高效部署。
官方站点:https://www.portainer.io/
Portainer有多种部署方式,可以通过docker run方式运行,也可以通过docker-compose方式来部署,这里我们使用docker run方式进行部署。
2、 docker 方式部署Portainer
[root@snow ~]# docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data -v /data/portainer/public:/public swr.cn-north-1.myhuaweicloud.com/iivey/portainer-ce:2.11.1
--name:指定容器名称
-p: 容器端口映射到宿主机的端口
-v: 将主机目录挂载到容器的目录
-d:让容器在后台运行
3、 Portainer管理界面
本文是参加51CTO学堂linux集训营的学习笔记,都是参考老师课件结合自己实际操作编写。