Nagios 快速指南
Nagios - 概述
DevOps 生命週期是一個由多個階段組成的連續迴圈,持續監控是這個迴圈的最後一個階段。持續監控是這個生命週期中的一個階段。在本章中,讓我們詳細瞭解什麼是持續監控以及 Nagios 如何為此提供幫助。
什麼是持續監控
持續監控從部署到生產伺服器時開始。從那時起,這個階段負責監控發生的一切。這個階段對於業務生產力至關重要。
使用持續監控的幾個好處:
- 它檢測所有伺服器和網路問題。
- 它找到故障的根本原因。
- 它有助於降低維護成本。
- 它有助於解決效能問題。
- 它有助於在基礎設施過時之前對其進行更新。
- 它可以在檢測到問題時自動修復問題。
- 它確保伺服器、服務、應用程式和網路始終保持執行。
- 它每秒監控整個基礎設施。
什麼是 Nagios
Nagios 是一款開源的持續監控工具,用於監控網路、應用程式和伺服器。它可以查詢和修復基礎設施中檢測到的問題,並在問題影響終端使用者之前阻止未來問題。它提供 IT 基礎設施及其效能的完整狀態。
為什麼選擇 Nagios
Nagios 提供以下功能,使其可被廣大使用者群體使用:
- 它可以監控資料庫伺服器,例如 SQL Server、Oracle、Mysql、Postgres。
- 它提供應用程式級別的資訊(Apache、Postfix、LDAP、Citrix 等)。
- 提供積極的開發。
- 擁有來自龐大活躍社群的出色支援。
- Nagios 可以在任何作業系統上執行。
- 它可以 ping 來檢視主機是否可訪問。
Nagios 的好處
Nagios 為使用者提供以下好處:
- 它有助於擺脫定期測試。
- 當腕帶仍處於“間歇性”階段時,它可以檢測到瞬間故障。
- 它在不犧牲效能的情況下降低了維護成本。
- 它向管理層及時發出控制和故障通知。
Nagios - 架構
本章詳細介紹了 Nagios 架構。
Nagios 架構
關於 Nagios 架構,以下幾點值得注意:
Nagios 具有伺服器-代理架構。
Nagios 伺服器安裝在主機上,外掛安裝在要監控的遠端主機/伺服器上。
Nagios 透過程序排程程式傳送訊號以在本地/遠端主機/伺服器上執行外掛。
外掛收集資料(CPU 使用率、記憶體使用率等)並將其傳送回撥度程式。
然後,程序排程程式向管理員傳送通知並更新 Nagios GUI。
下圖詳細顯示了 Nagios 伺服器代理架構:
Nagios - 產品
Nagios 包含各種產品,如下所述:
Nagios XI
它提供對完整 IT 基礎設施元件(如應用程式、服務、網路、作業系統等)的監控。它提供基礎設施和業務流程的完整檢視。GUI 易於定製,使使用者能夠靈活地進行操作。該工具的標準版售價為 1995 美元,企業版售價為 3495 美元。
Nagios Core
它是監控 IT 基礎設施的核心。Nagios XI 產品也基本基於 Nagios Core。每當基礎設施出現任何故障問題時,它都會向管理員傳送警報/通知,管理員可以快速採取措施解決問題。此工具完全免費。
Nagios 日誌伺服器
它使日誌資料的搜尋非常簡單易用。它將所有日誌資料儲存在一個位置,並具有高可用性設定。如果在日誌資料中發現任何問題,它可以輕鬆傳送警報。它可以擴充套件到數千臺伺服器,為您的日誌分析平臺提供更高的效能、速度、儲存和可靠性。此工具的價格取決於例項數量 - 1 個例項 3995 美元,2 個例項 4995 美元,3 個例項 5995 美元,4 個例項 6995 美元,10 個例項 14995 美元。
Nagios Fusion
此產品提供了完整監控系統的集中檢視。使用 Nagios Fusion,您可以為不同的地區設定單獨的監控伺服器。它可以輕鬆地與 Nagios XI 和 Nagios Core 整合,以提供基礎設施的完整可見性。此工具售價 2495 美元。
Nagios 網路分析器
它向管理員提供網路基礎設施的完整資訊以及網路上的潛在威脅,以便管理員可以快速採取措施。在進行深入的網路分析後,它會共享關於網路的非常詳細的資料。此工具售價 1995 美元。
Nagios - 安裝
本章詳細討論了在 Ubuntu 上設定 Nagios 的步驟。
在安裝 Nagios 之前,需要在 Ubuntu 系統上安裝一些軟體包,例如 Apache、PHP、構建軟體包等。因此,讓我們首先安裝它們。
步驟 1 - 執行以下命令以安裝預先需要的軟體包:
sudo apt-get install wget build-essential apache2 php apache2-mod-php7.0 php-gd libgd-dev sendmail unzip
步驟 2 - 接下來,為 Nagios 建立使用者和組,並將它們新增到 Apache www-data 使用者。
sudo useradd nagios sudo groupadd nagcmd sudo usermod -a -G nagcmd nagios sudo usermod -a -G nagios,nagcmd www-data
步驟 3 - 下載最新的 Nagios 軟體包。
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios- 4.4.3.tar.gz
步驟 4 - 解壓 tarball 檔案。
tar -xzf nagios-4.4.3.tar.gz cd nagios-4.4.3/
步驟 5 - 執行以下命令從原始碼編譯 Nagios。
./configure --with-nagios-group=nagios --with-command-group=nagcmd
步驟 6 - 執行以下命令來構建 Nagios 檔案。
make all
步驟 7 - 執行以下命令以安裝所有 Nagios 檔案。
sudo make install
步驟 8 - 執行以下命令以安裝 init 和外部命令配置檔案。
sudo make install-commandmode sudo make install-init sudo make install-config sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sitesavailable/ nagios.conf
步驟 9 - 現在將事件處理程式目錄複製到 Nagios 目錄。
sudo cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/ sudo chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
步驟 10 - 下載並解壓 Nagios 外掛。
cd wget https://nagios-plugins.org/download/nagiosplugins- 2.2.1.tar.gz tar -xzf nagios-plugins*.tar.gz cd nagios-plugins-2.2.1/
步驟 11 - 使用以下命令安裝 Nagios 外掛。
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl make sudo make install
步驟 12 - 現在編輯 Nagios 配置檔案並取消註釋第 51 行 → cfg_dir=/usr/local/nagios/etc/servers
sudo gedit /usr/local/nagios/etc/nagios.cfg
步驟 13 - 現在,建立一個伺服器目錄。
sudo mkdir -p /usr/local/nagios/etc/servers
步驟 14 - 編輯聯絡人配置檔案。
sudo gedit /usr/local/nagios/etc/objects/contacts.cfg
步驟 15 - 現在啟用 Apache 模組並配置使用者 nagiosadmin。
sudo a2enmod rewrite sudo a2enmod cgi sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/
步驟 16 - 現在,重新啟動 Apache 和 Nagios。
service apache2 restart service nagios start cd /etc/init.d/ sudo cp /etc/init.d/skeleton /etc/init.d/Nagios
步驟 17 - 編輯 Nagios 檔案。
sudo gedit /etc/init.d/Nagios DESC = "Nagios" NAME = nagios DAEMON = /usr/local/nagios/bin/$NAME DAEMON_ARGS = "-d /usr/local/nagios/etc/nagios.cfg" PIDFILE = /usr/local/nagios/var/$NAME.lock
步驟 18 - 使 Nagios 檔案可執行並啟動 Nagios。
sudo chmod +x /etc/init.d/nagios service apache2 restart service nagios start
步驟 19 - 現在轉到您的瀏覽器並開啟 url → https:///nagios。現在使用您之前設定的使用者名稱 nagiosadmin 和密碼登入 Nagios。Nagios 的登入螢幕如下面的螢幕截圖所示:
如果您正確地完成了所有步驟,您的 Nagios Web 介面將顯示出來。您可以找到如下所示的 Nagios 儀表板:
Nagios - 配置
在上一章中,我們已經看到了 Nagios 的安裝。在本章中,讓我們詳細瞭解它的配置。
Nagios 的配置檔案位於 /usr/local/nagios/etc。這些檔案在下面的螢幕截圖中顯示:
讓我們現在瞭解每個檔案的重要性:
nagios.cfg
這是 Nagios Core 的主配置檔案。此檔案包含 Nagios 的日誌檔案位置、主機和服務的狀體更新間隔、鎖檔案和 status.dat 檔案。在此檔案中定義了執行例項的 Nagios 使用者和組。它包含所有單個物件配置檔案的路徑,例如命令、聯絡人、模板等。
cgi.cfg
預設情況下,Nagios 的 CGI 配置檔名為 cgi.cfg。它告訴 CGI 在哪裡可以找到主配置檔案。CGI 將讀取主配置檔案和主機配置檔案以獲取它們可能需要的任何其他資料。它包含所有使用者和組資訊及其許可權。它還包含 Nagios 所有前端檔案的路徑。
resource.cfg
您可以在此檔案中定義 $USERx$ 宏,這些宏又可以在主機配置檔案中的命令定義中使用。$USERx$ 宏對於儲存敏感資訊(如使用者名稱、密碼等)很有用。
它們對於指定外掛和事件處理程式的路徑也很方便 - 如果您決定將來將外掛或事件處理程式移動到不同的目錄,您可以只更新一兩個 $USERx$ 宏,而不是修改許多命令定義。資原始檔也可用於儲存外部資料來源(如 MySQL)的配置指令。
objects 目錄內的配置檔案用於定義命令、聯絡人、主機、服務等。
commands.cfg
此配置檔案為您提供了一些示例命令定義,您可以在主機、服務和聯絡人定義中參考這些定義。這些命令用於檢查和監控主機和服務。您可以在 Linux 控制檯中本地執行這些命令,您還將獲得執行的命令的輸出。
示例
define command {
command_name check_local_disk
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}
define command {
command_name check_local_load
command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}
define command {
command_name check_local_procs
command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}
contacts.cfg
此檔案包含 Nagios 的聯絡人及組資訊。預設情況下,已經存在一個聯絡人 Nagios 管理員。
示例
define contact {
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email avi.dunken1991@gmail.com
}
define contactgroup {
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin
}
templates.cfg
此配置檔案為您提供了一些示例物件定義模板,其他配置檔案中的其他主機、服務、聯絡人等的定義都會參考這些模板。
timeperiods.cfg
此配置檔案為您提供了一些示例時間段定義,您可以在主機、服務、聯絡人及依賴項定義中參考這些定義。
Nagios - 功能
Nagios 是一款具有多種功能的監控工具,如下所示:
Nagios Core 是開源的,因此可以免費使用。
功能強大的監控引擎,可以擴充套件和管理數千臺主機和伺服器。
全面的 Web 儀表板,提供完整網路元件和監控資料的可見性。
它具有多租戶功能,多個使用者可以訪問 Nagios 儀表板。
它具有可擴充套件的架構,可以輕鬆地與具有多個 API 的第三方應用程式整合。
Nagios 擁有一個非常活躍且龐大的社群,在全球擁有超過 100 萬用戶。
快速的警報系統,在識別任何問題後立即向管理員傳送警報。
多個可用的外掛支援 Nagios,自定義編碼的外掛也可以與 Nagios 一起使用。
它擁有良好的日誌和資料庫系統,可以輕鬆儲存網路上發生的一切。
主動規劃功能有助於瞭解何時需要升級基礎設施。
Nagios - 應用
Nagios 可以應用於廣泛的應用程式。它們列在這裡:
監控主機資源,例如磁碟空間、系統日誌等。
監控網路資源 – http、ftp、smtp、ssh 等。
持續監控日誌檔案以識別基礎設施問題。
監控 Windows/Linux/Unix/Web 應用程式及其狀態。
Nagios 遠端外掛執行器 (NRPE) 可以遠端監控服務。
並行執行服務檢查。
SSH 或 SSL 隧道也可用於遠端監控。
傳送警報/通知
透過電子郵件、簡訊、尋呼機發送基礎設施上任何問題的通知
推薦何時升級IT基礎設施。
Nagios - 主機和服務
Nagios 是最流行的工具,用於監控 IT 基礎設施中執行的主機和服務。主機和服務配置是 Nagios Core 的構建塊。
主機就像一臺計算機;它可以是物理裝置或虛擬裝置。
服務是 Nagios 用於檢查主機某些內容的服務。
您可以在 Nagios 的伺服器目錄內建立主機檔案,並提及主機和服務的定義。例如:
sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg
# Ubuntu 主機配置檔案
define host {
use linux-server
host_name ubuntu_host
alias Ubuntu Host
address 192.168.1.10
register 1
}
define service {
host_name ubuntu_host
service_description PING
check_command check_ping!100.0,20%!500.0,60%
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
上述定義添加了一個名為 ubuntu_host 的主機,並定義了將在該主機上執行的服務。當您重新啟動 Nagios 時,此主機將開始被 Nagios 監控,並且指定的服務將執行。
Nagios 中還有許多其他服務,可用於監控執行主機上的幾乎任何內容。
Nagios - 命令
命令定義定義了一個命令。命令包括服務檢查、服務通知、服務事件處理程式、主機檢查、主機通知和主機事件處理程式。Nagios 的命令定義在 commands.cfg 檔案中定義。
以下是定義命令的格式:
define command {
command_name command_name
command_line command_line
}
**命令名稱** - 此指令用於標識命令。聯絡方式、主機和服務的定義透過命令名稱引用。
**命令列** - 此指令用於定義 Nagios 在使用命令進行服務或主機檢查、通知或事件處理程式時執行的操作。
示例
define command{
command_name check_ssh
command_line /usr/lib/nagios/plugins/check_ssh ‘$HOSTADDRESS$’
}
此命令將執行外掛 - /usr/libl/nagios/plugins/check_ssh,帶有一個引數:'$HOSTADDRESS$'
使用此檢查命令的非常簡短的主機定義可能類似於此處顯示的定義:
define host{
host_name host_tutorial
address 10.0.0.1
check_command check_ssh
}
命令定義說明如何執行主機/服務檢查。它們還定義瞭如何在識別任何問題時生成通知以及如何處理任何事件。有幾個命令可以執行檢查,例如檢查 SSH 是否正常工作,檢查資料庫是否正在執行,檢查主機是否存活等等。
有一些命令會告訴使用者基礎設施中存在哪些問題。您可以在 Nagios 中建立自己的自定義命令或使用任何第三方命令,它們與 Nagios 外掛專案類似對待,兩者之間沒有區別。
您還可以在命令中傳遞引數,這為執行檢查提供了更大的靈活性。這就是您需要使用引數定義命令的方式:
define command {
command_name check-host-alive-limits
command_line $USER5$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}
上述命令的主機定義:
define host {
host_name system2
address 10.0.15.1
check_command check-host-alive-limits!1000.0,70%!5000.0,100%
}
您可以透過將外部命令新增到 Nagios 守護程序定期處理的 commands 檔案中來在 Nagios 中執行它們。
使用外部命令,您可以在 Nagios 執行時實現許多檢查。您可以暫時停用一些檢查,或強制立即執行某些檢查,暫時停用通知等。以下是 Nagios 中必須寫在命令檔案中的外部命令語法:
[time] command_id;command_arguments
您還可以在這裡檢視 Nagios 中可用的所有外部命令列表:https://assets.nagios.com/downloads/nagioscore/docs/externalcmds/
Nagios - 檢查和狀態
在 Nagios 上配置主機和服務後,可以使用檢查來檢視主機和服務是否按預期工作。讓我們來看一個在主機上執行檢查的示例:
假設您已將主機定義放在 /usr/local/nagios/etc/objects 目錄中的 host1.cfg 檔案中。
cd /usr/local/nagios/etc/objects gedit host1.cfg
這就是您當前的主機定義:
define host {
host_name host1
address 10.0.0.1
}
現在讓我們新增 check_interval 指令。此指令用於根據您設定的數字執行主機的計劃檢查;預設情況下,單位為分鐘。使用以下定義,將在每 3 分鐘後對主機執行檢查。
define host {
host_name host1
address 10.0.0.1
check_interval 3
}
在 Nagios 中,對主機和服務執行兩種型別的檢查:
- 主動檢查
- 被動檢查
主動檢查
主動檢查由 Nagios 程序發起,然後定期執行。Nagios 程序中的檢查邏輯啟動主動檢查。為了監控遠端機器上執行的主機和服務,Nagios 執行外掛並告知要收集哪些資訊。然後外掛在遠端機器上執行,在遠端機器上收集所需資訊並將其傳送回 Nagios 守護程序。根據接收到的主機和服務狀態,採取適當的操作。
下圖顯示了一個主動檢查:
這些檢查按 check_interval 和 retry_interval 定義的定期間隔執行。
被動檢查由外部程序執行,並將結果返回給 Nagios 進行處理。
被動檢查的工作原理如下:
外部應用程式檢查主機/服務的狀態並將結果寫入外部命令檔案。當 Nagios 守護程序讀取外部命令檔案時,它會讀取併發送佇列中的所有被動檢查以供稍後處理。定期處理這些檢查時,將根據檢查結果中的資訊傳送通知或警報。
下圖顯示了一個被動檢查:
因此,主動檢查和被動檢查之間的區別在於,主動檢查由 Nagios 執行,而被動檢查由外部應用程式執行。
當您無法定期監控主機/服務時,這些檢查非常有用。
Nagios 儲存其正在監控的主機和服務的狀態,以確定它們是否正常工作。在許多情況下,故障將隨機發生並且是暫時的;因此,Nagios 使用狀態來檢查主機或服務的當前狀態。
有兩種狀態:
- 軟狀態
- 硬狀態
軟狀態
當主機或服務在很短的時間內停止執行並且其狀態未知或與先前狀態不同時,則使用軟狀態。主機或服務將反覆測試,直到狀態永久為止。
硬狀態
當執行 max_check_attempts 並且主機或服務的狀態仍然不是 OK 時,則使用硬狀態。Nagios 執行事件處理程式來處理硬狀態。
下圖顯示了軟狀態和硬狀態。
Nagios - 埠和協議
本章介紹 Nagios 包含的埠和協議。
協議
Nagios 使用的預設協議如下:
http(s),埠 80 和 443 - Nagios 中的產品介面是基於 Web 的。Nagios 代理可以使用 http 移動資料。
snmp,埠 161 和 162 - snmp 是網路監控的重要組成部分。埠 161 用於向節點發送請求,埠 162 用於接收結果。
ssh,埠 22 - Nagios 構建為原生執行在 CentOS 或 RHEL Linux 上。管理員可以隨時透過 SSH 登入 Nagios 並執行檢查。
埠
常用 Nagios 外掛使用的預設埠如下:
- check_nt (nsclient++) 12489
- NRPE 5666
- NSCA 5667
- NCPA 5693
- MSSQL 1433
- MySQL 3306
- PostgreSQL 5432
- MongoDB 27017, 27018
- OracleDB 1521
- 電子郵件 (SMTP) 25、465、587
- WMI 135、445 / 1024-1034 範圍內的其他動態分配埠
Nagios - 附加元件/外掛
外掛有助於使用 Nagios 監控資料庫、作業系統、應用程式、網路裝置和協議。外掛是編譯後的可執行檔案或指令碼(Perl 或非 Perl),它擴充套件了 Nagios 的功能以監控伺服器和主機。Nagios 將執行一個外掛來檢查服務或主機的狀態。Nagios 可以與嵌入式 Perl 直譯器的支援一起編譯,以執行 Perl 外掛。如果沒有它,Nagios 將透過分叉並將外掛作為外部命令執行來執行 Perl 和非 Perl 外掛。
Nagios 外掛型別
Nagios 提供以下外掛:
**官方 Nagios 外掛** - 有 50 個官方 Nagios 外掛。官方 Nagios 外掛由官方 Nagios 外掛團隊開發和維護。
**社群外掛** - 有超過 3,000 個由數百名 Nagios 社群成員開發的第三方 Nagios 外掛。
**自定義外掛** - 您還可以編寫自己的自定義外掛。編寫自定義外掛必須遵循某些準則。
編寫自定義 Nagios 外掛的指南
在 Nagios 中編寫自定義外掛時,您需要遵循以下準則:
- 外掛應提供“-V”命令列選項(驗證配置更改)
- 僅列印一行文字
- 列印診斷資訊和幫助訊息的一部分
- 網路外掛使用 DEFAULT_SOCKET_TIMEOUT 超時
- “-v”或“--verbose”與詳細程度級別有關
- “-t”或“--timeout”(外掛超時);
- “-w”或“--warning”(警告閾值);
- “-c”或“--critical”(嚴重閾值);
- “-H”或“--hostname”(要檢查的主機名稱)
多個 Nagios 外掛同時執行並執行檢查,為了使它們能夠順利地一起執行,Nagios 外掛遵循狀態程式碼。下表顯示了退出程式碼狀態及其描述:
| 退出程式碼 | 狀態 | 描述 |
|---|---|---|
| 0 | OK | 工作正常 |
| 1 | 警告 | 工作正常,但需要關注 |
| 2 | 嚴重 | 工作不正常 |
| 3 | 未知 | 當外掛無法確定主機/服務的狀態時 |
Nagios 外掛使用選項進行配置。以下是 Nagios 外掛接受的一些重要引數:
| 序號 | 選項和說明 |
|---|---|
| 1 | -h, --help 提供幫助 |
| 2 | -V, --version 列印外掛的確切版本 |
| 3 | -v, --verbose 使外掛提供有關其正在執行的操作的更詳細資訊 |
| 4 | -t, --timeout 提供超時時間(以秒為單位);在此時間之後,外掛將報告嚴重狀態 |
| 5 | -w, --warning 提供外掛特定警告狀態的限制 |
| 6 | -c, --critical 提供外掛特定嚴重狀態的限制 |
| 7 | -H, --hostname 提供主機名、IP 地址或與之通訊的 Unix 套接字 |
| 8 | -4, --use-ipv4 允許您使用 IPv4 進行網路連線 |
| 9 | -6, --use-ipv6 允許您使用 IPv6 進行網路連線 |
| 10 | -p, --port 用於連線到 TCP 或 UDP 埠 |
| 11 | -s, --send 提供將傳送到伺服器的字串 |
| 12 | -e, --expect 提供伺服器應發回的字串 |
| 13 | -q, --quit 提供要傳送到伺服器以關閉連線的字串 |
Nagios 外掛包提供了許多可用於主機和服務檢查以監控基礎設施的檢查。讓我們嘗試使用 Nagios 外掛執行一些檢查。
SMTP 是一種用於傳送電子郵件的協議。Nagios 標準外掛具有用於執行 SMTP 檢查的命令。SMTP 的命令定義:
define command {
command_name check_smtp
command_line $USER2$/check_smtp -H $HOSTADDRESS$
}
讓我們使用 Nagios 外掛監控 MySQL。Nagios 提供 2 個外掛來監控 MySQL。第一個外掛檢查 mysql 連線是否有效,第二個外掛用於計算執行 SQL 查詢所需的時間。
兩者的命令定義如下:
define command {
command_name check_mysql
command_line $USER1$/check_mysql –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d
$ARG3$ -S –w 10 –c 30
}
define command {
command_name check_mysql_query
command_line $USER1$/check_mysql_query –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d
$ARG3$ -q $ARG4$ –w $ARG5$ -c $ARG6$
}
**注意** - 在兩個命令中都需要使用者名稱、密碼和資料庫名稱作為引數。
Nagios 提供外掛來檢查安裝在所有分割槽上的磁碟空間。命令定義如下:
define command {
command_name check_partition
command_line $USER1$/check_disk –p $ARG1$ –w $ARG2$ -c $ARG3$
}
大多數檢查可以透過標準的Nagios外掛完成。但是有些應用程式需要特殊的檢查來監控它們,在這種情況下,您可以使用第三方Nagios外掛,它將對應用程式提供更復雜的檢查。在使用Nagios exchange上的第三方外掛或從其他網站下載外掛時,瞭解安全和許可問題非常重要。
Nagios - NRPE
Nagios守護程序在遠端機器上執行檢查,使用的是NRPE(Nagios遠端外掛執行器)。它允許您在其他機器上遠端執行Nagios外掛。您可以監控遠端機器的指標,例如磁碟使用率、CPU負載等。它還可以透過一些Windows代理外掛來檢查遠端Windows機器的指標。
讓我們一步一步地看看如何在需要監控的客戶端機器上安裝和配置NRPE。
步驟1 - 執行以下命令在需要監控的遠端Linux機器上安裝NRPE。
sudo apt-get install nagios-nrpe-server nagios-plugins
步驟2 - 現在,在伺服器目錄內建立一個主機檔案,並將所有必要的主機定義放入其中。
sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg
# Ubuntu Host configuration file
define host {
use linux-server
host_name ubuntu_host
alias Ubuntu Host
address 192.168.1.10
register 1
}
define service {
host_name ubuntu_host
service_description PING
check_command check_ping!100.0,20%!500.0,60%
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Check Users
check_command check_local_users!20!50
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Local Disk
check_command check_local_disk!20%!10%!/
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Check SSH
check_command check_ssh
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
define service {
host_name ubuntu_host
service_description Total Process
check_command check_local_procs!250!400!RSZDT
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
check_freshness 1
contact_groups admins
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
步驟3 - 執行以下命令來驗證配置檔案。
sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
步驟4 - 如果沒有錯誤,請重新啟動NRPE、Apache和Nagios。
service nagios-nrpe-server restart service apache2 restart service nagios restart
步驟5 - 開啟您的瀏覽器並訪問Nagios Web介面。您可以看到需要監控的主機已被新增到Nagios核心服務中。同樣,您可以新增更多需要Nagios監控的主機。
Nagios - V Shell
V-Shell是一個用PHP編寫的輕量級Nagios Core Web介面。它易於安裝和使用,是Nagios輸出的替代方案。VShell的前端基於AngularJs,因此設計響應迅速且現代。它提供快速搜尋功能和由CodeIgniter支援的RESTful API。
Nagios VShell與Nagios XI和Nagios Core 3.x相容。它需要系統中安裝php 5.3或更高版本、php-cli和apache。讓我們看看如何安裝Nagios VShell。
步驟1 - 轉到tmp目錄並下載vshell tar檔案。
cd /tmp wget http://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz
步驟2 - 解壓tar檔案。
tar zxf vshell.tar.gz
步驟3 - 轉到vshell目錄,併為install.php檔案賦予可執行許可權。最後,執行安裝指令碼。
cd vshell chmod +x install.php ./install.php
步驟4 - 現在在您的瀏覽器中訪問https://192.168.56.101/vshell,使用nagiosadmin登入,您的Vshell將顯示。
Nagios - 案例研究
在本章中,讓我們看看兩個成功實施Nagios的組織的案例研究。
Bitnetix與Nagios
Bitnetix是一家IT諮詢公司,從事網路、資料中心、監控和VoIP業務。透過他們的產品,他們讓小型企業看起來更大。他們的解決方案幫助您更好地管理客戶關係,透過增加更多互動並提高客戶滿意度。他們說他們的業務是溝通,因此在正確的時間向客戶傳達正確的訊息對他們非常重要。
Bitnetix曾與一家從事電子郵件營銷的客戶合作。他們過去監控動態分配的AWS伺服器,這些伺服器負責向客戶傳送數千封電子郵件。他們之前使用Nagios core,但希望遷移到新的Nagios XI並與Chef整合,且零停機。將Nagios core上的即時狀態配置遷移到Nagios XI中的相應檢查存在挑戰。但藉助Nagios,他們能夠使用集成了Chef的Nagios XI配置檔案。他們能夠將所有客戶從Nagios core遷移到Nagios XI,且零停機。Nagios XI還可以與PagerDuty整合以傳送即時通知。
EverWatch.global與Nagios
EverWatch.global是一家IT管理和諮詢公司,幫助非營利組織和中小型組織。其總部位於紐約州羅切斯特。他們因其在Nagios方面的工作贏得了無數獎項。
EverWatch.global曾與一家年收入數十億美元的電子商務零售客戶合作。他們負責始終保持網站正常執行,監控購物車和結賬功能,並在誹謗發生時向必要的工作人員傳送通知。挑戰在於其客戶的伺服器距離其位於紐約的總部500英里。為了在同一平臺上監控生產、暫存、質量保證和開發,配置應該在兩個區域都獨一無二且相似。
藉助Nagios,他們能夠為裝置和網路運營中心建立SSH防火牆規則。他們還能夠檢查誹謗事件並減少誤報。透過在Nagios中配置事件處理程式,通知數量大幅減少。Nagios幫助他們將客戶網站的年正常執行時間從85%提高到98%,這是一個巨大的成功。
“用實際美元計算,該公司因此獲得了近1.25億美元的額外銷售額。”——Eric Loyd,EverWatch Global執行長。