CentOS 7 源碼安裝 Zabbix 6.0

Zabbix 主要有以下幾個組件組成:

  • Zabbix Server:Zabbix 服務端,是 Zabbix 的核心組件。它負責接收監控數據並觸發告警,還負責將監控數據持久化到資料庫中。

  • Zabbix Agent:Zabbix 客戶端,部署在被監控設備上,負責採集監控數據,採集後的數據發送給 Zabbix Server 處理。

    Zabbix Agent 目前有兩個版本:Zabbix agent 和 Zabbix agent 2。前者是 C 語言開發的,幾乎支援所有的主流平台。而後者是 Go 開發的,優點包括:能有效降低 TCP 連接的數量;支援更高的並發;易於擴展。目標是替代 Zabbix agent ,目前只支援 Linux 和Windows 兩個平台。

  • Zabbix Proxy:代替 Zabbix Server 接收監控數據並進行預處理,預處理後的數據批量發送給 Zabbix Server,這樣可減輕 Zabbix Server 的壓力。

  • Web 頁面:可通過 Web 頁面來管理和維護被監控設備的配置資訊、查看監控數據、配置告警等。

  • 資料庫:負責存儲被監控設備的配置資訊和監控數據。支援的資料庫有:MySQL(Percona,MariaDB),Oracle,PostgreSQL,TimescaleDB for PostgreSQL,SQLite。

 

本文主要包括以下四部分:

1. 安裝 Zabbix Server

2. 安裝 Web 組件

3. 配置 Zabbix Web 頁面

4. 安裝 Zabbix Agent

 

安裝 Zabbix Server

部署環境如下表所示。

角色 IP OS Zabbix 版本
Zabbix Server 10.0.0.228 CentOS 7.9 Zabbix 6.0.2
Zabbix Agent 10.0.0.232 CentOS 7.9 Zabbix 6.0.2

 

下面開始安裝 Zabbix Server,具體步驟如下。

(1)準備工作

關閉防火牆和 SElinux

# systemctl stop firewalld.service
# systemctl disable firewalld.service

# setenforce 0
# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

 

(2)下載 zabbix 軟體包:

下載地址://www.zabbix.com/download

我這裡使用的是源碼包。

 

(3)解壓源碼包,建立軟鏈接:

# cd /usr/src/
# wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.2.tar.gz
# tar xvf zabbix-6.0.2.tar.gz
# ln -s zabbix-6.0.2 zabbix

 

(4)創建 zabbix 用戶:

# groupadd --system zabbix
# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

 

(5)創建 zabbix 資料庫:

這裡將 MySQL 作為 zabbix 的後端資料庫,我這裡使用的是 MySQL 8.0.27 二進位版本。

下面開始安裝 MySQL 8.0.27 二進位版本。

# cd /usr/local/
# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
# tar xvf mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz
# ln -s mysql-8.0.27-linux-glibc2.12-x86_64 mysql

 

編輯 MySQL 配置文件

# vim /etc/my.cnf
[client]
socket=/data/mysql/3306/data/mysql.sock

[mysqld]
#server configuration
user=mysql
datadir=/data/mysql/3306/data
basedir=/usr/local/mysql
port=3306
socket=/data/mysql/3306/data/mysql.sock
log_timestamps=system
log_error=/data/mysql/3306/data/mysqld.err
skip_name_resolve

#Replication Framework
server_id=1
master_info_repository=TABLE
relay_log_info_repository=TABLE
log_slave_updates=ON
log_bin=mysql-bin
binlog_format=ROW

 

創建數據目錄,初始化實例,啟動實例

# mkdir -p /data/mysql/3306/data/
# /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure
# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

 

下面創建 zabbix 資料庫和用戶。

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix_admin'@'%' identified with mysql_native_password by 'zabbix_pass';
mysql> grant all privileges on zabbix.* to 'zabbix_admin'@'%';

 

接著初始化數據。

# cd /usr/src/zabbix/database/mysql/
# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < schema.sql
# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < images.sql 
# mysql -h127.0.0.1 -uzabbix_admin -pzabbix_pass zabbix < data.sql

 

(6)編譯安裝 Zabbix Server:

# yum install gcc mysql-devel libevent-devel libcurl-devel libxml2-devel net-snmp-devel
# cd /usr/src/zabbix
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
# make install

編譯時注意:

1. configure 命令中的 –prefix 是安裝目錄,如果不設置,則默認是 /usr/local。

2. 在 make install 的過程中,如果出現如下錯誤:

/bin/ld: warning: libcrypto.so.1.1, needed by /usr/local/mysql/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)
/bin/ld: warning: libssl.so.1.1, needed by /usr/local/mysql/lib/libmysqlclient.so, not found (try using -rpath or -rpath-link)

則需要對依賴的兩個庫做個軟鏈接。具體命令如下:

# find / -name libssl.so.1.1
/usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libssl.so.1.1
# ln -s /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libssl.so.1.1 /usr/lib64
# ln -s /usr/local/mysql-8.0.27-linux-glibc2.12-x86_64/lib/private/libcrypto.so.1.1 /usr/lib64

 

編譯完成後,我們看看 /usr/local/zabbix/ 目錄的內容。

# tree /usr/local/zabbix
/usr/local/zabbix
├── bin
│   ├── zabbix_get
│   ├── zabbix_js
│   └── zabbix_sender
├── etc
│   ├── zabbix_agentd.conf
│   ├── zabbix_agentd.conf.d
│   ├── zabbix_server.conf
│   └── zabbix_server.conf.d
├── lib
│   └── modules
├── sbin
│   ├── zabbix_agentd
│   └── zabbix_server
└── share
    ├── man
    │   ├── man1
    │   │   ├── zabbix_get.1
    │   │   └── zabbix_sender.1
    │   └── man8
    │       ├── zabbix_agentd.8
    │       └── zabbix_server.8
    └── zabbix
        ├── alertscripts
        └── externalscripts
​
14 directories, 11 files

其中,

etc 是配置文件目錄。

alertscripts 是告警腳本目錄。

externalscripts 是外部腳本目錄。

 

 

(7)修改配置文件

首先修改 Zabbix Server 的配置文件,修改後的配置如下。

# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix_admin
DBPassword=zabbix_pass
DBPort=3306
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

這裡主要修改了連接資料庫的相關參數。

 

其次修改 Zabbix Agent 的配置文件,修改後的配置如下。

# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

這裡為什麼也要修改 Zabbix Agent 的配置文件呢?因為 Zabbix Server 自身及所在伺服器的監控數據也需要 Zabbix Agent 來採集,所以,Zabbix Agent 同樣也需要安裝並啟動。

 

(8)配置服務管理腳本

針對 Zabbix Server,主要修改三處:1. 設置 zabbix_server 的路徑;2. 設置配置文件的路徑;3. 啟動時指定配置文件。

# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_server"
CONFIG_FILE="/usr/local/zabbix/etc/zabbix_server.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONFIG_FILE
        
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_server /etc/init.d/

 

針對 Zabbix Agent,同樣也是調整這三處的內容。

# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONGIG_FILE
...
​
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/

 

(9)啟動 Zabbix Server 和 Zabbix Agent

# service zabbix_server start
# service zabbix_agentd start

啟動 Zabbix Server 的過程中,如果提示以下錯誤,

Starting Zabbix Server: /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory

同樣可通過設置軟鏈接來解決。

# ln -s /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64

 

(10)將 Zabbix Server 和 Zabbix Agent 設置為開機自啟動。

# chkconfig zabbix_server on
# chkconfig zabbix_agentd on

 

安裝 Web 組件

安裝完 Zabbix Server,接下來我們安裝 Web 組件。

這裡使用的 Web 伺服器是 httpd,也可使用 Nginx。

(1)安裝 httpd 和 PHP。

方便起見,這裡直接通過 yum 安裝 httpd 和 PHP。Zabbix 從 5.0 開始,要求 PHP 的版本不低於 7.2。但在 CentOS 7 中,yum 源中默認的是 PHP 5.4.16。所以,這裡需要安裝額外的 epel 和 webtatic 源。

# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install httpd php72w-cli php72w-common php72w-gd php72w-ldap php72w-mbstring php72w-mysqlnd php72w-xml php72w-bcmath mod_php72w -y

 

(2)將 Zabbix 源碼包中的 PHP 文件複製到 httpd 的根目錄下。

# mkdir -p /var/www/html/zabbix
# cp -r /usr/src/zabbix/ui/* /var/www/html/zabbix
# chown -R apache.apache /var/www/html/

 

(3)修改 php 的配置文件。

# vim /etc/php.ini
max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
date.timezone = Asia/Shanghai

注意,這裡給出的只是最小需求值,可根據實際需要調大。

 

(4)啟動 httpd 服務

# service httpd start

 

(5)將 httpd 服務設置為開機自啟動

# chkconfig httpd on

 

配置 Zabbix Web 頁面

安裝完 Web 組件,最後我們開始配置 Zabbix Web 頁面。

(1)登錄 Zabbix Server Web 首頁。

瀏覽器中輸入 //10.0.0.228/zabbix ,其中,10.0.0.228 是 Zabbix Server 的地址

將默認的語言調整為 Chinese(zh_CN) ,點擊下一步。

 

(2)依賴性檢查。

主要是檢查 php 的插件、配置是否滿足要求。如果不滿足,最右邊的 OK 將顯示為 Fail。

 

 

(3)配置資料庫連接資訊。

因為我們的演示環境 Zabbix Server 和資料庫是在一台主機上部署,所以,這裡 Database host 設置的是 127.0.0.1。生成環境建議分開部署。

 

(4)設置 Zabbix Server 資訊

 

 

(5)檢查配置是否正確。

 

 

(6)安裝頁面

  

進入Zabbix的登錄介面,默認的用戶名為Admin,密碼為zabbix,管理員許可權。

 

 

 

登錄成功後的頁面如下所示:

 

安裝 Zabbix Agent

同樣的源碼包,在被監控主機(192.168.244.10)上部署。

(1)編譯安裝 Zabbix Agent:

# groupadd --system zabbix
# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
# cd /usr/src/
# tar xvf zabbix-6.0.2.tar.gz
# ln -s zabbix-6.0.2 zabbix
# yum install gcc pcre-devel -y
# cd zabbix
# ./configure --prefix=/usr/local/zabbix --enable-agent
# make install

 

(2)修改配置文件:

# grep -Ev '^$|^#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.228
ServerActive=127.0.0.1
Hostname=node1

其中,

  • Server:被動模式下 Zabbix Server 的地址,在這種模式下,Zabbix Server 發送請求,Agent 才會響應數據。被動模式是 Zabbix Agent 默認的工作模式。

  • ServerActive:主動模式下 Zabbix Server 的地址,在這種模式下,Agent 會將採集到的數據主動發送給 Zabbix Server。

  • Hostname:主機名。注意,這裡的主機名並不一定要是主機的 hostname,也可以是 IP 或其它有標識性的字元串,只要保證這個配置在 Zabbix Server 監控的主機內全局唯一即可。Hostname 只適用於主動模式,被動模式下無需設置。

 

(3)配置服務管理腳本:

# vim /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd
...
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"
CONGIG_FILE="/usr/local/zabbix/etc/zabbix_agentd.conf"
...
start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN -c $CONGIG_FILE
...
​
# cp /usr/src/zabbix/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/

 

(4)啟動 Zabbix Agent:

# service zabbix_agentd start

 

(5)設置開機自啟動:

# chkconfig zabbix_agentd on