zabbix4.0部署
主机名 | IP地址 | 角色 |
---|---|---|
server01 | 172.16.31.217 | nginx(反向代理) |
server02 | 172.16.31.218 | zabbix |
搭建LNMP环境
yum install -y httpd php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash
安装MySQL
#上传mysql-5.7.28-linux-glibc2.12-x86_64.tar install_mysql至/usr/local/src
vim /usr/local/src/install_mysql #修改MySQL密码
ROOT_PASS="Anji@Yanji2023"
chmod +x install_mysql #脚本授权
sh install_mysql
编辑httpd配置文件
vi /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.php # 添加首页支持格式
配置php.ini
vi /etc/php.ini
date.timezone = Asia/Shanghai # 配置时区
启动nginx
systemctl start nginx #启动httpd
systemctl enable nginx #开机自启
测试LNMP是否搭建成功
#创建一个测试页
vi /var/www/html/index.php
<?php
phpinfo()
?>
#访问网页出现PHP界面即可
curl 127.0.0.1 -l #返回码200表示成功
创建zabbix用户
CREATE DATABASE zabbix character set utf8 collate utf8_bin; #创建zabbix数据库
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix'; #授予zabbix用户zabbix数据库的所有权限
flush privileges; #刷新权限
quit #退出数据库
测试zabbix用户是否能够登陆数据库
vi /var/www/html/index.php #修改测试页内容,测试zabbix用户是否能够登陆数据库
<?php
$link=mysql_connect('172.16.31.218','zabbix','zabbix');
if($link) echo "<h1>Success!!</h1>"; #显示Success表示连接数据库成功
else echo "Fail!!";
mysql_close();
?>
curl 127.0.0.1 -l
安装zabbix
#安装依赖包 + 组件
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel libevent devel.x86_64 javacc.noarch javacc-javadoc.noarch javacc-maven-plugin.noarch javacc*
yum install php-bcmath php-mbstring -y #安装php支持zabbix组件
yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent-y #安装zabbix组件
导入zabbix数据库
cd /usr/share/doc/zabbix-mysql
zcat create.sql.gz | mysql -uzabbix -h 172.16.31.218 -p #导入数据到数据库zabbix中
编辑zabbix_server.conf
vim /etc/zabbix/zabbix_server.conf #将DBPassword=修改成DBPassword=zabbix
编辑zabbix.conf
vi /etc/httpd/conf.d/zabbix.conf #修改时区
#将php_value date.timezone Europe/Riga 变更成php_value date.timezone Asia/Shanghai
启动zabbix
systemctl start zabbix-server #启动服务
systemctl enable zabbix-server #开机自启
curl 127.0.0.1/zabbix -l
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://127.0.0.1/zabbix/">here</a>.</p>
</body></html>
#启动成功
配置nginx反向代理
#217服务器配置
server {
listen 80 default_server;
server_name _;
location /zabbix/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://172.16.31.218;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
systemctl restart nginx #重启nginx服务
#网页访问成功即可
配置告警
企业微信告警
#修改alertscripts位置
vim /etc/zabbix_server.conf
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
cd /usr/local/zabbix/share/zabbix/alertscripts
#企业微信应用告警脚本
vim weixin.py
#!/usr/bin/python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/usr/local/zabbix/share/zabbix/alertscripts/','weixin.log'),
filemode = 'a')
corpid='ww5cab42489e63838d' #企业ID
appsecret='2Agfo9zZWmdce_cVZFiUzXBgkzSaRejTnW__GfyKmg8' #secret
agentid=1000139 #AgentID
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[3]
params={
"touser": touser,
"toparty": 940,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params,ensure_ascii=False))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
#脚本授权
chmod +x weixin.py 注:执行脚本会自动生成weixin.log文件,将weixin.log属主属组改为zabbix_server启动用户
chown -R zabbix:zabbix weixin.log
./weixin.py xxxx test test #测试能否发送消息
#企微群聊机器人告警脚本
vim wx_webhook.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=c956f720-6c96-4bd0-ae3c-e2316d931683" #群聊机器人webhook地址
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[2] + "\n" + sys.argv[3]
msg(text)
#授权脚本
chmod +x wx_webhook.py
./wx_webhook.py xxxx test test #测试是否能发送消息
企业微信告警web配置
web端配置:
管理>报警媒介类型 创建报警媒介类型
名称 wechat
类型 脚本
脚本名称 wechat.py
脚本参数 {ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
管理>用户 点击Admin用户>报警媒介 添加报警媒介,类型选择wechat。