CentOS7下部署zabbix+Grafana+使用自定义脚本监控并报警到微信&邮件

1.安装zabbix服务端

3.4的源

rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

b. 安装Zabbix server,Web前端,agent

 

yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y

 

c.安装mariadb数据库(设置开机启动)

yum install -y mariadb-server #更新MARIABD数据库

systemctl start mariadb.service #启动

systemctl enable mariadb.service #设置开机启动

d. 创建初始数据库

mysql -uroot -p

password 回车

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to [email protected] identified by 'password';

mysql> quit;

e.入初始架构和数据,系统将提示您输入新创建的密码

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

或者导入自建的数据库

gunzip create.sql.gz

MariaDB [(none)]> use zabbix;

source /data/zabbix.sql

f.为Zabbix server配置数据库 编辑配置文件 /etc/zabbix/zabbix_server.conf

DBPassword=password

g.为Zabbix前端配置PHP 编辑配置文件 /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai

httpd端口改成8001

vim /etc/httpd/conf/httpd.conf 

Listen 8001

h.启动Zabbix server和agent进程 启动Zabbix server和agent进程,并为它们设置开机自启:

systemctl restart zabbix-server zabbix-agent httpd

systemctl enable zabbix-server zabbix-agent httpd

i.配置Zabbix前端

连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix

 

 

2、客户端安装:

rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm

yum clean all

 a.安装agent

yum install -y zabbix-agent

#更改zabbix-agent配置文件

host_ip=$(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")

sed -i "s/Server=127.0.0.1/Server=x.x.x.x/g" /etc/zabbix/zabbix_agentd.conf

sed -i "s/ServerActive=127.0.0.1/ServerActive=x.x.x.x/g" /etc/zabbix/zabbix_agentd.conf

sed -i "s/Hostname=Zabbix server/Hostname=$host_ip/g" /etc/zabbix/zabbix_agentd.conf

systemctl start zabbix-agent

systemctl enable zabbix-agent

 

3.微信报警

安装邮件传送代理MTA自带的postfix

yum -y install postfix

systemctl start postfix

systemctl enable postfix

拷贝weixin.py到alertscripts下授权

chmod 777 /usr/lib/zabbix/alertscripts/weixin.py

注意:格式和PIP版本

yum install dos2unix -y

dos2unix weixin.py

#安装pip 微信python依赖 需要升级到20.X.X

yum -y install epel-release

yum -y install python-pip

pip --version

pip install --upgrade pip

pip install requests

 

微信企业号申请(不会的百度)

地址: http://work.weixin.qq.com/

corpid='xxxxxxxxxxxxxx'
appsecret='xxxxxxxxxxxxxxxxxxxxxxxx'
agentid=1xxxxxxxxx

#微信脚本

 cat weixin.py 
#!/usr/bin/env 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('/tmp','weixin.log'),
filemode = 'a')

corpid='xxxxxxxxxxxxxx'
appsecret='xxxxxxxxxxxxxxxxxxxxxxxx'
agentid=1xxxxxxxxx
#获取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[2] + "\n\n" +sys.argv[3]

params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)[roo

报警WEB配置微信报警(邮件报警同理)

配置媒介报警:

参数:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

#配置动作

故障:

故障{TRIGGER.STATUS},服务器名:{HOSTNAME1}发生: {TRIGGER.NAME}故障!

项目名称:xxxxxx

告警主机:{HOSTNAME}

告警主机IP地址:{HOST.IP}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

恢复:

恢复{TRIGGER.STATUS}, 服务器名:{HOSTNAME1}: {TRIGGER.NAME}已恢复!

项目名称:xxxxxx

告警主机:{HOSTNAME}

告警主机IP地址:{HOST.IP}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

 

报警结果:

#安装grafana

yum install https://dl.grafana.com/oss/release/grafana-6.3.6-1.x86_64.rpm

systemctl start grafana-server

systemctl enable grafana-server

#zabbix插件

grafana-cli工具从命令行安装Zabbix :

grafana-cli plugins install alexanderzobnin-zabbix-app

#nginx反向代理grafana

add_header X-Frame-Options ALLOWALL;

location /grafana {

root html;

index index.html index.htm;

add_header 'Access-Control-Allow-Origin' '*';

add_header Access-Control-Allow-Methods GET,POST,OPTIONS,DELETE;

add_header 'Access-Control-Allow-Headers' 'userId,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

proxy_pass http://x.x.x.x:3000;

rewrite ^/grafana/(.*) /$1 break;

proxy_set_header Host $host;

}

 

vi /usr/share/grafana/conf/default.ini

root_url=%(protocol)s://%(domain)s:%(http_port)s/grafana

#展示