요새 Fluent Bit를 써서 EKS 안의 애플리케이션 로그를 수집하고 Kinesis firehose를 버퍼로 사용한 후, 이를 Logstash에서 수집한 후 ES로 보내 Kibana에서 분석하는 환경을 구성 중이다.
"log"=>"* 2022-02-16 12:38:44,245 [Timer-0] INFO |c.e.demo.SpringBootLoggerApplication: 12:38:44 ::: Hello World ::: 1"}
그 중에서 Fluent Bit는 로그 파일을 "log"라는 key에 저장해서, 기존 Logstash 설정을 사용하기 위해서는 "log" 를 "message"로 바꿔주어야 했다.
{ "message" => "Hello Logstash!" }
그럼 애초에 왜 Logstash는 "message"라는 field(Fluent Bit의 key)에 로그를 저장하나 궁금해서 찾아보니, 여러 글들이 있었다.
먼저 elastic.co의 블로그 글 A Practical Introduction to Logstash 을 보면,
{
"message" => "Hello Logstash!",
"@version" => "1",
"path" => "/home/logstash/testdata.log",
"@timestamp" => 2018-04-24T12:40:09.105Z,
"host" => "localhost"
}
( 왜 message field에 저장되는지 이유는 나오지 않는다. )
다음으로, Logstash Docs의 Accessing event data and fields in the configuration 문서의 metadata field 부분을 보면,
"STDIN input에서 넣은 데이터가 무엇이든간에 message 필드로 저장된다"
(This configuration file yields events from STDIN. Whatever you type becomes the message field in the event.") 라는 말만 나오고 역시 왜 하필 그 field의 이름이 message인지는 알려주지 않는다.
더 찾아보니, 2015년 discuss.elastic.co 에 어떤 사람이
"Logstash에서 message field의 목적은 뭐냐? message란게 이름 지정 규칙 혹은 표준이냐?" 라고 질문한 글에,
로그스태시 플러그인 maintainer가 단 답변이 있다.
The message field is like a default field. It's where most input plugins place the payload that they receive from the network, read from a file, or whatever. So no, it's not just a convention.
In many log formats the message field starts with a timestamp, maybe a severity level, possibly a hostname, and so on, and ends with the actual message. In such cases one typically extract the timestamp etc into fields of their own and remove them from the message field. In other cases like HTTP logs there is no free-text message.
message 필드에서 timestamp, level, hostname ... 같은 정보를 추출할 수 있다 라는 말을 한다.
찾아보며 느낀 바로는, "애초에 Logstash를 만든 사람들이 input플러그인에서 들어오는 텍스트를 message란 field에 담는다" 라고 지정해서 그런 것 같다.
그게 표준 아닌가? 싶지만... ㅎㅎ
Fluent Bit 는 log를 "log"라는 key에 담는다는 것이다.
'인프라,데이터 > Elasticsearch, Logstash, Kibana' 카테고리의 다른 글
Logstash 6.3.x 버전에서의 GC(Garbage Collector) (0) | 2022.03.10 |
---|---|
Logstash file input시 파일 열고 수정하면 데이터 중복 집계되는 이유 (0) | 2022.02.25 |
Logstash에서 SQS, Elasticsearch로 데이터가 들어가지 않을 때 (0) | 2022.01.07 |
Logstash nested json, json in json parsing error (0) | 2022.01.04 |
Logstash 7.16.2 버전에서 로그 파싱하기 (0) | 2021.12.30 |