6 Zabbix trapper

개요

Trapper 아이템은 데이터를 쿼리하는 대신 들어오는 데이터를 받습니다. 이는 Zabbix로 전송하고자 하는 모든 데이터에 유용합니다.

구성

trapper 아이템을 구성하려면:

  1. Data collectionHosts로 이동합니다.
  2. 호스트 행에서 Items를 클릭합니다.
  3. Create item을 클릭합니다.
  4. 구성 양식에서 아이템 매개변수를 입력합니다.

모든 필수 입력 필드는 빨간 별표로 표시됩니다.

trapper 아이템에 특정 정보가 필요한 필드는 다음과 같습니다:

Type "Zabbix trapper"를 선택합니다.
Key Zabbix 서버로 데이터를 전송할 때 아이템을 인식하는 데 사용될 키를 입력합니다.
Type of information 전송될 데이터 형식에 해당하는 정보 유형을 선택합니다.
Allowed hosts 쉼표로 구분된 IP 주소 목록(선택적으로 CIDR 표기법 사용) 또는 DNS 이름.

지정된 경우, 여기에 나열된 호스트에서만 들어오는 연결이 허용됩니다.
IPv6 지원이 활성화된 경우 '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1'은 동등하게 처리되며 '::/0'은 모든 IPv4 또는 IPv6 주소를 허용합니다. '0.0.0.0/0'은 모든 IPv4 주소를 허용하는 데 사용할 수 있습니다.

"IPv4 호환 IPv6 주소"(0000::/96 접두사)는 지원되지만 RFC4291에서 권장하지 않습니다.

예제: 127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.example.com, {HOST.HOST}

공백, 사용자 매크로, 그리고 호스트 매크로 {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN}이 지원됩니다.

값을 전송하기 전에, Zabbix 서버가 구성 캐시 업데이트에서 변경 사항을 선택할 때까지 아이템을 저장한 후 최대 60초까지 기다려야 할 수 있습니다.

데이터 전송

Zabbix 서버 또는 프록시로 데이터를 전송하는 것은 Zabbix sender 유틸리티 또는 Zabbix sender 프로토콜을 사용하여 가능합니다. Zabbix 서버로 데이터를 전송하는 것은 history.push API 메소드를 사용하여도 가능합니다.

Zabbix sender

Zabbix sender 유틸리티를 사용하여 Zabbix 서버 또는 프록시로 데이터를 전송하려면, "test value"를 전송하기 위해 다음 명령을 실행할 수 있습니다:

zabbix_sender -z <server IP address> -p 10051 -s "New host" -k trap -o "test value"

"test value"를 전송하기 위해 다음 명령 옵션이 사용됩니다:

  • -z Zabbix 서버 IP 주소를 지정
  • -p Zabbix 서버 포트 번호를 지정 (기본값: 10051)
  • -s 호스트를 지정 (보이는 이름 대신 기술적인 호스트 이름을 사용해야 합니다)
  • -k trapper 아이템에서 구성된 아이템의 키를 지정
  • -o 전송할 값을 지정

Zabbix trapper 프로세스는 대상 호스트에 대한 해당 아이템 키 존재를 확인하기 위해 아이템 키에 사용된 매크로를 확장하지 않습니다.

Zabbix sender와 Zabbix 서버 또는 프록시 간의 통신에 대한 자세한 정보는 Zabbix sender protocol을 참조하세요.

history.push

history.push API 메소드를 사용하여 Zabbix 서버로 데이터를 전송하려면, 일부 테스트 값을 포함하는 다음 HTTP POST 요청을 만들 수 있습니다:

curl --request POST \
  --url 'https://example.com/zabbix/api_jsonrpc.php' \
  --header 'Authorization: Bearer 0424bd59b807674191e7d77572075f33' \
  --header 'Content-Type: application/json-rpc' \
  --data '{"jsonrpc":"2.0","method":"history.push","params":[{"itemid":10600,"value":"test value 1"},{"itemid":10601,"value":"test value 2"},{"itemid":99999,"value":"test value 3"}],"id":1}'

요청이 올바르다면, API에서 반환되는 응답은 다음과 같을 수 있습니다:

{
    "jsonrpc": "2.0",
    "result": {
        "response": "success",
        "data": [
            {
                "itemid": "10600"
            },
            {
                "itemid": "10601",
                "error": "Item is disabled."
            },
            {
                "error": "No permissions to referred object or it does not exist."
            }
        ]
    },
    "id": 1
}

응답 데이터의 오류는 특정 아이템에 대한 데이터 전송이 Zabbix 서버의 유효성 검사에 실패했음을 나타냅니다. 이는 다음과 같은 이유로 발생할 수 있습니다:

  • 데이터를 전송하는 사용자가 아이템의 호스트에 대한 읽기 권한이 없음;
  • 호스트가 비활성화되어 있거나 데이터 수집 없는 유지 보수 중임;
  • 아이템이 존재하지 않거나 서버 구성 캐시에 아직 포함되지 않음;
  • 아이템이 비활성화되어 있거나 유형이 Zabbix trapper 또는 HTTP agent (트래핑이 활성화된)가 아님;
  • 사용자의 IP 또는 DNS가 아이템의 Allowed hosts 목록에 설정되지 않음;
  • 다른 아이템이 나노초 수준에서 중복된 타임스탬프를 가진 값을 가지고 있음.

오류가 없다는 것은 전송된 값이 처리를 위해 수락되었음을 나타내며, 여기에는 전처리(있는 경우), 트리거 처리, 데이터베이스 저장이 포함됩니다. 수락된 값의 처리도 실패할 수 있으며(예: 전처리 중), 그 결과 값이 폐기될 수 있습니다.

Zabbix API 작업 방법에 대한 자세한 정보는 API를 참조하세요.

데이터 표시

데이터가 전송되면, MonitoringLatest data로 이동하여 결과를 볼 수 있습니다:

단일 숫자 값이 전송되면, 데이터 그래프는 값의 시점에서 왼쪽과 오른쪽으로 수평선을 보여줍니다.