Nagios 서버 모범 사례?


10

중간 크기의 Nagios 서버를 실행합니다. 현재 180 개의 서비스를 제공하는 약 40 대의 서버를 모니터링하고 있으며 현재까지만 증가하고 있습니다.

매우 난해한 방식으로 구성된 이전 Nagios 설정에서 마이그레이션하여 모든 것을 처음부터 다시 구성해야했습니다.

이제 서버가 실행 중이며 우리 가 필요로 하는 대부분의 기능 을 수행 할 수있게되었으므로, 좀 더 확장 성이 높은 서버를 찾고 있습니다. 현재 각 호스트는의 자체 파일 /etc/nagios/hosts/이며 각 호스트는 동일한 파일에 모든 서비스가 있습니다. 이것은 분명히 최적은 아니지만 내 구성을 모두 수백 개의 다른 파일로 모호하게 만드는 것은 아닙니다.

그래서 내 질문은 이것입니다 : 숙련 된 Nagios 관리자 에게 구성 너무 복잡하게 하지 않고 호스트 그룹 / 서비스 그룹을 사용하는 가장 좋은 방법은 무엇 입니까?

답변:


13

호스트 그룹 및 템플릿.

템플릿을 사용하면 "일반 서비스", "중요한 서비스", "낮은 우선 순위의 호스트"와 같은 호스트 및 서비스에 대한 클래스를 정의 할 수 있습니다. 또한 서로 다른 책임을 가진 여러 팀이있는 경우 책임을 나누는 유용한 방법으로도 사용되므로 "리눅스 호스트"템플릿과 "윈도우 호스트"템플릿을 사용하여 적절한 연락처 정보를 정의 할 수 있습니다.

단일 리소스에서 여러 템플릿을 사용할 수 있으므로 적절하게 직교 템플릿을 작성할 수 있습니다. 예를 들어

host foo {
    use windows-host,normal-priority-host
    ...
}

Windows 팀의 연락처 정보 (및 에스컬레이션)와 "정상"호스트의 폴링 속도 및 임계 값을 가져옵니다.

호스트 그룹을 사용하면 호스트 하위 집합에 대한 모든 검사를 그룹화 할 수 있습니다. "baseline-linux-hosts"와 같이로드, 디스크 공간, ssh능력 및 모니터링하는 모든 호스트에 있어야 할 다른 것들을 확인하십시오 . HTTP 연결, HTTPS 연결 및 SSL 인증서 만료 날짜를 확인하여 "https-servers"와 같은 그룹을 추가하십시오. "파일 서버"는 NFS 및 SMB 접근성을 검사하고보다 적극적인 디스크 검사를 수행합니다. 또는 VM 접근성 도구가 제대로 실행되고 있는지 확인하는 "가상 컴퓨터".

각 호스트 및 호스트 그룹을 자체 파일에 넣으십시오. 이 파일에는 호스트 또는 호스트 그룹 정의가 먼저 포함되고 그 뒤에 적용되는 서비스 정의가 포함되어야합니다.

파일 에서 cfg_dir지시문 을 사용하면 nagios.cfgNagios는 해당 디렉토리를 통해 재귀 적으로 검색합니다. 그것을 활용하십시오. 의 설정으로 cfg_dir=/etc/nagios/conf.d다음과 같은 디렉토리 트리를 가질 수 있습니다.

  • /etc/nagios/conf.d/
    • commands.d /
      • http.cfg
      • nrpe.cfg
      • smtp.cfg
      • ssh.cfg
    • hosts.d /
      • host1.cfg
      • host2.cfg
      • host3.cfg
    • hostgroups.d /
      • hostgroup1.cfg
      • hostgroup2.cfg

서비스를 제외하고 각 리소스 유형 (명령, 연락처 그룹, 연락처, 에스컬레이션, 호스트 그룹, 호스트, 서비스 그룹, 기간)에 대한 디렉토리를 만드는 경향이 있습니다.

정확한 구조는 조직의 요구에 따라 달라질 수 있습니다. 과거 직장에서, 나는 hosts.d각기 다른 사이트 에서 하위 디렉토리를 사용했습니다 . 현재 작업에서 대부분의 Nagios 호스트 정의는 Puppet에서 관리하므로 Puppet 관리 호스트 용 디렉토리와 수동 관리 호스트 용 디렉토리가 각각 하나씩 있습니다.

위의 명령은 일반적으로 프로토콜에 따라 명령을 여러 파일로 나눕니다. 따라서, nrpe.cfg파일이 명령을 것 check_nrpe하고 check_nrpe_1arg, 동시에 http.cfg가질 수있다 check_http, check_http_port, check_https, check_https_port,와 check_https_cert. 1

나는 일반적으로 엄청난 수의 템플릿을 가지고 있지 않으므로 보통 hosts.d/templates.cfg파일과 파일 만 있습니다 services.d/templates.cfg. 더 많이 사용하면 templates.d디렉토리 에서 적절한 이름의 파일로 이동할 수 있습니다 .

1 나는 또한 check_http_blindly기본적으로 명령을 가지고 싶다 check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; 403 응답 코드를 가져 오더라도 OK를 리턴합니다.


6

서비스 및 호스트 그룹과 템플릿을 광범위하게 사용하십시오. 호스트 그룹을 생성하고 호스트 그룹에 서비스를 할당하십시오. 웹 UI에서 종속성, 에스컬레이션 및 논리 그룹화에 서비스 그룹을 사용하십시오.

모든 것에 대한 그룹이있는 경우 새 호스트 추가는 이름, 주소, 템플릿 및 (선택적으로) 호스트 그룹과 같은 3 ~ 4 줄입니다. 모든 것을 템플릿으로 만들 수 있습니다.

상속 관련 문서 와 시간 절약 요령 페이지 를 읽으십시오 . 다중 상속은 까다로울 수 있지만 올바르게 사용하면 시간을 크게 절약 할 수 있습니다.


구성과의 균형을 찾고 싶습니다. 다른 관리자가 서버를 선택해야 할 때 너무 많은 상속이 까다로울 수 있습니다 (인턴이므로 더 이상 실행하지 않을 것입니다).
Michael Pobega

1
아마도 다중 상속을 피하십시오. 단순하게 유지하려면 계단식 템플릿을 사용하십시오.
Keith

1

나는 이런 식으로 nagios 서버를 구성하는 데 사용되었으며 (Icinga로 전환하기 전에) 최소한 512Mb 메모리 / 1 CPU 서버로 500 개 이상의 서비스에 도달 할 때까지 성능이 부족하지 않습니다. 호스트 그룹과 서비스 그룹은 완전히 개별적으로 처리 될 수 있으며,이 방법은 서버 당 하나의 파일 (이 파일에 정의 된이 서버에 대한 서비스)을 허용 한 다음 호스트 그룹 / 서비스 그룹별로 파일을 사용할 수 있으므로이 방법을 권장합니다. 이것은 더 이해하기 쉽고 명확합니다.

확장 성 문제가 발생하면 클라이언트 측에서 검사를 수행하는 nagios-nrpe-server를 살펴보고 모든 nagios 서버가 결과만을 요구하는 경우가 있습니다. 수표의 자원을 절약합니다. (Nagios는 check_nrpe를 시작하고 클라이언트가 요청하고 로컬에서 검사를 수행 한 후 nagios에 응답합니다.) 모든 검사를이 방법으로 처리 할 수는 없습니다 (예 : SNMP).

끝으로, 귀하의 질문과 관련하여 범위를 벗어난 것처럼 보일지라도, Icinga로 전환하는 것이 좋습니다 .Icinga는 새로운 기능 구현 및 사용자 지원을 실제로 돌보는 더 강력한 커뮤니티가 보유하고있는 더 확장 가능한 방법입니다. 구성은 동일합니다 (동일한 구성 파일, 동일한 구문).


확장 성은 실제로 확장 성 문제가 아니라 구성을 의미했습니다. 나는 그 임계 값에 도달하는 것에 대해 걱정하지 않습니다. 호스트 그룹 / 서비스 그룹에 대해 정확히 무엇을 의미합니까? 나는 당신의 설명을 이해하지 못합니다.
Michael Pobega

1

이 체계를 사용하고 있습니다 :

  • 호스트,
  • 호스트 그룹,
  • 원격 서비스
  • 지역 서비스.

각 엔티티에는 자체 파일이 있습니다. 템플릿 외에도 구성을 더 읽기 쉽게 만들 수 있습니다. 예를 들어, 모든 호스트에로드 평균, 디스크 공간, 메모리가있을 수 있습니다. 따라서 일반 템플릿을 만들어 사용하는 것이 매우 쉽고 편리합니다.


1

그룹 만들기와 구성을 복잡하게 할 수 없습니다. asciiphil이 말했듯이 파일을 만들거나 (hosts.cfg 또는 무엇이든)과 같은 기존 파일 중 일부에서 동일한 그룹을 정의 할 수 있으며이 파일을 만들거 나이 파일이 활성 상태임을 nagios에게 말합니다 (이 경우 이미 활성화되어 있지 않은 경우 새 느낌이 생깁니다.)이 파일은 nagios.cfg 파일에 있으며 새로 만든 파일의 경로를 저장합니다. "cfg_file = / usr / local / nagios / etc / objects / NEW_FILE.cfg"

다른 것은 단지 인프라에 따라 그룹을 만드는 것입니다. 예를 들어 리눅스와 윈도우 서버가 있다면 리눅스와 윈도우에 각각 다른 두 그룹을 만들 것입니다. 서비스와 동일합니다. 모니터에서 모니터링 할 때 구성하고 확인하는 방법에 따라 그룹으로 보는 방법에 따라 다릅니다.

그리고 파일이나 부분을 위해 그룹을 만드는 방법은 간단합니다.

    define hostgroup{
    hostgroup_name novell-servers
    alias Novell Servers
    members netware1,netware2,netware3,netware4
    }

또한 호스트 구성에서 또는 템플릿을 사용하거나 이미 호스트 템플릿 또는 서비스를 정의하고 사용중인 경우 모든 호스트 / 창 또는 Linux 호스트에 사용자가 생성 한 정의 된 호스트 그룹의 구성원이되도록 자동으로 알릴 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.