2012-02-12 1 views
10

여러 웹 사이트의 공유 서버를 운영하면서 Nagios를 사용하는 호스트뿐만 아니라 실제 URL을 모니터링하려고하는데 기본 HTTP 서비스를 모니터링하는 것만으로는 충분하지 않습니다 (나는이 질문의 맨 아래에 내가 계획하고있는 것에 대한 작은 설명을 포함시키고있다.)Nagios가있는 URL 모니터링

(사이드 노트 : Nagios가 CentOS 시스템의 chroot 안에 설치되어 실행되고 있음을주의하십시오. 소스에서 nagios를 빌드하고 yum을 사용하여이 루트에 필요한 모든 종속성 등을 설치했습니다.)


은 내가 먼저 check_url를 찾았지만,로를 설치 한 후에는/usr/lib 디렉토리/Nagios는/libexec 디렉토리, 나는 오류 "255의 리턴 코드가 범위 외에있는 '지고 있었다. 그 때 나는이 질문을 쓰기 시작했다. (잠깐! 내가 먼저 시도하기로 결정한 또 다른 플러그인이있다.)

This Question을 검토 한 결과, check_url과 거의 동일한 문제가 있었지만, 나는 이 질문에 대한 새로운 질문이 있기 때문에 a) 나는이 체크와 함께 NRPE를 사용하지 않습니다. b) 이전에 링크 된 질문에 대한 제안을 시도했지만 어느 것도 작동하지 않았습니다. 예를 들어 ... 그때 debug_check_url라는 임시 파일을 생성하고 다음 사항을 넣어 Nagios Support의 디버깅 지침을 따랐

(했다 성공적으로 수표를 나타냅니다)

./check_url some-domain.com | echo $0 

반환 "0" (다음 내 명령 정의에 의해 호출되는) :

#!/bin/sh 
echo `date` >> /tmp/debug_check_url_plugin 
echo $* /tmp/debug_check_url_plugin 
/usr/local/nagios/libexec/check_url $* 

내가 "디버깅 모드"아니에요 가정하면, (command.cfg 내부)는 다음과 같이 check_url를 실행하는 내 명령 정의는 다음과 같습니다

'check_url' command definition 
define command{ 
     command_name check_url 
     command_line $USER1$/check_url $url$ 
} 

이 질문을 게시하기 전에


(덧붙여, 당신은이 질문의 맨 아래에 내 서비스 설정 파일에 사용 된 것을 볼 수 있습니다) 그러나, 나는 1 더 기회를 주기로 결정 해결책을 찾아내는 데. check_url_status 플러그인을 발견하고 그 중 하나를 제공하기로 결정했습니다. 이를 위해, 여기에 내가 무슨 짓을했는지 :

  1. 에서 mkdir은/usr/lib 디렉토리/Nagios는/libexec 디렉토리/check_url_status /를 check_url_status 플러그인에 check_url_status 및 utils.pm 모두
  2. 사용자 의견/리뷰 당 다운로드
  3. 페이지에서 "lib"를/usr/lib/nagios/libexec /의 적절한 디렉토리로 변경했습니다.
  4. 다음을 실행하십시오.

    ./check_user_status -U some-domain.com.난 포기하고 몇 가지 질문이,이 시점에서 그래서

bash-4.1# ./check_url_status -U mydomain.com Can't locate utils.pm in @INC (@INC contains: /usr/lib/nagios/libexec/ /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5) at ./check_url_status line 34. BEGIN failed--compilation aborted at ./check_url_status line 34.


:

  1. 을 나는 위의 명령을 실행하면 , 나는 다음과 같은 오류가 계속 두 가지 플러그인 중 어떤 것을 추천 하시겠습니까? check_url 또는 check_url_status? (check_url_status에 대한 설명을 읽은 후,이 것이 더 나은 선택 일 수 있다고 생각합니다.)
  2. 추천 한 플러그인으로 내 문제를 어떻게 해결할 수 있습니까? 이 질문의 시작 부분에서

, 나는 내가 상상하고있는 무슨의 작은 설명을 포함 할 것이다 언급했다. 나는 services.cfg라는 파일을 가지고 있는데, 여기에 모든 서비스 정의가 위치한다 (상상해 보라!).

다음은 check_url을 사용하여 작성한 서비스 정의 파일의 스 니펫입니다 (그 당시에는 모든 것이 작동한다고 생각했기 때문에). 모니터링 할 각 URL에 대한 서비스를 작성하겠습니다.

### 
# Monitoring Individual URLs... 
# 
### 
define service{ 
     host_name      {my-shared-web-server} 
     service_description    URL: somedomain.com 
     check_command     check_url!somedomain.com 
     max_check_attempts    5 
     check_interval     3 
     retry_interval     1 
     check_period     24x7 
     notification_interval   30 
     notification_period    workhours 
} 

답변

23

너무 복잡합니다.

기본적으로 내장 플러그인 인 check_http는 내가 원하는 것을 달성 할 수 있습니다. 여기에 내가이 성취 한 방법은 다음과 같습니다

내 서비스 정의 :

define service{ 
      host_name      myers 
      service_description    URL: my-url.com 
      check_command     check_http_url!http://my-url.com 
      max_check_attempts    5 
      check_interval     3 
      retry_interval     1 
      check_period     24x7 
      notification_interval   30 
      notification_period    workhours 
    } 

내 명령 정의 :

define command{ 
     command_name check_http_url 
     command_line $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$ 
} 
2

Nagios를 사용할 수 있습니다 webinject을 사용하는 것입니다 URL을 모니터링 할 수있는 더 좋은 방법.

아래의 문제는 perl 패키지 utils를 설치하지 않았기 때문입니다.

의 bash-4.1 # ./check_url_status -U mydomain.com @ INC 포함 (@ INC에서 utils.pm를 찾을 수 없습니다 :.

1

당신은 스크립트 플러그인을 만들 수 있습니다 그것은 간단합니다, 당신은 단지에있는 같은과 URL을 확인하십시오

`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2` 

$의 URL하면 PARAM하여 스크립트 명령에 전달할 것입니다

그런 다음 결과를 확인합니다. 당신은 코드가있는 경우보다 큰 399는 다른, 문제가 ... 모든 것이 정상입니다! 그러면 오른쪽 출구 모드와 Nagios에 대한 메시지