通过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集训营的学习笔记,都是参考老师课件结合自己实际操作编写。

posted @ 2022-11-23 08:34  冰雪2021  阅读(1416)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css