sentry-logger-create

센트리에 로거를 생성합니다.

문법

sentry-logger-create [timeout=INT]
선택 매개변수
timeout=INT
초 단위 RPC 타임아웃(기본값: 30초)

설명

이 명령어는 센트리에 로거를 생성합니다. 입력 레코드에 센트리 식별자 guid, 수집 유형 이름 factory_name, 로거 이름 name, 설명 description, 설정 configs, 테이블 table_name, 호스트 태그 host_tag 필드가 필요합니다.

로그프레소 환경 변수 logpresso.core.sentry_rpc_parallel은 비동기 RPC 요청 메시지 대기열의 길이를 지정하는데 사용됩니다. 이 환경변수의 기본값은 100이고, 이 환경 변수 값을 변경함으로써 비동기 RPC 요청 대기열의 길이를 조정할 수 있습니다.

RPC 요청 메시지 대기열은 선입선출 방식(first in, first out, 줄여서 FIFO) 방식으로 동작합니다. 예를 들어 로그프레소 서버가 메시지를 보낼 센트리의 개수가 150대라면, 서버는 먼저 100대의 센트리에게 RPC 메시지를 전송하고 RPC 응답을 기다립니다. 이 때 대기 시간이 timeout으로 지정된 시간(기본값은 30초)을 초과하면 해당 센트리로부터 오류가 발생한 것으로 간주합니다. 100대의 센트리 중에서 32대가 응답하거나 타임아웃되면 추가적으로 32대의 센트리에게 RPC 메시지를 전송합니다.

이 명령어는 센트리의 RPC 응답 메시지를 수신하는 순서대로 결과를 출력하기 때문에 출력 레코드의 순서는 입력 레코드의 순서와 다를 수 있습니다. 레코드의 순서에 의존하지 말고 출력 데이터 자체를 이용하십시오.

입력 필드

이 명령어는 입력 레코드에 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: sentry-logger-configs 명령으로 기존에 설정된 로거의 설정을 참고하여 지정합니다.
  • table_name: 테이블 이름을 지정하지 않은 로거는 스트리밍 전용으로 사용됩니다. 스트림 쿼리에서 데이터를 실시간으로 가공한 후에 테이블에 저장할 수도 있습니다.
출력 필드

이 명령어는 오류가 발생하면 원본 레코드의 필드에 _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 factoryname: 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필수 설정 키(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 예외 메시지가 출력될 수 있습니다.

사용 예

접속되어 있는 모든 리눅스 센트리에 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