sendsyslog
입력되는 데이터를 UDP 프로토콜을 통해 시스로그 메시지로 원격 서버에 전송합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 미지원 |
문법
옵션
dst=IP-
시스로그 수신 서버의 IP 주소
port=INT-
시스로그 수신 서버의 포트 번호 (기본값:
514) format={txt|json}-
시스로그 본문 형식 (기본값:
txt)txt: 입력 레코드의line필드 값을 그대로 전송json: 입력 레코드 전체를 JSON 형식으로 변환하여 전송._id,_table,_time필드는 제외됨
pri=INT-
RFC 5424에 정의된 PRI 값. 기본값 134는
local0시설과info심각도에 해당합니다. (기본값:134) -
PRI 값은 Facility 값의 8배수에 Severity 값을 더한 값입니다.
Facility / Severity 0/Emer 1/Alert 2/Crit 3/Error 4/Warn 5/Notice 6/Info 7/Debug 0 / kern 0 1 2 3 4 5 6 7 1 / user 8 9 10 11 12 13 14 15 2 / mail 16 17 18 19 20 21 22 23 3 / daemon 24 25 26 27 28 29 30 31 4 / auth 32 33 34 35 36 37 38 39 5 / syslog 40 41 42 43 44 45 46 47 6 / lpr 48 49 50 51 52 53 54 55 7 / news 56 57 58 59 60 61 62 63 8 / uucp 64 65 66 67 68 69 70 71 9 / clock 72 73 74 75 76 77 78 79 10 / authpriv 80 81 82 83 84 85 86 87 11 / ftp 88 89 90 91 92 93 94 95 12 / ntp 96 97 98 99 100 101 102 103 13 / audit 104 105 106 107 108 109 110 111 14 / alert 112 113 114 115 116 117 118 119 15 / solaris-cron 120 121 122 123 124 125 126 127 16 / local0 128 129 130 131 132 133 134 (기본값) 135 17 / local1 136 137 138 139 140 141 142 143 18 / local2 144 145 146 147 148 149 150 151 19 / local3 152 153 154 155 156 157 158 159 20 / local4 160 161 162 163 164 165 166 167 21 / local5 168 169 170 171 172 173 174 175 22 / local6 176 177 178 179 180 181 182 183 23 / local7 184 185 186 187 188 189 190 191 src=IP-
출발지 IP 주소. 지정하면 로그프레소 서버의 IP 주소 대신 지정한 IP를 출발지로 설정하여 전송합니다. 이 옵션을 사용하면 PCAP 디바이스를 통해 패킷을 직접 생성하여 전송합니다.
입력 필드
| 필드 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
line | 문자열 | format=txt인 경우 필수 | 시스로그 본문으로 전송할 텍스트. null이면 빈 문자열을 전송합니다. |
출력 필드
입력 레코드의 필드를 그대로 전달합니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| missing-dst-option | (메시지 없음) | dst 옵션이 지정되지 않은 경우 |
| invalid-dst-ip | (메시지 없음) | dst 옵션에 유효하지 않은 IP 주소를 지정한 경우 |
| invalid-format | (메시지 없음) | format 옵션에 txt 또는 json 이외의 값을 지정한 경우 |
| invalid-pri | (메시지 없음) | pri 옵션에 정수가 아닌 값을 지정한 경우 |
| invalid-port-number | (메시지 없음) | port 옵션에 1~65535 범위를 벗어난 값을 지정한 경우 |
| invalid-src-ip | (메시지 없음) | src 옵션에 유효하지 않은 IP 주소를 지정한 경우 |
런타임 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| pcap-device-failure | (예외 메시지) | src 옵션으로 PCAP 디바이스를 지정했으나 디바이스를 열 수 없는 경우 |
설명
sendsyslog 명령어는 입력되는 레코드마다 UDP 시스로그 메시지를 생성하여 지정한 원격 서버로 전송합니다. 시스로그 메시지는 <PRI>본문 형식으로 구성됩니다.
format=txt일 때는 입력 레코드의 line 필드 값을 본문으로 사용합니다. format=json일 때는 입력 레코드 전체를 JSON으로 변환하여 본문으로 사용하되, _id, _table, _time 필드는 제외합니다. RFC 3164/RFC 5424의 타임스탬프·호스트 이름 헤더는 포함되지 않으며 인코딩은 UTF-8입니다. PRI 값이 134일 때 본문 예는 다음과 같습니다.
<134>{"src_ip":"192.168.0.10","src_port":52344,"dst_ip":"10.0.0.5","dst_port":443,"protocol":"tcp","bytes":1480}
각 필드 타입은 다음 규칙으로 JSON 값으로 변환됩니다.
| 로그프레소 타입 | JSON 표현 |
|---|---|
| 문자열 | JSON 문자열 |
정수, 실수 (int, long, double 등) | JSON 숫자 |
| 불리언 | true / false |
null | null |
| 날짜 | "yyyy-MM-dd HH:mm:ssZ" 형식 문자열 (예: "2026-05-04 13:45:00+0900") |
| IP 주소 | 주소 문자열 (예: "192.168.0.10") |
| UUID | UUID 문자열 |
| 바이너리 | 소문자 16진수 문자열 |
| 배열 | JSON 배열 (각 요소를 위 규칙으로 재귀 변환) |
| 맵 | JSON 객체 (값을 위 규칙으로 재귀 변환) |
JSON 객체 내 키 순서는 보장되지 않으므로, 수신 측 파서는 키 이름을 기준으로 동작하도록 작성하세요. 수신 측에서 시간 정보가 필요하다면 eval 명령어로 _time을 별도 필드에 복사한 뒤 전달하세요.
sendsyslog는 레코드 하나당 UDP 데이터그램으로 전송합니다. format=json으로 크기가 큰 레코드를 전송할 때 직렬화된 데이터가 MTU를 초과하면 단편화되거나 드롭될 수 있으므로, 크기가 큰 레코드는 sendsyslog-tcp 사용을 검토하세요.
src 옵션을 지정하면 PCAP 디바이스를 사용하여 출발지 IP를 임의의 주소로 변경한 UDP 패킷을 생성합니다. src 옵션을 지정하지 않으면 일반 UDP 소켓을 사용하여 전송합니다. src 옵션을 사용하려면 운영체제에 libpcap(Linux/macOS) 또는 WinPcap(Windows) 라이브러리가 설치되어 있어야 합니다. MTU를 초과하는 크기의 패킷은 전송에 실패할 수 있으므로 주의하세요.
전송 성공 여부와 관계없이 입력 레코드를 그대로 다음 명령어로 전달합니다. 전송 오류가 발생하면 첫 번째 오류만 로그에 기록하고 이후 동일한 오류는 억제합니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
텍스트 형식으로 시스로그 전송
table limit=100 WEB_APACHE_SAMPLE | sendsyslog dst=198.51.100.10WEB_APACHE_SAMPLE의line필드를 UDP 시스로그로198.51.100.10:514에 전송합니다. -
JSON 형식으로 시스로그 전송
table limit=100 WEB_APACHE_SAMPLE | sendsyslog dst=198.51.100.10 port=1514 format=jsonWEB_APACHE_SAMPLE의 모든 필드를 JSON 형식으로 변환하여198.51.100.10:1514에 전송합니다. -
PRI 값과 출발지 IP 지정
table limit=100 WEB_APACHE_SAMPLE | sendsyslog dst=198.51.100.10 pri=165 src=203.0.113.5PRI 값을 165(
local4+notice)로 설정하고, 출발지 IP를203.0.113.5로 변경하여 전송합니다.
호환성
sendsyslog 명령어는 소나 4.0 이전 버전부터 제공되었습니다.