• zabbix自定义监控、钉钉、邮箱报警


    目录

    一、实验准备

    二、安装

    三、添加监控对象

    四、添加自定义监控项

    五、监控mariadb

    1、添加模版查看要求

    2、安装mariadb、创建用户

    3、创建用户文件

    4、修改监控模版

    5、在上述文件中配置路径

    6、重启zabbix-agent验证

    六、监控NGINX

    1、安装NGINX,开启status模块

    2、编写脚本、设置key并验证

    3、添加自定义监控项

    七、钉钉报警设置

    1、创建群组、添加机器人

    2、配置zabbix server

    3、web端设置

    4、测试报警效果

    八、邮件报警

    1、在zabbix-server 上配置邮件服务器

    2、编辑 zabbix_server.conf 引用邮件脚本

    3、配置 zabbix web 监控项邮件报警

    4、测试


    一、实验准备

    192.168.115.148 zabbix-server

    192.168.115.151 zabbix-angent

    1. rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
    2. yum install zabbix-server-mysql zabbix-agent
    3. yum install centos-release-scl
    4. vim /etc/yum.repos.d/zabbix.repo
    5. ####改这里
    6. [zabbix-frontend]
    7. ...
    8. enabled=1
    9. ...
    10. yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
    11. yum -y install mariadb mariadb-server
    12. systemctl start mariadb.service
    13. ##进入MYSQL
    14. mysql
    15. mysql> create database zabbix character set utf8 collate utf8_bin;
    16. mysql> create user "zabbix"@"localhost" identified by '123456';
    17. mysql> grant all privileges on zabbix.* to "zabbix"@"localhost";
    18. mysql> quit;
    19. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
    20. yum install zabbix-get
    21. vim /etc/zabbix/zabbix_server.conf
    22. ##修改密码
    23. DBPassword=123456
    24. DBHost=192.168.115.118
    25. vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
    26. php_value[date.timezone] = Asia/Shanghai
    27. systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
    28. systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
    1. rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
    2. yum install zabbix-agent
    3. ##117
    4. Server=192.168.115.148
    5. ##163
    6. ServerActive=192.168.115.148
    7. ##174
    8. Hostname=192.168.115.151
    9. systemctl start zabbix-agent
    10. systemctl enable zabbix-agent

    二、安装

    访问192.168.115.148/zabbix

    三、添加监控对象

    同理添加192.168.115.151

    四、添加自定义监控项

    在192.168.115.151上添加自定义的监控项:监控当前登录用户的个数
     

    1. vim /etc/zabbix/zabbix_agentd.d/user-login.conf
    2. ########定义键
    3. ########格式:UserParameter=key,shell命令(脚本也可)
    4. UserParameter=user_login,who|wc -l
    5. vim /etc/zabbix/zabbix_agentd.conf
    6. ###解开注释,启用
    7. UnsafeUserParameters=1
    8. systemctl restart zabbix-agent

    在web端添加自定义监控项

    验证,使用ssh登录192.168.115.151,让登录用户大于3

    五、监控mariadb

    1、添加模版查看要求

    在192.168.115.151上先

    查看说明

    1. Requirements for template operation:
    2. 1.Install Zabbix agent and MySQL client.
    3. 2.Copy template_db_mysql.conf into folder with Zabbix agent configuration (/etc/zabbix/zabbix_agentd.d/ by default). Don't forget to restart zabbix-agent.
    4. 3.Create MySQL user for monitoring. For example:
    5. CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
    6. GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
    7. For more information read the MySQL documentation https://dev.mysql.com/doc/refman/8.0/en/grant.html , please.
    8. 4.Create .my.cnf in home directory of Zabbix agent for Linux (/var/lib/zabbix by default) or my.cnf in c:\ for Windows. For example:
    9. [client]
    10. user='zbx_monitor'
    11. password='<password>'
    12. You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-discussion-thread-for-official-zabbix-template-db-mysql
    13. Template tooling version used: 0.39
    14. #########################################################################################
    15. 模板操作的要求如下:
    16. 根据提供的信息,模板操作的要求包括:
    17. 安装Zabbix agent和MySQL客户端。
    18. 将template_db_mysql.conf复制到Zabbix agent配置文件夹中(默认为/etc/zabbix/zabbix_agentd.d/)。不要忘记重新启动zabbix-agent。
    19. 为监控创建MySQL用户。例如:
    20. CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '';
    21. GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zbx_monitor'@'%';
    22. 更多信息请阅读MySQL文档 https://dev.mysql.com/doc/refman/8.0/en/grant.html。
    23. 在Linux的Zabbix agent主目录(默认为/var/lib/zabbix)中创建.my.cnf文件,或在Windows的c:\目录中创建my.cnf文件。例如:
    24. [client]
    25. user='zbx_monitor'
    26. password=''
    27. 您可以在我们的论坛上讨论此模板或提供反馈意见 https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-discussion-thread-for-official-zabbix-template-db-mysql
    28. 使用的模板工具版本为0.39
    2、安装mariadb、创建用户
    1. ###安装、启动
    2. yum -y install mariadb-server
    3. systemctl start mariadb
    4. #######创建用户
    5. CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456';
    6. GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zabbix'@'%';
    3、创建用户文件
    1. vim /etc/zabbix/.my.cnf
    2. [client]
    3. user='zabbix'
    4. password='123456'
    5. # #####################
    4、修改监控模版
    1. cd /etc/zabbix/zabbix_agentd.d
    2. cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf .

    就是这家伙

    5、在上述文件中配置路径
    1. #替换
    2. :%s/,/,HOME=\/etc\/zabbix\//g

    6、重启zabbix-agent验证

    systemctl restart zabbix-agent

    六、监控NGINX

    1、安装NGINX,开启status模块
    1. yum -y install epel-release
    2. yum -y install nginx
    3. systemctl start nginx
    4. nginx -V #查看模块

    1. vim /etc/nginx/nginx.conf
    2. ###server或者location下插入
    3. location / {
    4. }
    5. location /status { #定义运行状态页面名称,页面为status
    6. stub_status on; #开启模块
    7. access_log off; #不开启访问日志记录
    8. allow 192.168.115.0/24; #允许此网段的主机访问此网页
    9. deny all; #其余网段主机不允许访问
    10. }
    11. ##重启
    12. systemctl restart nginx

    验证此模块

    curl 192.168.115.151/status

    1. Active connections: 1
    2. - 这表示当前服务器上有1个活跃连接。
    3. Server accepts handled requests: 2 2 2
    4. - 这个部分显示了服务器已经接受和处理的请求数目。具体来说,服务器已经接受了2个请求,并成功处理了这2个请求。
    5. Reading: 0 Writing: 1 Waiting: 0
    6. - 这个部分显示了服务器当前的连接状态。其中,Reading表示正在读取的连接数目为0,Writing表示正在写入的连接数目为1,Waiting表示等待的连接数目为0
    2、编写脚本、设置key并验证

    参考大佬Zabbix5.0之监控Nginx_zabbix监控nginx失败请求_傻笑zz的博客-CSDN博客

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

    1. 创建自定义监控项
    2. vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
    3. UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
    4. UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
    5. UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
    6. UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
    7. UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
    8. UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
    9. UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting

    重启zabbix-agent

    systemctl start zabbix-agent

    数值获取测试

    1. zabbix_get -s 192.168.115.151 -k nginx.active
    2. zabbix_get -s 192.168.115.151 -k nginx.reading
    3. ####取到数值说明正确

    3、添加自定义监控项

    创建图形化

    七、钉钉报警设置

    下载钉钉

    参考Zabbix 5.0实现钉钉报警_zabbix5.0设置钉钉告警_杭州吉网运维日记的博客-CSDN博客

    1、创建群组、添加机器人

    2、配置zabbix server
    1. vim /etc/zabbix/zabbix_server.conf
    2. ###523行解开注释
    3. AlertScriptsPath=/usr/lib/zabbix/alertscripts
    4. ###进入到/usr/lib/zabbix/alertscripts路径下创建脚本
    5. cd /usr/lib/zabbix/alertscripts
    6. vim dingding.py
    7. #!/usr/bin/env python
    8. #coding:utf-8
    9. #zabbix钉钉报警
    10. import requests,json,sys,os,datetime
    11. webhook="https://oapi.dingtalk.com/robot/send?access_token=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的webhook)
    12. user=sys.argv[1]
    13. text=sys.argv[3]
    14. data={
    15. "msgtype": "text",
    16. "text": {
    17. "content": text
    18. },
    19. "at": {
    20. "atMobiles": [
    21. user
    22. ],
    23. "isAtAll": False
    24. }
    25. }
    26. headers = {'Content-Type': 'application/json'}
    27. x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
    28. if os.path.exists("/var/log/zabbix/dingding.log"):
    29. f=open("/var/log/zabbix/dingding.log","a+")
    30. else:
    31. f=open("/var/log/zabbix/dingding.log","w+")
    32. f.write("\n"+"--"*30)
    33. if x.json()["errcode"] == 0:
    34. f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text))
    35. f.close()
    36. else:
    37. f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text))
    38. f.close()
    1. ##赋予执行权限
    2. chmod +x dingding.py
    3. ##创建日志文件:
    4. touch /var/log/zabbix/dingding.log
    5. chown zabbix.zabbix /var/log/zabbix/dingding.log
    6. #####安装python与请求模块
    7. yum -y install python-requests python
    8. #####报警测试,要写三个参数并且带关键字"告警"
    9. ./dingding.py this is "告警测试,请注意"

    3、web端设置

    创建媒介

    添加动作

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

    告警恢复

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

    配置报警媒介

    4、测试报警效果

    停掉192.168.115.151的NGINX

    启动NGINX

    八、邮件报警

    登录163邮箱

    授权码要好好保存

    1、在zabbix-server 上配置邮件服务器
    1. ##安装邮件服务器,转义
    2. yum install -y mailx dos2unix
    3. ##查看版本
    4. [root@localhost alertscripts]# mail -V
    5. 12.5 7/5/10
    6. #####修改配置文件
    7. vim /etc/mail.rc
    8. //在此文件末尾添加,指定接收邮件邮箱地址,指定邮箱服务器地址,指定接收邮件邮箱地址的授权码,并非 163 邮箱的密码,而是授权码,登陆 163 网易邮箱地址后,--设置--开启smtp 和 pop3--点击客户端生成授权码--使用此授权码进行指定到此配置文件
    9. set from=mslinux@163.com smtp=smtp.163.com
    10. set smtp-auth-user=mslinux@163.com smtp-auth-password=上面生成的授权码
    11. set smtp-auth=login
    12. ####发送测试邮件
    13. echo "test mail from zabbix.server.com"| mail -s "test mail" 17306969189@163.com

    来到邮箱查看

    2、编辑 zabbix_server.conf 引用邮件脚本
    1. vim /etc/zabbix/zabbix_server.conf
    2. 查看得到路径 AlertScriptsPath=/usr/lib/zabbix/alertscripts
    3. ###写脚本
    4. cd /usr/lib/zabbix/alertscripts
    5. vim mail.sh
    6. ##编写报警邮件脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATTO0001.bin 的错误;
    7. #!/bin/bash
    8. #export.UTF-8
    9. bt=$2
    10. sjr=$1
    11. FILE=/tmp/mailtmp.txt
    12. echo "$3" >$FILE
    13. /usr/bin/dos2unix -k $FILE
    14. /bin/mail -s "$bt" "$sjr" <$FILE
    15. #########################################
    16. bt=$2 sjr=S1 定义发件标题和收件人信息
    17. FILE=/tmp/mailtmp.txt 定义文件路径
    18. 使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内
    19. /usr/bin/dos2unix -k SFILE 容而出现 ATTO0001.bin 的错误
    20. /bin/mail -s "Sbt""Ssjr" <SFILE 执行邮件发送命令
    21. ##############################
    22. chmod 777 mail.sh
    23. chown zabbix:zabbix mail.sh
    24. touch /tmp/mailtmp.txt
    25. chmod 777 /tmp/mailtmp.txt
    26. chown zabbix:zabbix /tmp/mailtmp.txt
    27. ####测试脚本
    28. ./mail.sh mslinux@163.com "test mail2" "test mail from server.zabbix.com test2"

    3、配置 zabbix web 监控项邮件报警

    监控--创建报警媒介类型--更新用户使用的报警媒介类型-创建动作(根据发器触发)--验证;

    创建动作

    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}

    4、测试

    停掉NGINX服务

    启动NGINX服务

  • 相关阅读:
    流程图拖拽视觉编程-流程编辑器
    JAVA06_Optional类概述、初始化、常用方法、最佳实践
    G1D21-作业-AttacKG&SVM&kg_book&偷懒哈哈哈
    【毕业设计】基于单片机的智能避障扫地机器人 -物联网 嵌入式
    操作系统——计算机系统概述の选择题整理
    能动的电脑配件「GitHub 热点速览 v.22.11」
    akamai相关资料整理
    【前端】jquery获取data-*的属性值
    娄底污水处理厂实验室建设管理
    JPA中@ElementCollection使用
  • 原文地址:https://blog.csdn.net/2302_78534730/article/details/132709825