CentOS 7 源碼安裝 Zabbix 6.0
- 2022 年 3 月 23 日
- 筆記
- Nagios & Zabbix, zabbix
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,具體步驟如下。
關閉防火牆和 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)依賴性檢查。
因為我們的演示環境 Zabbix Server 和資料庫是在一台主機上部署,所以,這裡 Database host 設置的是 127.0.0.1。生成環境建議分開部署。
(4)設置 Zabbix Server 資訊
(5)檢查配置是否正確。
(6)安裝頁面
進入Zabbix的登錄介面,默認的用戶名為Admin,密碼為zabbix,管理員許可權。
登錄成功後的頁面如下所示:
同樣的源碼包,在被監控主機(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