호스트는 사용자 정의 속성 "http_vhosts"를 사전으로 정의하지만 결코 사용되지 않습니다 (해당 사전을 반복하고 서비스 오브젝트를 거르는 규칙에 대해서는 적용되지 않습니다).
대신 서비스 적용 규칙 (for 루프없이)은 "httpS"서비스 만 적용합니다. 실수로 호스트 사용자 정의 속성 "http_ssl"이 설정 되었습니다. 문자열로 숫자 대신 부울로 true 를 읽어야 합니다 (항상 true 임).
/뿐만 아니라 여러 URI를 확인하고 싶을 것입니다.
내 제안 (2 솔루션) :
1) 서비스 적용 규칙을 수정하고 호스트 오브젝트 정의에서 http_ * 사용자 정의 속성을 제거하십시오. 대신 서비스 적용 규칙에 추가하십시오.
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
문서에서 http CheckCommand의 명령 매개 변수로 사용 된 모든 사용자 정의 속성을 찾을 수 있습니다 . http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- command-http
2) 대신 서비스 적용 규칙을 사용하고 호스트에 정의 된 http_vhosts 사전을 반복하십시오.
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
여기서 이름은 "https /"가 생성 된 서비스 이름입니다. http_ssl 및 http_uri는 http CheckCommand의 필수 사용자 정의 속성과 정확히 동일한 이름입니다.
적용 규칙 내에서 마법이 발생합니다. 사전 키는 서비스 이름입니다. 사전 값은 중첩 된 사전이며 http_uri 및 http_ssl을 키로 포함합니다. 이 예에서는 "config"라고합니다. 이 구성 사전은 "vars"속성과 정확히 동일한 구조를 갖기 때문에 정의를 위해 서비스 적용 내에 추가 할 수 있습니다.
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
icinga2 daemon -C를 사용하여 구성을 확인한 후 생성 된 서비스 오브젝트를 조사하여 생성 된 사용자 정의 속성을 확인하십시오 (icinga2 오브젝트 목록).
한 가지 좋은 점-http_vhosts 사용자 정의 속성이 정의 된 모든 호스트는 이러한 서비스 객체를 생성하므로 extea "assign where"표현식이 필요하지 않습니다 (예외를 무시할 수 있습니다). 올바른 전략을 사용하면 규칙 적용을 한 번만 작성하고 앞으로는 맞춤 속성 사전이 일치하는 새 호스트 만 추가합니다 :-)
http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/monitoring-basics#using-apply-for
솔루션 2)에는 icinga 2 구성 언어 및 키워드, 값 유형 및 마술에 대한 고급 지식이 필요합니다. 그러나 이러한 방법과 모범 사례는 파일 채택 및 변경으로 장기적인 유지 관리를 줄이는 데 도움이된다고 생각합니다.
더 나아가 호스트 이름을 기반으로 다른 threshokd에 if-else 조건을 사용할 수도 있습니다. 또는 함수를 사용하여 예를 들어 시간 간격을 기준으로 동적 임계 값을 정의하십시오.