概要
本文描述如何監控 Linux/UNIX 主機的系統屬性和本地服務,例如:
- CPU 負載
- 記憶體占用
- 磁盤使用
- 目前登入使用者
- 運作程序
Linux/UNIX 主機的公共服務,例如 HTTP,SSH 等不在本文的讨論範圍内,本文僅僅描述如上所述的系統屬性和本地服務。
簡介
有很多方法可以監控 Linux/Unix 主機的系統屬性和本地服務,例如可以通過利用 SSH 登入遠端主機,執行監控指令,Nagios 也提供了這種方式的插件
check_by_ssh
,通過這個插件可以執行被監控主機上的監控指令。這裡并不推薦使用這種方法,因為當需要監控很多主機時,頻繁建立和銷毀 SSH 連接配接會非常影響監控伺服器的性能。
另一種常用的方法是使用 NRPE 插件來實作監控遠端主機的,NRPE 使你可以執行遠端 Linux/UNIX 主機上的監控指令:

NRPE 插件由兩部分組成:
- NRPE: NRPE 是運作在遠端被監控的主機上的代理程式,接收有 Nagios 伺服器通過
發送的檢查請求。當收到檢查請求時,它會按照請求要求執行相應的檢查指令,然後将結果傳回給 Nagios 監控伺服器。check_nrpe
- check_nrpe:這個監控插件運作在 Nagios 伺服器,用來與遠端主機上的 NRPE 代理程式互動。使用這個插件時,它會告訴遠端主機上 NRPE 代理程式需要監控的項目,收到傳回結果後,它會将其轉為自己的輸出代碼輸出結果。
Nagios 服務端安裝 check_nrpe 插件
編譯 NRPE 插件時需要安裝
openssl-devel
yum install openssl-devel
下載下傳 NRPE 軟體包,可以前往 https://exchange.nagios.org/ 搜尋最新的軟體包
解壓縮
tar -zxvf .tar.gz
cd
編譯并安裝插件
./configure
make all
make install-plugin
安裝完成後就可以在
/usr/local/nagios/libexec
下找到
check_nrpe
插件。
被監控主機上安裝 Nagios 插件及 NRPE 代理
準備工作
安裝編譯環境
建立 nagios 使用者,可以将 nagios 使用者設定為不可登入
useradd nagios
安裝nagios 插件
下載下傳 nagios 插件
解壓縮并安裝
tar -zxvf nagios-plugins-.tar.gz
cd nagios-plugins-
./configure
make
make install
設定權限
chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec
安裝 xinetd
xinetd 是 Linux 下的守護程序,稍後安裝的 NRPE 将托管在 xinetd 下。
這種方式的優點是空閑時隻有 xinetd 這一守護程序占有系統資源,而托管在它上邊的其他的内部服務不會一直占有系統資源,隻有請求到來時才會被 xinetd 喚醒。并且通過 xinetd 還可以對它所管理的内部程序設定相應的通路權限。
yum install xinetd
安裝 NRPE
載 NRPE 軟體包,可以前往 https://exchange.nagios.org/ 搜尋最新的軟體包
解壓縮
tar -zxvf .tar.gz
cd
編譯并安裝插件及配置檔案
./configure
make all
make install-plugin
make install-daemon
make install-config
make install-inetd
不同版本的 nrpe 安裝參數有可能不一緻,運作 make 可以列出所有的參數
修改 nrpe 配置
vi /usr/local/nagios/etc/nrpe.cfg
,将 server_address 修改為 Nagios 伺服器位址。
配置 xinetd,編輯
/etc/xinetd.d/nrpe
vi /etc/xinetd.d/nrpe
将下列行中允許通路的 ip 位址改為 Nagios 伺服器的位址,并開啟服務
service nrpe
{
disable = no \\注意将這裡修改成no
socket_type = stream
port =
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
only_from = <nagios_ip_address> \\ 設定為nagios伺服器位址
log_on_failure += USERID
}
将 nrpe 服務說明添加至
/etc/services
設定防火牆
firewall-cmd --zone=public --add-port=5666/tcp --permanent
firewall-cmd --reload
啟動 xinetd
此時可以回到監控伺服器上,運作插件檢查
傳回 nrpe 版本就說明遠端主機上 nrpe 安裝正确。
配置 Nagios
command 定義
vi /usr/local/nagios/etc/objects/commands.cfg
插入如下定義:
define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
建立 linux 伺服器配置檔案
linux.cfg
vi /usr/local/nagios/etc/objects/linux.cfg
主機定義
define host{
use linux-server
host_name linuxserver
alias My linux Server
address
}
- use: 使用模闆 linux-server
- host_name:主機名稱
- alias:别名或描述
- address: IP位址
監控服務定義
設定監控 CPU 負載
define service{
use generic-service
host_name linuxserver
service_description CPU Load
check_command check_nrpe!check_load
}
設定監控目前登入使用者
define service{
use generic-service
host_name linuxserver
service_description Current Users
check_command check_nrpe!check_users
}
設定監控磁盤 /dev/hda1 的使用情況
define service{
use generic-service
host_name linuxserver
service_description /dev/hda1 Free Space
check_command check_nrpe!check_hda1
}
設定監控程序數
define service{
use generic-service
host_name linuxserver
service_description Total Processes
check_command check_nrpe!check_total_procs
}
集中說明一下,在 check_command 定義中,check_nrpe 後邊連接配接的就是遠端主機中定義的監控指令,遠端主機的定義可以在遠端主機的
/usr/local/nagios/etc/nrpe.cfg
中檢視到:
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
重新啟動 nagios 服務,就可以看到新增的監控主機