其實 Zabbix 為了更好的提供給大家軟件體驗環境,推出了一鍵集成的環境,它就是 ZabbixAppliance,官方提供了市面主流的一些環境,例如 VMware,Hyper-V 等等。

接著??上篇??的 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

初始化數據庫。
mysql_secure_installation
該步驟僅需要修改密碼即可,其他直接回車就可以了。

其他回車即可。

用新密碼登錄測試(密碼自行設置,下面的密碼僅限本文使用)。
mysql -uroot -pHuawei@123!

創建 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 語言環境問題。

解決方法。
報錯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,無此問題)。
解決辦法。
編譯完成。

安裝。

編譯安裝完成
整體安裝目錄。
/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

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;
}
}

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 服務。
就可以訪問了,直接點擊下一步。

進入到環境檢查界面和包安裝基本是天壤之別,由于很多依賴和配置沒修改,所以正常,按照警告消息解決就行。

依賴安裝。
yum -y install php-bcmath php-mbstring php-gd php-xml php-mysqlnd
PHP 配置文件調整。

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 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

中途需要輸入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 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

制作 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

修改 Zabbix 配置文件。
和包安裝一樣,需要修改數據庫部分配置。
vim /app/zabbix/etc/zabbix_server.conf

啟動相關組件。
systemctl restart zabbix-server zabbix-agent2
首頁恢復正常。


主機頁

最新數據

圖形正常
附錄
編譯安裝沒有修改任何參數的情況下,pid 文件,sock 文件以及日志都在 /tmp 目錄下,如需要調整請修改 Zabbix 配置文件。

最后
本文篇幅較長,如果是完全編譯的話更費勁,當然針對一些完全沒有外網的朋友相對來說更加的麻煩,有空我會出一個完全離線編譯的版本。