偶然看到群里发的一篇"ZABBIX从入门到精通v3.0.1"的pdf, 想着照着里面的流程来搭建zabbix练手.
不过教程里的Nginx和PHP全都是编译安装, 在过程中因未知原因卡住了, 最后选择了用yum来安装.
将中间遇到的一些小问题做个记录.
确认yum仓库有你要装的包zabbix-server-mysql和zabbix-web-mysql
yum search zabbix
...内容省略, 找到你的包名...
yum install -y zabbix40-server-mysql zabbix40-web-mysql
安装数据库, 随后建立zabbix数据库账号及初始数据库
# 选用开源MariaDB代替MySQL
yum install -y mariadb-server
# 启动数据库服务
systemctl start mariadb
# 确认数据库可用, 执行命令后能看到数据库欢迎信息
mysql -uroot
MariaDB [(none)]>\q
# 数据库root密码设置, 同时会有些安全项的设置, 很易懂的英文, 按照自己需求来设置即可
mysql_secure_installation
# 进入数据库建立zabbix服务所用账号
mysql -uroot -p
## 建立zabbix数据库
MariaDB [(none)]>create database zabbix character set utf8 collate utf8_bin;
## 建立zabbix账户, 设定密码
MariaDB [(none)]>grant all privileges on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';
## 刷新数据库权限
MariaDB [(none)]>flush privileges;
MariaDB [(none)]>\q
# 导入zabbix库文件
cd /usr/share/zabbix-mysql/
mysql -uzabbix -pzabbix zabbix < schema.sql
mysql -uzabbix -pzabbix zabbix < image.sql
mysql -uzabbix -pzabbix zabbix < data.sql
配置zabbix-server和httpd
vim /etc/zabbix_server.conf
# 找到DBUser=zabbix行, 添加密码信息
DBPassword=zabbix
vim /etc/httpd/conf.d/zabbix.conf
# 在<IfModule mod_php5.c>段末尾加入时区配置
php_value date.timezone Asia/Shanghai
启动httpd和zabbix-server
systemctl start httpd zabbix-server
尝试访问http://Server-IP/zabbix, 会发现无法访问, 因为防火墙拦截了
# 需要永久生效再带上--permanent参数
firewall-cmd --add-service=http
再试, 还不行, 用systemctl status检查httpd和zabbix-server状态, 会发现zabbix-server没起起来
查看日志/var/log/message、/var/log/zabbixsrv/zabbix_server.log(其实后者才有有效信息, 不过按照排查逻辑, 当然先看系统日志~)
cannot start preprocessing service: Cannot bind socket to "/var/lib/zabbixsrv/tmp/zabbix_server_preprocessing.sock": [13] Permission denied.
必应一下, 发现极大可能是SELinux相关问题.
当然你可以选择关掉SELinux, 或者将它设置成调试模式, 但这都不是解决问题的根本办法.
我需要不动SELinux同时运行zabbix.
# 清空audit.log
:>/var/log/audit/audit.log
# 重启zabbix-server以记录audit日志
systemctl restart zabbix-server
# 根据audit日志生成zabbix-server规则
grep AVC /var/log/audit/audit.log | audit2allow -M zabbix-systemd-allow
# 写入SELinux规则
semodule -i zabbix-systemd-allow.pp
# 查看是否成功写入
semodule -l
# 再次尝试重启zabbix-server并查看其状态
systemctl restart zabbix-server
systemctl status zabbix-server
能看到zabbix服务成功启动了, 这时候再访问http://Server-IP/zabbix, 开启zabbix4.0之旅吧~
补充:
遇到SELinux相关问题时, 可以借助于setroubleshoot工具, 该工具在鸟哥的基础篇有介绍.
补充1:
报错
[Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
处理方式
setsebool -P httpd_can_network_connect_db=1
[参考链接]