系统工程 - 运维篇
第三章 Zabbix实现自定义脚本监控Agent端
系列文章回顾
第一章 戴尔PowerVault ME5012 存储服务器做快照计划的基本逻辑
第二章 Zabbix配置钉钉群聊告警机制
下章内容
第四章 Zabbix实现Webhook推送markdown文本
前言
通过Zabbix监控平台实现自定义脚本,分别监控OpenWrt的服务状态、Windows及Linux的CPU/内存/磁盘等状态,通过WebHook实时推送告警到钉钉群聊。
① 监控OpenWrt的ShadowSocksR;
② 监控Windows的CPU/内存/磁盘;
③ 监控Linux的CPU/内存/磁盘。
实施步骤
1. Zabbix实现ssh免密登录OpenWrt服务器
2. 编写自定义sh脚本监控OpenWrt,zabbix测试监控功能
3. Windows及Linux安装Zabbix-Agent客户端
4. Zabbix配置zabbix-agentd和zabbix-server的配置,配置主机监控项、触发器、动作
5. Zabbix配置仪表盘,将监控数据可视化展示
前置条件
软件环境:
1. 内网已部署Zabbix监控平台
2. 内网已部署Windows Server、Linux、OpenWrt
Zabbix实现自定义脚本监控Agent端
Zabbix实现ssh免密登录OpenWrt服务器
登录zabbix服务器后台
mkdir -p /etc/ssh/hosts/openwrt_keys
cd /etc/ssh/hosts/openwrt_keys
### 创建openwrt的密钥
[root@zabbix openwrt_keys]# ssh-keygen -t rsa -m pem -b 2048 -f openwrtkey -N '' -C 'openwrt@zabbix'
### 调整ssh密钥对的权限为zabbix用户
[root@zabbix openwrt_keys]# chown zabbix:zabbix /etc/ssh/hosts/openwrt_keys/*
在openwrt的管理后台给Dropbear
服务添加SSH密钥,把pub公钥复制到Dropbear
的’SSH密钥’
测试zabbix的root用户免密登录openwrt
[root@zabbix ~]# ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey [email protected]
The authenticity of host 'openwrt.xxx.com (XXX.XXX.XXX.XXX)' can't be established.
RSA key fingerprint is SHA256:exxnb/xxxxCrkQzeVxxxxxxxxxxxxTu7C2cDyVGbs.
RSA key fingerprint is MD5:3a:e0:3a:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:b4.
Are you sure you want to continue connecting (yes/no)? yes # -------------------------- # 输入yes
Warning: Permanently added 'openwrt.xxx.com,XXX.XXX.XXX.XXX' (RSA) to the list of known hosts.
BusyBox v1.31.1 () built-in shell (ash)
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
OpenWrt SNAPSHOT, r0-6xxxxxxe
-----------------------------------------------------
root@OpenWrt:~# exit
[root@zabbix ~]# ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey [email protected]
把openwrt的公钥存储在zabbix用户的known_hosts文件里
### 示例数据如下。实际情况以查询到的内容为主
[root@zabbix ~]# cat ~/.ssh/known_hosts
openwrt.xxx.com,XXX.XXX.XXX.XXX ssh-rsa AAAAB3NzaC1VcCaFwv+Viuhw/6EdUyWCQ6WuWcz
### 查找zabbix用户的家目录
[root@zabbix ~]# grep zabbix /etc/passwd
zabbix:x:998:996:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
# 检查zabbix用户的家目录是否存在,并创建用户家目录,修改权限
[root@zabbix ~]# ll /var/lib/zabbix
ls: cannot access /var/lib/zabbix: No such file or directory
[root@zabbix ~]# mkdir -p /var/lib/zabbix/.ssh/
[root@zabbix ~]# chown zabbix:zabbix -R /var/lib/zabbix/
# 复制ssh公钥数据到zabbix用户家目录的known_hosts文件
[root@zabbix ~]# cat ~/.ssh/known_hosts > /var/lib/zabbix/.ssh/known_hosts
编写自定义sh脚本监控OpenWrt,zabbix测试监控功能
登录zabbix服务器后台
# 查找zabbix所在目录
[root@zabbix ~]# whereis zabbix
zabbix: /usr/lib/zabbix /etc/zabbix /usr/share/zabbix
# 创建存放sh脚本的目录
mkdir -p /etc/zabbix/scripts
# 编写sh脚本
touch get_openwrt_status.sh
get_openwrt_status.sh
ssh -i /etc/ssh/hosts/openwrt_keys/openwrtkey [email protected] "curl --connect-timeout 23 -m 30 -s https://www.google.com/ | wc -l"
Zabbix前端配置zabbix-server的监控项和触发器
vim /etc/zabbix/zabbix_agentd.d/userparameter.conf
UserParameter=openwrt,/bin/sh /etc/zabbix/scripts/get_openwrt01_vpn_status.sh
# UserParameter=<key键值>,<CLI命令>
# zabbix底层配置agent参数
vim /etc/zabbix/zabbix-agentd.conf
...
### Option: Timeout
Timeout=30
...
### Option: UnsafeUserParameters
UnsafeUserParameters=1
:x
# 修改zabbix_server.conf配置
vim /etc/zabbix/zabbix_server.conf
...
### Option: Timeout
Timeout=30
:x
zabbix底层测试sh脚本, -k后边的参数是监控项的键值
[root@zabbix ~]# zabbix_get -s 127.0.0.1 -p 10050 -k 'openwrt'
Windows及Linux安装Zabbix-Agent客户端
Zabbix-Agent的下载链接
此例用5.0.30版本的zabbix-agentd
Windows客户端安装
Linux客户端安装
参考链接:Linux系统zabbix_agentd客户端安装与配置
Zabbix配置zabbix-agentd和zabbix-server的配置,配置主机监控项、触发器、动作
zabbix的agent端执行msi安装后自动添加到开机启动项,agent端完成配置。
zabbix服务端的agentd和server的配置主要是Timeout超时时间需要设置成30s,5.0版本zabbix仅支持最大30s
# zabbix底层配置agent参数
vim /etc/zabbix/zabbix-agentd.conf
...
### Option: Timeout
Timeout=30
...
### Option: UnsafeUserParameters
UnsafeUserParameters=1
:x
# 修改zabbix_server.conf配置
vim /etc/zabbix/zabbix_server.conf
...
### Option: Timeout
Timeout=30
:x
新增主机,主机名称跟Agentd
的Host name
保持一致。模板使用Template OS Windows by Zabbix agent
;
监控项从模板自动继承,此例需要监控CPU/内存/磁盘读写/磁盘容量,即如下监控项指标。
- CPU使用率:CPU utilization
- 内存使用率:Memory utilization
- 磁盘读写空闲百分比:Disk utilization by idle time
- 磁盘容量:Space utilization
触发器从模板自动继承,无需修改。
动作的配置:此例分别选择
Disk is overloaded (util > 95% for 5m)
,
High memory utilization (>90% for 5m)
,
High CPU utilization (over 90% for 5m)
作为动作的触发器
Zabbix配置仪表盘,将监控数据可视化展示
效果如下图