centos7 部署zabbix+nginx版本5.0 版本
zabbix介绍:
Zabbix介绍:
Zabbix是一款开源免费,能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。这些功能使得Zabbix成为容量规划的理想方案。
Zabbix 5.0 版本于 5 月 11 日正式发布,是最新的 LTS(长期支持)版本,5.0 带来很多功能和特性,详细见官方文档。
一.需要需改的配置文件有:
1. vi /etc/yum.repos.d/zabbix.repo zabbix源
2. vi /etc/zabbix/zabbix_server.conf zabbix服务端配置文件
3. vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf zabbix前端参数
4. vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf naginx配置
报错查看日志文件:
1. nginx日志文件: /var/opt/rh/rh-nginx116/log/nginx/error.log
2. 启动日志: /var/log/zabbix/zabbix_server.log
二. 配置zabbix源
1.rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
2. yum clean all
二. 安装zabbix各组件
需要安装:
zabbix-server-mysql zabbix-agent zabbix-get
1. yum -y install zabbix-server-mysql zabbix-agent zabbix-get
三. 安装zabbix前端组件
1. yum -y install centos-release-scl #安装zabbix前端yum源
2. 此处配置: vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
enabled=1 #开启zabbix-frontend源改为1
3. 安装
yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl
四. 安装及配置mysql数据库
mysql 下载地址: http://repo.mysql.com/mysql-community-release-el5-7.noarch.rpm 1. wget http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm 2. rpm -ivh mysql-community-release-el6-5.noarch.rpm 3. yum install -y mysql-community-server 注:数据库优化 mysql_secure_installation 回车 n 一路y 1. y1 提醒输入当前密码 n/y 2. y2 要不要设置root密码 n/y 3. y3 移除弥明用户 n/y 4. y4禁止root远程登录 n/y 5. 移除test库和访问它的方法 n/y 6. 重载权限表 n/y 六. 创建zabbix库: mysql -e 'create database zabbix character set utf8 collate utf8_bin;' 授权所有权限: grant all on zabbix.* to zabbix@localhost identified by "zabbix"; grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; 赋予本地用户zabbix对数据库操作的所有权限 grant all privileges on *.* to 'zabbix'@'localhost' identified by 'zabbix'; flush privileges; 七. 导入sql文件不知道在哪儿搜一下 rpm -ql zabbix-server-mysql |grep sql 八. 导入zabbix表结构和初始数据 zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |mysql -uzabbix -pzabbix zabbix 检测是否导入成功: mysql zabbix -pzabbix -e 'show tables'; 或者安装mariadb yum -y install mariadb mariadb-server systemctl start mariadb systemctl status mariadb 登录之前操作: mysql_secure_installation 数据库初始化详见“docker_mariadb/mysql安全策略” 此时直接输入命令:mysql即可登录 root登录之后操作: 创建远程登录用户: GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; 修改数据库密码: SET PASSWORD FOR root@'localhost' = password('...'); mysqladmin -u root password '....' mysqladmin -u root -p '123456' password '....' 授权本地zabbix用户操作数据库所有权限: grant all on zabbix.* to zabbix@localhost identified by "zabbix"; 对单独库的权限: grant all privileges on zabbix.* to zabbix@localhost; 创建数据库字符utf-8: create database zabbix character set utf8 collate utf8_bin; 刷新: flush privileges; 此处可做个安装策略 #mariadb:/etc/mysql/my.cnf 安全策略插件配置 #数据库密码:... 账户:... ip:10.0.0.11 #密码复杂度插件 plugin_load_add = simple_password_check.so #启动服务加载插件 simple_password_check = FORCE_PLUS_PERMANENT #防止插件在运行过程中被卸载 ### 审计 ### plugin-load-add = server_audit.so #启动服务加载此插件 server_audit_logging = ON #开启日志记录,默认是关闭 server_audit = FORCE_PLUS_PERMANENT #防止插件被卸载 server_audit_file_path = server_audit.log #定义审计日志文件名 server_audit_file_rotate_now = OFF #是否强制切割审计日志 server_audit_file_rotate_size = 1073741824 #定义切割审计日志的文件大小1073741824=1GB server_audit_file_rotations = 9 #定义审计日志的轮询个数,0为不轮询 server_audit_events = 'connect,query,table' #日志记录的操作 server_audit_events = 'query_ddl,query_dml' #不记录select查询操作,只记录增删改、DDL操作 server_audit_incl_users = 'gegewu,root' #审计的用户对象,不设置则针对所有用户 #mysql社区版:/etc/mysql/my.cnf 安全策略插件配置 #数据库密码:... 账户: ... ip:10.0.0.10 [mysqld] plugin-load-add = validate_password.so #服务器在启动时加载插件,并防止在服务器运行时删除插件。 validate-password = FORCE_PLUS_PERMANENT #并防止在服务器运行时删除插件 validate_password_policy= 2 #密码安全度等级2 ###安全策略密码检查延迟### plugin-load-add = connection_control.so #在启动时加载插件 connection-control = FORCE_PLUS_PERMANENT #并防止它们在运行时被删除 connection-control-failed-login-attempts = FORCE_PLUS_PERMANENT #并防止它们在运行时被删除 connection_control_min_connection_delay = 60000 #最小延迟时间 connection_control_max_connection_delay = 86400 #最大延迟时间 connection_control_failed_connections_threshold = 3 #延迟时间触发输错密码次数
.导入zabbix数据表结构
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pzabbix zabbix
五. zabbix-server配置
1.cd /etc/zabbix/ 2.cp zabbix_server.conf{,.bak} 3.vim zabbix_server.conf 参考以下内容进行修改,主要修改数据库连接参数 DBHost=localhost #数据库主机 DBName=zabbix #数据库实例名称 DBUser=zabbix #连接数据库时的用户 DBPassword=password #用户的密码 [root@zabbix5 zabbix]# grep -E "^[[:alpha:]]+" zabbix_server.conf
七. 启动zabbix-server
systemctl start zabbix-server
systemctl enable zabbix-server
tail -20 /var/log/zabbix/zabbix_server.log #查看启动日志
报错:此时报错正常因为nginx还没配置
另外一种报错:意为启动日志出现报错连接数据库失败
解决办法:
[root@zabbix5 zabbix]# getenforce
Enforcing
#SELinux正在运行中,我们临时关闭它
[root@zabbix5 zabbix]# setenforce 0
#重启zabbix-server,并查看启动日志
[root@zabbix5 zabbix]# systemctl restart zabbix-server
[root@zabbix5 zabbix]# tail -70 /var/log/zabbix/zabbix_server.log
此时
zabbix-server成功启动,检查端口是否监听 netstat -lntup | grep 10051
成功--------------------->
八. 配置zabbix前端参数
1. cp /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf{,.bak} #备份 2. vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf 3.; php_value[date.timezone] = Europe/Riga --> php_value[date.timezone] = Asia/Shanghai 注: 下方操作改为ngix会出现问题 解决办法如下 vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf user = apache --> user = nginx group = apache --> group = nginx listen.acl_users = apache --> listen.acl_users = nginx
修改php属主属组(默认为apache,现在需要修改为nginx)此操作为错误的:--------------->
解决:查看一下php配置文件
再对比官方部署文档中php的配置,人家只需要修改一次地方,把原来的补回去
重启php-fpm服务,浏览器再次打开页面看一下
改回来-------------->
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
九. Nginx配置
cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf{,.bak}
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
取消listen已及server_name的注释,并修改server_name为服务器IP地址或域名
#server_name example.com; --> server_name 192.168.1.100;
十. 启动各个服务
5.0版本的前端与php启动名称改变了,前端是:rh-nginx116-nginx,php是rh-php72-php-fpm
[root@zabbix5 zabbix]# systemctl start zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
[root@zabbix5 zabbix]# systemctl enable zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
十一、浏览器初始化zabbix-web
#如果服务器防火墙开启可以使用以下命令开放TCP80端口
[root@zabbix5 zabbix]# firewall-cmd --permanent --add-port=80/tcp
[root@zabbix5 zabbix]# firewall-cmd --reload
浏览器打开:http://IP/
http://10.0.0.11/setup.php
systemctl restart rh-php72-php-fpm
成功.---------------------------------------->
十二.Web可视化界面配置------------------------------------------------>
OK,初始化界面出来了,我们点击下一步
检查各个组件的版本要求以及配置是否符合(需要注意一点的是:zabbix5.0版本,PHP需要7.2以上版本才行)
设置数据库连接参数
zabbix-server的一些主机名设置,默认就好
摘要信息,直接下一步
自动搭建脚本:
#!/bin/bash #版本1.0_zabbix+nginx版本 welcome() { cat <<EOF 需要需改的配置文件有: 1. vi /etc/yum.repos.d/zabbix.repo zabbix源 2. vi /etc/zabbix/zabbix_server.conf zabbix服务端配置文件 3. vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf zabbix前端参数 4. vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf naginx配置 报错查看日志文件: 1. nginx日志文件: /var/opt/rh/rh-nginx116/log/nginx/error.log 2. 启动日志: /var/log/zabbix/zabbix_server.log EOF } start() { echo "启动前安装命令" yum install -y vim wget netstat echo "配置zabbix5.0源" wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm \ && yum clean all && yum makecache [ $? = 0 ] && echo "配置源成功" || echo "配置源失败" #优化:rpm -ql zabbix-release 找出源位置:/etc/yum.repos.d/zabbix.repo 替换为国内源 \ #%s#http://repo.zabbix.com#https://mirrors.tuna.tsinghua.edu.cn/zabbix#g echo "安装zabbix各组件:zabbix-server-mysql zabbix-agent zabbix-get" yum -y install zabbix-server-mysql zabbix-agent zabbix-get [ $? = 0 ] && echo "安装成功" || echo "安装失败" echo "安装zabbix前端yum源" yum -y install centos-release-scl [ $? = 0 ] && echo "安装成功" || echo "安装失败" echo "开启zabbix-frontend源 将[zabbix-frontend]下的 enabled 改为 1" vi /etc/yum.repos.d/zabbix.repo echo "安装zabbix前端组件:zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl" yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-deps-scl [ $? = 0 ] && echo "安装成功" || echo "安装失败" } start1() { echo "安装mariadb数据库" yum -y install mariadb mariadb-server systemctl start mariadb mariadb_mysql=`systemctl status mariadb |awk -F'[ :]+' 'NR==3{print $3$4}'` if [ "mariadb_mysql" = "active(running)" ];then echo "数据库成功启动" echo "登录数据库输入以下命令: \n 1. GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION; \n 2. create database zabbix character set utf8 collate utf8_bin; \n 3. SET PASSWORD FOR root@'localhost' = password('passwd'); \n 4. grant all on zabbix.* to zabbix@localhost identified by "passwd"; \n 5. grant all privileges on zabbix.* to zabbix@localhost; \n 6. flush privileges; " mysql -uroot zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |mysql -uzabbix -ppasswd zabbix else echo "mariadb启动失败" fi } start2() { echo "配置zabbix-server" cp /etc/zabbix/zabbix_server.conf{,.bak} echo "交互式界面自行更改: \n DBHost=localhost #数据库主机 \n DBName=zabbix #数据库实例名称 \n DBUser=zabbix #连接数据库时的用户 \n DBPassword=zabbix #用户的密码" vim /etc/zabbix/zabbix_server.conf gengai=`grep -E "^[[:alpha:]]+" /etc/zabbix/zabbix_server.conf` echo "更改内容为${genggai} 下面临时关闭selinux 并启动服务 zabbix-server" setenforce 0 && systemctl start zabbix-server && systemctl enable zabbix-server #echo "永久关闭为:vi /etc/selinux/config SELINUX=disabled 修改apache端口为:vi /etc/httpd/conf/httpd.conf" } start3() { echo "配置zabbix前端参数" cp /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf{,.bak} echo "更改内容为: \n Europe/Riga --> php_value[date.timezone] = Asia/Shanghai \n listen.acl_users = apache --> listen.acl_users = apache,nginx" vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf } start4() { echo "配置nginx参数" cp /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf{,.bak} echo "1. 取消listen已经server_name的注释 \n 2. 修改server_name为服务器IP地址或域名 \n 3. #server_name example.com; --> server_name 本机ip;" vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf firewall-cmd --permanent --add-port=80/tcp && firewall-cmd --reload } start5() { host_ip=`hostname -I|awk '{print $1}'`/setup.php echo "启动各个服务:rh-nginx116-nginx,php是rh-php72-php-fpm" systemctl restart zabbix-agent rh-nginx116-nginx rh-php72-php-fpm zabbix-server \ && systemctl enable zabbix-agent rh-nginx116-nginx rh-php72-php-fpm [ $? = 0 ] && echo "启动成功服务搭建成功 浏览器访问http://${host_ip}" || echo "启动失败" echo "查询服务端口" ss -ntulp |grep 80 && ss -ant |grep 10051 } main() { welcome start start1 start2 start3 start4 start5 } main 部署zabbix web端与mysql分离: '只需要更改zabbix服务端配置文件: 1. 文件路径: /etc/zabbix/zabbix_server.conf '' 2. 更改内容: ' LogFile=/var/log/zabbix/zabbix_server.log LogFileSize=0 PidFile=/var/run/zabbix/zabbix_server.pid SocketDir=/var/run/zabbix ' DBHost=10.0.0.11 DBName=zabbix 'DBUser=gegewu DBPassword=qw123321 SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=4 AlertScriptsPath=/usr/lib/zabbix/alertscripts ExternalScripts=/usr/lib/zabbix/externalscripts LogSlowQueries=3000 StatsAllowedIP=127.0.0.1 注:部署zabbix web端与mysql分离时(即mysql and zabbix-server 在不同的服务器上时)可能会web端出现报错: 1. Zabbix server is running no localhost:10051 即服务器不在线 (报错1) 此时远端mysql服务器需要操作: 1. cat /var/log/zabbix/zabbix_server.log 查看启动日志 2. cat /var/opt/rh/rh-nginx116/log/nginx/error.log 查看nginx服务日志 一般有报错信息: [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (报错2) '报错信息一 表示Zabbix服务不能用/var/lib/mysql/mysql.sock 成功连接数据库 解决方案: 1.对于报错一,查找MySQL.socket并将位置添加到zabbix_server 配置文件 [root@neo ~]# find / -name mysql.sock /usr/local/mysql/mysql.sock vim /etc/zabbix/zabbix_server.conf DBSocket=/usr/local/mysql/mysql.sock 对于报错二.检查zabbix用户在数据库中的权限。并赋予localhost权限 1. show grants for 'zabbix'@'%'; 2. SELECT DISTINCT CONCAT('User:''',user,'''@''',host,''';')AS query FROM mysql.user; 修改前: +----------------------------+ | query | +----------------------------+ | User:'gegewu'@'%'; | | User:'root'@'127.0.0.1'; | | User:'root'@'::1'; | | User:''@'localhost'; | | User:'root'@'localhost'; | | User:'zabbix'@'localhost'; | | User:''@'nfs-server'; | | User:'root'@'nfs-server'; | +----------------------------+ 此时 连接数据库,赋予zabbix服务localhost数据库权限 GRANT all ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix'; 修改后: +----------------------------+ | query | +----------------------------+ | User:'gegewu'@'%'; | | User:'root'@'127.0.0.1'; | | User:'root'@'::1'; | | User:''@'localhost'; | | User:'gegewu'@'localhost'; | | User:'root'@'localhost'; | | User:'zabbix'@'localhost'; | | User:''@'nfs-server'; | | User:'root'@'nfs-server'; | +----------------------------+ 刷新权限: flush privileges; 并重启http,mysql,zabbix_server服务 systemctl restart httpd.service systemctl restart httpd.service systemctl restart zabbix-server.service 对于nginx+zabbix 搭建的: systemctl restart zabbix-agent rh-nginx116-nginx rh-php72-php-fpm zabbix-server 二. 虚拟网络编辑器 888 10.0.0.128:90 90 10.0.0.11:88 8000 10.0.0.11:80
OK,初 |
关于排错小结:
访问出现错误:状态码500,从状态码上看是服务器出现错误了,我们查看一下Nginx的错误日志。注意:由于5.0版本的更新,Nginx的日志路径不再是/var/log/nginx了,而是/var/opt/rh/rh-nginx116/log/nginx/了。
查看日志nginx:
tailf /var/opt/rh/rh-nginx116/log/nginx/error.log
大概意思就是:网站在接收到动态请求后,Nginx把请求通过FastCGI转发给php进行处理,但是在进入php的目录的时候出现了权限问题。。。我们来看一下php-fpm这一个应用程序的启动是谁
Ps -ef |grep php-fpm
可以看到属主有apache有nginx
查看一下php配置文件
再对比官方部署文档中php的配置,人家只需要修改一次地方,把原来的补回去
重启php-fpm服务,浏览器再次打开页面看一下
改回来-------------->
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
systemctl restart rh-php72-php-fpm
此时成功 .---------------------------------------->
附带:自动清理zabbix历史数据脚本
#!/bin/bash #版本3 start1() { check_file="/home/gegewu/Script/zabbix.log" check_directory="/home/gegewu/Script" check_time=`date +%F%H%M` echo "清理history-unit时间: ${check_time}" >> ${check_file} 2>&1 [ -d "${check_directory}" ] || mkdir -p ${check_directory} if [ ! -d "$dir" ]; then touch ${check_file} else echo "文件存在" fi } start2() { User="zabbix" Passwd="zabbix" $(which mysql) -u${User} -p${Passwd} -e " use zabbix; truncate table history_uint;" } main() { start1 start2 } main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通