Zabbix5.0的安装,配置邮件报警和微信报警

5.0版本官网安装步骤

https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&components=server_frontend_agent&db=mysql&ws=nginx

卸载zabbix

先停止服务

systemctl stop zabbix-server zabbix-agent  rh-php72-php-fpm

查找zabbix所有的服务

rpm -qa | grep -i zabbix

会查找到多个服务,依次删除

yum -y remove zabbix-agent-5.0.25-1.el7.x86_64
yum -y remove zabbix-web-mysql-scl-5.0.25-1.el7.noarch
.....

删除zabbix所有的配置以及相关文件

find / -name zabbix 
全部删除,例如
rm -rf /etc/selinux/targeted/active/modules/100/zabbix
rm -rf /etc/zabbix
rm -rf /var/lib/yum/repos/x86_64/7/zabbix

需要更干净一点的话,可以利用模糊搜索

find / -name "*zabbix*"
把显示出来的全部删除

yum安装zabbix5.0

1.关闭selinux

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
grep "SELINUX=disabled" /etc/selinux/config
setenforce 0
getenforce

2.安装必备的软件

yum install lrzsz dos2unix bash-completion nmap telnet tree wget vim net-tools ntpdate salt-minion git -y

3.配置软件的安装源

(1)配置阿里的yum源:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

(2)配置阿里的epel源:

yum install epel-release
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

(3)设置yum和epel源的缓存:

yum clean all
yum makecache

4.修改字符集(可选)

localectl set-locale LANG=zh_CN.UTF-8
source /etc/locale.conf

5.配置zabbix5.0的yum源

安装阿里云的zabbix镜像源:
安装源:

 rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
 sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

启用 zabbix 前端源,修改/etc/yum.repos.d/zabbix.repo,将[zabbix-frontend]下的 enabled 改为 1:

[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1  (这里修改为1)
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

清除yum源之前的缓存:

yum clean all

6.安装zabbix-server、zabbix-agent、zabbix-get

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

7.安装 Software Collections

便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4 过低

yum install centos-release-scl -y

8.安装 zabbix 前端和相关环境

这里可以不安装nginx,用服务器的nginx,不过为了获取nginx配置,可以安装,后面不启动便是

yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y

如果服务器已有nginx这一步可以不安装nginx,后面我会贴出nginx的配置

yum install zabbix-web-mysql-scl  -y

9.创建配置初始数据库

mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zabbix';(设置一个密码)
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

导入初始架构和数据,系统将提示您输入新创建的密码,导入需要一些时间

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

导入结束后

mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

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

vim /etc/zabbix/zabbix_server.conf
找到DBPassword配置 解开注释并设置密码
DBPassword=zabbix (设置的密码)

10.配置php前端

编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
找到listen.acl_users = apache  在后面加上nginx
listen.acl_users = apache,nginx  
修改时区    
; php_value[date.timezone] = Europe/Riga (把这一行设置前的;去掉,并把时区改为Asia/Shanghai)    

配置nginx

nginx配置文件位置 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf

vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
将这两行的注释取消(80端口可以更换未其它,防止冲突)
# listen 80;
# server_name example.com;

不安装 zabbix自带的nginx 使用服务器已有的nginx,添加配置

安装完成后访问前端可视化页面的端口就是你在这里配置的端口

nginx配置

防止端口冲突,这里我用了90端口

server {
        listen          90; 
        server_name     example.com;

        root    /usr/share/zabbix;

        index   index.php;

        location = /favicon.ico {
                log_not_found   off;
        }

        location / {
                try_files       $uri $uri/ =404;
        }

        location /assets {
                access_log      off;
                expires         10d;
        }

        location ~ /\.ht {
                deny            all;
        }

        location ~ /(api\/|conf[^\.]|include|locale|vendor) {
                deny            all;
                return          404;
        }

        location ~ [^/]\.php(/|$) {
                fastcgi_pass    unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;
#                fastcgi_pass    unix:/var/opt/rh/rh-php73/run/php-fpm/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   index.php;

                fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
                fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
                fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;

                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout         60;
                fastcgi_send_timeout            180;
                fastcgi_read_timeout            180;
                fastcgi_buffer_size             128k;
                fastcgi_buffers                 4 256k;
                fastcgi_busy_buffers_size       256k;
                fastcgi_temp_file_write_size    256k;
        }
}

11.启动Zabbix server和agent进程

启动并设置开机自启

安装了zabbix自带的nginx

systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm

和服务器使用同一个nginx的时候

systemctl restart zabbix-server zabbix-agent  rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent  rh-php72-php-fpm

启动后
查看zabbix服务状态
systemctl status zabbix-server
查看zabbix运行日志
tailf /var/log/zabbix/zabbix_server.log

可能遇到的问题
zabbix server报错

查看日志,可能报错

using configuration file: /etc/zabbix/zabbix_server.conf
connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

是因为mysql.sock文件的位置没有设置,解决办法

在系统中查找mysql.sock文件

find / -name mysql.sock
结果:
/tmp/mysql.sock

修改/etc/zabbix/zabbix_server.conf 配置

vim /etc/zabbix/zabbix_server.conf
找到DBSocket,解开注释并设置
DBSocket=/tmp/mysql.sock
php报错

查看日志

systemctl status rh-php72-php-fpm.service
错误信息    
[pool zabbix] cannot get uid for user 'nginx': Success (0)    

解决办法,添加nginx用户

useradd nginx

再次启动,查看状态,成功无报错

访问前端页面报502错误

查看nginx日志发现提示权限不足

我自己的问题是:用宝塔面板安装Nginx时,宝塔在nginx.conf配置文件中设置了

在这里插入图片描述
改为 root root 或者root nginx 都可以解决

在这里插入图片描述

访问zabbix 配置web

第一次访问需要配置 ip:端口号/setup.php

在这里插入图片描述

下一步
这里是检查一下组件,没什么问题,下一步
在这里插入图片描述
这里是填写数据库信息,Database host 默认是localhost ,如果不行的话,试试127.0.0.1
password 就是之前安装zabbix时设置的密码
在这里插入图片描述
name随便起
在这里插入图片描述
下一步

在这里插入图片描述
设置完成,点击Finish
在这里插入图片描述
登录,默认用户名是 Admin A是大写,密码是zabbix 全小写
在这里插入图片描述
设置中文界面,点击左侧 User settings,在Language中选择 zh_CN
在这里插入图片描述
在这里插入图片描述

初始配置完成,再次访问时:

地址是 ip:端口号 就可进入此页面

使用中文页面,在查看数据的时候可能会有乱码问题

解决乱码问题

下载字体

yum -y install wqy-microhei-fonts

覆盖字体

\cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc  /usr/share/fonts/dejavu/DejaVuSans.ttf

zabbix添加自定义监控

zabbix的拓展配置都在 /etc/zabbix/zabbix_agentd.d/ 目录下

如果是客户端使用的是agent2版本,目录是/etc/zabbix/zabbix_agent2.d/

案例:使用zabbix监控 服务器登录用户数量

查看服务器登录用户数量的命令

who | wc -l

在 /etc/zabbix/zabbix_agentd.d/ 目录下创建自定义配置文件

cd /etc/zabbix/zabbix_agentd.d/
vim userparameter_login.conf
写入以下内容
UserParameter=login.user,who|wc -l    

语法解释:UserParameter=<key名>,<要执行的命令或者脚本>

添加完成重启agent

systemctl restart zabbix-agent.service
systemctl status zabbix-agent.service

测试是否生效

zabbix_get -s '127.0.0.1' -p 10050 -k 'login.user'

返回当前在线人数,当agent和server在同一台机器上 需要使用’127.0.0.1’,
如果agent是另外一台机器,则需要将’127.0.0.1’替换成ip地址 端口号默认10050 无需更改

创建自定义监控模板

创建模版

点击左侧配置->模版->右上角创建模板->设置名称->选择群组->添加

在这里插入图片描述
在这里插入图片描述

创建应用集

找到创建好的模版,点击模版->创建应用集->设置名称->点击添加

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建监控项,自定义要监控的内容

点击创建监控项->命名->输入建值(自定义的key值,login.user)->在应用集选择框内选择刚才创建的应用集->描述->添加

在这里插入图片描述
在这里插入图片描述

创建触发器,当监控项获取到值的时候和触发器进行比较,判断是否报警

创建触发器->设置名称->设置问题严重性->添加表达式->选择监控项->功能选择last->结果按需选择,本次案例选择>2

在这里插入图片描述
在这里插入图片描述

表达式

在这里插入图片描述

创建图形这里不就不创建了,

将具体的主机和该模板关联

点击左侧配置->选择主机->选择要关联的主机->点击左上角模板->链接新模板,选择创建好的自定义模板

在这里插入图片描述
在这里插入图片描述

到此已完成自定义模版的配置,测试打开3个服务器窗口

在这里插入图片描述

在这里插入图片描述

成功发出了警告!!

zabbix设置邮件报警

配置发件邮箱

在左侧菜单中点击管理,然后点击报警媒介类型,再点击Email,进入发件人配置,根据自己的情况进行配置,最后不要忘了点击更新

在这里插入图片描述

设置收件邮箱

用户设置->报警媒介->填写收件人信息->更新

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

启用邮件发送

配置->动作->启用发送消息给用户群组

在这里插入图片描述

在这里插入图片描述

不要忘了点更新

在这里插入图片描述

最后应用,完成发送邮件警告配置

在这里插入图片描述

同样测试登录3个用户

成功发送邮件

在这里插入图片描述

接收到的警告邮件

在这里插入图片描述

zabbix设置微信报警

需要提前准备好的数据

企业微信AgentId,企业微信Secret,企业id,部门id,要通知的微信账号xxxxxx

首先登录企业微信管理后台,创建一个测试用的应用

在这里插入图片描述

创建完成,查看Agentid 和Secret

在这里插入图片描述

查看部门id,没有部门的可以自己创建一个部门测试

在这里插入图片描述

查看要通知的微信账号

在这里插入图片描述

在这里插入图片描述

查看企业Id

在这里插入图片描述

以上数据复制保存一下,后面要用

微信报警Python脚本

默认yum安装的zabbix脚本目录是 /usr/lib/zabbix/alertscripts

查看脚本存放位置命令:

egrep -v '^$|^#' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts    #这个目录存放报警脚本.如果位置不对,请移动到正确位置    

在该目录下新建weixin.py 脚本参考:

#!/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":'MaYanPeng',    #通知微信用户帐号
        "toparty":"2",    #部门id。
        "msgtype":"text",
        "agentid":"1000002",    #Agentid。
        "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')
    print(send_data)
    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])
    subject = str(sys.argv[2])
    content = str(sys.argv[3])
    corpid =  '你的企业id'   #企业ID 
    corpsecret = '你的应用secret'  #secret
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content)

脚本创建完后,要进行授权

chmod -R 777 /usr/lib/zabbix/alertscripts  设置目标文件夹和所包含的文件有所有权限

配置报警媒介

在这里插入图片描述

三个参数:

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

在这里插入图片描述

设置一下消息模版,默认是和邮件那样的英文,这里改为中文模板

问题模版

主题:   服务器:{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}

问题恢复模版

主题:    服务器:{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}

在这里插入图片描述

测试一下我们的脚本是否可以正常工作

在这里插入图片描述

我这里提示 找不到模块 simplejson

安装simplejson

pip install simplejson

这里还有一点忘记说了,还需要在企业微信中设置一个ip白名单,否则无法调用微信的api

在这里插入图片描述

再次测试,成功接收到了消息

继续配置

经过测试.这里的收件人填微信账号或者agentid都可以

在这里插入图片描述

在这里插入图片描述

和之前的邮件报警一样,我们在服务器登录3个用户,触发报警

在这里插入图片描述

成功发送了微信报警

在这里插入图片描述

退出一个用户,问题恢复通知

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值