• zabbix监控平台部署(二)


    目录

    一、自定义监控

    二、Nginx监控

    三、监控mysql

    四、钉钉告警

    五、163邮箱报警

    总结




    zabbix5.0

    一、自定义监控

    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

    配置自定义监控项

    配置自定义触发器

    配置自定义图形

    查看出图效果

    二、Nginx监控

    zabbix-agent(147)

    安装Nginx

    查看当前Nginx是否已安装内置运行状态模块
    开启运行状态模块
    vim /etc/nginx/nginx.conf

    编写监控脚本并安装zabbix agent
    1. mkdir /etc/zabbix/script
    2. vim /etc/zabbix/script/ngx_status.sh

    编写脚本

    1. #!/bin/bash
    2. #定义Nginx status页面
    3. ngx_status="http://192.168.238.147/status"
    4. #判断status页面是否存活
    5. ngx_status_code() {
    6. http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
    7. if [ ${http_code} == "200" ];then
    8. return 1
    9. else
    10. echo "Nginx status is not running."
    11. fi
    12. }
    13. #获取当前活动的客户端连接数
    14. active() {
    15. ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
    16. }
    17. #获取接收客户端连接的总数量
    18. accepts() {
    19. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
    20. }
    21. #获取已处理的连接总数量
    22. handled() {
    23. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
    24. }
    25. #获取客户端请求总数量
    26. requests() {
    27. ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
    28. }
    29. #获取正在读取请求标头的当前连接数量
    30. reading() {
    31. ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
    32. }
    33. #获取正在将响应写回到客户端的当前连接数量
    34. writing() {
    35. ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
    36. }
    37. #获取当前正在等待响应的客户端连接数量
    38. waiting() {
    39. ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
    40. }
    41. #使用位置变量控制脚本输出
    42. case $1 in
    43. active)
    44. active;;
    45. accepts)
    46. accepts;;
    47. handled)
    48. handled;;
    49. requests)
    50. requests;;
    51. reading)
    52. reading;;
    53. writing)
    54. writing;;
    55. waiting)
    56. waiting;;
    57. *)
    58. echo "Unknown options"
    59. esac

    配置Zabbix Agent

    vim /etc/zabbix/zabbix_agentd.conf

    解开注释改        UnsafeUserParameters=1

    创建自定义监控项

    vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

    添加以下内容

    1. UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
    2. UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
    3. UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
    4. UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
    5. UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
    6. UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
    7. UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting

    重启zabbix服务        启动Nginx

    server端使用zabbix_get工具进行测试

    页面配置

    新创模板

    新建监控项

    选择监控主机,添加模板

    找到添加的监控项查看

    三、监控mysql

    zabbix-agent(147)

    安装启动服务

    创建授权用户

    grant all on *.* to zabbix@'%' identified by'123.com';

    配置Zabbix Agent

    在zabbix客户端默认配置路径下 /etc/zabbix 目录下新建  .my.cnf 文件(隐藏文件

    复制模板,修改模板中的默认路径

    1. cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d
    2. vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

    在命令行新增默认路径 HOME=/etc/zabbix/

    重启zabbix客户端

    页面为监控的主机添加模板

    观察下宏的IP是否改变,未变手动修改

    查看出图效果

    四、钉钉告警

    zabbix server(146)

    在钉钉中创建一个群,添加自定义机器人

    配置zabbix server
    vim /etc/zabbix/zabbix_server.conf

    加开注释AlertScriptsPath


    创建用来推送告警消息的脚本,使用自己的webhook

    vim /etc/zabbix/dingding.py

    1. #!/usr/bin/env python
    2. #coding:utf-
    3. #zabbix钉钉报警
    4. import requests,json,sys,os,datetime
    5. webhook="https://oapi.dingtalk.com/robot/send?access_token=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的webhook)
    6. user=sys.argv[1]
    7. text=sys.argv[3]
    8. data={
    9. "msgtype": "text",
    10. "text": {
    11. "content": text
    12. },
    13. "at": {
    14. "atMobiles": [
    15. user
    16. ],
    17. "isAtAll": False
    18. }
    19. }
    20. headers = {'Content-Type': 'application/json'}
    21. x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
    22. if os.path.exists("/var/log/zabbix/dingding.log"):
    23. f=open("/var/log/zabbix/dingding.log","a+")
    24. else:
    25. f=open("/var/log/zabbix/dingding.log","w+")
    26. f.write("\n"+"--"*30)
    27. if x.json()["errcode"] == 0:
    28. f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
    29. f.close()
    30. else:
    31. f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
    32. f.close()

    脚本赋予可执行权限

    1. cd /etc/zabbix
    2. chmod +x dingding.py

    创建日志文件

    1. touch /var/log/zabbix/dingding.log
    2. chown zabbix.zabbix /var/log/zabbix/dingding.log

    在虚拟机中测试下,输入        ./dingding.py xiejin test “这是条告警测试信息,请忽略”

    钉钉中会收到

    页面配置

    创建媒体类型

    创建动作并添加条件

    告警操作及恢复操作

    1. 主题:
    2. Problem: {EVENT.NAME}
    3. 消息:
    4. -=【告警啦】=-
    5. 告警组:{TRIGGER.HOSTGROUP.NAME}
    6. 告警主机:{HOSTNAME1}
    7. 告警主机别名:{HOST.NAME}
    8. 主机IP:{HOST.IP}
    9. 主机描述:{HOST.DESCRIPTION}
    10. 告警时间:{EVENT.DATE} {EVENT.TIME}
    11. 告警等级:{TRIGGER.SEVERITY}
    12. 警报类别:{TRIGGER.NAME}
    13. 当前状态:{ITEM.LASTVALUE}
    14. 告警平台:http://192.168.238.146/zabbix

    1. 主题:
    2. Resolved:{EVENT.NAME}
    3. 消息:
    4. 恢复主机:{HOSTNAME1}
    5. 恢复时间:{EVENT.DATE} {EVENT.TIME}
    6. 主机IP:{HOST.IP}
    7. 告警项目:{TRIGGER.KEY1}
    8. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
    9. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    10. 事件ID:{EVENT.ID}

    配置报警媒介

    将其中监控的服务关闭会向钉钉发送信息则成功,不成功可以去看报表里的动作日志查看原因

    关闭了agent中的mariadb

    恢复启动了mariadb

    五、163邮箱报警

    登录163邮箱,开启服务

    zabbix server(146)

    安装配置邮件服务器

    1. yum install -y mailx dos2unix
    2. 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
    1. #!/bin/bash
    2. #export.UTF-8
    3. bt=$2
    4. sjr=$1
    5. FILE=/tmp/mailtmp.txt
    6. echo "$3" >$FILE
    7. /usr/bin/dos2unix -k $FILE
    8. /bin/mail -s "$bt" "$sjr" <$FILE

    脚本加权更改属主属组

    1. chmod 777 mail.sh
    2. chown zabbix.zabbix mail.sh
    3. touch /tmp/mailtmp.txt
    4. chmod 777 /tmp/mailtmp.txt
    5. chown zabbix.zabbix /tmp/mailtmp.txt

    测试

    ./mail.sh 17689522335@163.com "test mial2""test mail from server.zabbix.com test2"

    页面配置

    创建报警媒介

    创建动作及操作条件

    1. 邮件主题:
    2. 故障:{TRIGGER.STATUS},服务器:{HOSTNAME1},发生:{TRIGGER.NAME}故障!
    3. 邮件消息:
    4. 告警主机:{HOSTNAME1}
    5. 告警时间:{EVENT.DATE}{EVENT.TIME}
    6. 告警等级:{TRIGGER.SEVERITY}
    7. 告警信息:{TRIGGER.NAME}
    8. 告警项目:{TRIGGER.KEY1}
    9. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
    10. 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
    11. 事件 ID:{EVENT.ID}

    配置报警媒介

    测试

    停掉监控agent的mariadb

    总结

    对zabbix监控功能的完善及补充,还可以添加其他监控项。报警功能相对实用,配置好一旦有故障就会第一时间发消息给我们,还有微笑报警和短信报警,短信报警收费,有兴趣的小伙伴可以去尝试。

  • 相关阅读:
    Pytorch实用教程:多分类任务中使用的交叉熵损失函数nn.CrossEntropyLoss
    【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙
    LabVIEW前面板和程序框图的最大尺寸
    互联网快讯:多地要求商家下架槟榔;多所高校延长专硕学制至3年
    SpringBoot使用配置中心Apollo启动很慢两分钟解决
    贝叶斯分类(朴素)
    Linux上安装jdk Tomcat mysql redis等
    linux进程间通信之共享内存(mmap,shm_open)
    js setTimeout()与面试题
    Fragment转场动画的那些坑(仅分析v4包下的fragment)
  • 原文地址:https://blog.csdn.net/2301_78534660/article/details/132992080