day059-zabbix自定义监控与自动发现

发布于:2025-07-23 ⋅ 阅读:(19) ⋅ 点赞:(0)

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 Agent2
  hosts: all
  become: yes  # 使用 root 权限执行

  tasks:
    # 任务1:安装 Zabbix Agent2
    - name: 安装 Zabbix Agent2
      yum:
        name: https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/7/x86_64/zabbix-agent2-7.0.0-release1.el7.x86_64.rpm
        state: present

    # 任务2:修改配置文件
    - name: 配置 Zabbix Server 地址
      lineinfile:
        path: /etc/zabbix/zabbix_agent2.conf
        regexp: '^Server='
        line: 'Server=172.16.1.63'
        state: present
        backup: yes  # 修改前备份原文件

8. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作