Zabbix系列—①源碼編譯安裝 5.2.6版本(Server服務(wù)端)
一、環(huán)境說明
本文中使用本地VM虛機部署測試。
OS:CentOS 7.8 (3.10.0-1160.15.2.el7.x86_64)
IP:192.168.168.103
虛機配置:2核CPU、4G內(nèi)存
注:①系統(tǒng)為最小化安裝,部署前已完成系統(tǒng)初始化、內(nèi)核及安全優(yōu)化;
②Iptables防火墻已啟用,相應(yīng)服務(wù)(如Nginx)端口已添加至Iptables防火墻相關(guān)規(guī)則中。
軟件說明:
5.2版本的安裝需要PHP 7.2.x以上版本,且不支持PHP 8.0版本,官方說明:
https://www.zabbix.com/documentation/current/manual/installation/requirements#required_software
目錄說明:
本文中省略NGINX/PHP/MySQL/JDK安裝過程,關(guān)于NGINX/PHP/MySQL安裝過程可參照本人之前發(fā)布的文章。
CentOS7下編譯安裝Nginx-v1.20.0:
https://www.toutiao.com/i6961593096903705092/
MySQL系列-二進制包安裝(v5.7.34):
https://www.toutiao.com/i6955761888323961381/
CentOS7編譯安裝php-7.4.16:
https://www.toutiao.com/i6947278581865366052/
特別說明:源碼編譯安裝PHP7.4.20時,configure配置時不要添加"--enable-gd-jis-conv",經(jīng)本人測試,此參數(shù)影響后續(xù)將zabbix服務(wù)WEB界面設(shè)置為中文時會出現(xiàn)亂碼。就算按照本文中最后步驟中的設(shè)置也無法正常顯示中文。
二、配置MySQL
## 創(chuàng)建Zabbix數(shù)據(jù)庫
- CREATE DATABASE db_zabbix default charset utf8 collate utf8_bin;
## 創(chuàng)建Zabbix用戶及授權(quán)
- CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '123456';
- GRANT ALL PRIVILEGES ON db_zabbix.* to 'zabbix'@'127.0.0.1' IDENTIFIED BY '123456';
- FLUSH PRIVILEGES;
三、安裝Zabbix
1.安裝依賴
- rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- yum -y install gcc gcc-c++ unixODBC-devel \
- mysql-devel libcurl libcurl-devel \
- libevent libevent-devel fping curl-devel \
- libxml2 libxml2-devel net-snmp-devel net-snmp
2.創(chuàng)建Zabbix用戶組及用戶
- groupadd zabbix
- useradd -g zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
3.下載源碼
- cd /data/tools
- wget https://cdn.zabbix.com/zabbix/sources/stable/5.2/zabbix-5.2.6.tar.gz
4.解壓編譯安裝
- tar xf zabbix-5.2.6.tar.gz
- cd zabbix-5.2.6
- ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent \
- --with-mysql --with-net-snmp --with-libcurl --with-libxml2 \
- --with-unixodbc --enable-java --enable-ipv6
- make && make install
- ## 更改Zabbix安裝目錄和文件屬主屬組
- chown -R zabbix.zabbix /usr/local/zabbix/
## 參數(shù)說明:
- --prefix=/usr/local/zabbix:指定zabbix安裝路徑
- --enable-server:啟動server端
- --enable-agent:啟動agent端
- --with-mysql:編譯連接mysql相關(guān)依賴包
- --with-net-snmp:啟動snmp相關(guān),用于snmp監(jiān)控設(shè)備
- --with-libcurl:啟動curl相關(guān)
- --with-libxml2:啟動xml相關(guān)
- --with-unixodbc:啟動odbc相關(guān)用于監(jiān)控數(shù)據(jù)庫
- --enable-java:啟動java-agent 用于監(jiān)控java類,需要安裝JAVA環(huán)境
- --enable-ipv6:啟用IPv6
5.修改配置文件
## 創(chuàng)建日志目錄
- mkdir -p /data/logs/zabbix
## 修改目錄權(quán)限
- chown -R zabbix.zabbix /data/logs/zabbix
## 修改server配置文件,配置數(shù)據(jù)庫連接等
- cd /usr/local/zabbix/etc/
- cp zabbix_server.conf zabbix_server.conf.bak
- vi zabbix_server.conf
- //找到如下對應(yīng)的屬性項進行修改
- LogFile=/data/logs/zabbix/zabbix_server.log
- PidFile=/data/logs/zabbix/zabbix_server.pid
- DBHost=127.0.0.1
- DBName=db_zabbix
- DBUser=zabbix
- DBPassword=123456
- DBSocket=/usr/local/mysql/mysql.sock
- DBPort=3306
- AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
## 修改agent配置文件
- cp zabbix_agentd.conf zabbix_agentd.conf.bak
- vi zabbix_agentd.conf
- //找到如下對應(yīng)的屬性項進行修改
- PidFile=/data/logs/zabbix/zabbix_agentd.pid
- LogFile=/data/logs/zabbix/zabbix_agentd.log
- Server=127.0.0.1
- ServerActive=127.0.0.1
- Hostname=Zabbix Server
- Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
6.配置Zabbix服務(wù)管理腳本
## 復(fù)制管理腳本
- cd /data/tools/zabbix-5.2.6/
- cp misc/init.d/tru64/{zabbix_agentd,zabbix_server} /etc/init.d/
## 添加腳本執(zhí)行權(quán)限
- chmod o+x /etc/init.d/zabbix_*
## 修改啟動腳本中PID文件路徑
- sed -i "s#PIDFILE=/tmp/zabbix_server.pid#PIDFILE=/data/logs/zabbix/zabbix_server.pid#g" /etc/init.d/zabbix_server
- sed -i "s#PIDFILE=/tmp/zabbix_agentd.pid#PIDFILE=/data/logs/zabbix/zabbix_agentd.pid#g" /etc/init.d/zabbix_agentd
## 建立軟鏈接
- ln -s /usr/local/zabbix/sbin/zabbix_* /usr/local/sbin/
- ln -s /usr/local/zabbix/bin/zabbix_* /usr/local/bin/
注:若不創(chuàng)建軟鏈接,則需修改腳本中的DAEMON路徑,指向zabbix安裝目錄路徑。
7.導入數(shù)據(jù)
## 登錄數(shù)據(jù)庫
mysql -uroot -p
- ## 登錄數(shù)據(jù)庫
- mysql -uroot -p
- ## 切換至zabbix庫
- use db_zabbix;
- ## 導入數(shù)據(jù)(表結(jié)構(gòu)、圖片相關(guān)數(shù)據(jù)、模版相關(guān)數(shù)據(jù))
- source /data/tools/zabbix-5.2.6/database/mysql/schema.sql;
- source /data/tools/zabbix-5.2.6/database/mysql/images.sql;
- source /data/tools/zabbix-5.2.6/database/mysql/data.sql;
8.啟動zabbix-server及zabbix-agent
- /etc/init.d/zabbix_server start
- /etc/init.d/zabbix_agentd start
四、配置WEB站點
1.拷貝前端文件
- mkdir -p /data/www/zabbix
- cd /data/tools/zabbix-5.2.6/
- cp -a ui/* /data/www/zabbix/
- chown -R nginx.nginx /data/www/zabbix
2.配置PHP
①修改php-fpm.conf配置文件
- vi /usr/local/php/etc/php-fpm.conf
- //下列參數(shù)僅供參考
- [global]
- pid = /usr/local/php/var/run/php-fpm.pid
- error_log = /usr/local/php/var/log/php-fpm.log
- log_level = notice
- [www]
- listen = 127.0.0.1::9000
- listen.backlog = -1
- listen.allowed_clients = 127.0.0.1
- listen.owner = nginx
- listen.group = nginx
- listen.mode = 0666
- user = nginx
- group = nginx
- pm = dynamic
- pm.max_children = 10
- pm.start_servers = 5
- pm.min_spare_servers = 5
- pm.max_spare_servers = 10
- request_terminate_timeout = 300
- request_slowlog_timeout = 15
- slowlog = var/log/slow.log
注:用戶組及用戶nginx為NGINX服務(wù)和PHP服務(wù)運行用戶,安裝服務(wù)前創(chuàng)建。
②修改php.ini配置文件
- sed -i 's/post_max_size = 8M/post_max_size = 20M/g' /etc/php.ini
- sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 20M/g' /etc/php.ini
- sed -i 's/;date.timezone =/date.timezone = Asia\/Shanghai/g' /etc/php.ini
- sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/php.ini
- sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
- sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini
- sed -i 's/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server/g' /etc/php.ini
③啟動php-fpm
- systemctl start php-fpm.service
3.添加zabbix虛擬主機配置文件
- vi /usr/local/nginx/conf/vhost/zabbix.conf
- //添加如下內(nèi)容,僅供參考
- server{
- listen 80;
- server_name 192.168.168.103;
- root /data/www/zabbix;
- index index.php index.html index.htm;
- access_log /data/logs/nginx/zabbix.log json;
- location ~ \.php(.*)$ {
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME /data/www/zabbix/$fastcgi_script_name;
- include fastcgi_params;
- }
- location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
- expires 15d;
- }
- location ~ .*\.(js|css)?$ {
- expires 1d;
- }
- }
## 啟動Nginx
- systemctl start nginx.service
五、部署WEB站點
1.進入歡迎界面
在瀏覽器中打開:http://IP/setup.php 本文中IP為192.168.168.103,
選擇默認語言,可以選擇"Chines(zh_CN)",此處保持默認,安裝完成后再調(diào)整為中文界面。點擊"Next step"開始安裝。

2.檢查先決條件
確保滿足所有軟件先決條件。如下圖所示,下拉滾動條,檢查所有軟件是否都是"OK"。若沒有出現(xiàn)error,即可點擊"Next step"(出現(xiàn) “Warning”可忽略也可先修復(fù))
具體請參照官方說明:
https://www.zabbix.com/documentation/current/manual/installation/frontend

3.配置數(shù)據(jù)庫連接
- Database type:選擇數(shù)據(jù)庫類型,本文中使用的是MySQL,因此保持默認即可。
- Database host:選擇數(shù)據(jù)庫的主機,可以指定主機名或者是IP地址,根據(jù)實際情況填寫即可。本文中web服務(wù)器和數(shù)據(jù)庫部署在同一個節(jié)點,且授權(quán)用戶也是僅允許本地127.0.0.1訪問,因此該項值改為127.0.0.1。
- Database port:指定數(shù)據(jù)庫的連接端口,默認值為0,表示使用默認值,以MySQL為例,默認值自然是3306。
- Database name:指定數(shù)據(jù)庫的名稱,默認值為zabbix,根據(jù)實際情況填寫。本文中數(shù)據(jù)庫名為db_zabbix。
- User:指定連接數(shù)據(jù)庫的用戶名,默認值為zabbix,根據(jù)實際情況填寫。本文中用戶名為zabbix。
- Password:指定連接數(shù)據(jù)庫的密碼,強烈建議不要使用官方默認的密碼,而是自定義一個安全度比較高的,生產(chǎn)環(huán)境中建議用類似于密碼生成器之類的工具定期更換用戶名密碼。

4.Zabbix服務(wù)器詳細信息
- Host:指定zabbix server的主機名或者IP地址,默認值為localhost,由于web服務(wù)器和zabbix server部署在一起,因此localhost這個默認值也可以不修改。
- Port:指定zabbix server的端口,默認值為10051,這個是zabbix server進程的默認端口,使用默認值即可。
- Name:這個Name其實就是給zabbix server起一個名字,當然也可以不填,默認值應(yīng)該和Host同名。本文中自定義了一個名稱,名為"Test Monitor"。

5.GUI用戶界面設(shè)置
- Default time zone:默認時區(qū),根據(jù)實際情況選擇,本文中保持默認。
- Default theme:默認主題樣式,根據(jù)實際情況選擇,本文中保持默認。

6.安裝前摘要
檢查配置參數(shù)。如果一切正常,則“Next step”,否則“Back”更改配置參數(shù)。

7.完成安裝
如下圖所示,前端安裝成功。安裝成功的同時,會創(chuàng)建一個"
/data/www/zabbix/conf/zabbix.conf.php"配置文件,該文件記錄了剛剛安裝zabbix前端時定義的配置信息。感興趣可以登錄zabbix web服務(wù)器進行查看。

8.登錄zabbix前端頁面
如下圖所示。默認用戶名:Admin,密碼:zabbix
9.Zabbix前端首頁
登錄后的默認首頁界面,可按右上角的“Edit Dashboard”編輯首頁,調(diào)整儀表板顯示位置及刪除不需要顯示的儀表板。
六、簡單配置
1.修改WEB管理員的默認密碼
## WEB頁面左側(cè)邊欄,點擊"Use settings"

## 點擊"Change password"修改密碼

## 輸入2次新密碼,并點擊"Update"按鈕更新密碼

## 用戶信息更新成功,如下圖所示。

2.修改界面語言為中文
## WEB頁面左側(cè)邊欄,點擊"Use settings"→“User”→“Language”,從下拉列表中選擇“Chinese(zh_CN)”

## 點擊"Update"按鈕更新設(shè)置

## 更新成功后,頁面即為中文

## 但查看監(jiān)控數(shù)據(jù)頁面發(fā)現(xiàn)出現(xiàn)亂碼(方框),如下圖所示
## 問題的原因是zabbix默認的字體文件不支持中文,所以中文字符的顯示成了亂碼。查看zabbix的web目錄下include/defines.inc.php文件中對于字體的定義:

## 可以看到zabbix使用了自己定義的字體文件,而沒有使用linux的系統(tǒng)字體。路徑位于web目錄下的assets/fonts目錄。
## 解決方法:我們可以從windows的字體目錄下或者從互聯(lián)網(wǎng)獲取黑體的字體文件simhei.ttf,windows下的字體文件位于:C:\Windows\Fonts 。將字體文件通過sftp上傳到服務(wù)器上zabbix的web目錄下assets/fonts目錄內(nèi)。然后把黑體的字體文件符號鏈接為zabbix的默認字體:DejaVuSans.ttf
- cd /data/www/zabbix/assets/fonts
- mv DejaVuSans.ttf DejaVuSans.ttf.bak
- ln -sf simhei.ttf DejaVuSans.ttf
## 刷新頁面之后,中文字體顯示正常