目录
zabbix-agent(147)
agent端操作
vim /etc/zabbix/zabbix_agentd.conf
在配置未文件末尾添加
UserParameter=memory_userd,free -m |grep Mem |awk '{print $3}'
重启服务 systemctl restart zabbix-agent.service
server端操作(146)
zabbix_get -s 192.168.238.147 -k memory_userd
配置自定义监控项
配置自定义触发器
配置自定义图形
查看出图效果
zabbix-agent(147)
安装Nginx
vim /etc/nginx/nginx.conf
- mkdir /etc/zabbix/script
- vim /etc/zabbix/script/ngx_status.sh
编写脚本
- #!/bin/bash
-
- #定义Nginx status页面
- ngx_status="http://192.168.238.147/status"
-
- #判断status页面是否存活
- ngx_status_code() {
- http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
- if [ ${http_code} == "200" ];then
- return 1
- else
- echo "Nginx status is not running."
- fi
- }
-
- #获取当前活动的客户端连接数
- active() {
- ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
- }
-
- #获取接收客户端连接的总数量
- accepts() {
- ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
- }
-
- #获取已处理的连接总数量
- handled() {
- ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
- }
-
- #获取客户端请求总数量
- requests() {
- ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
- }
-
- #获取正在读取请求标头的当前连接数量
- reading() {
- ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
- }
-
- #获取正在将响应写回到客户端的当前连接数量
- writing() {
- ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
- }
-
- #获取当前正在等待响应的客户端连接数量
- waiting() {
- ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
- }
-
- #使用位置变量控制脚本输出
- case $1 in
- active)
- active;;
- accepts)
- accepts;;
- handled)
- handled;;
- requests)
- requests;;
- reading)
- reading;;
- writing)
- writing;;
- waiting)
- waiting;;
- *)
- echo "Unknown options"
- esac
配置Zabbix Agent
vim /etc/zabbix/zabbix_agentd.conf
解开注释改 UnsafeUserParameters=1
创建自定义监控项
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
添加以下内容
- UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
- UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
- UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
- UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
- UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
- UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
- UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting
重启zabbix服务 启动Nginx
server端使用zabbix_get工具进行测试
页面配置
新创模板
新建监控项
选择监控主机,添加模板
找到添加的监控项查看
zabbix-agent(147)
安装启动服务
创建授权用户
grant all on *.* to zabbix@'%' identified by'123.com';
配置Zabbix Agent
在zabbix客户端默认配置路径下 /etc/zabbix 目录下新建 .my.cnf 文件(隐藏文件)
复制模板,修改模板中的默认路径
- cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d
- vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
在命令行新增默认路径 HOME=/etc/zabbix/
重启zabbix客户端
页面为监控的主机添加模板
观察下宏的IP是否改变,未变手动修改
查看出图效果
zabbix server(146)
在钉钉中创建一个群,添加自定义机器人
vim /etc/zabbix/zabbix_server.conf
加开注释AlertScriptsPath
创建用来推送告警消息的脚本,使用自己的webhook
vim /etc/zabbix/dingding.py
- #!/usr/bin/env python
- #coding:utf-
- #zabbix钉钉报警
- import requests,json,sys,os,datetime
- webhook="https://oapi.dingtalk.com/robot/send?access_token=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的webhook)
- user=sys.argv[1]
- text=sys.argv[3]
- data={
- "msgtype": "text",
- "text": {
- "content": text
- },
- "at": {
- "atMobiles": [
- user
- ],
- "isAtAll": False
- }
- }
- headers = {'Content-Type': 'application/json'}
- x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
- if os.path.exists("/var/log/zabbix/dingding.log"):
- f=open("/var/log/zabbix/dingding.log","a+")
- else:
- f=open("/var/log/zabbix/dingding.log","w+")
- f.write("\n"+"--"*30)
- if x.json()["errcode"] == 0:
- f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
- f.close()
- else:
- f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
- f.close()
-
脚本赋予可执行权限
- cd /etc/zabbix
-
- chmod +x dingding.py
创建日志文件
- touch /var/log/zabbix/dingding.log
- chown zabbix.zabbix /var/log/zabbix/dingding.log
在虚拟机中测试下,输入 ./dingding.py xiejin test “这是条告警测试信息,请忽略”
钉钉中会收到
页面配置
创建媒体类型
创建动作并添加条件
告警操作及恢复操作
- 主题:
- Problem: {EVENT.NAME}
-
- 消息:
- -=【告警啦】=-
- 告警组:{TRIGGER.HOSTGROUP.NAME}
- 告警主机:{HOSTNAME1}
- 告警主机别名:{HOST.NAME}
- 主机IP:{HOST.IP}
- 主机描述:{HOST.DESCRIPTION}
- 告警时间:{EVENT.DATE} {EVENT.TIME}
- 告警等级:{TRIGGER.SEVERITY}
- 警报类别:{TRIGGER.NAME}
- 当前状态:{ITEM.LASTVALUE}
- 告警平台:http://192.168.238.146/zabbix
- 主题:
- Resolved:{EVENT.NAME}
-
- 消息:
-
- 恢复主机:{HOSTNAME1}
-
- 恢复时间:{EVENT.DATE} {EVENT.TIME}
-
- 主机IP:{HOST.IP}
-
- 告警项目:{TRIGGER.KEY1}
-
- 问题详情:{ITEM.NAME}:{ITEM.VALUE}
-
- 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
-
- 事件ID:{EVENT.ID}
-
配置报警媒介
将其中监控的服务关闭会向钉钉发送信息则成功,不成功可以去看报表里的动作日志查看原因
关闭了agent中的mariadb
恢复启动了mariadb
登录163邮箱,开启服务
zabbix server(146)
安装配置邮件服务器
- yum install -y mailx dos2unix
- vim /etc/mail.rc
测试
echo "test mail from zabbix.server.com" |mail -s "test mial" 17689522335@163.com
编写邮件引用脚本
vim /etc/zabbix/zabbix_server.conf
编写脚本
vim /etc/zabbix/mail.sh
- #!/bin/bash
- #export.UTF-8
- bt=$2
- sjr=$1
- FILE=/tmp/mailtmp.txt
- echo "$3" >$FILE
- /usr/bin/dos2unix -k $FILE
- /bin/mail -s "$bt" "$sjr" <$FILE
脚本加权更改属主属组
- chmod 777 mail.sh
- chown zabbix.zabbix mail.sh
- touch /tmp/mailtmp.txt
- chmod 777 /tmp/mailtmp.txt
- chown zabbix.zabbix /tmp/mailtmp.txt
测试
./mail.sh 17689522335@163.com "test mial2""test mail from server.zabbix.com test2"
页面配置
创建报警媒介
创建动作及操作条件
- 邮件主题:
-
- 故障:{TRIGGER.STATUS},服务器:{HOSTNAME1},发生:{TRIGGER.NAME}故障!
-
- 邮件消息:
-
- 告警主机:{HOSTNAME1}
- 告警时间:{EVENT.DATE}{EVENT.TIME}
- 告警等级:{TRIGGER.SEVERITY}
- 告警信息:{TRIGGER.NAME}
- 告警项目:{TRIGGER.KEY1}
- 问题详情:{ITEM.NAME}:{ITEM.VALUE}
- 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
- 事件 ID:{EVENT.ID}
配置报警媒介
测试
停掉监控agent的mariadb
对zabbix监控功能的完善及补充,还可以添加其他监控项。报警功能相对实用,配置好一旦有故障就会第一时间发消息给我们,还有微笑报警和短信报警,短信报警收费,有兴趣的小伙伴可以去尝试。