Zabbix自定义监控

#服务器登录用户大于3发送警报


1.确认命令
who | wc -l
2.创建zabbix配置文件,创建自定义key
#在agent端操作
cd /etc/zabbix/zabbix_agentd.d/

touch user_user.conf

vim user_user.conf

UserParameter=user.log,who|wc -l              #key为user.user
##保存后重启
systemctl restart zabbix-agent.service

在zabbix_server端实验
zabbix_get -s '192.168.11.12' -p 10050 -k 'user.log'
返回值为1,证明登录用户为1

在web页面创建模板,创建应用集(就像文件夹一样,放一些监控项)

#创建模板

微信截图_20220817172648-1536x884.png微信截图_20220817172648-1536x884-mewd.png进入模板后找到应用集,创建应用集并输入名称,然后在模板中创建监控项

微信截图_20220817172648-1536x884-mewd.png#然后创建触发器

image-2-1536x947.png添加图形

image-3-1536x876.png###最后在- 配置–主机–选择需要添加的主机–模板–添加模板

#####监控自定义端口

image-4-1536x349.pngimage-5-1536x316.pngimage-6.pngimage-7-1536x556.pngimage-8.pngimage-9.pngimage-10.png自定义监控当前主机的cpu,内存的使用率

cd /home/zabbix
vim text.sh

#!/bin/bash
mem_use=$( free -m|grep Mem|awk '{printf "%.2f\n",$3/$2*100}')           
#已用内存
cpu_free=$( top -bn1 |sed -n 3p|awk  '{printf "%d\n", $8}')		      
#空闲时间占用cpu的百分比
cpu_use=$( top -bn1 |sed -n 3p|awk  '{printf "%d\n", 100-$8}')		     
#cpu使用多少
case $1 in 
 	mem_use)
  		echo $mem_use ;;
 	cpu_free)
        		echo $cpu_free ;;
	cpu_use)
        		echo $cpu_use ;;
 	*)
  		echo "输入有误!!!"
esac

chmod +x text.sh
#修改zabbix-agent的配置文件并重启agent服务
vim /etc/zabbix/zabbix_agentd.conf
330行    UnsafeUserParameters=1     #取消注释,开启自定义脚本

339行    UserParameter=check.mem[*],/home/zabbix/test.sh $1   #定义脚本位置
#重启服务
systemctl restart zabbix-agent
#使用监控服务器进行测试

zabbix_get -s 192.168.11.11 -k check.mem[cpu_free]

web页面展示

16451679441-1536x754.png然后创建监控项

需要输入单位,信息类型如果有小数点需要选择浮点数

16451681141-1536x754.png可以进行测试,测试通过后进行添加

16451681951-1536x754.png添加可视化图形

16451682611-1536x754.pngzabbix自定义监控磁盘

#在agnet端配置
vim /etc/zabbix/zabbix_agentd.conf
UserParameter=cat_disk,df -hT | grep ' /$' | awk '{print $6}' | sed 's/%//g'

#重启
systemctl restart zabbix-agent.service

在server端配置

#配置成功后一定要看可用性,不然没办法发送告警

然后配置机器人告警

#创建机器人脚本

#/usr/lib/zabbix/alertscripts/   这里是zabbix存放脚本的地址
vim wechat.sh
#!/bin/bash
# 企业微信 Webhook 地址
WEBHOOK_URL="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=3f21916a-1047-4a97-bb61-6fd912489d22"
SUBJECT="$1"  # 告警标题
MESSAGE="$2"  # 告警内容

JSON_PAYLOAD=$(cat <<EOF
{
   "msgtype": "text",
   "text": {
           "content": "【Zabbix告警】\n标题: ${SUBJECT}\n内容: ${MESSAGE}"
           }
}
EOF
)
curl -s -X POST -H "Content-Type: application/json" -d "${JSON_PAYLOAD}" "${WEBHOOK_URL}"

#在这里新建一个wechat告警

#类型使用脚本,消息模板和选项无需填写,创建好后保存

#在用户设置中添加报警媒介

#在配置动作中添加告警动作

#告警主题和消息

#主题
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
#消息
告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

接下来配置恢复操作

#告警主题和消息

#主题
故障恢复{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}已恢复!
#消息
恢复告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

#配置完成后报错就可以告警了