nginx部署zabbix
关闭防火墙
1 2 3
| systemctl stop firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
|
安装Zabbix存储库
1 2
| 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
1 2
| yum install zabbix-server-mysql zabbix-agent -y yum install centos-release-scl -y
|
编辑配置文件 /etc/yum.repos.d/zabbix.repo 并启用zabbix前端存储库
1
| sed -i "11s/enabled=0/enabled=1/" /etc/yum.repos.d/zabbix.repo
|
安装Zabbix前端软件包
1
| yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl
|
安装数据库并设置开机自启
1 2
| yum -y install mariadb-server systemctl start mariadb && systemctl enable mariadb
|
初始化数据库
1 2 3 4 5 6 7 8 9 10 11 12 13
| [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
|
创建数据库,用户,允许用户远程登录
1 2 3 4 5 6 7
| 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;
|
导入初始架构和数据,系统将提示您输入新创建的密码
1
| zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'123456' zabbix
|
为Zabbix server配置数据库,编辑配置文件 /etc/zabbix/zabbix_server.conf
1
| sed -i "s/# DBPassword=.*/DBPassword=123456/" /etc/zabbix/zabbix_server.conf
|
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf, 添加nginx进行监听,然后取消注释并设置正确的时区
1 2
| 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进程,并为它们设置开机自启
1 2
| 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
1
| systemctl stop rh-nginx116-nginx
|
验证80端口还在不在,如果不在就可以安装nginx了
1 2
| netstat -lnpt |grep 80 bash <(curl -sSL https://gitee.com/xbd666/qingfeng/raw/dev/new-toolbox.sh)
|
将 /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf目录下的配置文件复制到nginx/conf.d目录下,创建代理文件
1
| cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf /etc/nginx/conf.d/zabbix.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| vim zabbix.conf server { listen 80; server_name 192.168.0.253;
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_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; } }
|
重启服务
1 2
| systemctl restart nginx systemctl restart zabbix-server zabbix-agent rh-php72-php-fpm
|
访问地址
本机的IP+端口
默认 用户: Admin 密码:zabbix
agent端配置
关闭防火墙
1 2 3
| systemctl stop firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
|
安装zabbix–agent端
1 2 3
| 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
|
定义配置文件
1 2 3 4 5
| 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
|
启动
1
| systemctl start zabbix-agent && systemctl enable zabbix-agent
|
此时可以去web页面去配置了
zabbix报警飞书机器人
1 2 3
| 飞书PC端==>>创建群组 打开群组设置==>>添加“自定义机器人” 设置机器人名称、描述,复制保存生成的webhook地址
|
创建飞书脚本文件
登录zabbix服务器,进入到/usr/lib/zabbix/alertscripts/目录,新建feishu.py文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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)
|
添加执行权限
1
| chmod +x /usr/lib/zabbix/alertscripts/feishu.py
|
添加zabbix报警媒介
1 2 3 4 5 6 7 8 9
| 创建报警媒介类型,参数添加:{ALERT.MESSAGE} 用户内添加报警媒介 根据需求配置需要告警的级别 添加完成后点击更新
名称:feishu 类型:脚本 脚本名称:feishu.py 脚本参数: {ALERT.MESSAGE}
|
创建动作并配置
1 2 3 4 5 6 7 8 9 10 11 12
| 报警脚本:
异常通知: {EVENT.NAME}
告警主机:{HOSTNAME1} 告警时间:{EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息:{EVENT.NAME} 告警项目:{TRIGGER.KEY1} 问题详情:{ITEM.NAME}:{ITEM.VALUE} 当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1} 事件ID:{EVENT.ID}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 恢复操作脚本:
恢复通知: {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
1 2
| [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模块
1
| [root@Zabbix alertscripts]# pip3 install requests
|