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)의 경우, 예를 들어 NagioSQL과 같은 Nagios-Configuration Manager를 설치하면 GUI를 통해 보다 편리한 방법으로 호스트와 서비스를 관리할 수 있습니다.

그 이상으로 모든 호스트에 표시된 검사가 있는지 확인하려면 모니터링하려는 모든 서비스(검사)를 포함하는 서비스 그룹을 만든 다음 이 서비스 그룹을 모니터링하는 각 호스트에 연결하기만 하면 됩니다.

제가 회사에서 한 일을 말씀드리자면, 각 서버가 검사를 통해 모니터링되는지 확인하고 싶었지만 check_load회사에 하드웨어 기준이 없기 때문에 각 서버의 사양이 다르고 check_load코어/CPU별로 계산됩니다. 머신에서는 custom_fact머신에 존재하는 프로세서 수를 식별하고 이에 따라 Nagios를 구성하는 Puppet 서버의 "Nagios_client" 모듈에 추가했습니다 check_load.

예를 들어, server1에 4개의 CPU가 있다고 가정하면 로드는 2.8이 이상적입니다(CPU당 0.7). Puppet은 facterCPU 수를 식별한 다음 다음 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

*.cfg그런 다음 NagioSQL에서는 "가져오기 기능"을 사용하여 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

관련 정보