day059-zabbix自定义监控与自动发现
文章目录
- 0. 老男孩思想-信念的力量
- 1. zabbix自定义监控项
- 1.1 zabbix键值(key)
- 1.2 命令行执行键值
- 1.3 自定义监控项
- 1.3.1 自定义键值
- 1.3.2 前端创建监控项
- 1.3.3 测试
- 2. 触发器
- 2.1 配置触发器
- 2.2 测试
- 2.3 查看告警记录
- 3. 图形
- 4. 模板
- 4.1 创建模板
- 4.2 关联客户端
- 5. 带参键值
- 5.1 自定义带参键值-检查用户是否异地登录
- 5.1.1 自定义键值
- 5.1.2 添加监控项
- 5.1.3 配置触发器
- 5.1.4 测试
- 6. 自定义监控故障
- 6.1 awk取列故障
- 6.2 客户端zabbix用户权限问题
- 6.3 键值命令执行超时
- 7. 自动发现
- 7.1 发现动作
- 7.2 客户端批量化配置
- 8. 思维导图
0. 老男孩思想-信念的力量
强大的信念就是强烈的自信心。一个人的信念是否强大,取决于性格、能力、学历、知识储备、认知格局以及家庭背景。
因为自己没有高学历就认为自己不行,比没有高学历本身更可怕。
1. zabbix自定义监控项
1.1 zabbix键值(key)
- 键值用于监控zabbix客户端
1.2 命令行执行键值
zabbix_get:执行键值命令
- -s:指定zabbix服务端地址
- -p:指定zabbix服务端端口
- -k:指定键值
[root@m03 ~]# docker exec -it zabbix-server-mysql-7.0 bash
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k system.hostname
web01.oldboy.cn
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k system.uname
Linux web01.oldboy.cn 4.19.90-52.22.v2207.ky10.x86_64 #1 SMP Tue Mar 14 12:19:10 CST 2023 x86_64
1.3 自定义监控项
- 以获取僵尸进程数量为例
1.3.1 自定义键值
# 在客户端自定义键值
[root@web01.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/sys.conf
# 进程信息
# UserParameter=键值,命令或脚本
UserParameter=proc.zombie,top -bn1 |awk 'NR==2{print $(NF-1)}'
[root@web01.oldboy.cn ~]# systemctl restart zabbix-agent2.service
# 服务端测试
[root@m03 ~]# docker exec -it zabbix-server-mysql-7.0 bash
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k proc.zombie
0
1.3.2 前端创建监控项
1.3.3 测试
2. 触发器
触发器用来定义告警的条件和程度
2.1 配置触发器
- 以存在僵尸进程为例
2.2 测试
2.3 查看告警记录
3. 图形
图形可以将多个监控项的图标放在一起查看
- 查看各种进程数量
4. 模板
为多个客户端配置相同的监控项、触发器、图形就需要模板
4.1 创建模板
- 复制监控项、触发器、图形到模板
4.2 关联客户端
- 客户端配置相应键值
[root@web03.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/sys.conf
# 僵尸进程数量
UserParameter=proc.zombie,top -bn1 |awk 'NR==2{print $(NF-1)}'
[root@web03.oldboy.cn ~]# systemctl restart zabbix-agent2.service
5. 带参键值
- 官方内置键值地址:
[1 Zabbix agent](https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/zabbix_agent)
- 键值中需要提供参数
- 带有<>的参数可以省略
- net.tcp.port[
<ip>
,port]:检查是否能够建立到指定端口的TCP连接。- 返回值:0 - 无法连接;1 - 可以连接。
[root@m03 /app/tools/zbx]# docker-compose exec -it zbx_server bash
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k net.tcp.port[,80]
1
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k net.tcp.port[,8080]
0
- proc.num[
<name>
,<user>
,<state>
,<cmdline>
,<zone>
]:返回进程数量
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k proc.num[]
177
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k proc.num[nginx]
3
# 返回僵尸进程数量
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k proc.num[,,zomb]
6
5.1 自定义带参键值-检查用户是否异地登录
5.1.1 自定义键值
# 获取指定用户最近一次登录的IP
[root@web01.oldboy.cn ~]# lastlog -u root |awk 'NR==2{print $3}'
10.0.0.1
# 定义客户端键值
[root@web01.oldboy.cn ~]# cat /etc/zabbix/zabbix_agent2.d/sys.conf
# 进程信息
UserParameter=proc.zombie,top -bn1 |awk 'NR==2{print $(NF-1)}'
# 查看用户最近IP;awk中$符号可能有歧义,所以再加一个$
UserParameter=user.login.ip[*],lastlog -u root |awk 'NR==2{print $$3}'
[root@web01.oldboy.cn ~]# systemctl restart zabbix-agent2.service
[root@web01.oldboy.cn ~]# zabbix_agent2 -t user.login.ip[root]
user.login.ip[root] [s|10.0.0.1]# 服务端测试
zabbix@925d50fe425e:~$ zabbix_get -s 172.16.1.7 -p 10050 -k user.login.ip[root]
10.0.0.1
5.1.2 添加监控项
5.1.3 配置触发器
5.1.4 测试
- 从其他服务器登录web0即可
6. 自定义监控故障
6.1 awk取列故障
- 如果是带有参数的键值,awk取列时应该使用两个$
- 否则会与取参的$符号冲突
6.2 客户端zabbix用户权限问题
- zabbix客户端指定监控键值时,使用的zabbix虚拟用户
- 某些文件的权限较小,因此会有权限问题
- 可以为zabbix用户配置sudo权限:
zabbix ALL=(ALL) NoPASSWORD:ALL
- 或者,修改客户端指定键值的默认用户:
6.3 键值命令执行超时
- zabbix前端显示监控项的超时时间默认是3秒
- 键值执行命令或脚本超过3秒后,前端就会报错
7. 自动发现
服务端自动发现网络中的客户端,并添加监控项
7.1 发现动作
7.2 客户端批量化配置
- 每个客户端需要安装zabbix-agent2服务
- 可以用ansible执行
# ansible剧本
- name: 安装并配置 Zabbix Agent2hosts: allbecome: yes # 使用 root 权限执行tasks:# 任务1:安装 Zabbix Agent2- name: 安装 Zabbix Agent2yum:name: https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/7/x86_64/zabbix-agent2-7.0.0-release1.el7.x86_64.rpmstate: present# 任务2:修改配置文件- name: 配置 Zabbix Server 地址lineinfile:path: /etc/zabbix/zabbix_agent2.confregexp: '^Server='line: 'Server=172.16.1.63'state: presentbackup: yes # 修改前备份原文件
8. 思维导图
https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作