2 액티브 에이전트 자동등록

개요

활성 Zabbix 에이전트 자동 등록을 허용할 수 있으며, 그 후 서버가 모니터링을 시작할 수 있습니다. 이렇게 하면 서버에서 수동으로 구성하지 않고도 모니터링을 위해 새로운 호스트를 추가할 수 있습니다.

이전에 알려지지 않은 활성 에이전트가 점검을 요청할 때 자동 등록이 발생할 수 있습니다.

이 기능은 새로운 클라우드 노드의 자동 모니터링에 매우 유용할 수 있습니다. 클라우드에 새로운 노드가 생기는 즉시 Zabbix가 자동으로 해당 호스트의 성능 및 가용성 데이터 수집을 시작합니다.

활성 에이전트 자동 등록은 패시브 점검을 통한 추가된 호스트 모니터링도 지원합니다. 활성 에이전트가 점검을 요청할 때, 구성 파일에 ListenIP 또는 ListenPort 구성 매개변수가 정의되어 있으면, 이들이 서버로 함께 전송됩니다. 여러 IP 주소가 지정된 경우, 첫 번째 주소가 서버로 전송됩니다.

서버는 새로운 자동 등록된 호스트를 추가할 때, 수신된 IP 주소와 포트를 사용하여 에이전트를 구성합니다. IP 주소 값이 수신되지 않으면, 들어오는 연결에 사용된 주소가 사용됩니다. 포트 값이 수신되지 않으면, 10050이 사용됩니다.

호스트가 기본 에이전트 인터페이스로 DNS 이름과 함께 자동 등록되도록 지정할 수 있습니다.

자동 등록은 다음의 경우에 재실행됩니다:

  • 호스트 메타데이터 정보가 변경되는 경우:
    • HostMetadata가 변경되고 에이전트가 재시작된 경우
    • HostMetadataItem에 의해 반환된 값이 변경된 경우
  • 메타데이터가 누락된 수동으로 생성된 호스트의 경우
  • 호스트가 다른 Zabbix 프록시에 의해 모니터링되도록 수동으로 변경된 경우
  • 동일한 호스트에 대한 자동 등록이 새로운 Zabbix 프록시에서 오는 경우

Zabbix 서버 및 Zabbix 프록시의 활성 에이전트 자동 등록 하트비트는 120초입니다. 따라서 발견된 호스트가 삭제된 경우, 자동 등록이 120초 후에 재실행됩니다.

구성

서버 지정

에이전트 설정 파일 - zabbix_agentd.conf에서 Zabbix 서버가 식별되었는지 확인하세요:

ServerActive=10.0.0.1

zabbix_agentd.conf에서 Hostname을 특별히 정의하지 않으면, 에이전트가 위치한 시스템의 호스트명이 서버에서 호스트 이름을 지정할 때 사용됩니다. Linux에서 시스템 호스트명은 hostname 명령어를 실행하여 확인할 수 있습니다.

Zabbix 에이전트 설정에서 Hostname이 쉼표로 구분된 호스트 목록으로 정의되면, 나열된 모든 호스트명에 대해 호스트가 생성됩니다.

설정 파일을 변경한 후에는 에이전트를 재시작하세요.

액티브 에이전트 자동 등록을 위한 액션

서버가 에이전트로부터 자동 등록 요청을 받으면 액션을 호출합니다. 에이전트 자동 등록을 위해서는 이벤트 소스가 "Autoregistration"인 액션이 구성되어야 합니다.

액티브 에이전트가 자동 등록되도록 하기 위해 네트워크 디스커버리를 설정할 필요는 없습니다.

Zabbix 프론트엔드에서 Alerts → Actions로 이동하여 Autoregistration actions을 선택하고 Create action을 클릭합니다:

  • Action 탭에서 액션에 이름을 지정합니다
  • 선택적으로 조건을 지정합니다. 호스트 이름/호스트 메타데이터 조건에서 부분 문자열 일치 또는 정규 표현식 일치를 사용할 수 있습니다. "Host metadata" 조건을 사용할 예정이라면 다음 섹션을 참조하세요.
  • Operations 탭에서 'Add host', 'Add to host group'(예: Discovered hosts), 'Link templates' 등과 같은 관련 작업을 추가합니다.

자동 등록될 호스트들이 액티브 모니터링만 지원될 가능성이 있다면(예: Zabbix 서버로부터 방화벽으로 차단된 호스트들), 연결할 Template_Linux-active와 같은 특정 템플릿을 생성하는 것이 좋습니다.

생성된 호스트는 Discovered hosts 그룹에 추가됩니다(기본값으로, Administration > General > Other에서 구성 가능). 호스트를 다른 그룹에 추가하려면, Remove from host group 작업("Discovered hosts" 지정)을 추가하고 Add to host group 작업(다른 호스트 그룹 지정)도 추가해야 합니다. 호스트는 반드시 호스트 그룹에 속해야 하기 때문입니다.

보안 자동등록

암호화된 연결과 함께 PSK 기반 인증을 구성하여 보안적인 자동등록 방법이 가능합니다.

암호화 수준은 Administration > General > Autoregistration에서 전역적으로 구성됩니다. 암호화 없음, PSK 인증을 통한 TLS 암호화, 또는 둘 다 선택할 수 있습니다(일부 호스트는 암호화 없이 등록하고 다른 호스트는 암호화를 통해 등록할 수 있음).

PSK를 통한 인증은 호스트를 추가하기 전에 Zabbix 서버에서 검증됩니다. 성공하면 호스트가 추가되고 호스트와의 연결은 전역 자동등록 설정과 동일한 identity/pre-shared key를 사용하여 'PSK'로만 설정됩니다.

프록시를 사용하는 설치에서 자동등록의 보안을 보장하려면 Zabbix 서버와 프록시 간의 암호화를 활성화해야 합니다.

기본 인터페이스로 DNS 사용

HostInterface 및 HostInterfaceItem 구성 매개변수를 사용하면 자동 등록 중에 호스트 인터페이스에 대한 사용자 정의 값을 지정할 수 있습니다.

보다 구체적으로, 호스트가 IP 주소가 아닌 DNS 이름을 기본 에이전트 인터페이스로 사용하여 자동 등록되어야 하는 경우에 유용합니다. 이 경우 DNS 이름을 HostInterface 또는 HostInterfaceItem 매개변수 중 하나의 값으로 지정하거나 반환해야 합니다. 이러한 매개변수 중 하나의 값이 변경되는 경우—예를 들어, IP 주소에서 DNS 이름으로 또는 그 반대로—자동 등록된 호스트의 기본 인터페이스가 그에 따라 업데이트됩니다. 이 업데이트는 새로운 호스트를 생성하지 않고 기존 호스트에 적용됩니다. 새로운 값을 전송하려면 에이전트가 자동 등록 프로세스를 다시 시작하도록 재시작되어야 합니다.

HostInterface 또는 HostInterfaceItem 매개변수가 구성되지 않은 경우 대신 listen_dns 매개변수가 사용됩니다. 이 값은 에이전트의 IP 주소에 대한 역방향 DNS 조회를 수행하여 결정됩니다. 역방향 DNS가 제대로 구성되지 않았거나 잘못된 이름을 반환하는 경우, 잘못된 인터페이스 값으로 인해 부정확하거나 실패한 자동 등록이 발생할 수 있습니다.

호스트 메타데이터 사용

에이전트가 서버에 자동 등록 요청을 보낼 때 호스트명을 함께 보냅니다. 일부 경우(예: Amazon 클라우드 노드)에는 Zabbix 서버가 발견된 호스트를 구분하기에 호스트명만으로는 충분하지 않습니다. 호스트 메타데이터는 에이전트에서 서버로 다른 정보를 보내는 데 선택적으로 사용할 수 있습니다.

호스트 메타데이터는 에이전트 설정 파일 - zabbix_agentd.conf에서 구성됩니다. 설정 파일에서 호스트 메타데이터를 지정하는 방법은 2가지가 있습니다:

HostMetadata
HostMetadataItem

위의 링크에서 옵션에 대한 설명을 확인하세요.

HostMetadataItem 매개변수는 최대 65535개의 UTF-8 코드 포인트를 반환할 수 있습니다. 더 긴 값은 잘릴 것입니다.

MySQL에서는 반환 값에 멀티바이트 문자가 포함된 경우 실제 최대 길이(문자 단위)가 더 짧아집니다. 예를 들어, 3바이트 문자만 포함하는 값은 총 21844자로 제한되고, 4바이트 문자만 포함하는 값은 16383개 기호로 제한됩니다.

자동 등록 시도는 활성 에이전트가 서버에 활성 검사 새로 고침 요청을 보낼 때마다 발생합니다. 요청 간 지연 시간은 에이전트의 RefreshActiveChecks 매개변수에서 지정됩니다. 첫 번째 요청은 에이전트가 다시 시작된 직후 즉시 전송됩니다.

예제

HostMetadata를 사용한 OS별 자동 등록

Zabbix 서버에서 호스트가 자동 등록되도록 하려고 한다고 가정해 보겠습니다. 네트워크에 활성 Zabbix 에이전트가 있습니다(위의 "Configuration" 섹션 참조). 네트워크에 Windows 호스트와 Linux 호스트가 있고 Zabbix 프론트엔드에서 "Linux by Zabbix agent"와 "Windows by Zabbix agent" 템플릿을 사용할 수 있습니다. 따라서 호스트 등록 시 등록되는 호스트에 적절한 Linux/Windows 템플릿이 적용되기를 원합니다. 기본적으로 자동 등록 시 호스트명만 서버로 전송되는데, 이것만으로는 충분하지 않을 수 있습니다. 호스트에 적절한 템플릿이 적용되도록 하려면 호스트 메타데이터를 사용해야 합니다.

프론트엔드 구성

먼저 프론트엔드를 구성해야 합니다. 2개의 액션을 생성합니다. 첫 번째 액션:

  • Name: Linux host autoregistration
  • Conditions: Host metadata contains Linux
  • Operations: Link templates: Linux by Zabbix agent

이 경우 "Add host" 작업을 생략할 수 있습니다. 호스트에 템플릿을 연결하려면 먼저 호스트를 추가해야 하므로 서버가 자동으로 수행합니다.

두 번째 액션:

  • Name: Windows host autoregistration
  • Conditions: Host metadata contains Windows
  • Operations: Link templates: Windows by Zabbix agent

에이전트 구성

이제 에이전트를 구성해야 합니다. 에이전트 구성 파일에 다음 라인을 추가합니다:

HostMetadataItem=system.uname

이렇게 하면 호스트 메타데이터가 에이전트가 실행되는 호스트에 따라 "Linux" 또는 "Windows"를 포함하도록 할 수 있습니다. 이 경우 호스트 메타데이터의 예시:

Linux: Linux server3 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux
Windows: Windows WIN-0PXGGSTYNHO 6.0.6001 Windows Server 2008 Service Pack 1 Intel IA-32

구성 파일을 변경한 후에는 에이전트를 다시 시작하는 것을 잊지 마세요.

HostMetadata를 사용하여 자동 등록 및 템플릿 제어

단계 1 - HostMetadata로 등록 보호

호스트 메타데이터를 사용하여 원치 않는 호스트가 등록되는 것을 방지하는 기본적인 보호 기능을 제공합니다.

프론트엔드 구성

추측하기 어려운 비밀 코드를 사용하여 원치 않는 호스트를 차단하는 액션을 프론트엔드에서 생성합니다:

  • 이름: Autoregistration action Linux
  • 조건:
    • 계산 유형: AND
    • 조건 (A): Host metadata contains //Linux//
    • 조건 (B): Host metadata contains //21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae//
  • 작업:
    • 사용자에게 메시지 전송: Admin via all media
    • 호스트 그룹에 추가: Linux servers
    • 템플릿 연결: Linux by Zabbix agent

이 방법만으로는 데이터가 평문으로 전송되기 때문에 강력한 보호를 제공하지 않는다는 점을 참고하시기 바랍니다. 변경 사항이 즉시 적용되려면 구성 캐시 재로드가 필요합니다.

에이전트 구성

에이전트 구성 파일에 다음 라인을 추가합니다:

HostMetadata=Linux    21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

여기서 "Linux"는 플랫폼이고, 나머지 문자열은 추측하기 어려운 비밀 텍스트입니다.

구성 파일을 변경한 후에는 에이전트를 재시작하는 것을 잊지 마시기 바랍니다.

단계 2 - 등록된 호스트에 템플릿 추가

이미 등록된 호스트에 추가 템플릿을 추가할 수 있습니다. 이 경우 MySQL by Zabbix agent 템플릿은 HostMetadata에 MySQL 토큰이 포함된 호스트에만 연결됩니다.

프론트엔드 구성

프론트엔드에서 액션을 업데이트합니다:

  • 이름: Autoregistration action Linux
  • 조건:
    • 계산 유형: AND
    • 조건 (A): Host metadata contains Linux
    • 조건 (B): Host metadata contains 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae
    • 조건 (C): Host metadata contains MySQL
  • 작업:
    • 사용자에게 메시지 전송: Admin via all media
    • 호스트 그룹에 추가: Linux servers
    • 템플릿 연결: Linux by Zabbix agent
    • 템플릿 연결: MySQL by Zabbix Agent

에이전트 구성

에이전트 구성 파일에서 다음 라인을 업데이트합니다:

HostMetadata=MySQL on Linux 21df83bf21bf0be663090bb8d4128558ab9b95fba66a6dbf834f8b91ae5e08ae

구성 파일을 변경한 후에는 에이전트를 재시작하는 것을 잊지 마시기 바랍니다.