目錄
一、Zabbix 監控基礎與核心價值
二、網絡自動發現:批量主機自動化管理
(一)網絡自動發現的核心能力與局限
(二)網絡自動發現完整流程
(三)網絡自動發現配置步驟
1. 客戶端(被監控節點)配置 Zabbix Agent
2. 創建網絡發現規則
3. 創建自動發現動作
4. 配置驗證
(四)主機名稱顯示優化(可選配置)
三、自動注冊:Agent 主動上報的自動化方案
(一)自動注冊與自動發現的核心差異
(二)自動注冊配置步驟
1. 清理歷史配置
2. 客戶端(Agent)配置
3. 創建自動注冊動作
4. 配置驗證
四、應用服務監控:以 Nginx 為例
(一)Nginx 部署與狀態配置
1. 部署 Nginx(server01 節點)
2. Nginx 監控指標與自定義 Key
(1)核心監控指標
(2)自定義 Key 的作用與配置
3. Web 端添加 Nginx 監控項
五、Zabbix 郵件報警:故障及時通知機制
(一)郵件報警核心組件
(二)郵件報警配置步驟
1. 配置告警媒介(以 Email 為例)
2. 配置用戶報警媒介
3. 配置觸發器動作
4. 報警驗證
總結
一、Zabbix 監控基礎與核心價值
在運維工作中,監控環節占比約 38%,其質量直接影響工作效率與穩定性。理想的監控應具備全自動化能力,包括主機自動添加、模板自動關聯、故障自動告警等 ——Zabbix 正是滿足這一需求的專業監控工具,可通過預設規則實現上述自動化操作。
本次實戰環境的資源清單如下:
操作系統 | 配置 | 主機名 | IP 地址 | 角色 |
---|---|---|---|---|
openEuler 24.03 | 2C4G | zabbix | 192.168.207.137 | Zabbix 服務端 |
openEuler 24.03 | 2C4G | server01 | 192.168.207.138 | 被監控節點 |
openEuler 24.03 | 2C4G | server02 | 192.168.207.139 | 被監控節點 |
二、網絡自動發現:批量主機自動化管理
網絡自動發現是 Zabbix 實現主機自動化監控的核心功能之一,其核心價值在于降低運維成本、提升部署效率,尤其適用于規模較大或頻繁變化的 IT 環境。
(一)網絡自動發現的核心能力與局限
-
核心優勢
- ?加快部署速度:無需手動添加主機,通過規則批量發現目標設備
- 簡化管理:自動關聯模板、分組,減少人工操作
- 適應動態環境:在設備頻繁增減的場景中避免 “過度管理”?
-
發現依據
網絡自動發現基于以下信息判斷目標設備:- IP 地址范圍(需提前定義掃描網段)
- 外部服務狀態(如 FTP、SSH、WEB 等端口是否開放)
- Zabbix agent 信息(僅支持未加密模式)
- SNMP agent 信息
-
局限說明
需注意的是,網絡自動發現僅能實現主機和服務的發現,無法自動發現網絡拓撲(如設備間連接關系)。
(二)網絡自動發現完整流程
整個發現過程分為 4 個階段,形成 “發現 - 動作 - 管理” 的閉環:
-
網絡發現階段
發現模塊定期掃描指定 IP 范圍,檢測到服務或主機時生成 “發現事件”(如 “檢測到 192.168.207.138 開放 SSH 服務”)。 -
執行動作階段
基于發現事件觸發預設動作,動作可根據設備類型、IP 地址、運行狀態等條件精準執行(如 “僅對 192.168.207.138-139 網段的 Linux 主機執行操作”)。 -
創建主機階段
動作執行時可自動完成主機添加、主機組歸類、模板關聯(如關聯 “Linux by Zabbix agent” 模板)等操作,無需人工干預。 -
移除主機階段
若已發現的主機脫離預設 IP 范圍(如設備下線),Zabbix 會自動刪除該主機記錄(此功能從 Zabbix 2.4.0 版本開始支持)。
(三)網絡自動發現配置步驟
1. 客戶端(被監控節點)配置 Zabbix Agent
以 server01(192.168.207.138)為例:
- 修改 Agent 配置文件:
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf # 指向Zabbix服務端IP Server=192.168.207.137 ServerActive=192.168.207.137 # 定義主機名(需唯一) Hostname=server01
- 重啟 Agent 使配置生效:
[root@server01 ~]# systemctl restart zabbix-agent
2. 創建網絡發現規則
在 Zabbix Web 界面操作:
-
路徑:數據采集 → 自動發現 → 創建發現規則
-
核心配置項(共 9 項):
- 名稱:自定義規則名稱(如 “企業內網主機發現”)
- 代理程序:選擇 “無代理”(由 Server 直接執行)或指定 Zabbix proxy
- IP 范圍:支持 4 種格式(如單個 IP“192.168.207.138”、范圍 “192.168.207.1-255”、子網 “192.168.207.0/24”、列表 “192.168.207.138,192.168.4.0/24”)
- 更新間隔:定義掃描頻率(如 60 秒,需平衡實時性與資源消耗)
- 檢查類型:選擇 “Zabbix 客戶端”,端口設為 10050(Agent 默認端口),鍵值設為 “system.uname”(獲取系統信息)
- 設備唯一性準則:選擇 “IP 地址” 或 “主機名” 作為唯一標識,避免重復發現
- 已啟用:勾選以激活規則
-
注意:若 IP 范圍包含 1000 個地址,每次掃描會生成 1000 個事件,需合理規劃范圍以減少資源占用。
3. 創建自動發現動作
動作是連接 “發現事件” 與 “管理操作” 的橋梁:
- 路徑:告警 → 動作 → 發現動作 → 創建動作
- 配置內容:
- 動作參數:設置動作名稱(如 “自動添加 Linux 主機”),并關聯前文創建的發現規則(確保僅觸發目標規則的事件)。
- 操作設置:添加具體動作,推薦配置:
- 添加主機(自動將發現的設備錄入 Zabbix)
- 添加到主機群組(如 “Linux servers”)
- 鏈接到模板(如 “Linux by Zabbix agent”,可按需添加其他模板)。
4. 配置驗證
- 查看發現狀態:路徑 “監測 → 自動發現”,可看到已發現的主機列表(如 server01、server02)。
- 查看監控狀態:路徑 “數據采集 → 主機”,確認主機已被添加且模板關聯成功。
(四)主機名稱顯示優化(可選配置)
默認情況下,主機名稱可能顯示為 IP 地址,可通過以下方式優化:
-
修改 Agent 配置(以 server01 為例):
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf # 注釋原Hostname,啟用自動獲取主機名 # Hostname=server01 HostnameItem=system.hostname [root@server01 ~]# systemctl restart zabbix-agent
-
調整自動發現規則:
在 “主機名稱”“可見名稱” 中選擇 “Zabbix 客戶端:system.hostname”,使名稱顯示為實際主機名(如 server01)。
三、自動注冊:Agent 主動上報的自動化方案
(一)自動注冊與自動發現的核心差異
對比維度 | 自動發現 | 自動注冊 |
---|---|---|
觸發方式 | Server 掃描 IP 范圍發現設備 | Agent 主動向 Server 發送注冊請求 |
適用場景 | 已知設備 IP 范圍(如固定網段的服務器) | 未知 IP 范圍(如動態分配 IP 的終端、臨時設備) |
依賴條件 | 需預設 IP 范圍、服務類型等信息 | 僅需 Agent 知道 Zabbix Server 地址 |
自動注冊的核心優勢:當 Agent 的 IP 地址、操作系統版本等信息未知時,仍可通過 “Agent 主動上報” 實現自動化管理(前提是 Agent 已配置 Server 地址)。
(二)自動注冊配置步驟
1. 清理歷史配置
刪除前文創建的自動發現規則、發現動作及自動發現的主機(避免沖突):
- 路徑:分別刪除 “告警 → 動作” 中的發現動作、“數據采集 → 自動發現” 中的規則、“數據采集 → 主機” 中的對應主機。
2. 客戶端(Agent)配置
以 server01 為例,修改配置文件:
[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf
# 指向Server地址(必須正確,否則無法上報)
Server=192.168.207.137
ServerActive=192.168.207.137
Hostname=server01 # 可選,若未設置則使用默認主機名
-
可選參數(按需配置):
HostnameItem=system.hostname
:自動獲取主機名(當 Hostname 未設置時生效)HostMetadata=Linux
:添加元數據標識(如 “Linux”“WebServer”,用于動作條件過濾)HostMetadataItem=system.uname
:自動獲取元數據(如內核版本,當 HostMetadata 未設置時生效)。
-
重啟 Agent:
[root@server01 ~]# systemctl restart zabbix-agent
。
3. 創建自動注冊動作
- 路徑:告警 → 動作 → 自動注冊動作 → 創建動作
- 配置內容:
- 動作名稱:如 “接收 Linux Agent 注冊”
- 觸發條件:可基于元數據過濾(如 “HostMetadata 包含 Linux”,僅接收 Linux 設備)
- 操作設置:與自動發現動作一致,推薦配置 “添加主機 + 加入主機組 + 關聯模板”。
4. 配置驗證
路徑 “數據采集 → 主機”,確認 server01 已被自動添加(Agent 啟動后約 1-2 分鐘生效,取決于上報頻率)。
四、應用服務監控:以 Nginx 為例
Zabbix 可監控各類應用服務,以下以 Nginx 為例,詳解從部署到監控的完整流程。
(一)Nginx 部署與狀態配置
1. 部署 Nginx(server01 節點)
-
配置 yum 源:
[root@server01 ~]# cat > /etc/yum.repos.d/nginx.repo << "EOF" [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/8/x86_64 gpgcheck=0 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/centos/8/x86_64 gpgcheck=0 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF
-
安裝并啟動 Nginx:
[root@server01 ~]# dnf -y install nginx [root@server01 ~]# systemctl start nginx [root@server01 ~]# systemctl enable nginx
-
開啟狀態統計(關鍵步驟):
修改 Nginx 配置文件/etc/nginx/conf.d/default.conf
,在server
段添加:location /nginx_status {stub_status on; # 開啟狀態統計access_log off; # 關閉此路徑的訪問日志 }
重啟 Nginx:
systemctl restart nginx
。 -
驗證狀態頁:執行
curl 127.0.0.1/nginx_status
,應返回類似結果:Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0 ```。
2. Nginx 監控指標與自定義 Key
(1)核心監控指標
需重點監控以下指標,覆蓋 Nginx 運行全狀態:
- 連接數:Active connections(活躍連接數)、Waiting(等待連接數)等
- 請求處理:accepts(總連接數)、handled(成功握手數)、requests(總請求數)等
- 服務可用性:端口 80 是否存活(判斷服務是否運行)
- 資源使用:Nginx 進程數、磁盤剩余空間等。
(2)自定義 Key 的作用與配置
Zabbix 內置 Key 可監控基礎指標(如 CPU、內存),但 Nginx 專項指標(如活躍連接數)需通過自定義 Key 獲取。Key 是 Zabbix 識別監控項的唯一標識,可關聯腳本獲取特定數據。
配置步驟:
-
創建監控腳本(用于提取 Nginx 狀態):
[root@server01 ~]# vim /etc/zabbix/nginx-status.sh #!/bin/bash NGINX_PORT=80 NGINX_COMMAND=$1 # 定義獲取各指標的函數 nginx_active(){curl -s "http://127.0.0.1:$NGINX_PORT/nginx_status/" | awk '/Active/{print $3}' } nginx_reading(){curl -s "http://127.0.0.1:$NGINX_PORT/nginx_status/" | awk '/Reading/{print $2}' } # 其他指標(writing、waiting等)函數省略,格式同上 # 根據參數執行對應函數 case $NGINX_COMMAND inactive) nginx_active;;reading) nginx_reading;;# 其他參數(writing、waiting等)省略*) echo "USAGE: $0 {active|reading|writing|waiting|accepts|handled|requests}" esac
-
賦予腳本執行權限:
[root@server01 ~]# chmod +x /etc/zabbix/nginx-status.sh
。 -
配置 Agent 關聯腳本:
修改/etc/zabbix/zabbix_agentd.conf
:# 開啟自定義Key(默認關閉) UnsafeUserParameters=1 # 定義Key:nginx_status為Key名稱,腳本路徑及參數關聯 UserParameter=nginx_status[*],/etc/zabbix/nginx-status.sh $1
重啟 Agent:
systemctl restart zabbix-agent
。 -
測試自定義 Key:在 Zabbix Server 執行(驗證能否獲取數據):
[root@zabbix ~]# zabbix_get -s 192.168.207.138 -k nginx_status[active]
若返回數字(如 1),說明配置成功。
3. Web 端添加 Nginx 監控項
通過模板統一管理監控項,步驟如下:
- 路徑:數據采集 → 模板 → 創建模板(如 “Nginx-status”)
- 添加監控項:在模板中創建以下監控項(Key 需與配置一致):
監控項名稱 | Key | 說明 | |
---|---|---|---|
nginx active | nginx_status[active] | 活躍連接數 | |
nginx reading | nginx_status[reading] | 讀取客戶端請求數 | |
nginx writing | nginx_status[writing] | 向客戶端寫入響應數 | |
nginx waiting | nginx_status[waiting] | 等待客戶端請求數 | |
nginx accepts | nginx_status[accepts] | 總連接數 | |
nginx handled | nginx_status[handled] | 成功握手數 | |
nginx requests | nginx_status[requests] | 總請求數 | |
nginx port | net.tcp.port[,80] | 80 端口存活狀態(1 為存活) | |
nginx proc | proc.num[nginx] | Nginx 進程數 | |
nginx fs | vfs.fs.size[/,pfree] | 根目錄剩余空間占比 | 至 |
- 應用模板:將模板關聯到 server01 主機,完成監控配置。
五、Zabbix 郵件報警:故障及時通知機制
當監控指標觸發閾值(如 Nginx 端口 down)時,Zabbix 需自動發送告警,郵件是最常用的告警方式。
(一)郵件報警核心組件
報警流程依賴三個核心組件,缺一不可:
- 告警媒介:信息傳遞渠道(如郵箱),需配置發送服務器、認證信息等。
- 觸發器:閾值判斷規則(如 “nginx port=0(端口 down)”),觸發時生成事件。
- 動作:事件觸發后執行的操作(如 “向 Admin 發送郵件”)。
(二)郵件報警配置步驟
1. 配置告警媒介(以 Email 為例)
- 路徑:告警 → 媒介 → 選擇 “Email” → 編輯
- 核心配置:
- SMTP 服務器:如 “smtp.qq.com”(QQ 郵箱)、“smtp.163.com”(網易郵箱)
- SMTP 端口:465(SSL 加密,推薦)
- 發件人郵箱:如 “xxx@qq.com”
- 認證信息:用戶名填發件人郵箱,密碼需填郵箱授權碼(非登錄密碼,需在郵箱官網開啟 SMTP 并獲取)。
- 測試媒介:配置完成后發送測試郵件,確認接收正常。
2. 配置用戶報警媒介
指定接收告警的用戶及聯系方式:
- 路徑:用戶 → 用戶 → 選擇 “Admin” → 報警媒介 → 添加
- 配置:選擇 “Email” 媒介,填寫接收郵箱(如 “admin@example.com”),設置接收時間(如 “00:00-24:00” 全時段)。
3. 配置觸發器動作
定義 “觸發條件” 與 “告警操作”:
- 路徑:告警 → 動作 → 觸發器動作 → 創建動作
- 配置內容:
- 動作名稱:如 “Nginx 故障告警”
- 觸發條件:選擇前文創建的 Nginx 監控項(如 “nginx port=0”,即端口 80down)
- 操作設置:添加操作 “發送消息”,選擇接收用戶(如 Admin)、消息類型(Email)、消息內容(如 “Nginx 服務異常,IP:192.168.207.138”)。
4. 報警驗證
手動停止 server01 的 Nginx 服務:systemctl stop nginx
。
- 觸發檢查:Zabbix 會檢測到 “nginx port=0”,觸發告警。
- 結果驗證:接收郵箱應收到告警郵件,內容包含故障信息。
總結
Zabbix 通過 “網絡自動發現”“自動注冊” 實現主機自動化管理,通過 “自定義 Key” 拓展監控維度,通過 “郵件報警” 實現故障及時通知,形成從 “發現” 到 “監控” 再到 “告警” 的完整閉環。掌握這些高級應用,可大幅提升運維效率,滿足企業級監控需求。實際使用中需根據場景選擇自動發現或自動注冊(已知 IP 用發現,未知 IP 用注冊),并合理配置監控項與告警閾值,確保監控精準、告警及時。