본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다.
1. 개요
Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 parser 플러그인에 대해 살펴보겠습니다. Parser plugin은 사용자의 커스텀 데이타 포맷을 파싱할 수 있게 해줍니다.
2. parser_regexp
parser_regexp는 주어진 정규 표현식대로 로그를 파싱합니다. 적어도 하나의 named capture(?<NAME>)을 필요로 합니다. 만약 time을 포착했다면 그건 time_key를 통해 설정이 가능합니다.
참고 : named capture는 정규 표현식에서 필드를 추출해내는 것을 의미하는 것 같습니다.
<parse>
@type regexp
expression /^\[(?<logtime>[^\]]*)\] (?<name>[^ ]*) (?<title>[^ ]*) (?<id>\d*)$/
time_key logtime
time_format %Y-%m-%d %H:%M:%S %z
types id:integer
</parse>
만약 아래와 같은 이벤트가 오면
[2013-02-28 12:00:00 +0900] alice engineer 1
아래와 같이 파싱됩니다.
time: 1362020400 (2013-02-28 12:00:00 +0900)
record: {
"name" : "alice",
"title": "engineer",
"id" : 1
}
참고: http://fluentular.herokuapp.com/에서 자신의 정규표현식을 테스트해볼 수 있습니다.
3. parser_apache2 / parser_apache_error / parser_nginx / parser_syslog
parser_apache2는 apache2 로그를 파싱합니다.
parser_apache_error는 apache 에러 로그를 파싱합니다.
parser_nginx는 nginx 로그를 파싱합니다.
parser_syslog는 syslog 로그를 파싱합니다.
4. parser_ltsv / parser_csv / parser_tsv / parser_jsn
parser_ltsv는 LTSV(Labeled Tab-separated Values) 포맷을 파싱합니다.
parser_csv는 CSV 포맷을 파싱합니다.
parser_tsv는 TSV 포맷을 파싱합니다.
parser_json은 JSON 로그를 파싱합니다.
5. parser_multiline
parser_multiline은 multiline 로그를 파싱합니다. parser_regexp의 multiline 버전이기도 합니다.
예) 자바 stacktrace 로그
<parse>
@type multiline
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) \[(?<thread>.*)\] (?<level>[^\s]+)(?<message>.*)/
</parse>
아래와 같은 이벤트가 오면:
2013-3-03 14:27:33 [main] INFO Main - Start
2013-3-03 14:27:33 [main] ERROR Main - Exception
javax.management.RuntimeErrorException: null
at Main.main(Main.java:16) ~[bin/:na]
2013-3-03 14:27:33 [main] INFO Main - End
아래와 같이 파싱됩니다.
time:
2013-03-03 14:27:33 +0900
record:
{
"thread" :"main",
"level" :"INFO",
"message":" Main - Start"
}
time:
2013-03-03 14:27:33 +0900
record:
{
"thread" :"main",
"level" :"ERROR",
"message":" Main - Exception\njavax.management.RuntimeErrorException: null\n at Main.main(Main.java:16) ~[bin/:na]"
}
time:
2013-03-03 14:27:33 +0900
record:
{
"thread" :"main",
"level" :"INFO",
"message":" Main - End"
}
6. parser_none
parser_none은 하나의 필드로 라인을 파싱합니다.
'Log > fluentd' 카테고리의 다른 글
08. Fluentd high availability config (0) | 2022.10.09 |
---|---|
07. Fluentd fomatter plugins (0) | 2022.10.09 |
05. Fluentd buffer plugins (0) | 2022.10.08 |
04. Fluentd filter plugins (0) | 2022.10.08 |
03. Fluentd output plugins (0) | 2022.10.08 |