全链路监控架构-Zabbix6.0

2024-09-09

  Zabbix是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

  其能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

  Zabbix由Zabbix server与zabbix agent组成,server主动向它收集监控数据,agent提供丰富的key,包括不限于cpu、内存、网络、磁盘、web等等。

  那自定义监控适合应用于哪些场景呢?

  模板中没有我们所要的监控项

  默认的模板中监控项过多

  自定义监控全流程

  客户端

  通过命令、脚本取出对应的值

  创建键值与重启

UserParameter=key,cmdUserParameter=固定写法,表示要自定义键值key表示键值名字,命名最好就是 单词+"."()cmd表示命令或脚本#UserParameter=key,cmd#UserParameter=check.ngx,sh /server/scripts/xxx.shUserParameter=check.ngx,ss -lntup|grep -w 80|wc -l1. 写入自定义key(键值)cat /etc/zabbix/zabbix_agent2.d/web.conf#UserParameter=key,cmd#UserParameter=check.ngx,sh /server/scripts/xxx.shUserParameter=check.ngx,ss -lntup|grep -w 80|wc -l2. 重启客户端3. 客户端本地测试键值zabbix_agent2 -t   check.ngxcheck.ngx                                     [s|1]s表示类型 文字1表示结果 键值的结果

  zabbix_agent2.conf里面有==Include=/etc/zabbix/zabbix_agent2.d/*.conf==修改后记得重启zbx客户端

  服务端

  服务端手动测试

yum install -y zabbix-get zabbix_get 向客户端要指定键值的数据。

  web页面:创建监控项

  把客户端创建的键值与zbx服务端监控项关联起来。

  创建监控项

  配置监控项名字,填写:键值

  信息类型:这里键值结果都是数字,选择数字(无正负即可),如果有小数选择浮点类型,如果是字符,选择字符串。

  更新间隔:这里调整为5s,生产环境非必须尽量增长间隔比如1m、10m、1h等等。

  历史数据与趋势数据

  监控项配置信息汇总

  进行监控项测试

  测试结果

  添加监控项完成,查看添加的监控项

  添加监控项完成,查看最新数据与图形

  web页面:触发器

  根据监控项获取的数值(内容),决定是否要告警、是否要提示异常

  创建触发器

  配置触发器名字,严重程度和表达式

  表达式配置详情

  配置完成后的触发器设置

  添加完成后的触发器配置

  出现故障后的提示

  可以确认故障

  补充 仪表盘数据刷新调整

监控项键值获取的数据 等于 0 表示异常zbx 6.0 写法 last(/web01/check.ngx)=0zbx 5.x及之前的写法{ web01:check.ngx.last()}=0{主机:key.功能}=0

  web页面:添加图形

  添加图形

  配置图形名字与添加监控项

  查看图形的预览(监控项要已经获取到数据才行)

  检查图形

  自定义监控小结

  用一句话形容自定义监控:只要能通过命令、脚本取出来的东西就可以自定义监控。

  客户端 通过命令/脚本取出想要内容,创建键值key,写入配置文件,客户端检测(zabbix_agent);

  服务端 命令测试键值(zabbix_get) ,web页面:添加监控项,添加触发器,添加图形

  调试

  常用键值与触发器函数

  键值

zabbix_get -s 172.16.1.7-k net.if.in[eth0,]zabbix_get -s 172.16.1.7-k proc.num[nginx]zabbix_get -s 172.16.1.7-k net.tcp.port[,80]

  触发器函数

last(/Zabbix server/vfs.file.cksum[/etc/passwd,sha256],#1)<>last(/Zabbix server/vfs.file.cksum[/etc/passwd,sha256],#2)max(/Zabbix server/vm.memory.size[available],5m)<{$MEMORY.AVAILABLE.MIN}and last(/Zabbix server/vm.memory.size[total])>0最近5分钟可用内存小于 指定的值max(/Zabbix server/vm.memory.size[available],5m)<{$MEMORY.AVAILABLE.MIN}and 并且内存大小大于0 last(/Zabbix server/vm.memory.size[total])>0

  自定义监控-参数案例

  客户端

  使用命令

lastlog |grep root |awk '{print $3}'   root未来可能是其他用户.

  书写键值key

UserParameter=key,cmdUserParameter=user.login.check[*],lastlog |grep "$1"|awk '{print $3}'

  书写与测试

[root@web01 ~]# cat   /etc/zabbix/zabbix_agent2.d/web.conf#UserParameter=key,cmd#UserParameter=check.ngx,sh /server/scripts/xxx.shUserParameter=check.ngx,ss -lntup|grep -w 80|wc -lUserParameter=user.login.check[*],lastlog |grep -w "$1"|awk '{print $$3}'[root@web01 ~]# systemctl restart zabbix-agent2.service[root@web01 ~]# zabbix_agent2 -t   user.login.check[root]user.login.check[root][s|10.0.0.1]

  如果没有自定义键值传参,awk取列的时候要使用$$列。

  如果没有传参,awk正常使用即可

  理解自定义键值的传参

  服务端

[root@m03-zabbix-server-lidao996 ~]# zabbix_get   -s 172.16.1.7   -k   user.login.check[root]10.0.0.1

  web添加监控项

  web触发器

最近1个值和上一个值是否一致(不一致)last(/web01/user.login.check[root],#1) <>last(/web01/user.login.check[root],#2)

  使用模板

  通过创建自定义模板实现,监控项,触发器,图形批量使用。

  步骤如下:

  创建模板->添加自定义监控项->添加触发器->添加图形->模板关联主机->客户端配置自定义键值

  创建模板

  创建模板

  演示:在模板中创建变量(宏)

  检查模板信息

  添加自定义监控项

  进入主机中复制即可

  选择要复制的监控项,选择复制即可(可批量多选)

  选择复制到模板中

  提示复制成功

  检查模板中监控项部分:多了2个监控项

  复制触发器与图形

  主机->触发器

  复制

  检查模板

  模板关联主机

  进入主机中,批量选择要添加模板的主机,批量更新

  选择模板部分

  添加模板关联主机成功


分享