其实 Zabbix 为了更好的提供给大家软件体验环境,推出了一键集成的环境,它就是 ZabbixAppliance,官方提供了市面主流的一些环境,例如 VMware,Hyper-V 等等。
![](https://s8.51cto.com/oss/202212/27/5730a22066083a7874b049ec1fd982b7bf4925.png)
接着上篇的 Zabbix Appliance 安装,今天带来的是源码编译的安装方式,本文并不是全源码方式,仅仅是 Zabbix 部分源码安装。
本文环境
关闭 Firewall、Selinux
systemctl stop firwalld && systemctl disable firewalld
setenforce 0
永久关闭 selinux,需要重启服务器。
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
reboot
安装所需软件,更新系统到最新
yum -y install tar vim wget
yum 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
查找数据库密码。
可以看到密码为 0fs!KjAe1dMm
![](https://s7.51cto.com/oss/202212/27/576e0e389b53b0ca8019898c35972083e689e3.png)
初始化数据库。
mysql_secure_installation
该步骤仅需要修改密码即可,其他直接回车就可以了。
![](https://s3.51cto.com/oss/202212/27/648b2d569553a972e8450192ef3a55bf94563a.png)
其他回车即可。
![](https://s2.51cto.com/oss/202212/27/421c01a6053451e463c029cde3e0f87c140e3b.png)
用新密码登录测试(密码自行设置,下面的密码仅限本文使用)。
mysql -uroot -pHuawei@123!
![](https://s8.51cto.com/oss/202212/27/94bf1a82738cbb828e078708909130b724f858.png)
创建 Zabbix 用户及用户组。
groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
创建 Zabbix 目录。
编译软件。
- prefix 指定安装目录。
- enable-server 启用 Zabbix Server。
- enable-agent2 启用 Zabbix agent2。
- with-mysql 后端指定数据库为 mysql。
- net-snmp 支持 snmp 协议。
其实有很多参数,大家可以通过 ./configure --help 自行研究。
./configure --prefix=/app/zabbix --enable-server --enable-agent2 --with-mysql --with-net-snmp
报错1,C 语言环境问题。
![](https://s3.51cto.com/oss/202212/27/8452497012dbd4938a0878b787ab72dc01ff6e.png)
解决方法。
报错2,mysql 库文件没有。
![](https://s4.51cto.com/oss/202212/27/b5692d8397189e620cc26454a2c6f7ba0740d6.png)
解决办法。
yum -y install mysql-devel
报错03,net-snmp 部分问题。
![](https://s7.51cto.com/oss/202212/27/c670a8286c290775abc5672b30975f7b1e71ca.png)
解决办法。
yum -y install net-snmp-devel
报错03,libevent 报错。
![](https://s5.51cto.com/oss/202212/27/661c560509606e134a0641b8fc83faa1c76634.png)
解决办法。
yum -y install libevent-devel
报错04,缺少 go 环境(如果是一代 agent,无此问题)。
解决办法。
编译完成。
![](https://s8.51cto.com/oss/202212/27/5114dce59784cebcfe0408459a5c4b9180e91c.png)
安装。
![](https://s8.51cto.com/oss/202212/27/c410d63586c352b978517765fceefb26a262bb.png)
编译安装完成
整体安装目录。
/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.rpm
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum -y install php php-fpm
![](https://s3.51cto.com/oss/202212/27/f2a3f71663365e953613313258eb491a7d0502.png)
NGINX 部分
1.安装 Nginx。
yum -y install epel-release
yum -y install nginx
2.移动前端文件到 Zabbix 目录。
mv /tmp/zabbix-6.0.12/ui/ /app/zabbix
vim /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;
}
}
![](https://s8.51cto.com/oss/202212/27/e2d6be3747d83f6ff642327b4e88e4a5c4ecd6.png)
4.修改 Nginx 配置文件。
vim /etc/nginx/nginx.conf
将端口全部注释掉即可。
![](https://s3.51cto.com/oss/202212/27/a8766e021289e950c69997f5e8621b9ba3e4d9.png)
5.启动 Nginx。
systemctl start nginx && systemctl enable nginx
6.打开 php-fpm。
systemctl start php-fpm && systemctl enable php-fpm
访问前端
直接访问 IP 地址,发现是 502 报错。
![](https://s7.51cto.com/oss/202212/27/e6726a5048cc37e405b047505d9e238f2c5897.png)
查看 Nginx 日志。
tail -f /var/log/nginx/error.log
![](https://s2.51cto.com/oss/202212/27/e736d9150ef512acc6267435f910abb3e9d904.png)
通过日志可以看出,没有 sock 文件,其实很简单,将 fastcgi_passunix:/run/php-fpm/zabbix.sock 改为 fastcgi_pass 127.0.0.1:9000。
vim /etc/nginx/conf.d/zabbix.conf
![](https://s3.51cto.com/oss/202212/27/58b20ca60e7a97a82162756f4e6071dd1b0de2.png)
重启 Nginx 服务。
就可以访问了,直接点击下一步。
![](https://s5.51cto.com/oss/202212/27/6133366232cb1ec92319556d4397ea80936f80.png)
进入到环境检查界面和包安装基本是天壤之别,由于很多依赖和配置没修改,所以正常,按照警告消息解决就行。
![](https://s2.51cto.com/oss/202212/27/c3f08bc766341fd249f9485952adef9c0d67f0.png)
依赖安装。
yum -y install php-bcmath php-mbstring php-gd php-xml php-mysqlnd
PHP 配置文件调整。
![](https://s3.51cto.com/oss/202212/27/81c2c3f47f62b07702750232e017299bcfeaa1.png)
post_max_size改为16M(默认8M)
max_excution_time 时间改为300,原来为30。
max_input_time 时间改为300,原来为60。
![](https://s2.51cto.com/oss/202212/27/177c3b5903640a69f98604265096740d98207d.png)
重启 php-fpm 服务。
systemctl restart php-fpm
![](https://s9.51cto.com/oss/202212/27/d7e62f866325f0dd3726087b9a7baab1700e5c.png)
下一步
进入到数据库配置界面,还需要配置数据库。
![](https://s2.51cto.com/oss/202212/27/2365e90376b83f5feba38582bef468e3e8938e.png)
创建数据库实例及用户。
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;
![](https://s8.51cto.com/oss/202212/27/04b499a70816b4c4a6a6896bf4388cbc9e099b.png)
导入 Zabbix 所需要的数据文件。
cat /tmp/zabbix-6.0.12/database/mysql/schema.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
cat /tmp/zabbix-6.0.12/database/mysql/images.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
cat /tmp/zabbix-6.0.12/database/mysql/data.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
![](https://s2.51cto.com/oss/202212/27/814b7bb829505cfb58c8602c38ad7b89b2db04.png)
中途需要输入Zabbix用户密码
数据库界面填写数据库密码即可(Zabbix 用户),下一步。
![](https://s6.51cto.com/oss/202212/27/c9b9bcb345644996a368507061e8b1a11bbf76.png)
时区与服务名称界面,修改完,下一步。
![](https://s6.51cto.com/oss/202212/27/589c65527044ade94790439cc661fa0980cf10.png)
下一步。
![](https://s9.51cto.com/oss/202212/27/13f0a77170738be83cd7805c41fa4120e868fb.png)
出现这个问题就是目录权限问题。
![](https://s6.51cto.com/oss/202212/27/c7c728230ea6a8315e5601149a21ac3c4ddacc.png)
将该目录拥有者改为 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 查看服务。
![](https://s2.51cto.com/oss/202212/27/05e673394682802a14954485f0ccf5a81f4084.png)
那么到这里基本就完成了前端的配置,下一步。
![](https://s2.51cto.com/oss/202212/27/7374471750f8d6c4fe4905ba95fa157de8bf79.png)
登录界面。
![](https://s4.51cto.com/oss/202212/27/66b0c0e6438d30c05ca767247caee87110b1d9.png)
Admin/zabbix
进入首页。
此时会发现前端啥也没有,但是依然能进入到前端里,这也就是为什么能够把各组件分开部署。
![](https://s2.51cto.com/oss/202212/27/a3215ef41faf875d85242005e851dbddcfd253.png)
Zabbix 部分
- 程序文件路径为 /app/zabbix/sbin/ 下。
- 配置文件路径为 /app/zabbix/etc/ 下。
制作 Zabbix server 守护文件。
vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=postgresql.service
After=pgbouncer.service
After=postgresql-13.service
[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
![](https://s2.51cto.com/oss/202212/27/f599d5181fb32cb349416889a8987e81118a89.png)
制作 Zabbix agent2 守护文件。
vim /usr/lib/systemd/system/zabbix-agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix_agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
![](https://s4.51cto.com/oss/202212/27/1417f2a42d2086a0b681424c014729844e7de0.png)
修改 Zabbix 配置文件。
和包安装一样,需要修改数据库部分配置。
vim /app/zabbix/etc/zabbix_server.conf
![](https://s5.51cto.com/oss/202212/27/c9d09ac69555c5cce3f1241aabc2fb139ef10c.png)
启动相关组件。
systemctl restart zabbix-server zabbix-agent2
首页恢复正常。
![](https://s6.51cto.com/oss/202212/27/3671bee576638b3f7f8452893c68daec0036ef.png)
![](https://s6.51cto.com/oss/202212/27/656b559099b767ef9ff810bbfc8a4a2950f7f4.png)
主机页
![](https://s9.51cto.com/oss/202212/27/b58c8ce439fc927b5c1249595673a62ecbbe29.png)
最新数据
![](https://s4.51cto.com/oss/202212/27/b2b2a078909cdac6ec01200af6381aba9be2df.png)
图形正常
附录
编译安装没有修改任何参数的情况下,pid 文件,sock 文件以及日志都在 /tmp 目录下,如需要调整请修改 Zabbix 配置文件。
![](https://s3.51cto.com/oss/202212/27/d17236d520a1d979afe622b02f265da4f7dd63.png)
最后
本文篇幅较长,如果是完全编译的话更费劲,当然针对一些完全没有外网的朋友相对来说更加的麻烦,有空我会出一个完全离线编译的版本。