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 軟體包:
下載地址: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)依賴性檢查。
因為我們的演示環境 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