自己动手用python编写一个服务器资源监控程序(牛,牛,牛,亲测有效)
由于自己的公司服务器比较多,涉及的区县也是较多,服务器大多数还是windows得,还比较分散,还得需要每天登录到服务器上面查看一下cpu的使用率,mem的使用率,各个磁盘的状态等等问题,手动查询需要一台一台的服务器登录上去查看,身为一名刚入职不到半年的老运维,看不下去了,只能骚一把,利用强大的python;来实现这个功能,岂不是美滋滋。哈哈哈
对于一个刚涉及到运维行业得人,学习一下这个,保证你不亏,甚至你还可以牛气一把,升职加薪就靠它了
大佬们请让步,小编只是一个小白,勿喷
- 涉及的思路步骤
- 首先的有一台有公网的服务器,可以让公司里面的所有服务器连接的公网ip,因为我们需要一个强大的数据库来进行统计各个服务器的实时状态
- 我们的需要部署一个程序到各个服务器上面,让这个程序实时的汇总自己所在服务器的状态,然后写进数据库里面
- 我们的利用有公网ip的这个服务器,在他的上面部署一个python的web界面,让这个web实时的从数据库里面提取数据,并展示出来
逻辑图
效果图
配置mysql服务器
购买一台云服务
小编直接用的是阿里云的ecs云服务器,这个购买过程也是比较简单的,当然你也可以用一个带公网ip的实体服务器来代替它
其实没有那么复杂,小编是因为公司里面没有现成的环境,所以自己就搭建了一个,在选择系统上,小编选择的是centos7.5,那么问题来了,为什么小编不选择windows系统呢,第一是因为小编熟悉linux系统,也是最近才接触到windows系统,第二小编发现windows系统,很容易出现一些目前小编解决不了的问题。
安装数据库
这里就不做过多的展示了
大家可以参考lnmp架构里面的mysql安装部分(保准你一看就懂,超简单那):lnmp架构搭建
数据库里面库表以及字段设置
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| yuancheng | #用的是这个库
+--------------------+
5 rows in set (0.11 sec)
mysql> use yuancheng;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------+
| Tables_in_yuancheng |
+---------------------+
| yuancheng | #用的是这个表
+---------------------+
1 rows in set (0.00 sec)
mysql> select * from yuancheng; 表里面的字段,小编都用拼音标注了哈,再看不懂就真的没法了
+--------------------------+-----------------+-----------------+------------------+-------+-------+-------+------------------+-------+------------------+------------------+
| user_name | user_ip | denglucishu | zaixianzhuangtai | cpu | mem | c | d | e | f | g |
+--------------------------+-----------------+-----------------+------------------+-------+-------+-------+------------------+-------+------------------+------------------+
| ceshi | 192.168.100.10 | 功能待开发 | 功能待开发 | 0.0% | 38.7% | 28.0% | 无相关磁盘% | 2.0% | 无相关磁盘% | 无相关磁盘% |
********
省略
**************
+--------------------------+-----------------+-----------------+------------------+-------+-------+-------+------------------+-------+------------------+------------------+
10 rows in set (0.00 sec)
mysql>
小编为什么没有写出具体的操作步骤呢,第一呢,是应为,小编觉得这个应该是个基础,考验一下大家,第二呢小编里面用了好多的yuancheng,这个看起来比较的乱,小编还是希望大家可以按照自己的命名方式命名。
将python升级到3.8
这个操作可以和mysql在一台服务器上,也可以分布式,看自己的爱好,如果分布式的话,云服务器安全组一定要开启相应的端口哈
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz #下载python3.8,没有wget命令的自行下载yum -y install wget
tar -xf Python-3.8.0.tgz #小编比较懒,直接解压到了当前家目录
cd Python-3.8.0 #进到解压后的目录里面,进行编译安装
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y #安装一些依赖
mkdir /usr/Python-3.8.0 #创建一个目录,我们需要将python3.8安装到这个目录里面
./configure --prefix=/usr/Python-3.8.0 #指定目录进行安装
echo $? #检查一下上一步执行是否成功
make #make一下
echo $? #检查上一步是否执行成功
make install #install一下
echo $? #检查上一步是否执行成功
ln -s /usr/Python-3.8.0/bin/python3 /usr/bin/python3 #软连接一下,省的写环境文件了
ln -s /usr/Python-3.8.0/bin/pip3 /usr/bin/pip3 #软连接一下,省的写环境文件了
[root@localhost ~]# cd #回到家目录
[root@localhost ~]# python3 --version #检查一下是否安装成功,出现以下版本基本上就是成功的标志了
Python 3.8.0
虚拟环境,安装部署flask
[root@localhost ~]# mkdir /opt/yuancheng #创建一个叫yuancheng的目录,一会我们所有的文件都放到这个目录下面
[root@localhost ~]# cd /opt/yuancheng
[root@localhost yuancheng]# python3 -m venv yuancheng #创建一个叫yuancheng的虚拟环境
[root@localhost yuancheng]# source yuancheng/bin/activate #激活以下虚拟环境
(yuancheng) [root@localhost yuancheng]# pip3 install flask #安装flask模块
出现前面的(yuancheng)代表着我们的虚拟环境基本上也就是布置好了,那么就有人要问了,为什么非要部署一个虚拟环境呢,这个就不懂了吧,首先呢,每个服务器上面都有python,都有着本身的作用。第二,部署一个虚拟环境,可以随意折腾了,也算是减少一些影响生产业务的概率吧。
几个重要的文件
[root@localhost yuancheng]# pwd
/opt/yuancheng #这个是我们创建虚拟环境所在的目录(也就是在这个目录下面创建了一个叫yuancheng的虚拟环境)
[root@localhost yuancheng]# ls
login.html web.py yuancheng #这里需要注意的是这个就是在login.html这个是配合web.py脚本进行网页展示的,后面的yuanhcneg就是虚拟环境了
[root@localhost yuancheng]# ll ./yuancheng/bin/activate #这个activate就是虚拟环境的激活文件
-rw-r--r--. 1 root root 2214 4月 2 14:07 ./yuancheng/bin/activate
给脚本加上相应的执行权限
(yuancheng) [root@localhost yuancheng]# chmod a+x web.py
(yuancheng) [root@localhost yuancheng]# ll
总用量 8
-rw-r--r--. 1 root root 1850 4月 2 09:05 login.html
-rwxr-xr-x. 1 root root 1066 4月 6 20:54 web.py #可以执行的哈,为绿色的哈
drwxr-xr-x. 5 root root 74 4月 2 14:07 yuancheng
修改脚本里面的数据库相应的配置
启动脚本,从数据库里面提取数据
(yuancheng) [root@localhost yuancheng]# ./web.py #启动脚本,对数据库进行数据提取
* Serving Flask app "web" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) #主要是这个5000端口号,访问的话要用ip + 端口号
* Restarting with stat
* Debugger is active!
* Debugger PIN: 613-459-853
192.168.100.1 - - [06/Apr/2021 21:41:16] "GET / HTTP/1.1" 200 -
出现以上的内容,大家就可以到浏览器上面看看了,当前你的数据库为空,应该没有什么数据,
这里需要注意的是云服务器也得再安全组里面放行这个端口号,比如上面的端口号是5000,那么在安全组里面就得放行5000端口
将用于给数据库写入数据得脚本放到各个服务器上面
这个脚本也是相当得简单,就是通过一些字符串得组合,将数据写入到数据库里面,也就是我们第一步创建得那个库表中,让后web程序从数据库里面提取数据,而后展现在浏览器上面。
双击程序,按照提示输入就可以了
- 如果程序不报错得话可以到浏览器上面刷新以下看看是不是已经写进数据库,并读取数据了
看到上面得这个说明我们已经成功了,这个是一个服务器得,大家可以尝试多台服务器得,但是这里小编要告诉大家一个注意事项了,不要所有得服务器都用一个数据库账号和密码,可以多设置几个账号密码,并最小权限得原则合理使用
结束语
所有得源码,小编已经上传到了资源里面
- 这个还是有点缺陷,大家可以试着实现以下自己得想要得功能
- 这个比较初级,大佬级别得任务勿喷
- 夜深了,小编着急,写的有点不是很全,大家有问题就留言吧
- 这个还是值得大家学习得,相信你一定会有收获得,你值得一试
- 有问题大家可以留言,小编抽空进行更新
相应源码下载地址:服务器监控.zip
转载:https://blog.csdn.net/guijianchouxyz/article/details/115393407