Zabbix 監控平台搭建實驗
前言
本文重點在于Zabbix監控平台的工作原理與運作原理,後面會将詳細的搭建流程展示,如有錯誤和遺漏的地方,歡迎大家指正,謝謝。
基礎理論說明
Zabbix 是什麼?
Zabbix 是一個基于 WEB 界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。( 基于 GPL V2 )
zabbix由2部分構成,zabbix server 與可選元件 zabbix agent。
為什麼需要對各類系統進行監控?
在系統建構時的正常流程中,通常是不允許未被監控的系統或應用上線的,因為未被監控的系統存在不可預知性、故障未知性等不穩定因素,且無法及時被發現并排除。這對整個架構或系統來說都是很大的風險隐患。是以我們原則上是需要對整個架構或系統進行監控,随時監測系統各方面的名額是否正常,以提高整個系統的穩定性。
Zabbix是如何實作系統監控的?
一個完整的監控系統所需名額:
1.采樣:周期性的擷取某個被監測名額的相關資料
2.存儲:将采集到的資料存儲在指定的存儲系統中,Zabbix預設是MySQL
對于資料的存儲可分為兩大類:
曆史資料:可了解為過去某一時間點的資料
趨勢資料:可了解為過去某一段時間的資料
3.展示:采集完資料後,為了使資料能更直覺的展現在使用者面前,可将采集到的資料做二次處理,做成各類圖形。Zabbix就是使用的PHP程式将采集的資料通過Web GUI直覺的展示給使用者。
4.報警:當監控的名額出現異常時需要監控系統能自動的發出告警資訊,甚至在出現報警後能自動完成修複。
Zabbix支援的資料采集協定
1.SNMP:(Simple Network Management Protocol),監控網絡裝置或windows主機等。通過設定SNMP的參數将相關監控資料傳送至服務端,交換機、防火牆等網絡裝置一般都支援SNMP協定。
2.Agent:Zabbix可以基于自身zabbix_agent用戶端插件監控OS的狀态,例如CPU、記憶體、硬碟、網卡、檔案等。
3.IPMI:智能平台管理接口(Intelligent Platform Management Interface)即主要應用于裝置的實體特性,包括:溫度、電壓、電扇工作狀态,電源供應以及機箱入侵等。IPMI最大的優勢在于無論OS的開機還是關機狀态下,隻要接通電源就可以實作對伺服器的監控。
4.JMX:Java Management Extensions(不常見)
Zabbix 程序構成
zabbix 安裝完成後會産生 5 個程式:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、 zabbix_server,zabbix_java_gateway 是可選,這個需要另外安裝。
1.zabbix_agentd:用戶端守護程序,此程序收集用戶端資料,例如 cpu 負載、記憶體、硬碟使用情況等。
2.zabbix_get:zabbix 工具,單獨使用的指令,通常用于排錯。
3.zabbix_sender:zabbix 工具,用于發送資料給 server 或者 proxy ,在腳本完成之後使用 sender 主動将資料送出 。
4.zabbix_server:zabbix 服務端守護程序,所有資料都是被送出或主動送出到 zabbix_server 端。
5.zabbix_proxy:zabbix 代理守護程序。功能類似 server,唯一不同的是它隻是一個中轉站,它需要把收集到的資料送出/被送出到 server 裡。
6.zabbix_java_gateway:zabbix2.0 之後引入的一個功能。顧名思義:Java 網關,類似 agentd,但是隻用于 Java 方面。需要特别注意的是,它隻能主動去擷取資料,而不能被動擷取資料。它的資料最終會給到 server 或者 proxy。
Zabbix實作監控的兩種模式
Zabbix監控用戶端分為主動監控與被動監控,主被動模式以用戶端為參照,Zabbix監控用戶端預設為被動模式,可以修改為主動模式,隻需要在用戶端配置檔案中添加 StartAgents=0。
Zabbix主動模式:Agent主動請求server擷取主動的監控項清單,并主動将監控項内需要檢測的資料送出給server/proxy,zabbix agent首先向ServerActive配置的IP請求擷取active items,擷取并送出active items資料至server/proxy。
Zabbix被動模式:Server向agent請求擷取監控項的資料,agent傳回資料,server打開一個TCP連接配接,Server發送請求agent.ping,Agent接收到請求并且響應,Server處理接收到的資料。
以下的總結和問題部分來自網上:https://blog.csdn.net/qq_37960324/article/details/93588260
https://blog.csdn.net/scott_bing/article/details/78613194
應用場景
目前生産環境中,主流的監控解決方案大多為Zabbix和Prometheus。
Zabbix | Prometheus |
---|---|
後端用 C 開發,界面用 PHP 開發,定制化難度很高。 | 後端用 golang 開發,前端是 Grafana,JSON 編輯即可解決。定制化難度較低。 |
叢集規模上限為 10000 個節點。 | 支援更大的叢集規模,速度也更快。 |
更适合監控實體機環境。 | 更适合雲環境的監控,對 OpenStack,Kubernetes 有更好的內建。 |
監控資料存儲在關系型資料庫内,如 MySQL,很難從現有資料中擴充次元。 | 監控資料存儲在基于時間序列的資料庫内,便于對已有資料進行新的聚合。 |
安裝簡單,zabbix-server 一個軟體包中包括了所有的服務端功能。 | 安裝相對複雜,監控、告警和界面都分屬于不同的元件。 |
圖形化界面比較成熟,界面上基本上能完成全部的配置操作。 | 界面相對較弱,很多配置需要修改配置檔案。 |
發展時間更長,對于很多監控場景,都有現成的解決方案。 | 2015 年後開始快速發展,但發展時間較短,成熟度不及 Zabbix。 |
實驗步驟
實驗目的:搭建Zabbix監控平台
實驗準備:兩台标準C7系統虛拟機(selinux已關閉,防火牆規則已清空)
實驗規劃:
伺服器角色 | 簡稱 | IP |
---|---|---|
監控端 | MS(Monitor Server) | 192.168.10.20 |
被監控端 | MC(Monitor Client) | 192.168.10.21 |
一、配置監控伺服器
1.安裝LNMP環境
yum -y install mariadb mariadb-server httpd php php-mysql
systemctl enable httpd # 設定httpd開機自啟
systemctl start httpd # 重新開機httpd服務
systemctl enable mariadb #設定mariadb開機自啟
systemctl start mariadb # 開啟mariadb服務
mysql_secure_installation # 安全初始化mariadb
# 操作為回車→y→123456→123456→y→y→y→y
mysql -uroot -p123456
2.Zabbix初始化
配置Zabbix的yum倉庫
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm # 安裝Zabbix的yum源倉庫
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX # 導入Zabbix秘鑰
vim /etc/yum.repos.d/zabbix.repo # 将預設的源替換為國内鏡像源
安裝Zabbix的相關軟體
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
初始化資料庫
mysql -uroot -p123456
CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; # 建立Zabbix資料庫,預設字元集為utf8
grant all privileges on zabbix.* to [email protected] identified by 'zabbix'; # 配置Zabbix庫通路權限,通路使用者與密碼都為zabbix
exit
還原資料庫,進行還原操作後,進入資料庫檢視是否還原。
cd /usr/share/doc/zabbix-server-mysql-3.2.11/
zcat create.sql.gz | mysql -uroot -p123456 zabbix
mysql -uroot -p123456
show databases;
use zabbix
show tables;
exit
編輯Zabbix服務端配置檔案,配置資料庫資訊。
vim /etc/zabbix/zabbix_server.conf
# 取消81行注釋,配置指定zabbix的資料庫伺服器IP
DBHost=localhost
# 修改91行,配置指定zabbix使用的資料庫庫名
DBName=zabbix
# 修改107行,指定zabbix資料庫登入使用者
DBUser=zabbix
# 取消115行注釋,指定zabbix資料庫登入密碼
DBPassword=zabbix
啟動Zabbix用戶端
systemctl start zabbix-server # 啟動zabbix服務
systemctl enable zabbix-server # 設定zabbix服務開機自啟
3.配置apache
配置apache的預設首頁目錄,友善通路。
vim /etc/httpd/conf/httpd.conf
# 修改119行,配置預設目錄
DocumentRoot "/usr/share/zabbix"
請求伺服器正确時間
yum -y install ntpdate
/usr/sbin/ntpdate -u ntp1.aliyun.com # 請求正确時間
echo "/usr/sbin/ntpdate -u ntp1.aliyun.com" >> /etc/rc.d/rc.local # 開機自動請求正确時間
編輯zabbix前端php配置
vim /etc/httpd/conf.d/zabbix.conf
# 取消19行注釋,配置正确時區
php_value date.timezone Asia/Shanghai
儲存退出,啟動服務。
systemctl start httpd
4.浏覽器安裝
浏覽器通路測試,進入安裝頁面。
192.168.10.20
點選 Next step進行下一步:檢查先決條件
檢測無誤,點選 Next step進行下一步:配置資料庫連接配接
輸入正确資訊後,點選 Next step進行下一步:配置伺服器詳細資訊
點選 Next step進行下一步:檢視安裝總結
點選 Next step進行下一步:完成安裝
點選Finish完成安裝,進入登陸界面。登入時,使用者名:Admin,密碼:zabbix。
安裝成功,開始配置中文界面。
點選Administration→Users→Admin→在language一欄中選擇語言→Update應用設定
重新整理頁面
中文頁面設定完畢
5.配置監控本地主機
編輯用戶端配置檔案,配置本地主機資訊。
vim /etc/zabbix/zabbix_agentd.conf
# 修改95行,指定zabbix伺服器的IP或域名
Server=192.168.10.20
# 修改136行,指定主動方案中的zabbix伺服器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本機的主機名,此項必須與web界面配置項一緻
Hostname=192.168.10.20
儲存退出,啟動zabbix-agent服務并設定為開機自啟。
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -antp | grep :10050
傳回浏覽器配置被監控主機
配置→主機
将預設被監控機删除,自行添加新的被監控主機。
删除操作完成後,點選建立主機,開始配置被監控主機
配置主機資訊
配置模版資訊(監控項)
其餘資訊按需設定,點選添加完成設定。
檢視監控
監測中→圖形→選擇群組、主機、圖形(監控對象)
可以看出正在監測,但是有些字元無法顯示(字元缺失)
6.修複中文亂碼
win+R 輸入fonts,找到設定的字型,上傳至linux主機/usr/share/zabbix/fonts目錄下。
原字型放到備份目錄下,替換選擇的字型名
然後重新整理網頁,發現網頁字型變成中文。
cd /usr/share/zabbix/fonts/
mkdir back
mv graphfont.ttf back/ #
mv STXINWEI.TTF graphfont.ttf
chmod a+x graphfont.ttf
成功顯示中文
二、配置被監控端
安裝Zabbix的agent端
yum -y install zabbix-agent-3.2.1-1.el7.x86_64.rpm
編輯用戶端配置檔案,配置被監控端資訊。
vim /etc/zabbix/zabbix_agentd.conf
# 修改95行,指定zabbix伺服器的IP或域名
Server=192.168.10.20
# 修改136行,指定主動方案中的zabbix伺服器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本機的主機名,此項必須與web界面配置項一緻
Hostname=192.168.10.21
儲存退出,啟動zabbix-agent服務并設定為開機自啟。
systemctl start zabbix-agent
systemctl enable zabbix-agent
netstat -antp | grep :10050
傳回浏覽器監控端添加被監控端
配置→主機→建立主機
主機資訊設定
監控模版設定
其餘配置按需配置,點選添加,完成監控配置。
點選小人頭,設定報警聲音提示。
安裝一個自重新整理插件,關閉被監測端HTTP服務,測試是否有報警聲音。
出現錯誤,報警提示。(推薦使用Auto Refresher)
重新開啟被監測端HTTP服務,提示已經修複。
基本的Zabbix監控配置搭建完畢,本文隻展示了最基本的功能,之後的實驗文檔會展示進階操作。
本文于2020年11月25日由Vonmerlot整理成文。