Nagios 是許多DevOps團(tuán)隊(duì)用來(lái)確保對(duì)系統(tǒng)、設(shè)備、應(yīng)用程序和服務(wù)進(jìn)行全面有效跟蹤的流行監(jiān)控工具。但是,該工具確實(shí)有一個(gè)陡峭的學(xué)習(xí)曲線,因此如果沒(méi)有經(jīng)驗(yàn)或好的教程,設(shè)置和開(kāi)始使用 Nagios 可能會(huì)很棘手。本文概述了 Nagios 的功能,并為該工具的新手提供了一個(gè)理想的起點(diǎn)。繼續(xù)閱讀以了解 Nagios 的基本功能、優(yōu)勢(shì)和架構(gòu),并了解公司如何使用該工具來(lái)確保對(duì) IT 環(huán)境的持續(xù)監(jiān)控。

什么是持續(xù)監(jiān)控?
持續(xù)監(jiān)控是不斷檢測(cè)、報(bào)告和響應(yīng) IT 系統(tǒng)內(nèi)的風(fēng)險(xiǎn)和事件的過(guò)程。這個(gè)過(guò)程是至關(guān)重要的DevOps 安全實(shí)踐,并且有多個(gè)目標(biāo):
- 提供對(duì)系統(tǒng)性能的實(shí)時(shí)洞察。
- 就 IT 基礎(chǔ)架構(gòu)的整體健康和安全提供反饋。
- 增強(qiáng) IT 運(yùn)營(yíng)和DevOps 管道的可見(jiàn)性。
- 在問(wèn)題導(dǎo)致停機(jī)或數(shù)據(jù)泄露之前確定事件的原因并采取緩解措施。
持續(xù)跟蹤的需求來(lái)自手動(dòng)監(jiān)控的問(wèn)題,因?yàn)閭鹘y(tǒng)跟蹤太容易出現(xiàn):
- 減慢CI/CD 管道中的部署。
- 導(dǎo)致生產(chǎn)中的性能問(wèn)題。
- 冗長(zhǎng)且具有挑戰(zhàn)性的根本原因分析。
快速檢測(cè)、報(bào)告和響應(yīng)威脅的能力對(duì)于公司的整體網(wǎng)絡(luò)安全至關(guān)重要。持續(xù)監(jiān)控也是SecOps團(tuán)隊(duì)中的一種標(biāo)準(zhǔn)做法,因?yàn)檎麄€(gè)環(huán)境的可靠、實(shí)時(shí)洞察力可以改進(jìn):
- 威脅情報(bào)。
- 根本原因分析。
- 事件響應(yīng)。
- 事后取證。
其他流行的持續(xù)監(jiān)控術(shù)語(yǔ)是ConMon和持續(xù)控制監(jiān)控 (CCM)。
為什么 ConMon 很重要?
持續(xù)監(jiān)控是現(xiàn)代網(wǎng)絡(luò)安全的一個(gè)重要方面。完善的 ConMon 解決方案允許安全團(tuán)隊(duì):
- 快速檢測(cè)系統(tǒng)問(wèn)題(網(wǎng)絡(luò)錯(cuò)誤、內(nèi)存不足、端口故障、系統(tǒng)崩潰、服務(wù)器無(wú)法訪問(wèn)等)。
- 在問(wèn)題影響用戶或業(yè)務(wù)生產(chǎn)力之前解決問(wèn)題。
- 識(shí)別基礎(chǔ)架構(gòu)中的安全和合規(guī)風(fēng)險(xiǎn)。
- 通過(guò)及時(shí)的警報(bào)系統(tǒng)和自動(dòng)事件響應(yīng)降低網(wǎng)絡(luò)攻擊的風(fēng)險(xiǎn)。
- 準(zhǔn)確識(shí)別問(wèn)題的根本原因。
- 保持高水平的系統(tǒng)正常運(yùn)行時(shí)間和可用性。
- 使用精確的歷史分析來(lái)規(guī)劃基礎(chǔ)設(shè)施升級(jí)。
- 跟蹤應(yīng)用更新后的用戶體驗(yàn)和行為(對(duì)多個(gè)團(tuán)隊(duì)至關(guān)重要的能力,包括開(kāi)發(fā)、質(zhì)量保證和客戶服務(wù))。
什么是 Nagios?
Nagios 是一個(gè)用于監(jiān)控系統(tǒng)、網(wǎng)絡(luò)和 IT 基礎(chǔ)設(shè)施的開(kāi)源應(yīng)用程序。該工具允許用戶跟蹤以下?tīng)顟B(tài)和性能:
- 硬件(路由器、交換機(jī)、防火墻、專(zhuān)用服務(wù)器、工作站、打印機(jī)等)。
- 網(wǎng)絡(luò)。
- 應(yīng)用。
- 服務(wù)。
- 業(yè)務(wù)流程。
- 操作系統(tǒng)(Windows、Linux、Unix 和 OSX)。
Nagios 定期檢查關(guān)鍵閾值和指標(biāo),以監(jiān)控系統(tǒng)更改和潛在問(wèn)題。如果軟件遇到問(wèn)題,該工具會(huì)通知管理員,還可以運(yùn)行自動(dòng)腳本來(lái)控制和糾正這種情況。
您可以使用 Nagios 來(lái)監(jiān)控:
- 內(nèi)存和磁盤(pán)使用情況。
- CPU 負(fù)載。
- 正在運(yùn)行的進(jìn)程數(shù)。
- 日志文件。
- 系統(tǒng)可用性。
- 響應(yīng)時(shí)間。
- URL 和內(nèi)容監(jiān)控指標(biāo)。
- 服務(wù)和網(wǎng)絡(luò)協(xié)議(SMTP、POP3、HTTP 等)。
該工具有兩種主要變體:
- Nagios Core:該軟件的免費(fèi)版本,允許用戶跟蹤所有重要指標(biāo)。
- Nagios XI:?Core 的付費(fèi)擴(kuò)展版本,提供用于監(jiān)控的高級(jí)組件和工具。
由于該解決方案的可擴(kuò)展性、效率和靈活性,該軟件是 DevOps 圈子中常用的首選工具。
為什么我們需要 Nagios?
與所有強(qiáng)大的 ConMon 工具一樣,Nagios 無(wú)需手動(dòng)監(jiān)控。與識(shí)別和修復(fù)基礎(chǔ)設(shè)施錯(cuò)誤相比,團(tuán)隊(duì)可以專(zhuān)注于更有影響力的任務(wù)。Nagios 還對(duì)所有環(huán)境、設(shè)備和系統(tǒng)的監(jiān)控進(jìn)行標(biāo)準(zhǔn)化和集中化。
DevOps 和 SecOps 團(tuán)隊(duì)經(jīng)常將 Nagios 視為首選持續(xù)監(jiān)控工具的其他原因是:
- 甚至 Nagios 的免費(fèi)版本也允許用戶監(jiān)控所有關(guān)鍵任務(wù)組件和指標(biāo)。
- 該工具的高可擴(kuò)展性使團(tuán)隊(duì)能夠跟蹤數(shù)千臺(tái)設(shè)備和 100,000 多個(gè)節(jié)點(diǎn)環(huán)境。
- 該軟件可以快速檢測(cè)所有類(lèi)型的網(wǎng)絡(luò)/服務(wù)器問(wèn)題并有效地找出根本原因。
- Nagios 擅長(zhǎng)監(jiān)控?cái)?shù)據(jù)庫(kù)服務(wù)器(SQL Server、Oracle、MySQL、Postgres等)。
Nagios 的好處
以下是使用 Nagios 進(jìn)行持續(xù)監(jiān)控的主要好處:
- 更好的系統(tǒng)可用性和性能。
- 該工具無(wú)需定期測(cè)試。
- 快速檢測(cè)中斷、網(wǎng)站篡改和劫持企圖。
- 容量規(guī)劃有助于規(guī)劃未來(lái)的 IT 升級(jí)。
- 由于該工具是開(kāi)源的,因此熟練的團(tuán)隊(duì)可以調(diào)整軟件以適應(yīng)業(yè)務(wù)需求。
- Nagios 有一個(gè)大型活躍社區(qū)的支持,該社區(qū)不斷開(kāi)發(fā)新的附加組件。
- Nagios 插件可免費(fèi)下載和開(kāi)發(fā),提供了高度的靈活性。
- 該解決方案的警報(bào)和響應(yīng)系統(tǒng)確保了高水平的安全性。
Nagios 功能
以下是 Nagios 監(jiān)控工具的主要功能:
- 允許團(tuán)隊(duì)為周界和指標(biāo)設(shè)置自定義閾值。如果系統(tǒng)超過(guò)設(shè)定的限制,Nagios 可以通過(guò) SMS、電子郵件或語(yǔ)音呼叫發(fā)送警報(bào)。
- 支持基于代理和無(wú)代理的配置。Nagios Remote Plugin Executor (NRPE) 代理允許您運(yùn)行遠(yuǎn)程腳本和插件。
- 具有多租戶功能的高度可定制的 UI,允許您為每個(gè)用戶分配自定義可見(jiàn)性。
- 多個(gè) API 支持與內(nèi)部和第三方應(yīng)用程序的簡(jiǎn)單集成。
- 如果系統(tǒng)遇到嚴(yán)重問(wèn)題,配置快照存檔使您能夠恢復(fù)到以前的工作設(shè)置。
- 分步監(jiān)控向?qū)Э蓭椭焖佥p松地設(shè)置工具。
- 歷史性能和容量規(guī)劃有助于在關(guān)鍵系統(tǒng)過(guò)載之前預(yù)測(cè)未來(lái)使用情況并規(guī)劃 IT 升級(jí)。
- 強(qiáng)大的日志管理系統(tǒng)。
- 并行處理可確保快速檢測(cè)中斷和硬件問(wèn)題。
- 允許您跨多個(gè)位置設(shè)置對(duì)機(jī)器的監(jiān)控。然后所有設(shè)備將輸出發(fā)送到中央 Nagios 服務(wù)器。
- 使用拓?fù)鋪?lái)確定依賴關(guān)系。
- 允許用戶使用父主機(jī)定義網(wǎng)絡(luò)層次結(jié)構(gòu)。
納吉奧斯架構(gòu)
Nagios 在主機(jī)服務(wù)器上運(yùn)行(通常作為守護(hù)程序),并且該工具的操作依賴于服務(wù)器代理架構(gòu)。在需要監(jiān)控的網(wǎng)元上設(shè)置代理,代理與 Nagios 服務(wù)器通信。該工具通過(guò)代理檢索指標(biāo),并根據(jù)事件和設(shè)置閾值做出決策。
Nagios 與系統(tǒng)通信的另一種方式是通過(guò)本機(jī)協(xié)議,例如 SNMP 或 WMI。根據(jù)設(shè)置,代理和基于協(xié)議的監(jiān)控都可以是:
- 活動(dòng):服務(wù)器向交換機(jī)或服務(wù)器等元素伸出援手,并詢問(wèn)它們的狀態(tài)。
- 被動(dòng):受監(jiān)控的系統(tǒng)會(huì)定期或在發(fā)生事件時(shí)向服務(wù)器發(fā)送信息。
Nagios 架構(gòu)具有三個(gè)主要組件:
- 插件:在 Nagios 服務(wù)器上運(yùn)行并與需要監(jiān)控的本地和遠(yuǎn)程主機(jī)通信的可配置插件。
- 進(jìn)程調(diào)度器:調(diào)度器定期檢查插件并根據(jù)結(jié)果執(zhí)行操作(例如提醒員工或啟動(dòng)自動(dòng)腳本來(lái)解決問(wèn)題)。
- 圖形用戶界面 (GUI):這是 Nagios 系統(tǒng)的用戶界面,用戶通過(guò)該界面與工具交互并查看監(jiān)控?cái)?shù)據(jù)。
雖然您可以使用基于 Web 的 GUI 與該工具進(jìn)行交互,但團(tuán)隊(duì)也可以在命令行界面 (CLI) 中工作。

Nagios 插件
插件是獨(dú)立的附加組件和擴(kuò)展,允許用戶:
- 定義受監(jiān)控系統(tǒng)的目標(biāo)和參數(shù)。
- 檢查主機(jī)或服務(wù)的狀態(tài)。
插件要么是編譯的二進(jìn)制文件(用 C、C++ 等編寫(xiě)),要么是用戶從命令行運(yùn)行的可執(zhí)行腳本(Shell、Perl、PHP 等)。插件在 Nagios 服務(wù)器上運(yùn)行,使用戶能夠通過(guò)代理或本地協(xié)議監(jiān)控遠(yuǎn)程和本地主機(jī)。Nagios 使用插件生成的結(jié)果來(lái)確定:
- 主機(jī)的狀態(tài)。
- 如果事件需要立即發(fā)出警報(bào)或 GUI 上的簡(jiǎn)單日志。
- 是否運(yùn)行自動(dòng)腳本來(lái)解決問(wèn)題。
Nagios 插件分為三種類(lèi)型:
- 官方插件:?Nagios 開(kāi)發(fā)和維護(hù)了大約 50 個(gè)官方插件。
- 社區(qū)插件:社區(qū)成員開(kāi)發(fā)了超過(guò) 3,000 個(gè)可用的第三方插件。
- 自定義插件:如果您的團(tuán)隊(duì)具備合適的技能,該工具的開(kāi)源特性允許您創(chuàng)建自定義插件。
所有插件都遵循狀態(tài)碼。下表解釋了默認(rèn)退出代碼狀態(tài)及其描述:
退出代碼 | 狀態(tài) | 描述 |
---|---|---|
0 | 好的 | 系統(tǒng)工作正常 |
1 | 警告 | 系統(tǒng)繼續(xù)運(yùn)行,但需要注意 |
2 | 危急 | 系統(tǒng)無(wú)法正常工作 |
3 | 未知 | 插件無(wú)法評(píng)估主機(jī)或服務(wù)的狀態(tài) |
Nagios GUI
圖形用戶界面 (GUI) 提供了 Nagios 中進(jìn)行的所有進(jìn)程的概覽。Nagios XI GUI 提供最關(guān)鍵的監(jiān)控?cái)?shù)據(jù)的查看,并有六個(gè)子菜單:
- 快速查看:包含不同 Dashlet 的可自定義界面,用戶可以根據(jù)自己的需要添加、刪除和操作。快速視圖是您可以找到戰(zhàn)術(shù)概覽的地方,它是您當(dāng)前監(jiān)控的所有主機(jī)和服務(wù)的總體摘要。

- 詳細(xì)信息:此菜單顯示所有主機(jī)和服務(wù)的詳細(xì)摘要。詳細(xì)信息選項(xiàng)卡顯示為每個(gè)主機(jī)運(yùn)行的所有統(tǒng)計(jì)信息、命令和服務(wù)。

- 圖表:此菜單顯示了每個(gè)主機(jī)的所有受監(jiān)控服務(wù)的一系列可擴(kuò)展性能圖表。

- Maps:所有主機(jī)和父子關(guān)系的圖形狀態(tài)圖。您可以將地圖視為氣球或樹(shù)狀圖(或?yàn)槠渌恍┑貓D選項(xiàng)安裝自定義插件)。

- 事件管理:此菜單匯總了服務(wù)和主機(jī)的所有當(dāng)前通知和警報(bào)。

- 監(jiān)控過(guò)程:此菜單顯示有關(guān)工具內(nèi)部操作的數(shù)據(jù)。

在頂部菜單中,您會(huì)發(fā)現(xiàn):
- 視圖:快速訪問(wèn)每個(gè)用戶獨(dú)有的一組視圖。對(duì)于希望在網(wǎng)絡(luò)運(yùn)營(yíng)中心 (NOC) 的墻上監(jiān)視器上顯示數(shù)據(jù)的網(wǎng)絡(luò)管理員很有用。
- 儀表板:可定制的儀表板,顯示特定于各個(gè) Nagios 用戶的重要相關(guān)數(shù)據(jù)。
- 報(bào)告:此菜單提供了一種為主機(jī)和服務(wù)生成統(tǒng)計(jì)數(shù)據(jù)和圖形報(bào)告的簡(jiǎn)便方法。
- 配置:配置菜單允許您在監(jiān)控向?qū)У膸椭略O(shè)置新的監(jiān)控進(jìn)程。
- 工具:您可以使用 Web 瀏覽器從 Nagios 快速訪問(wèn)的實(shí)用程序。
- 幫助:直接訪問(wèn) Nagios 支持資源和團(tuán)隊(duì)。

Nagios 核心安裝
下面的分步指南顯示了如何在 Ubuntu 20.04 上安裝 Nagios Core。
第 1 步:檢查系統(tǒng)更新
1.您應(yīng)該首先在網(wǎng)上查看最新的可用軟件包:
$ sudo apt update
2.接下來(lái),將系統(tǒng)包升級(jí)到最新版本:
$ sudo apt upgrade
第 2 步:安裝必備軟件包
更新系統(tǒng)后,您需要安裝運(yùn)行 Core 所需的包。在命令行中輸入以下代碼:
$ sudo apt install wget unzip vim curl gcc openssl build-essential libgd-dev libssl-dev libapache2-mod-php php-gd php apache2
第 3 步:下載 Nagios 核心
下載 Nagios 核心。為此,請(qǐng)瀏覽到官方Git 存儲(chǔ)庫(kù)并選擇最新版本。或者,您可以從官方網(wǎng)站下載該工具。在撰寫(xiě)本文時(shí),Nagios 的最新版本是 4.4.6,因此我們使用以下命令來(lái)提取工具:
$ export VER="4.4.6"
現(xiàn)在,使用curl
命令:
$ curl -SL https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-$VER/nagios-$VER.tar.gz | tar -xzf -
此命令會(huì)下載一個(gè)名為nagios-4.4.6的目錄并將其添加到您當(dāng)前的工作目錄中。
第 4 步:安裝 Nagios
我們現(xiàn)在需要通過(guò)從源代碼編譯來(lái)安裝 Core。
1. 導(dǎo)航到 Nagios 目錄:
$ cd nagios-4.4.6
2. 運(yùn)行配置腳本:
$ ./configure

3. 運(yùn)行make all
命令以編譯 CGI 旁邊的程序:
$ sudo make all
4.接下來(lái),我們需要?jiǎng)?chuàng)建組用戶:
$ sudo make install-groups-users
$ sudo usermod -a -G nagios www-data
5. 現(xiàn)在在您的 Ubuntu 系統(tǒng)上安裝 Nagios Core:
$ sudo make install

6. 如您所見(jiàn),屏幕上出現(xiàn)了一些附加說(shuō)明。運(yùn)行以下命令將init
腳本安裝在/lib/systemd/system路徑中:
$ sudo make install-init
7.接下來(lái),安裝目錄并配置權(quán)限:
$ sudo make install-commandmode
8. 最后,在/usr/local/nagios/etc/中安裝示例配置文件:
$ sudo make install-config
第 5 步:設(shè)置 Apache 和 Nagios UI
1. 您需要啟用 Nagios Web 界面所需的 Apache 模塊,因此運(yùn)行以下命令:
$ sudo make install-webconf
$ sudo a2enmod rewrite cgi
$ sudo systemctl restart apache2
2. 為經(jīng)典的 Nagios 監(jiān)控主題鍵入以下命令:
$ sudo make install-classicui
第 6 步:創(chuàng)建第一個(gè) Nagios 用戶
我們現(xiàn)在需要?jiǎng)?chuàng)建一個(gè)可以登錄 Nagios 的用戶。以下命令創(chuàng)建一個(gè)名為nagadmin的用戶:
$ sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagadmin
您需要為用戶提供密碼并確認(rèn)(默認(rèn)情況下,密碼存儲(chǔ)在/usr/local/nagios/etc/htpasswd.users中)。
第 7 步:安裝 Nagios 插件
查看官方存儲(chǔ)庫(kù)中最新可用的插件(在撰寫(xiě)本文時(shí),最新發(fā)布的版本是 2.3.3)。
1. 要下載插件,請(qǐng)鍵入以下命令:
$ VER="2.3.3"
$ curl -SL https://github.com/nagios-plugins/nagios-plugins/releases/download/release-$VER/nagios-plugins-$VER.tar.gz | tar -xzf -
2. 此命令在您當(dāng)前的工作目錄中創(chuàng)建一個(gè)新目錄 (?nagios-plugins-2.3.3 )。要安裝插件,您首先需要導(dǎo)航到新目錄:
$ cd nagios-plugins-2.3.3
3. 現(xiàn)在從源代碼編譯插件:
$ ./configure --with-nagios-user=nagios --with-nagios-group=nagios
$ sudo make install
4. 要確保所有配置都井然有序,請(qǐng)運(yùn)行以下命令:
$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
第 8 步:?jiǎn)?dòng) Nagios 守護(hù)進(jìn)程
1.最后一步是啟動(dòng)Nagios服務(wù),我們通過(guò)以下命令實(shí)現(xiàn):
$ sudo systemctl enable --now nagios
2. 要確保該工具正在運(yùn)行,請(qǐng)使用以下命令:
$ sudo systemctl status nagios

3. 您現(xiàn)在可以通過(guò)打開(kāi)瀏覽器并導(dǎo)航到http://server-IP/nagios?URL 來(lái)訪問(wèn)該工具。
4. 出現(xiàn)提示后,輸入第 6 步中定義的憑據(jù)以登錄,您就可以開(kāi)始監(jiān)控了。
使用 Nagios 的缺點(diǎn)
Nagios 雖然功能豐富,但并不是一個(gè)完美的工具。以下是使用 Nagios 的主要缺點(diǎn):
- 該界面可以用大量數(shù)據(jù)壓倒初學(xué)者。
- 雖然 Nagios Core 是免費(fèi)的,但許多功能(例如向?qū)А⑸疃葓D表和交互式儀表板)只有在您購(gòu)買(mǎi) Nagios XI 時(shí)才能使用。
- 某些配置文件可能難以配置。
- 該解決方案無(wú)法監(jiān)控網(wǎng)絡(luò)吞吐量。
- 該工具將每個(gè)設(shè)備(服務(wù)器、路由器、交換機(jī)等)視為主機(jī)。
- 該工具需要大量定制和調(diào)整以使其適用于特定環(huán)境。
出色的監(jiān)控能力,即使是免費(fèi)版的工具
對(duì)于任何尋求可靠系統(tǒng)監(jiān)控的企業(yè)來(lái)說(shuō),Nagios 都是一個(gè)不錯(cuò)的選擇。如果您的團(tuán)隊(duì)以前從未使用過(guò)該工具,請(qǐng)考慮免費(fèi)設(shè)置 Nagios Core 并直接測(cè)試該工具的功能。使用 Core 幾周后,您將知道團(tuán)隊(duì)是否需要 XI。無(wú)論哪種方式,您的 IT 監(jiān)控都會(huì)得到巨大的改進(jìn)。