Python如何编写简单的系统巡检脚本?

2026-06-09 14:496阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1423个文字,预计阅读时间需要6分钟。

Python如何编写简单的系统巡检脚本?

利用SSH或Zabbix进行监控,结合Django开发框架,打造专属的监控平台,实现包括主机图形化、自动发现、计划任务、批量cmd执行、服务监控、日志监控等功能的集成。

利用SSH或者Zabbix监控,配合Django开发框架,改造出属于自己的监控平台,实现包括主机图形,自动发现,计划任务,批量cmd执行,服务监控,日志监控等功能,由于公司机器混乱,基本上市面上的所有设备都能找到,监控这些不同型号不同系统的主机需要分别对待,我们就借助各种开源项目来做一个简单的巡检工具,方便工作需要。

Python如何编写简单的系统巡检脚本?

由于公司及其都是老式的性能不高,所以全程我都没敢加多线程,生怕把服务器拒绝服务了。


安装Zabbix客户端

首先客户端还是需要安装zabbix-agent这个监控工具,该工具可以监控所有的平台,windows linux mac unix 等,利用该工具完成一整套自动化平台一点问题都没有,连ansible都不需要了。

[root@localhost ~]# wget repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.3-1.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-0.1alpha1.el7.x86_64.rpm

该配置文件,并启动服务完事。

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.2
ServerActive=192.168.1.2
Hostname=centos1
Timeout=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EnableRemoteCommands=1

[root@localhost ~]# systemctl restart zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent

服务端下载

​​www.zabbix.com/cn/download_agents​​

下载好之后将里面的 zabbix-get.exe 拖入项目中,直接调用就好。

基本的数据采集命令:

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hostname
localhost.localdomain // 此处才是主机名称

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.hostname
centos1 // 此处是我们zabbix中自定义的键值对

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.ping
1

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.version
4.4.3 // zabbix 的version

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.boottime
1578564779 // 系统启动的时间戳

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.num
1 // 处理器个数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.localtime
1578569019 // 当前系统时间戳

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.arch
x86_64 // 返回系统架构

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.os
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 // 返回系统详细架构

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.packages[ssh] // 已安装软件列表
[rpm] libssh2-1.8.0-3.el7.x86_64, openssh-7.4p1-21.el7.x86_64, openssh-clients-7.4p1-21.el7.x86_64, openssh-server-7.4p1-21.el7.x86_64

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.uname
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.uptime
4438 // 系统运行时长(秒)多少秒使用s/uptime来获取

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.users.num
0 // 登陆用户数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k kernel.maxfiles
96437 // 系统支持最大的open files整数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k kernel.maxproc
65536 // 系统支持最大进程数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hw.macaddr
[ens32] 00:50:56:22:6f:d3 // mac 地址列表

>zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.os
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 // 操作系统信息

允许远程执行命令:

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
[root@localhost ~]# systemctl restart zabbix-agent

D:\zabbix> zabbix_get.exe -s 192.168.1.20 -p 10050 -k "system.run[df -h]"
Filesystem Size Used Avail Use% Mounted on
devtmpfs 480M 0 480M 0% /dev
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 491M 7.4M 484M 2% /run
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 1.7G 26G 7% /
/dev/sda1 1014M 136M 879M 14% /boot
tmpfs 99M 0 99M 0% /run/user/0

监控CPU

system.cpu.util[<cpu>,<type>,<mode>]

-CPU: CPU数量(默认是所有CPU)
-Type: 可用值,idle,nice,user,system,iowait,interrupt,sottrq,steal
-Mode 可用值,avg1(一分钟负载),avg5,avg15

[root@localhost ~]# zabbix_get -s 192.168.1.25 -k system.cpu.util[,,avg1]
0.016692

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.num
1 // cpu 个数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.util
0.016461 // cpu 利用率百分比

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hw.cpu // cpu 详细信息
processor 0: GenuineIntel Intel(R) Celeron(R) CPU E3500 @ 2.70GHz working at 2700MHz

监控内存

proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]

-name 进程名(默认所有进程)
-user 用户名(默认所有用户)
-mode 可选值,avg,max,min,sum
-cmdline 命令过滤

[root@localhost ~]# zabbix_get -s 192.168.1.25 -k proc.mem[zabbix_get.exe","/tmp/zabbix.exe") # 文件上传
conn.get("/tmp/zabbix.exe","./zab.exe") # 下载文件

版权声明:本博客文章与代码均为学习时整理的笔记,文章 [均为原创] 作品,转载请 [添加出处] ,您添加出处是我创作的动力!





本文共计1423个文字,预计阅读时间需要6分钟。

Python如何编写简单的系统巡检脚本?

利用SSH或Zabbix进行监控,结合Django开发框架,打造专属的监控平台,实现包括主机图形化、自动发现、计划任务、批量cmd执行、服务监控、日志监控等功能的集成。

利用SSH或者Zabbix监控,配合Django开发框架,改造出属于自己的监控平台,实现包括主机图形,自动发现,计划任务,批量cmd执行,服务监控,日志监控等功能,由于公司机器混乱,基本上市面上的所有设备都能找到,监控这些不同型号不同系统的主机需要分别对待,我们就借助各种开源项目来做一个简单的巡检工具,方便工作需要。

Python如何编写简单的系统巡检脚本?

由于公司及其都是老式的性能不高,所以全程我都没敢加多线程,生怕把服务器拒绝服务了。


安装Zabbix客户端

首先客户端还是需要安装zabbix-agent这个监控工具,该工具可以监控所有的平台,windows linux mac unix 等,利用该工具完成一整套自动化平台一点问题都没有,连ansible都不需要了。

[root@localhost ~]# wget repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-agent-4.4.3-1.el7.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-4.2.0-0.1alpha1.el7.x86_64.rpm

该配置文件,并启动服务完事。

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.1.2
ServerActive=192.168.1.2
Hostname=centos1
Timeout=1
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EnableRemoteCommands=1

[root@localhost ~]# systemctl restart zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent

服务端下载

​​www.zabbix.com/cn/download_agents​​

下载好之后将里面的 zabbix-get.exe 拖入项目中,直接调用就好。

基本的数据采集命令:

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hostname
localhost.localdomain // 此处才是主机名称

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.hostname
centos1 // 此处是我们zabbix中自定义的键值对

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.ping
1

zabbix_get.exe -s 192.168.1.20 -p 10050 -k agent.version
4.4.3 // zabbix 的version

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.boottime
1578564779 // 系统启动的时间戳

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.num
1 // 处理器个数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.localtime
1578569019 // 当前系统时间戳

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.arch
x86_64 // 返回系统架构

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.os
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 // 返回系统详细架构

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.packages[ssh] // 已安装软件列表
[rpm] libssh2-1.8.0-3.el7.x86_64, openssh-7.4p1-21.el7.x86_64, openssh-clients-7.4p1-21.el7.x86_64, openssh-server-7.4p1-21.el7.x86_64

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.uname
Linux localhost.localdomain 3.10.0-1062.el7.x86_64 #1 SMP Wed Aug 7 18:08:02 UTC 2019 x86_64

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.uptime
4438 // 系统运行时长(秒)多少秒使用s/uptime来获取

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.users.num
0 // 登陆用户数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k kernel.maxfiles
96437 // 系统支持最大的open files整数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k kernel.maxproc
65536 // 系统支持最大进程数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hw.macaddr
[ens32] 00:50:56:22:6f:d3 // mac 地址列表

>zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.sw.os
Linux version 3.10.0-1062.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Wed Aug 7 18:08:02 UTC 2019 // 操作系统信息

允许远程执行命令:

[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1
[root@localhost ~]# systemctl restart zabbix-agent

D:\zabbix> zabbix_get.exe -s 192.168.1.20 -p 10050 -k "system.run[df -h]"
Filesystem Size Used Avail Use% Mounted on
devtmpfs 480M 0 480M 0% /dev
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 491M 7.4M 484M 2% /run
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 1.7G 26G 7% /
/dev/sda1 1014M 136M 879M 14% /boot
tmpfs 99M 0 99M 0% /run/user/0

监控CPU

system.cpu.util[<cpu>,<type>,<mode>]

-CPU: CPU数量(默认是所有CPU)
-Type: 可用值,idle,nice,user,system,iowait,interrupt,sottrq,steal
-Mode 可用值,avg1(一分钟负载),avg5,avg15

[root@localhost ~]# zabbix_get -s 192.168.1.25 -k system.cpu.util[,,avg1]
0.016692

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.num
1 // cpu 个数

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.cpu.util
0.016461 // cpu 利用率百分比

zabbix_get.exe -s 192.168.1.20 -p 10050 -k system.hw.cpu // cpu 详细信息
processor 0: GenuineIntel Intel(R) Celeron(R) CPU E3500 @ 2.70GHz working at 2700MHz

监控内存

proc.mem[<name>,<user>,<mode>,<cmdline>,<memtype>]

-name 进程名(默认所有进程)
-user 用户名(默认所有用户)
-mode 可选值,avg,max,min,sum
-cmdline 命令过滤

[root@localhost ~]# zabbix_get -s 192.168.1.25 -k proc.mem[zabbix_get.exe","/tmp/zabbix.exe") # 文件上传
conn.get("/tmp/zabbix.exe","./zab.exe") # 下载文件

版权声明:本博客文章与代码均为学习时整理的笔记,文章 [均为原创] 作品,转载请 [添加出处] ,您添加出处是我创作的动力!