2 Active agent autoregistration

원본 보기

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 기반 인증을 구성하여 안전한 자동 등록이 가능합니다.

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

PSK에 의한 인증은 호스트를 추가하기 전에 Zabbix 서버에 의해 확인됩니다. 성공하면 호스트가 추가되고 호스트로부터/호스트로의 연결이 전역 자동 등록 설정과 동일한 신원/사전 공유 키와 함께 '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 에이전트(위의 "구성" 섹션 참조)가 있습니다. 네트워크에 Windows 호스트와 Linux 호스트가 있고, Zabbix 프론트엔드에서 "Linux by Zabbix agent"와 "Windows by Zabbix agent" 템플릿을 사용할 수 있습니다. 따라서 호스트 등록 시 등록되는 호스트에 적절한 Linux/Windows 템플릿이 적용되기를 원합니다. 기본적으로 자동 등록 시 서버에는 호스트명만 전송되므로 충분하지 않을 수 있습니다. 호스트에 적절한 템플릿이 적용되도록 하려면 호스트 메타데이터를 사용해야 합니다.

프론트엔드 구성

가장 먼저 할 일은 프론트엔드를 구성하는 것입니다. 2개의 액션을 생성합니다. 첫 번째 액션:

  • 이름: Linux host autoregistration
  • 조건: Host metadata contains Linux
  • 작업: Link templates: Linux by Zabbix agent

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

두 번째 액션:

  • 이름: Windows host autoregistration
  • 조건: Host metadata contains Windows
  • 작업: 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

구성 파일을 변경한 후에는 에이전트를 반드시 재시작해야 합니다.