Nagios基本配置(用於快速新增機器)

Nagios基本配置(用於快速新增機器)

我最近開始使用Nagios來監控大約25台伺服器(主要是虛擬的,還有一些獨立的)。大多數伺服器(包括 Nagios 主機本身)都運行 Ubuntu 14.04 LTS,少數運行 12.04 LTS。因此,我想我可以利用 NRPE 並完成它。

事實證明,配置 NRPE 對我來說相當複雜。例如,對於一個簡單的 check_disk 命令,我必須透過排除所有其他分區/檔案系統來手動指定要檢查的分區,如下所示:

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

否則,我的警告和嚴重閾值會立即被 sysfs、proc 或其他分區觸發。

然後我查看了 Nagios 主機對自身執行的基本服務監視器。它列在 /usr/local/nagios/etc/localhost.cfg 中,並包含以下內容(抱歉!我不明白為什麼它無法正確格式化!)

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Root Partition
check_command           check_local_disk!20%!10%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

儀表板上的結果如下:

驚人的

這對我來說非常完美。這正是我希望添加的每個主機都能顯示的內容。我應該如何透過 NRPE conf 檔案將其「複製」到每個主機,以便看到我新增的每個主機的所有這些特定服務,而不是亂搞自訂命令?很明顯,它已經存在並且已經在本地主機上運行。我正在努力思考實現這一目標所需的組織。

感謝您的任何和所有建議。

答案1

不久前,我編寫了一個非常好的 NRPE 自動安裝程式腳本,我相信如果您對其進行編輯以滿足您的需要,它可以為您提供幫助。該腳本包含許多內建檢查,這些檢查已添加到每個主機的nrpe.cfg檔案中。這意味著,您可以配置與您相關的檢查,並確保運行腳本的每個主機也將具有這些檢查,這是關於客戶端的。

腳本連結:這裡

對於伺服器端(Nagios),您可以安裝 Nagios 設定管理器,例如 NagioSQL,它將幫助您透過 GUI 更方便地管理主機和服務。

不僅如此,為了確保所有主機都有您顯示的這些檢查,只需建立一個包含您要監視的所有這些服務(檢查)的服務群組,然後將此服務群組附加到您監視的每個主機。

讓我告訴你我在公司做了什麼,我想確保透過檢查來監控每台伺服器check_load,但由於我們公司沒有硬體基線,這意味著每台伺服器都有不同的規格,並且是check_load按核心/CPU 計算的在機器中,我在Puppet 伺服器中新增了「Nagios_client」模組,custom_fact該模組可識別機器中存在多少個處理器並相應地配置 Nagios check_load

例如,假設 server1 有 4 個 cpu,這表示 2.8 的負載是理想的(每個 cpu 0.7)。 Puppet 透過識別 cpu 的數量,然後像這樣facter編輯伺服器:nrpe.cfg

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

然後,例如在 NagioSQL 中,您可以使用“導入功能”,該功能可讓您匯入*.cfg將作為主機和服務載入到 Nagios 的檔案。因此,您可以建立一個host.cfg文件,並透過腳本將其複製到您想要監控的每個主機上,只需更改每台電腦的主機名稱/IP,這將讓您又邁出一步,進入更自動化的配置。

以我為例,Puppet 能夠理解它是第一次在電腦上運行,然後還在host.cfgNagios 中建立了相關檔案。

我相信使用 Puppet + NagioSQL,您的 Nagios 管理將變得更加容易。

關於配置任何檢查的困難...您始終可以編寫自己的腳本並配置 Nagios 來為您運行它。例如,讓我們以您的check_disk命令為例,它是一個非常豐富的命令,它允許您顯示對您來說不必要重要的各種資料。

所以我也遇到了同樣的問題check_procs,這是另一個非常豐富的命令,它為您提供了我不需要的各種數據......所以我編寫了一個簡單的檢查腳本,它完全符合我的需要,並在Nagios 中配置它。例子:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

它給我的資訊比真實的要少check_procs,但只給了我我需要的資訊。

因此,簡而言之,如果您的check_disk命令讓您很難配置它,那麼只需創建您自己的腳本,這就是 Nagios 的美妙之處。

我希望我對你有幫助。

答案2

您需要某種類型的設定管理軟體來在每個遠端主機上設定和安裝 nrpe 守護程式以及部署配置和最終的插件。

我可以建議嗎安西布爾為了這個任務。

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

相關內容