一、实验准备
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
1. systemctl restart zabbix-agent
在web端添加自定义监控项
验证,使用ssh登录192.168.115.151,让登录用户大于3
五、监控mariadb
1、添加模版查看要求
在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
2、安装mariadb、创建用户
###安装、启动 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'@'%';
3、创建用户文件
vim /etc/zabbix/.my.cnf [client] user='zabbix' password='123456' # #####################
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模块
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。
2、编写脚本、设置key并验证
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
数值获取测试
1. zabbix_get -s 192.168.115.151 -k nginx.active 2. 3. zabbix_get -s 192.168.115.151 -k nginx.reading 4. 5. ####取到数值说明正确
3、添加自定义监控项
创建图形化
七、钉钉报警设置
下载钉钉
参考Zabbix 5.0实现钉钉报警_zabbix5.0设置钉钉告警_杭州吉网运维日记的博客-CSDN博客
1、创建群组、添加机器人
2、配置zabbix server
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 "告警测试,请注意"
3、web端设置
创建媒介
添加动作
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}
配置报警媒介
4、测试报警效果
停掉192.168.115.151的NGINX
启动NGINX
八、邮件报警
登录163邮箱
授权码要好好保存
1、在zabbix-server 上配置邮件服务器
##安装邮件服务器,转义 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
来到邮箱查看
2、编辑 zabbix_server.conf 引用邮件脚本
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"
3、配置 zabbix web 监控项邮件报警
监控--创建报警媒介类型--更新用户使用的报警媒介类型-创建动作(根据发器触发)--验证;
创建动作
邮件主题: 故障:{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}
4、测试
停掉NGINX服务
启动NGINX服务