一、实验目的
总结zabbix作为监控软件的原理,了解并使用zabbix的监控功能,zabbix的监控模式,主要特点,zabbix的架构,内部配置的数据流程,zabbix的术语,zabbix的安装和基本操作,zabbix实现主动模式和被动模式,proxy代理的主动和被动模式,zabbix自定义监控项,熟记自定义监控项的流程。
二、实验主要内容
1、自定义监控项模版监控Redis、nginx的状态
2、自定义监控项的修复
3、邮件告警
4、钉钉告警
三、实验环境与准备
3台拍完快照配置好的linux主机,昨天已经完成括号内的内容(1台10.100为zabbix监控主机server、一台120先实现主动模式(然后作为proxy代理的主动),一台140作为proxy的主动模式负责120的主动zabbix-agent
四、实验分析与设计思路
自定义监控项配置流程
首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。
五、详细实验过程
1、自定义监控项模版监控Redis、nginx的状态
100server主机进行重启zabbixserver和zabbixagent服务,启动mysql服务,安装Redis服务
[root@node-1 ~]# systemctl restart zabbix-server.service zabbix-agent.service
[root@node-1 ~]# systemctl restart mysqld.service
[root@node-3 zabbix]# yum -y install redis
同样主机120和140也重启服务
[root@node-3 ~]# systemctl restart zabbix-agent2.service
[root@node-5 ~]# systemctl restart zabbix-proxy.service
在120主机中修改Redis配置文件 更改bind运行所有主机连接,设置密码
[root@node-3 zabbix]# vim /etc/redis/redis.conf
启动Redis服务,查看端口
[root@node-3 zabbix]# systemctl start redis
[root@node-3 zabbix]# ss -tnl
将Redis监控脚本移动到对应的zabbix_agent2.d目录下
查看脚本内容,在此基础上添加了一行代码,用以更改属主属组,相当于执行权
[root@node-3 zabbix_agent2.d]# vim redis_monitor.sh
[root@node-3 zabbix_agent2.d]# redis-cli -a 666666 info 可以查看Redis的INFO信息内容
[root@node-3 zabbix_agent2.d]# chmod +x redis_monitor.sh 为脚本添加执行权
运行脚本,有三个变量,依次分别为redis_status 、端口6379 、INFO字段
[root@node-3 zabbix_agent2.d]# bash redis_monitor.sh redis_status 6379 used_cpu_sys
[root@node-3 zabbix_agent2.d]# vim ../zabbix_agent2.conf 编辑agent配置文件
UserParameter=redis_status[*],/bin/bash redis_monitor.sh $1 $2 $3
[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service 重启服务
进入到网页更改模版my_template名称为my_redis-template
选择120主机关联上redis的模版
在新建的redis模版中创建监控项,键值redis_status[" redis_status","6379","connected_clients"]
创建触发器,表达式选择添加刚才创建的监控项
表达式的条件
创建图形,选择创建好的监控项,添加
查看最新数据,选择redis的监控项,已经产生了数据
在140上安装redis进行访问,查看连接数是否增加
[root@node-5 ~]# yum -y install redis
[root@node-5 ~]# redis-cli -a 666666 -h 192.168.10.120
INFO 查看连接数已经成为两个了
为了效果更好一些,重复登录一次,然后再最新数据中查看图形,可以看到已经超过阈值
其他字段如内存等的实现与此相似
模版的导出和导入
取消链接主机中对应的redis模版
删除并清理redis的模版
导入刚才导出的模版,并且在120主机上关联上导入的模版
重启agent服务,查看最新数据中又产生了redis的数据
[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service
Nginx自定义监控项
[root@node-3 zabbix_agent2.d]# chmod +x nginx_monitor.sh 为脚本添加执行权
[root@node-3 zabbix_agent2.d]# yum -y install nginx 安装nginx
[root@node-3 zabbix_agent2.d]# vim /etc/nginx/nginx.conf 编辑nginx的配置文件
location /status {
stub_status on;
}
网页访问nginx,可以看到连接数等信息 192.168.10.120/status
UserParameter=nginx.status[*],/bin/bash nginx_monitor.sh $1 $2 $3
查看脚本内容,注意此处需要改一下
[root@node-5 ~]# zabbix_get -s 192.168.10.120 -k "net.tcp.listen[80]"
[root@node-5 ~]# zabbix_get -s 192.168.10.120 -k "nginx.status[nginx_status,80,active]"
导入nginx监控模版
导入的模版为主动模式不用更改
Nginx模版关联到120主机上
查看nginx监控项的最新数据,出现许多报红,提示string不支持
再次查看最新数据,可以看到已经更新出数据了
图形展示也正常
2、自定义监控项的修复
找到有问题的监控项,如Linux: Memory utilization,将类型更改为相关项目,主要项选择图中项
将类型也更新成相关项目
[root@node-3 zabbix_agent2.d]# systemctl restart zabbix-agent2.service 重启服务
在最新数据中就出现了数据
图形展示正常
3、邮件告警
添加用户报警媒介
创建动作的触发器
在操作中添加用户群组和用户
注意这个密码需要填写的是163邮箱的授权码网易163授权码 UHBMKFNBYHHPTOVM
4、钉钉告警
①:在钉钉内注册申请企业群
②:在群内添加群机器人,并设置关键词,保存webhook。
https://oapi.dingtalk.com/robot/send?access_token=c2cdad82f354a40132a29bbbb550d3e4c16603e588684d1403f7179dc3e44c40
③:在zabbix-server中编写调用钉钉的API脚本
④:进行测试调用钉钉的功能
⑤:成功之后在zabbix的web监控页面进行设置报警媒介类型
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
⑥:设置推送钉钉的对应的zabbix用户报警媒介
⑦:设置zabbix的报警动作,并关联钉钉
操作:
zabbix告警: 服务器{HOST.NAME} 发生 {EVENT.NAME} ---> 标题
zabbix告警 ----> 消息内容
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢复操作
zabbix告警:故障恢复:{EVENT.NAME}
zabbix告警
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
⑧:模拟故障,触发触发器进行告警推送钉钉测试
六、实验结果及分析
搞清楚zabbix的架构体系和功能对于实验的操作有着很好的帮助,zabbix-server和zabbix-agent之间的关系,关联的方式,导入数据库中的内容等等,已经在监控过程中可能会出现的告警等等,还有就是字体需要更改。
七、总结
Zabbix 术语
被监控: 即 Zabbix 监控的主机或设备
监控项item:即 Zabbix 监控的相关指标,比如:CPU利用率,内存使用率,TCP连接数等
应用集Application:为方便管理众多的监控项,可将多个同类型的监控项进行归类,纳入一个集合中,即应用集
触发器Trigger:是一个表达式,或者说一个条件,如磁盘利用率超过80%等,当触发条件后,会导致一个触发事件,这个事件会执行一个或多个动作
动作Action:动作是触发器的条件被触发后的行为,可以是发送一条短信,微信或邮件,或是重启某个服务
告警:当触发器和动作二者结合起来时,就构成了的告警机制,比如cpu的使用率达到80%以上,触发了报警动作,系统将自动发送一封邮件到指定的邮箱。然后运维可以及时的去处理此错误。
Web 监测:对WEB服务进行检测,比如:访问指定网站是否可正常访问
模板 Template: 可以方便地应用于多个主机的一组实体的集合。
zabbix的主动和被动模式
基于agent端考虑是被动还是主动,本质是server获取agent端的数据,主动模式是agent向server发数据,而被动模式是agent等待server来取数据
zabbix 主动与被动监控模式:
学习主动模式与被动模式工作原理,主动模式模板制作,然后添加主机并关联主动模式模板,然后验证主动模式监控数据和图形。
被动模式:
无论是主动模式还是被动模式,都是站在zabbix agent角度来说的工作模式,比如被动模式,是说zabbix agent被动的接受zabbix server周期性发送过来的数据收集指令,在被动模式之下,zabbix server会根据主机关联的模板中的监控项和数据采集间隔时间,周期性的打开随机端口并向zabbix agent服务器的10050发起tcp连接,然后发送获取监控项数据的指令,即zabbix server发送什么指令那么zabbix agent就收集什么数据,zabbix server什么时候发送zabbix agent就什么时候采集,zabbix server不发送zabbix agent就一直不响应,所以zabbix agent也不用关心其监控项和数据采集周期间隔时间。
被动模式的优点就是配置简单,安装后即可使用,因此也成为zabbix 的默认工作模式,但是被动模式的最大问题就是会加大zabbix server的工作量,在数百甚至数千台服务器的环境下会导致zabbix server需要轮训向每个zabbix agent发送数据采集指令,如果zabbix server负载很高还会导致不能及时获取到最新数据,但由于无需其他复杂配置,被设置为了默认的工作方式。在192.168.10.130上实现zabbix主动模式
主动模式:
主动模式是由zabbix agent主动向zabbix server的10051端口发起tcp连接请求,因此主动模式下必须在zabbix agent配置文件中指定zabbix server的IP或者主机名(必须可以被解析为IP地址),在连接到zabbix server之前zabbix agent是不知道自己要采集那些数据以及间隔多久采集一次数据的,然后在连接到zabbix server以后获取到自己的监控项和数据采集间隔周期时间,然后再根据监控项采集数据并返回给zabbix server,在主动模式下不再需要zabbix serve向zabbix agent发起连接请求,因此主动模式在一定程度上可减轻zabbix server打开的本地随机端口和进程数,在一定程度就减轻zabbix server的压力。
zabbix proxy
zabbix 作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替 zabbix server 收集监控数据,然后把数据汇报给 zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server 的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。另外zabbix proxy也区分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样,区别是zabbix proxy由于没有zabbix agent的配置,所以zabbix proxy在主动模式下要向zabbix server周期性的向zabbix server申请获取zabbix agent的监控项信息,但是zabbix proxy在被动模式下也是等待zabbix server的连接并接受zabbix server发送的监控项指令,然后再有zabbix proxy向zabbix agent发起请求获取数据。
自定义监控项配置流程
首先要确定好agent端盒server端要监控的指标是什么,在agent端对应的配置文件中编写要监控的脚本,agent端的agent主配置文件要编写userparameter,定义key和传递的参数,传递多个参数可以用位置$1,$2来传递中括号里面的参数,在zabbix的server端或者proxy端使用zabbix-get对其进行探测是否异常,正常的话后期就关联到自定义监控项的模版中,并做后续的绘图。