目录
2、编辑 zabbix_server.conf 引用邮件脚本
192.168.115.148 zabbix-server
192.168.115.151 zabbix-angent
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- yum install zabbix-server-mysql zabbix-agent
- yum install centos-release-scl
- vim /etc/yum.repos.d/zabbix.repo
- ####改这里
- [zabbix-frontend]
- ...
- enabled=1
- ...
-
- yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
-
- yum -y install mariadb mariadb-server
- systemctl start mariadb.service
- ##进入MYSQL
- mysql
- mysql> create database zabbix character set utf8 collate utf8_bin;
- mysql> create user "zabbix"@"localhost" identified by '123456';
- mysql> grant all privileges on zabbix.* to "zabbix"@"localhost";
- mysql> quit;
-
- zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
-
- yum install zabbix-get
-
-
- vim /etc/zabbix/zabbix_server.conf
- ##修改密码
- DBPassword=123456
- DBHost=192.168.115.118
-
-
- vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
- php_value[date.timezone] = Asia/Shanghai
-
-
-
- systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
- systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- yum install zabbix-agent
-
- ##117行
- Server=192.168.115.148
- ##163行
- ServerActive=192.168.115.148
- ##174行
- Hostname=192.168.115.151
-
- systemctl start zabbix-agent
- systemctl enable zabbix-agent
-
-
访问192.168.115.148/zabbix











同理添加192.168.115.151


在192.168.115.151上添加自定义的监控项:监控当前登录用户的个数
- vim /etc/zabbix/zabbix_agentd.d/user-login.conf
- ########定义键
- ########格式:UserParameter=key,shell命令(脚本也可)
- UserParameter=user_login,who|wc -l
-
-
- vim /etc/zabbix/zabbix_agentd.conf
- ###解开注释,启用
- UnsafeUserParameters=1
-
- systemctl restart zabbix-agent

在web端添加自定义监控项







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

查看说明
- Requirements for template operation:
- 1.Install Zabbix agent and MySQL client.
- 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.
- 3.Create MySQL user for monitoring. For example:
- CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
- GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
- For more information read the MySQL documentation https://dev.mysql.com/doc/refman/8.0/en/grant.html , please.
- 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:
- [client]
- user='zbx_monitor'
- password='<password>'
- 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
- Template tooling version used: 0.39
- #########################################################################################
- 模板操作的要求如下:
- 根据提供的信息,模板操作的要求包括:
- 安装Zabbix agent和MySQL客户端。
- 将template_db_mysql.conf复制到Zabbix agent配置文件夹中(默认为/etc/zabbix/zabbix_agentd.d/)。不要忘记重新启动zabbix-agent。
- 为监控创建MySQL用户。例如:
- CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '';
- GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zbx_monitor'@'%';
- 更多信息请阅读MySQL文档 https://dev.mysql.com/doc/refman/8.0/en/grant.html。
- 在Linux的Zabbix agent主目录(默认为/var/lib/zabbix)中创建.my.cnf文件,或在Windows的c:\目录中创建my.cnf文件。例如:
- [client]
- user='zbx_monitor'
- password=''
- 您可以在我们的论坛上讨论此模板或提供反馈意见 https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-discussion-thread-for-official-zabbix-template-db-mysql
- 使用的模板工具版本为0.39
- ###安装、启动
- yum -y install mariadb-server
- systemctl start mariadb
- #######创建用户
- CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456';
- GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zabbix'@'%';
- vim /etc/zabbix/.my.cnf
-
-
- [client]
- user='zabbix'
- password='123456'
- # #####################
- cd /etc/zabbix/zabbix_agentd.d
- cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf .
就是这家伙

- #替换
- :%s/,/,HOME=\/etc\/zabbix\//g

systemctl restart zabbix-agent





- yum -y install epel-release
- yum -y install nginx
- systemctl start nginx
- nginx -V #查看模块

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

验证此模块
curl 192.168.115.151/status


- Active connections: 1
- - 这表示当前服务器上有1个活跃连接。
-
- Server accepts handled requests: 2 2 2
- - 这个部分显示了服务器已经接受和处理的请求数目。具体来说,服务器已经接受了2个请求,并成功处理了这2个请求。
-
- Reading: 0 Writing: 1 Waiting: 0
- - 这个部分显示了服务器当前的连接状态。其中,Reading表示正在读取的连接数目为0,Writing表示正在写入的连接数目为1,Waiting表示等待的连接数目为0。
参考大佬Zabbix5.0之监控Nginx_zabbix监控nginx失败请求_傻笑zz的博客-CSDN博客
- vim /etc/zabbix/script/ngx_status.sh
- #!/bin/bash
- #定义Nginx status页面
- ngx_status="192.168.115.151/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
-
- PidFile=/var/run/zabbix/zabbix_agentd.pid
- LogFile=/var/log/zabbix/zabbix_agentd.log
- LogFileSize=0
- DenyKey=system.run[*]
- EnableRemoteCommands=1
- Server=10.1.1.1
- ServerActive=10.1.1.1
- Hostname=nginx
- Timeout=10
- Include=/etc/zabbix/zabbix_agentd.d/*.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-agent
systemctl start zabbix-agent
数值获取测试
- zabbix_get -s 192.168.115.151 -k nginx.active
-
- zabbix_get -s 192.168.115.151 -k nginx.reading
-
- ####取到数值说明正确






创建图形化

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





-
- vim /etc/zabbix/zabbix_server.conf
- ###523行解开注释
- AlertScriptsPath=/usr/lib/zabbix/alertscripts
-
-
- ###进入到/usr/lib/zabbix/alertscripts路径下创建脚本
- cd /usr/lib/zabbix/alertscripts
- vim dingding.py
-
- #!/usr/bin/env python
- #coding:utf-8
- #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()
- ##赋予执行权限
- chmod +x dingding.py
- ##创建日志文件:
- touch /var/log/zabbix/dingding.log
- chown zabbix.zabbix /var/log/zabbix/dingding.log
-
- #####安装python与请求模块
- yum -y install python-requests python
-
- #####报警测试,要写三个参数并且带关键字"告警"
- ./dingding.py this is "告警测试,请注意"

创建媒介


添加动作




- 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.115.151/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}

配置报警媒介


停掉192.168.115.151的NGINX


启动NGINX


登录163邮箱



授权码要好好保存
- ##安装邮件服务器,转义
- yum install -y mailx dos2unix
- ##查看版本
- [root@localhost alertscripts]# mail -V
- 12.5 7/5/10
-
-
-
- #####修改配置文件
- vim /etc/mail.rc
- //在此文件末尾添加,指定接收邮件邮箱地址,指定邮箱服务器地址,指定接收邮件邮箱地址的授权码,并非 163 邮箱的密码,而是授权码,登陆 163 网易邮箱地址后,--设置--开启smtp 和 pop3--点击客户端生成授权码--使用此授权码进行指定到此配置文件
-
- set from=mslinux@163.com smtp=smtp.163.com
- set smtp-auth-user=mslinux@163.com smtp-auth-password=上面生成的授权码
- set smtp-auth=login
-
-
- ####发送测试邮件
- echo "test mail from zabbix.server.com"| mail -s "test mail" 17306969189@163.com
来到邮箱查看
- vim /etc/zabbix/zabbix_server.conf
- 查看得到路径 AlertScriptsPath=/usr/lib/zabbix/alertscripts
-
-
- ###写脚本
- cd /usr/lib/zabbix/alertscripts
- vim mail.sh
-
-
- ##编写报警邮件脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATTO0001.bin 的错误;
- #!/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
- #########################################
- bt=$2 sjr=S1 定义发件标题和收件人信息
- FILE=/tmp/mailtmp.txt 定义文件路径
- 使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内
- /usr/bin/dos2unix -k SFILE 容而出现 ATTO0001.bin 的错误
- /bin/mail -s "Sbt""Ssjr" <SFILE 执行邮件发送命令
-
- ##############################
- 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 mslinux@163.com "test mail2" "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}




停掉NGINX服务

启动NGINX服务



