zabbix部署、设置邮件和微信告警

1. Zabbix简介

Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。这些功能使得 Zabbix 成为容量规划的理想选择。
Zabbix 支持主动轮询(polling)和被动捕获(trapping)。Zabbix所有的报表、统计数据和配置参数都可以通过基于 Web 的前端页面进行访问。基于 Web 的前端页面确保您可以在任何地方访问您监控的网络状态和服务器健康状况。适当的配置后,Zabbix 可以在监控 IT 基础设施方面发挥重要作用。无论是对于有少量服务器的小型组织,还是拥有大量服务器的大企业而言,同样适用。
Zabbix 是免费的。Zabbix 是根据 GPL 通用公共许可证的第二版编写和发布的。这意味着产品源代码是免费发布的,可供公共使用。
源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件。

2. 主机信息

主机名 服务 IP
zabbix_server zabbix_server、zabbix_agent、mysql 192.168.1.13
zabbix_agent zabbix_agent 192.168.1.15

3. Zabbix监控服务器安装

在zabbix_server主机上操作:

3.1.配置zabbix的yum源

#rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
在这里插入图片描述
#yum clean all

3.2.安装zabbix-server 和zabbix-agent

yum install zabbix-server-mysql zabbix-agent

3.3.安装zabbix frontend

yum install centos-release-scl

3.4.编辑配置文件

vi /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]

enabled=1

3.5.安装Zabbix frontend包

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

3.6.创建初始数据库

在数据库主机上运行以下代码
#mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@”%” identified by “zabbix”
mysql> exit;

3.7.导入初始架构和数据

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

3.8.为Zabbix server配置数据库

vi /etc/zabbix/zabbix_server.conf 密码为数据库中设置的密码。
DBPassword=Zabbix
DBSocket=/forp/mysql-8.0.23/temp/mysql.sock

3.9.为Zabbix前端配置PHP

vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai

3.10.启动Zabbix server和agent进程

systemctl start zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

3.11.配置Zabbix前端

http://server_ip_or_name/zabbix
zabbix部署、设置邮件和微信告警_第1张图片点击下一步
zabbix部署、设置邮件和微信告警_第2张图片OK表示设置正常,点击下一步。
zabbix部署、设置邮件和微信告警_第3张图片zabbix部署、设置邮件和微信告警_第4张图片zabbix部署、设置邮件和微信告警_第5张图片配置完成。登录,默认的账号和密码是Admin/zabbix
zabbix部署、设置邮件和微信告警_第6张图片设置web页面中文显示
zabbix部署、设置邮件和微信告警_第7张图片

3.12.修改中文乱码问题

点击主机–>图形,会看到有乱码
zabbix部署、设置邮件和微信告警_第8张图片

解决方法
从windows找到楷体字体simkai,搜索楷体即可,windows路径 c盘–>Windows–>Fonts
在zabbix-server上备份zabbix默认字体并且上传新字体
[root@zabbix-server ~]# cd /usr/share/fonts/dejavu/
zabbix部署、设置邮件和微信告警_第9张图片

上传字体,修改名称为DejaVuSans.ttf
[root@zabbix-server dejavu]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix-server dejavu]# mv simkai.ttf DejaVuSans.ttf
注意字体的权限要让zabbix用户可以读
chmod 644 DejaVuSans.ttf

4. zabbix-agent部署

4.1.Linux系统安装客户端

在zabbix_agent主机上操作:

4.1.1.配置zabbix的yum源

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
在这里插入图片描述
yum clean all

4.1.2.安装zabbix-agent

yum -y install zabbix-agent

4.1.3.修改配置文件

vim /etc/zabbix/zabbix_agentd.conf
Server=191.168.1.13 #改成 监控端的ip 被动模式
ServerActive=191.168.1.13 #改成 监控端的ip 主动模式
Hostname=Zabbix server #把这项注释掉
HostnameItem=system.hostname #把这项注释去掉 (自动获取主机名)
启动zabbix_agent服务
systemctl start zabbix-agent
Systemctl enable zabbix-agent

4.1.4.创建要监控的主机zabbix部署、设置邮件和微信告警_第10张图片zabbix部署、设置邮件和微信告警_第11张图片

zabbix部署、设置邮件和微信告警_第12张图片
在这里插入图片描述
ZBX为绿代表正常可监控

4.2.Windows系统安装客户端

在windows客户端执行

4.2.1.下载zabbix-agent安装包

Zabbix下载地址:https://www.zabbix.com/download
在D盘新建zabbix文件夹,将下载好的安装包解压到D盘的zabbix下
在这里插入图片描述

4.2.2.配置zabbix-agent.conf

找到conf下的配置文件 zabbix_agentd.conf ,修改LogFile、Server、ServerActive 、Hostname这几个参数。具体配置如下:
LogFile=D:\zabbix\zabbix_agentd.log
Server=192.168.1.134 #zabbix-server端地址
ServerActive=192.168.1.134:10051 #zabbix-server端地址
#Hostname=Win-server-2016 #注释掉
HostnameItem=system.hostname #去掉注释,自动获取主机名

4.2.3.zabbix-agent 安装

修改好配置文件后,用CMD(需有管理员权限)将Zabbix Agent安装为Windows系统的服务,在windows控制台下执行以下命令:

D:\zabbix\bin\zabbix_agentd.exe -i -c D:\zabbix\conf\zabbix_agentd.conf
控制台输出信息如下,表示安装成功:
zabbix_agentd.exe [4864]: service [Zabbix Agent] installed successfully
zabbix_agentd.exe [4864]: event source [Zabbix Agent] installed successfully

4.2.4.启动zabbix-agent客户端

C:\zabbix\bin\win64\zabbix_agentd.exe -c C:\zabbix\conf\zabbix_agentd.win.conf -s

4.2.5.查看任务管理器

zabbix部署、设置邮件和微信告警_第13张图片

4.2.6.Windows server 系统防火墙开放10050端口

控制面板–windows 防火墙–高级设置–入站规则–新建规则, 详细步骤参考下图:
zabbix部署、设置邮件和微信告警_第14张图片
zabbix部署、设置邮件和微信告警_第15张图片zabbix部署、设置邮件和微信告警_第16张图片zabbix部署、设置邮件和微信告警_第17张图片zabbix部署、设置邮件和微信告警_第18张图片
根据上图步骤,依次添加,完成入站规则的添加

4.2.7.创建要监控的主机

zabbix部署、设置邮件和微信告警_第19张图片zabbix部署、设置邮件和微信告警_第20张图片其中的主机名称和客户端IP请根据实际情况填写。
zabbix部署、设置邮件和微信告警_第21张图片在这里插入图片描述ZBX为绿代表正常可监控。

5. 设置邮件报警

5.1.安装软件修改配置文件

yum -y install mailx
vi /etc/mail.rc
set [email protected]
set smtp=smtp.exmail.qq.com
set [email protected]
set smtp-auth-password=Helper666
set smtp-auth=login

5.2.添加Zabbix服务端邮件发送脚本

cd /usr/lib/zabbix/alertscripts/ 进入脚本存放目录
vi sendmail.sh
#!/bin/sh
echo ‘start’ >> /tmp/zabbix.log
messages=echo $3 | tr '\r\n' '\n'
subject=echo $2 | tr '\r\n' '\n'
echo “ m e s s a g e s " ∣ m a i l − s " {messages}" | mail -s " messages"mails"{subject}” 1 e c h o " 1 echo " 1echo"{messages}" >> /tmp/zabbix.log
echo “end” >> /tmp/zabbix.log
date >> /tmp/zabbix.log
echo ‘-------------’ >> /tmp/zabbix.log
设置脚本所有者为zabbix用户
chown zabbix:zabbix sendmail.sh
设置脚本执行权限
chmod +x sendmail.sh

5.3.添加报警媒介

zabbix部署、设置邮件和微信告警_第22张图片

5.4.添加到用户

zabbix部署、设置邮件和微信告警_第23张图片zabbix部署、设置邮件和微信告警_第24张图片

5.5.创建触发器(添加动作)

zabbix部署、设置邮件和微信告警_第25张图片

6. 配置微信告警功能

6.1.注册微信企业号,配置相关人员和应用

选择“通讯录”,添加一个部门,并新增一个成员,成员添加完之后,成员需关注你注册的企业号。
zabbix部署、设置邮件和微信告警_第26张图片
新建一个zabbix告警的”消息型“应用,如下:
zabbix部署、设置邮件和微信告警_第27张图片zabbix部署、设置邮件和微信告警_第28张图片配置应用的相关权限,让你应用对你的组及成员可见。记录CorpID和Secret的值。

6.2.zabbix配置wechat.py脚本,并测试脚本可用

安装simplejson
#wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz
#tar zxvf simplejson-3.8.2.tar.gz
#cd simplejson-3.8.2
#python setup.py build
#python setup.py install
进入zabbix的脚本目录
#cd /usr/lib/zabbix/alertscripts/
#git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git
#cp Zabbix-Alert-WeChat/wechat.py /usr/lib/zabbix/alertscripts/
#chmod +x wechat.py

6.3.根据注释提示修改脚本

使用之前记录的CorpID和Secret
#!/usr/bin/python
#_coding:utf-8 _

import urllib,urllib2
import json
import sys
import simplejson
reload(sys)
sys.setdefaultencoding(‘utf-8’)
def gettoken(corpid,corpsecret):
gettoken_url = ‘https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=’ + corpid + ‘&corpsecret=’ + corpsecret
print gettoken_url
try:
token_file = urllib2.urlopen(gettoken_url)
except urllib2.HTTPError as e:
print e.code
print e.read().decode(“utf8”)
sys.exit()
token_data = token_file.read().decode(‘utf-8’)
token_json = json.loads(token_data)
token_json.keys()
token = token_json[‘access_token’]
return token
def senddata(access_token,user,subject,content):

send_url = ‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=’ + access_token
send_values = {
“touser”:“weixin”, #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
“toparty”:“2”, #企业号中的部门id。
“msgtype”:“text”, #消息类型。
“agentid”:“1”, #企业号中的应用id。
“text”:{
“content”:subject + ‘\n’ + content
},
“safe”:“0”
}
#send_data = json.dumps(send_values, ensure_ascii=False)
send_data = simplejson.dumps(send_values, ensure_ascii=False).encode(‘utf-8’)
send_request = urllib2.Request(send_url, send_data)
response = json.loads(urllib2.urlopen(send_request).read())
print str(response)

if name == ‘main’:
user = str(sys.argv[1]) #zabbix传过来的第一个参数
subject = str(sys.argv[2]) #zabbix传过来的第二个参数
content = str(sys.argv[3]) #zabbix传过来的第三个参数
corpid = ‘wx55e2936995a90a90’ #CorpID是企业号的标识
corpsecret = ‘CvHI0Jko3qsvv1XkEufWDWSWQj-1a5iuPpw-lcVcFze8yHFgcrBTDSFTFQ6lzPQq’ #corpsecretSecret是管理组凭证密钥
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,subject,content)

6.4.测试脚本是否可用

[root@zabbix-server alertscripts]# ./wechat.py test test message
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ww2b6c88112f22f05a&corpsecret=7E19pTE9QRICouULJ4v2EDItL0u5IqBU0H7xq4ME3SM
{u’invaliduser’: u’admin’, u’errcode’: 0, u’errmsg’: u’ok’}
提示消息发送成功,查看微信消息可看到相关的测试信息:
zabbix部署、设置邮件和微信告警_第29张图片

6.5.zabbix web前端配置微信告警媒介与动作

新增告警媒介,如下:
zabbix部署、设置邮件和微信告警_第30张图片

6.6.创建用户weixin

zabbix部署、设置邮件和微信告警_第31张图片
报警媒介
zabbix部署、设置邮件和微信告警_第32张图片
权限
zabbix部署、设置邮件和微信告警_第33张图片

6.7.添加告警动作

zabbix部署、设置邮件和微信告警_第34张图片zabbix部署、设置邮件和微信告警_第35张图片

6.8.测试微信告警功能

手动停止zabbix-agent上的mysql服务,测试是否会收到消息
zabbix部署、设置邮件和微信告警_第36张图片能收到微信,启动mysql服务后同样能收到告警恢复的消息,表示微信告警功能正常。
zabbix部署、设置邮件和微信告警_第37张图片

7. 使用zabbix 自带key 监控 应用

思路1:通过监测应用的端口是否挂掉来判断该端口对应的应用是否挂掉。
思路2:如果一个进程没有监听端口(即每次服务启动,生成的端口都不固定),则可以直接监测应用的进程,来判断应用有没有挂
以191.168.1.15这台服务器的mysql服务为例:

7.1.思路1 — 通过监控端口方式

配置 —> 主机:191.168.1.15 —> 监控项 —> 创建监控项
zabbix部署、设置邮件和微信告警_第38张图片根据自己需求填写 监控项参数
zabbix部署、设置邮件和微信告警_第39张图片配置 —> 主机: 191.168.1.15 ----> 触发器 ----> 创建触发器
zabbix部署、设置邮件和微信告警_第40张图片

7.2.思路2 — 通过监控进程方式

如果一个进程没有监听端口,则可以使用如下 key
key: proc.num[,,,]
通过某用户执行,某进程状态,进程名称来统计进程的数量
name: 是进程名称(默认“all processes”)
user: 运行该进程的用户名(默认"all user")
state: 进程状态(默认"all"), 可选:run, sleep, zomb
cmdline: 该项内容是模糊匹配,命令行过滤(支持正则表达式)
注:name 匹配可能不是很准,一般根据cmdline来匹配进程
先在zabbix 服务端通过 zabbix_get 测一下(不要在zabbix agent端 使用zabbix_agent 命令去测)
mysql服务关闭后
[root@zabbix_server ~]# zabbix_get -s 191.168.1.15 -k proc.num[,mysql,all,mysql]
0
[root@zabbix_server ~]# zabbix_get -s 191.168.1.15 -k proc.num[,mysql]
0
mysql服务启动后
[root@zabbix_server ~]# zabbix_get -s 191.168.1.15 -k proc.num[,mysql,all,mysql]
1
[root@zabbix_server ~]# zabbix_get -s 191.168.1.15 -k proc.num[,mysql]
1
配置 —> 主机:191.168.1.15 —> 监控项 —> 创建监控项
zabbix部署、设置邮件和微信告警_第41张图片

创建触发器
配置 —> 主机: 191.168.1.15 ----> 触发器 ----> 创建触发器
zabbix部署、设置邮件和微信告警_第42张图片

你可能感兴趣的:(数据库,zabbix,linux)