sentry-logger-create

로그프레소 센트리에게 RPC 요청을 전송하여 새로운 수집기를 생성합니다.

문법

sentry-logger-create [timeout=INT]
timeout=INT
초 단위 RPC 타임아웃 (기본값 30초)

설명

이 명령어는 동시에 100대의 센트리를 대상으로 비동기적 RPC 요청 메시지를 전송하고 대기합니다. 만약 센트리 100대가 모두 응답이 지연되면, 이 명령어는 하나라도 RPC 응답이 수신될 때까지 처리를 중단하고 각 RPC 요청별 타임아웃이 경과할 때까지 대기합니다.

RPC 응답 메시지가 수신되는대로 결과를 출력하기 때문에, 입력된 guid 순서와 출력의 순서는 다를 수 있습니다. 센트리가 설치된 호스트의 부하 상태나 네트워크 상태에 따라 응답 순서는 매번 달라질 수 있습니다. 따라서 사용자는 레코드 순서에 의존하지 말고 출력 데이터 자체를 이용해야 합니다.

Tip
비동기 RPC 요청 대기열의 길이는 logpresso.core.sentry_rpc_parallel 부팅 스위치로 조정할 수 있습니다.

입력 필드

이 명령어는 입력 레코드의 guid, name, factory_name, configs 필드 값이 반드시 필요합니다.

필드타입필수이름비고
guid문자열O센트리 고유 식별자GUID 형식과 무관
name문자열O수집기 식별자센트리 이름 공간 내 유일한 수집기 식별자
description문자열X수집기 설명
factory_name문자열O수집기 팩토리 식별자
configsO수집기 설정
table_name문자열X테이블 이름수집된 데이터를 저장할 테이블
host_tag문자열X호스트 태그_host 필드 태깅 값
  • factory_name: 로그프레소 쉘에서 logapi.loggerFactories 명령으로 수집기 팩토리 목록을 조회할 수 있습니다. 각 시스템은 운영체제 혹은 앱 설치에 따라 사용 가능한 수집기 팩토리가 다를 수 있습니다.
  • configs: 기존에 설정된 수집기의 configs 항목을 참고하여 지정합니다.
Note
테이블 이름을 설정하지 않은 수집기는 스트리밍 전용으로 사용됩니다. 스트림 쿼리에서 데이터를 실시간으로 가공한 후에 테이블에 저장할 수도 있습니다.

출력 필드

이 명령어는 원본 레코드의 필드에 아래의 필드를 추가하여 출력합니다.

필드타입이름비고
_error문자열오류 내용오류 발생 시 출력됨

오류가 발생하면 _error 필드에 오류 내용을 출력합니다. 발생할 수 있는 오류는 아래와 같습니다:

_error 내용의미
guid is null입력 레코드의 guid 필드 값이 null
guid should be string입력 레코드의 guid 필드 값이 문자열이 아님
guid should be non empty string입력 레코드의 guid 필드 값이 빈 문자열임
name should be not null입력 레코드의 name 필드 값이 null
name should be string입력 레코드의 name 필드 값이 문자열이 아님
name should be non empty string입력 레코드의 name 필드 값이 빈 문자열임
factory_name should be not null입력 레코드의 factory_name 필드 값이 null
factory_name should be string입력 레코드의 factory_name 필드 값이 문자열이 아님
factory_name should be non empty string입력 레코드의 factory_name 필드 값이 빈 문자열임
unsupported factory_name: factory_namefactory_name 수집기 팩토리는 지원되지 않음
configs should be not null입력 레코드의 configs 필드 값이 null
configs should be dict type입력 레코드의 configs 필드 값이 맵 타입이 아님
all values of configs should be string type입력 레코드의 configs 맵의 키/값 쌍이 문자열이 아님
missing config key: name수집기의 필수 설정 키가 누락되었음
table_name should be non empty string입력 레코드의 table_name 필드 값이 빈 문자열임
host_tag should be non empty string입력 레코드의 host_tag 필드 값이 빈 문자열임
timeoutRPC 요청 타임아웃 시간을 초과함
disconnectedRPC 요청 처리 중에 연결이 단절됨
not connected센트리가 접속된 상태가 아님

위에 정의된 _error 문자열 이외에 센트리가 설치된 시스템 상태에 따라 다른 RPC 예외 메시지가 출력될 수 있습니다.

사용 예

  1. 접속되어 있는 모든 리눅스 센트리에 wtmp 수집기를 생성합니다.

    sentry 
    | search os == "Linux" and is_connected
    | eval name = "wtmp_linux"
    | eval factory_name = "wtmp"
    | eval configs = dict("path", "/var/log/wtmp", "server", "linux", "dst_ip", remote_ip) 
    | fields guid, name, factory_name, configs
    | sentry-logger-create