zabbix监控服务架构模型
安装部署zabbix监控架构
部署环境:
系统:Centos7
web应用:Nginx
php 72
mariadb
安装部署服务端
配置源
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 -y
单独配置前端源,并安装
yum install centos-release-scl -y
# 修改/etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
enabled=1
# 安装前端包
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
准备数据库环境
安装数据库mysql或mariadb
yum install mariadb-server -y
systemctl start mariadb-server
创建zabbix业务库
te database zabbix character set utf8 collate utf8_bin;
授权zabbix用户
grant all on zabbix.* to zabbix@localhost identified by ‘zabbix’;
导入初始化数据
zcat /usr/share/doc/zabbix-server-mysql-5.0.13/create.sql.gz > zabbix.sql
在zabbix.sql首行添加use zabbix;
mysql -uzabbix -pzabbix <zabbix.sql< div=””>
配置服务端环境
配置zabbix_server连接数据库
vim /etc/zabbix/zabbix_server.conf
DBUser=zabbix
DBpasswd=zabbix
配置Nginx
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server_name ip;(IP可以不填只用默认的)
listen 8080;(端口好要更改,不然会有冲突的风险)
配置php
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
重启服务
systemctl start zabbix-server zabbix-agent rh-nginx116-nginx.service rh-php72-php-fpm.service
在浏览器访问当前部署的机子的ip:端口号地址即可开始网页安装部署zabbix
添加自定义监控项
当前用户连接数量
首先更改zabbix-agent配置文件
UserParameter=User_num,who |wc -l;{(User_num是键值)键值后面接的命令而不是shell脚本}
在zabbix-agent.d,目录下创建一个key(键值)脚本
vm User_num.sh
UserParameter=User_num,who |wc -l;
然后重启zabix-agent 服务
systemctl stop zabbix-agent
systemctl start zabbix-agent
后在zabbix web前端添加自定义监控项
配置邮件告警
设置邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务密码
配置钉钉告警
准备一个钉钉机器人
添加机器人之后将webhook地址保留
在服务器上编写脚本
cd /usr/lib/zabbix/alertscripts
vim dingding.py
#!/usr/bin/python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook=”https://oapi.dingtalk.com/robot/send?access_token=6c68c760e9864fbeead97ca49ce118871796ec794480e98f67f2bf842f0273f2” #说明:这里改为自己创建的机器人的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(“/tmp/dingding.log”):
f=open(“/tmp/dingding.log”,”a+”)
else:
f=open(“/tmp/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()
测试一下脚本
脚本执行成功
zabbix-server web端设置
参数:1.{ALERT.SENDTO} 2. {ALERT.SENDTO}3. {ALERT.MESSAGE}
主题: 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME} 故障!
内容: 告警主机: {HOSTNAME1}
主机地址: {HOST.IP}
告警等级: {TRIGGER.SEVERITY}
监控项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
告警信息: {TRIGGER.NAME}
告警时间: {EVENT.DATE} {EVENT.TIME}
事件ID: {EVENT.ID}
恢复操作
更新操作
添加用户权限
原创文章,作者:端木书台,如若转载,请注明出处:https://blog.ytso.com/272228.html