zabbix安装使用-3
第7章 *自定义监控*
代理端安装
7.1 *监控对象*
#监控系统中的对象
[root@web03 ~]# yum install sysstat -y
[root@web03 ~]# iostat | awk '/^sda/{print $2}'
7.2 *配置自定义监控*
#因为主配置文件中有include调用,防止配置文件臃肿,直接写在/etc/zabbix/zabbix_agentd.d/中
[root@web03 ~]# grep 'Include' /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#如何增加监控项语法格式: UserParameter=
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/iotop.conf
UserParameter=iotps,iostat | awk '/^sda/{print $2}'
[root@web03 ~]# systemctl restart zabbix-agent
7.3 *验证自定义监控*
#agent如何验证自己定义的监控项是否生效,是否能取值
[root@web03 ~]# zabbix_agentd -p |grep iotps
iotps [t|1.72]
7.4 *服务端测试*
#Zabbix-Server如何验证Zabbix-Agent是否有对应的监控项
[root@m01 ~]# yum install zabbix-get -y
[root@m01 ~]# zabbix_get -s 10.0.0.9 -p10050 -k iotps
1.69
7.5 *ZabbixWeb界面进行关联*
1.选择配置->主机->对应主机->监控项->创建监控项->名称->键值(监控项目名称)->信息类型->单位
2.选择监测中->最新数据->等待30s
7.6 *自定义阈值*
1.选择配置->主机->对应主机->触发器->创建触发器->名称->添加表达式
表达式一定要选择对应的监控项进行设定({web03-10.0.0.9:system.users.num.last()}>2)->确认
2.开启多个会话窗口,测试前端报警
3.前端报警开启方式->右上角->小人头->正在发送消息->开启即可
7.6.1 *配置警报*
7.6.2 *配置触发*
7.6.3 *测试结果*
7.7 *自定义报警*
7.7.1 *邮箱报警*
当监控项超过触发器设定的阈值->触发动作->(发送消息|执行命令)
怎么报警-> 2.报警怎么发,发什么内容->报警发给谁
注意:要使SMTP验证选项可用,Zabbix服务器应使用cURL 7.20.0或更高版本
1.启用动作
2.单击管理->报警媒介类型,设定发送消息的介质-email
3.配置发件人的账号和授权码(注意:不是收件人邮箱)
如果使用SSL\TLS安全连接需要注意端口,及密码(密码为验证码)
SMTP的服务器、端口、安全连接及密码需要对应
4.配置收件人接收的邮箱地址-点击小人头->选择报警媒介->点击小按钮添加
5.添加收件人的邮箱,以及接受报警的等级
6.一定要点击更新按钮
7.如果邮箱无法发送,请检查email设定的客户端授权码
8.如果邮箱配置没有任何错误,效果如下
7.7.2 *自定义**微信报警*
准备脚本
1.创建媒体介质类型->脚本->写什么内容->脚本放在哪
[root@m01 zabbix]# grep '[1]' zabbix_server.conf
....省略....
AlertScriptsPath=/usr/lib/zabbix/alertscripts #警报脚本路径
ExternalScripts=/usr/lib/zabbix/externalscripts #外部脚本
[root@m01 ~]# yum install python-pip python-requests -y #配置基础依赖
[root@m01 ~]# pip install requests #同上
[root@m01 ~]# cd /usr/lib/zabbix/alertscripts #上传脚本
[root@m01 alertscripts]# ls
weixin.py
[root@m01 alertscripts]# chmod +x weixin.py #设置执行权限
[root@m01 alertscripts]# ./weixin.py WeiXinID 111 2222 #测试发送邮箱
[root@m01 alertscripts]# chown zabbix.zabbix /tmp/weixin.log #授权文件
2.创建报警媒介
3.微信报警脚本媒介
{ALERT.SENDTO} #发给谁
{ALERT.SUBJECT} #发送的主题
{ALERT.MESSAGE} #发送的内容
3.接收的微信号(企业微信中自己的名子的全拼,首字母大写 ZhangSan)
7.8 *自定义监控**K*
7.8.1 *监控tcp**状态*
可以使用man netstat查看TCP的各种状态信息描述
ESTABLISHED socket已经建立连接
CLOSED socket没有被使用,无连接
CLOSING 服务器端和客户端都同时关闭连接
CLOSE_WAIT 等待关闭连接
TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LISTEN 监听状态
SYN_RECV 接收到SYN报文
SYN_SENT 已经发送SYN报文
FIN_WAIT1 The socket is closed, and the connection is shutting down
FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote end.
自定义监控tcp11种状态(演示传参)
[root@web09 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@web09 zabbix_agentd.d]# cat tcp_state.conf
UserParameter=tcp_state[*],netstat -ant|grep -c $1 #打印匹配的行数
[root@web09 zabbix_agentd.d]# systemctl restart zabbix-agent
语法:UserParameter=tcp_state[*],netstat -ant|grep -c $1
UserParameter= tcp_state # K名
[*] # 变量
netstat -ant|grep -c # 命令
$1 # 传递参数
zabbix-server端测试
[root@zabbix ~]# zabbix_get -s 10.0.0.7 -k 'tcp_state[LISTEN]'
8
由[*]变量接收传递给命令参数$1,然后执行命令统计数据进行收集。
添加11种TCP的状态,先添加一个,然后进行克隆,如需修改更新间隔请全选监控项,批量修改。
对于不支持的key,请调整如下选项
7.9 *多条件阈值监控*
7.9.1 *取出内存百分比*
取出内存的可用的MB大小 / 总的内存大小 = 实际可用的百分比
1.定义剩余内存百分比
[root@web03 zabbix_agentd.d]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Mem_pre,free -m|awk '/^Mem/{print $NF*100/$2}'
[root@web03 zabbix_agentd.d]# systemctl restart zabbix-agent
2.在ZabbixServer验证监控项是否可用
[root@m01 ~]# zabbix_get -s 10.0.0.9 -k 'Mem_pre'
72.1766
自定义服务监控
7.9.2 *web前端配置*
7.9.3 *设置触发警报*
自定义单条件触发器,设置内存低于 30% 进行报警
1.创建触发器
2.填写表达式
3.压低内存,检查报警邮件(以内存1G为例,使用下面方式进行消耗内存)
[root@web03 ~]# dd if=/dev/zero of=/dev/null bs=500M count=1024
7.9.4 *配置第二阈值*
内存低于10%以上,swap使用超过百分之5,再次进行监控报警(更精准)
1.增加swap的监控
[root@web03 ~]# vim /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Swap_pre,free -m|awk '/^Swap/{print $3*100/$2}'
[root@web03 ~]# systemctl restart zabbix-agent
2.在ZabbixServer使用zabbix_get命令测试
[root@m01 ~]# zabbix_get -s 10.0.0.9 -k 'Swap_pre'
1.05873
3.在ZabbixWeb创建监控项
7.9.5 *设置触发多条件警报*
1.基于之前建立的触发器进行修改,修改为多条规则同时满足才触发
{web03-10.0.0.9:Mem_pre.last()}<30 and {web03-10.0.0.9:Swap_pre.last()}>1
2.使用dd命令进行压测(只满足内存低于30%规则,所以无法报警)
[root@web03 ~]# dd if=/dev/zero of=/dev/null bs=500M count=1024
3.使用dd命令进行压测(满足内存低于30%规则,并且同时满足swap使用率超过5%
触发报警)
[root@web03 ~]# dd if=/dev/zero of=/dev/null bs=800M count=1024
a-Z ↩︎