接着上篇的 Zabbix Appliance 安装,今天带来的是源码编译的安装方式,本文并不是全源码方式,仅仅是 Zabbix 部分源码安装。
(资料图)
本文环境
CentOS 7 2009关闭 Firewall、Selinux
systemctl stop firwalld && systemctl disable firewalld setenforce 0
永久关闭 selinux,需要重启服务器
sed -i "s#SELINUX=enforcing#SELINUX=disabled#g" /etc/selinux/configreboot
安装所需软件,更新系统到最新
yum -y install tar vim wgetyum update -y
下载源码包
cd /tmp wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.12.tar.gz
解压软件包
tar -zxvf zabbix-6.0.12.tar.gz
数据库部分
由于 6.0 需要 mysql 8.0 以上,而自带的为 mysql 5.6,所以安装 mysql 8.0 的 yum 仓库文件。
yum -y install https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm
安装数据库
yum -y install mysql-server
启动数据库
systemctl start mysqld && systemctl enable mysqld
查找数据库密码
cat /etc/var/mysqld.log
可以看到密码为0fs!KjAe1dMm
初始化数据库
mysql_secure_installation
该步骤仅需要修改密码即可,其他直接回车就可以了
其他回车即可
用新密码登录测试(密码自行设置,下面的密码仅限本文使用)
mysql -uroot -pHuawei@123!
创建 Zabbix 用户及用户组
groupadd --system zabbixuseradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
创建 Zabbix 目录
mkdir -p /app/zabbix
编译软件
cd /tmp/zabbix-6.0.12prefix 指定安装目录enable-server 启用 Zabbix Serverenable-agent2 启用 Zabbix agent2with-mysql 后端指定数据库为 mysqlnet-snmp 支持 snmp 协议
其实有很多参数,大家可以通过 ./configure --help 自行研究
./configure --prefix=/app/zabbix --enable-server --enable-agent2 --with-mysql --with-net-snmp
报错1,C 语言环境问题
解决方法
yum -y install gcc-c++
报错2,mysql 库文件没有
解决办法
yum -y install mysql-devel
报错03,net-snmp 部分问题
解决办法
yum -y install net-snmp-devel
报错03,libevent 报错
解决办法
yum -y install libevent-devel
报错04,缺少 go 环境(如果是一代 agent,无此问题)
解决办法
yum -y install golang
编译完成
安装
make install
编译安装完成
整体安装目录
/app/zabbix├── bin│ └── zabbix_js├── etc│ ├── zabbix_agent2.conf│ ├── zabbix_agent2.d│ │ └── plugins.d│ │ ├── ceph.conf│ │ ├── docker.conf│ │ ├── memcached.conf│ │ ├── modbus.conf│ │ ├── mqtt.conf│ │ ├── mysql.conf│ │ ├── oracle.conf│ │ ├── redis.conf│ │ └── smart.conf│ ├── zabbix_agentd.conf│ ├── zabbix_agentd.conf.d│ ├── zabbix_server.conf│ └── zabbix_server.conf.d├── lib│ └── modules├── sbin│ ├── zabbix_agent2│ ├── zabbix_agentd│ └── zabbix_server└── share ├── man │ └── man8 │ ├── zabbix_agent2.8 │ └── zabbix_server.8 └── zabbix ├── alertscripts └── externalscripts
PHP 部分
Zabbix 6.0 LTS 需要 php 7.2.5 版本以上,需要安装 remi 源支持 php 7.x,官方暂不支持 php 8.x 版本。
yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpmyum -y install yum-utilsyum-config-manager --disable "remi-php*"yum-config-manager --enable remi-php74yum -y install php php-fpm
NGINX 部分
1.安装 Nginx
yum -y install epel-releaseyum -y install nginx
2.移动前端文件到 Zabbix 目录
mv /tmp/zabbix-6.0.12/ui/ /app/zabbixvim /etc/nginx/conf.d/zabbix.conf
3.修改 Zabbix nginx 配置文件
server { listen 80;# server_name example.com; root /app/zabbix/ui; 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:/run/php-fpm/zabbix.sock; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /app/zabbix/ui; fastcgi_param SCRIPT_FILENAME /app/zabbix/ui$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /app/zabbix/ui$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; }}
4.修改 Nginx 配置文件
vim /etc/nginx/nginx.conf
将端口全部注释掉即可
5.启动 Nginx
systemctl start nginx && systemctl enable nginx
6.打开 php-fpm
systemctl start php-fpm && systemctl enable php-fpm
访问前端
直接访问 IP 地址,发现是 502 报错
查看 Nginx 日志
tail -f /var/log/nginx/error.log
通过日志可以看出,没有 sock 文件,其实很简单,将 fastcgi_passunix:/run/php-fpm/zabbix.sock 改为 fastcgi_pass 127.0.0.1:9000
vim /etc/nginx/conf.d/zabbix.conf
重启 Nginx 服务
systemctl restart nginx
就可以访问了,直接点击下一步
进入到环境检查界面和包安装基本是天壤之别,由于很多依赖和配置没修改,所以正常,按照警告消息解决就行
依赖安装
yum -y install php-bcmath php-mbstring php-gd php-xml php-mysqlnd
PHP 配置文件调整
vim /etc/php.ini
post_max_size改为16M(默认8M)
max_excution_time 时间改为300,原来为30
max_input_time 时间改为300,原来为60
重启 php-fpm 服务
systemctl restart php-fpm
下一步
进入到数据库配置界面,还需要配置数据库
创建数据库实例及用户
create database zabbix character set utf8mb4 collate utf8mb4_bin;create user zabbix@localhost identified by "Huawei@123!";grant all privileges on zabbix.* to zabbix@localhost;set global log_bin_trust_function_creators = 1;quit;
导入 Zabbix 所需要的数据文件
cat /tmp/zabbix-6.0.12/database/mysql/schema.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbixcat /tmp/zabbix-6.0.12/database/mysql/images.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbixcat /tmp/zabbix-6.0.12/database/mysql/data.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
中途需要输入Zabbix用户密码
数据库界面填写数据库密码即可(Zabbix 用户),下一步
时区与服务名称界面,修改完,下一步
下一步
出现这个问题就是目录权限问题
将该目录拥有者改为 apache,然后点击 back,在点击下一步
chmod 755 /app/zabbix/ui -R
这里大家知道为什么不是 nginx 么?
Zabbix 是一个 PH P应用,Nginx 通过 php-fpm 来执行 PHP 脚本,而 php-fpm 又是以服务的形式在运行,因此猜想是因为执行写入时 php-fpm 使用的用户不是 Nginx
通过 ps -ef | grep php-fpm 查看服务
那么到这里基本就完成了前端的配置,下一步
登录界面
Admin/zabbix
进入首页
此时会发现前端啥也没有,但是依然能进入到前端里,这也就是为什么能够把各组件分开部署。
Zabbix 部分
程序文件路径为 /app/zabbix/sbin/ 下配置文件路径为 /app/zabbix/etc/ 下制作 Zabbix server 守护文件
vim /usr/lib/systemd/system/zabbix-server.service
[Unit]Description=Zabbix ServerAfter=syslog.targetAfter=network.targetAfter=postgresql.serviceAfter=pgbouncer.serviceAfter=postgresql-13.service[Service]Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf"EnvironmentFile=-/etc/sysconfig/zabbix-serverType=forkingRestart=on-failurePIDFile=/tmp/zabbix_server.pidKillMode=control-groupExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILEExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sTimeoutSec=0[Install]WantedBy=multi-user.target
制作 Zabbix agent2 守护文件
vim /usr/lib/systemd/system/zabbix-agent2.service
[Unit]Description=Zabbix Agent 2After=syslog.targetAfter=network.target[Service]Environment="CONFFILE=/app/zabbix/etc/zabbix_agent2.conf"EnvironmentFile=-/etc/sysconfig/zabbix_agent2Type=simpleRestart=on-failurePIDFile=/run/zabbix/zabbix_agent2.pidKillMode=control-groupExecStart=/app/zabbix/sbin/zabbix_agent2 -c $CONFFILEExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sUser=zabbixGroup=zabbix[Install]WantedBy=multi-user.target
修改 Zabbix 配置文件
和包安装一样,需要修改数据库部分配置
vim /app/zabbix/etc/zabbix_server.conf
启动相关组件
systemctl restart zabbix-server zabbix-agent2
首页恢复正常
主机页
最新数据
图形正常
编译安装没有修改任何参数的情况下,pid 文件,sock 文件以及日志都在 /tmp 目录下,如需要调整请修改 Zabbix 配置文件
本文篇幅较长,如果是完全编译的话更费劲,当然针对一些完全没有外网的朋友相对来说更加的麻烦,有空我会出一个完全离线编译的版本,欢迎大家关注后续的文章哦,谢谢!