argocd 에서 애플리케이션 배포시 생기는 로그를 수집했어야 했는데,
파싱이나 설정 부분에서 좀 헤맸던 면이 있어 기록으로 남긴다..!
Fluent Bit conf
[INPUT]
Name tail
Tag syslog.*
Path /var/log/containers/*.log
storage.type filesystem
Parser docker
DB /var/log/sys_kube.db
Refresh_Interval 10
Path_Key path
/var/log/containers/~ 하위에 쌓이는 모든 로그를 syslog란 태그로 수집한다.
[FILTER]
Name rewrite_tag
Match syslog.*
Rule $kubernetes['namespace_name'] ^(argocd)$ argocd.$TAG true
namespace가 argocd인 경우는 tag를 argocd로 시작하도록 변경한다.
[FILTER]
Name grep
Match argocd.*
Regex log /.*필터를 원하는 문자열.*/
argocd 태그의 데이터 중 "필터를 원하는 문자열"만 남도록 grep 필터를 사용하여 필터링한다.
[FILTER]
Name parser
Match argocd.*
Key_Name log
Parser argocd
Reserve_Data True
parser 필터를 사용하는데, 필터의 내용은 아래와 같다.
[PARSER]
Name argocd
Format regex
Regex time=\"(?<time>[0-9-]+T[0-9:Z]+)\" level\=(?<level>\S+) msg\=\"(?<msg>.*)\" application\=(?<application>\S+) dest-namespace\=(?<dest_namespace>.*) dest-server\=\"(?<dest_server>.*)\" reason\=(?<reason>.*) type\=(?<type>.*)
argocd의 로그가 제각각이라 꼭 이 포맷은 아니니 주의.
또 주의해야 할 점은, 그룹에 <dest-folder> 와 같이 dash가 들어가면 제대로 fluent bit가 작동이 안 된다.
fluent bit invalid regex pattern 이라는 오류가 떠서 왜 안되나 계속 삽질했는데,
<dest_folder>와 같이 - 를 _ 로 바꾸어주어야 한다.
[OUTPUT]
Name s3
Match argocd.*
bucket yourbucket
region ap-northeast-2
s3_key_format /your/path/to/s3
s3_key_format_tag_delimiters _.
upload_timeout 1h
그리고 원하는 s3 버킷으로 내보낸다!
'인프라,데이터 > Fluentd, Fluent Bit' 카테고리의 다른 글
Fluentd로 S3 output path에 field(key) 값 넣기 (0) | 2022.06.12 |
---|---|
Fluentd add Record Field by Ruby 'Case when~' Conditional Statements (0) | 2022.06.07 |
Fluent Bit에 SQS Output 연결하기(feat. Golang) (0) | 2022.04.14 |
Fluent Bit의 버퍼링Buffering (번역) (0) | 2022.03.20 |
Using Lua filter to find if log matches a pattern, and remove last n characters. (0) | 2022.03.02 |