请输入图片描述
在【运维知识基础篇】Linux常用基础命令(三)讲基础命令的时候介绍过top、free、w、uptime等命令,来查看系统的资源状态,在我们想监控主机状态的时候,可以通过Linux三剑客配合这些命令取状态信息,但是这样操作比较麻烦,需要挨个去取数值,做zabbix的自定义监控项。
随着我们运维工作的进展,我们可能会产生开发开发自动化运维平台的需求,此时我们有两个关键的点。一是在Python环境下更方便的监控到数值,因为自动化运维平台用Python做比较方便;另一个是如果我们开发自动化运维平台,我们希望可以有个API,可以取到这些数值,而不是说局限于zabbix等监控软件。本篇文章这两个问题都会迎刃而解!
文章目录
安装Python与pip
Psutil模块
Glances资源管理工具
一、安装部署
二、本机展示
三、web界面展示
四、密码管理
五、API服务

安装Python与pip

由于CentOS7.9自带的python版本过低,是2.7,所以我们在使用psutil和glances之前先升级python版本并安装pip用来安装psutil和glances。
1、安装依赖包

yum -y install zlib*
yum -y install libffi-devel
yum -y install openssl-devel

2、浏览器访问下面网址用来下载Python程序包,再把程序包导入进去

https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

3、导入到Linux后解压程序包,进行编译安装

tar -xf Python-3.7.0.tgz
mkdir /usr/lib/python3.7
cd Python-3.7.0
./configure --prefix=/usr/lib/python3.7 --with-ssl
make && make install

4、创建python和pip的软链接

ln -s /usr/lib/python3.7/bin/python3.7 /usr/bin/python3
ln -s /usr/lib/python3.7/bin/pip3.7 /usr/bin/pip3
ln -s /usr/bin/pip3 /usr/bin/pip
rm -f /usr/bin/python
ln -s /usr/bin/python3 /usr/bin/python

5、更新pip至最新版

pip install --upgrade pip

6、查看Python和pip版本,看是否安装成功

[root@Glances ~]# python --version
Python 3.7.0
[root@Glances ~]# pip --version
pip 23.2.1 from /usr/lib/python3.7/lib/python3.7/site-packages/pip (python 3.7)

7、如何pip install过程中出现了WARNING: Running pip as the ‘root’ user …的警告,可以执行下面命令再进行下载。

python3 -m venv tutorial-env
source tutorial-env/bin/activate
python -m pip install novas
pip install --upgrade pip

Psutil模块

参考链接:https://psutil.readthedocs.io/en/latest/
在介绍Glances之前,我想先提一下这个Psutil模块,这个是Python的一个模块,用于查询系统的磁盘、进程、内存、网络、cpu等信息,安装如下。

pip install psutil

有了该模块,你再稍微会一些Python语法,就可以很轻松在Python环境下取出要监控的主机资源,例如CPU逻辑数量

[root@Glances ~]# python
Python 2.7.5 (default, Jun 20 2023, 11:36:40) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import psutil
>>> print(psutil.cpu_count())
2

该模块对于运维工作,亮点在于你取出来后并不是像zabbix自定义监控项那样只能在zabbix上显示,你取出来想写个自动化运维平台监控主机状态可以写,你写个简单的Python监控脚本,发送到邮件也可以写。
还有就是它是支持跨平台取资源状态的,你的服务器哪怕是windows也可以取。所以有了该模块,我们就不局限于一开始提到的查看资源状态的命令了。

Glances资源管理工具

参考链接:https://glances.readthedocs.io/en/latest/install.html
再来介绍Glances资源管理工具,这个工具的底层就是Psutil模块制作的,而它的亮点有二,一个是部署之后可以很方便的在本机查看本机的资源状态,这里不同于uptime那几个Linux命令,而是一个命令,实现全部资源状态显示,并且实时更新;还有一个是它提供了很方便的API服务,也就是说我们部署好后,你远程通过HTTP请求就可以请求到该主机的数值,这个功能说难不难,说简单也挺麻烦,所以有这个集成工具的话,会大大减少我们开发自动化运维平台的工作量,话不多说,给大家展示!

一、安装部署

yum -y install python-devel    # 安装Python标头
pip install glances[all]    #安装glances完整版

# 不需要Web服务可以安装glances精简版
pip install glances                

二、本机展示

本机展示非常简单,只需一个glances命令,让你领略它的强大之处。

glances

可以看到它把所有的资源状态信息都集中到了一个屏幕上,并且是实时显示的。
2023-11-13T09:46:02.png

输入空格,还可以选择我们要监控具体的进程
2023-11-13T09:46:14.png

2023-11-13T09:46:22.png

对于运维人员来说,这个功能真的是相当友好,再也不用看一个东西输入一堆命令,还得grep了。
2023-11-13T09:46:41.png

三、web界面展示

即便是运维人员,我们也不能总盯着这个看,我们可能有几十甚至几百台服务器需要管理,所以每次查看都点进去glances,还是不显示,不过不用担心,由于我们安装的是完整版,所以可以使用web界面,在任意一台电脑上输入对应IP和端口就能查看这个状态。
我们输入下面命令,将该进程开启Web服务,并放到后台启用,此时我们可以看到它弹出了提示消息,说了开启了61208端口,所有的IP都能访问,我们去浏览器访问下。

[root@Glances ~]# glances -w &
[1] 55698
[root@Glances ~]# Glances Web User Interface started on http://0.0.0.0:61208/

果然显示了出来,同样是实时更新,真的是太方便了。
2023-11-13T09:47:07.png

四、密码管理

我们肯定不能让这个URL所有人都可以访问,所以我们要给他设置一个密码

临时设置如下

[root@Glances ~]# glances -w --username
Define the Glances webserver username: admin
Define the Glances webserver password (admin username):     # 密码
Password (confirm):     # 密码
Do you want to save the password? [Yes/No]: Yes
Glances Web User Interface started on http://0.0.0.0:61208/

再次输入URL显示需要登陆,是不是很熟悉,就是Nginx的一个访问限制,输入账号密码后才登陆进去
2023-11-13T09:47:35.png

我们可以看到设置的glances密码储存在了配置文件里,如果看不到就提前创建好这个目录。

[root@Glances ~]# cat .config/glances/admin.pwd 
b7a96a2243e1489a87a620566ceeb683$d4ba378c0629aa8181339c463705c8b12fbe80949e6cfb82969a0f75bff7240d

创建好用户,下次就可以根据这个用户去开启服务了。

[root@Glances ~]# glances -w --username
Define the Glances webserver username: admin
Glances Web User Interface started on http://0.0.0.0:61208/

五、API服务

参考链接:https://glances.readthedocs.io/en/latest/api.html
最后给大家介绍它最大的特色,API服务,它提供了很多的API供我们调用。
首先用下面命令开启服务

[root@Glances ~]# glances -w --disable-webui --username
Define the Glances webserver username: admin
The WebUI is disable (--disable-webui)

我们在官方文档找一个API
2023-11-13T09:48:18.png

在postman成功获取到请求结果,注意我们在server端设置了用户,在请求的时候也需要配置。
2023-11-13T09:48:35.png

接下来你就可以大展神通了,不管你是用什么语言也好,都可以把这个请求写出来了,做自动化运维平台还得是用Python,我这边用Python写个demo。

import requests
import base64

# 设置用户名和密码
username = 'admin'
password = '123'

# 将用户名和密码进行Base64编码
credentials = base64.b64encode(f"{username}:{password}".encode('utf-8')).decode('utf-8')

# 设置授权头部信息
headers = {
    'Authorization': f'Basic {credentials}'
}

# 发送GET请求

msgsend_url="http://10.0.0.51:61208/api/3/ip"

response = requests.get(msgsend_url, headers=headers)

# 处理响应
if response.status_code == 200:
    data = response.json()
    print(data)
    # 处理返回的数据
else:
    print('请求失败:', response.status_code)

执行后成功返回结果

{'gateway': '10.0.0.2', 'address': '10.0.0.51', 'mask': '255.255.255.0', 'mask_cidr': 24, 'public_address': '221.218.213.211', 'public_info_human': ''}

持续分享运维干货,感谢大家的阅读和关注!

发表评论

召唤看板娘