nginx部署zabbix

关闭防火墙

systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

安装Zabbix存储库

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all

安装 Zabbix server and agent

yum install zabbix-server-mysql zabbix-agent -y
yum install centos-release-scl -y

编辑配置文件 /etc/yum.repos.d/zabbix.repo 并启用zabbix前端存储库

sed -i "11s/enabled=0/enabled=1/" /etc/yum.repos.d/zabbix.repo

安装Zabbix前端软件包

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

安装数据库并设置开机自启

yum -y install mariadb-server
systemctl start mariadb && systemctl enable mariadb

初始化数据库

[root@localhost ~]# mysql_secure_installation

回车

出现Set root password? [Y/n] 提示:输出Y,并设置密码

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] n

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

创建数据库,用户,允许用户远程登录

mysql -uroot -p'密码'

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '123456';
grant all privileges on zabbix.* to zabbix@'%';
flush privileges;
\q;

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

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

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

sed -i "s/# DBPassword=.*/DBPassword=123456/" /etc/zabbix/zabbix_server.conf

编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf, 添加nginx进行监听,然后取消注释并设置正确的时区

sed -i "s/listen.acl_users = apache/listen.acl_users = apache,nginx/" /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
echo 'php_value[date.timezone] = Asia/Shanghai' >> /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

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

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

停止rh-nginx116-nginx

systemctl stop rh-nginx116-nginx 

验证80端口还在不在,如果不在就可以安装nginx了

netstat -lnpt |grep 80
bash <(curl -sSL https://gitee.com/xbd666/qingfeng/raw/dev/new-toolbox.sh)		#下载nginx

将 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf目录下的配置文件复制到nginx/conf.d目录下,创建代理文件

cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf  /etc/nginx/conf.d/zabbix.conf
vim zabbix.conf				# 修改2处位置
server {
        listen          80;				# 定义要监听的端口,可以自定义,尽量别用80,容易冲突
        server_name     192.168.0.253;		# 更改为本机的IP地址

        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;
        }
}

重启服务

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

访问地址

本机的IP+端口
默认 用户: Admin 密码:zabbix

agent端配置

关闭防火墙

systemctl stop firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

安装zabbix--agent端

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent zabbix-sender -y
cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak

定义配置文件

vim /etc/zabbix/zabbix_agentd.conf
server=127.0.0.1			# 写server端的IP
ServerActive=127.0.0.1		# 写server端的IP
Hostname=test		# 定义被监控端的名字
UnsafeUserParameters=0		# 改为UnsafeUserParameters=1

启动

systemctl start zabbix-agent && systemctl enable zabbix-agent

此时可以去web页面去配置了

zabbix报警飞书机器人

飞书PC端==>>创建群组
打开群组设置==>>添加“自定义机器人”
设置机器人名称、描述,复制保存生成的webhook地址

创建飞书脚本文件

登录zabbix服务器,进入到/usr/lib/zabbix/alertscripts/目录,新建feishu.py文件。

vi /usr/lib/zabbix/alertscripts/feishu.py
添加以下内容:
#!/usr/bin/python3
import requests
import json
import sys
import os
import datetime

url = "webhook地址" #你复制的webhook地址粘贴进url内


def send_message(message):
    payload_message = {
        "msg_type": "text",
        "content": {
            "text": message
        }
    }
    headers = {
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=json.dumps(payload_message))
    return response


if __name__ == '__main__':
    text = sys.argv[1]
    send_message(text)

添加执行权限

chmod +x /usr/lib/zabbix/alertscripts/feishu.py

添加zabbix报警媒介

创建报警媒介类型,参数添加:{ALERT.MESSAGE}
用户内添加报警媒介
根据需求配置需要告警的级别
添加完成后点击更新

名称:feishu                   #名称任意
类型:脚本
脚本名称:feishu.py      
脚本参数: {ALERT.MESSAGE}     #一定要写,否则可能发送不成功

创建动作并配置

配置--创建动作--操作(设置通知用户,触发的脚本名称,消息内容)·
报警脚本:

异常通知: {EVENT.NAME}

告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY} 
告警信息:{EVENT.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}
恢复操作脚本:

恢复通知: {EVENT.NAME}

告警主机:{HOSTNAME1}
告警时间:{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY} 
告警信息:{EVENT.NAME} 
告警项目:{TRIGGER.KEY1} 
问题详情:{ITEM.NAME}:{ITEM.VALUE} 
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 
事件ID:{EVENT.ID}

点击保存即可

告警媒介测试,及常见错误处理

测试告警媒介

没问题就可以在 配置--主机-- 触发器里配置了

常见错误:

1.python3路径错误

feishu.py脚本的第一句配置的python3路径不对需要手动重新手动指定

找到当前系统python3的路径替换feishu.py脚本中的第一行#!/usr/bin/python3

[root@Zabbix alertscripts]# whereis python3
python3: /usr/local/bin/python3.8 /usr/local/bin/python3.8-config /usr/local/bin/python3 /usr/local/lib/python3.8

2.python3环境没有安装requests模块,使用pip3安装requests模块

[root@Zabbix alertscripts]# pip3 install requests