CentOS 7 原始碼安裝 Zabbix 6.0

iVictor發表於2022-03-23

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 軟體包:

下載地址:https://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 首頁。

瀏覽器中輸入 http://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

 

相關文章