Bootstrap

[笔记] 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密钥’
1

测试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的监控项和触发器
2
3

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
4

Windows客户端安装
5

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

新增主机,主机名称跟AgentdHost name保持一致。模板使用Template OS Windows by Zabbix agent
6

监控项从模板自动继承,此例需要监控CPU/内存/磁盘读写/磁盘容量,即如下监控项指标。

  1. CPU使用率:CPU utilization
  2. 内存使用率:Memory utilization
  3. 磁盘读写空闲百分比:Disk utilization by idle time
  4. 磁盘容量:Space utilization

触发器从模板自动继承,无需修改。

动作的配置:此例分别选择
Disk is overloaded (util > 95% for 5m),
High memory utilization (>90% for 5m),
High CPU utilization (over 90% for 5m)
作为动作的触发器



Zabbix配置仪表盘,将监控数据可视化展示

效果如下图
7



参考来源

  1. zabbix添加自定义监控脚本
;