FireLens/fluentbit 구성 검토 및 리노베이션
수정된 리소스를 V2 브랜치에 반영했습니다.
htps : // 기주 b. 코 m/안텐이 x/후레렌 s/t레에/v2
첫 번째 firelens를 사용한 로그 분할 및 모니터링 처리
두 번째 로컬에서 datag/S3로 데이터를 전송할 수 있는 docker 이미지 만들기
세 번째 Firelens에서 datag/S3로 데이터를 전송할 수 있는 docker 이미지 만들기
리노베이션 장소
datadog에서 S3에 업로드하지 않고 모든 fluentbit에서 S3에 업로드
도표에서는 LogB, LogC는 datag를 경유해, S3에 업로드된다고 가정했습니다만
로그 업로드 통신을 AWS 내에서 완결시키려고 했습니다.
그 때문에 datadog는 실시간 경고만 대응하고 그 후 로그를 파기합니다.
이전 구성(1회째)
이번에
웹 컨테이너의 로그 출력을 JSON 형식 → 문자열로 되돌리기
반드시 JSON으로 로그를 출력할 필요는 없고, 통상의 캐릭터 라인의 출력으로 되돌리기로 했습니다.
보다 느슨하게 결합으로 좋을까 생각합니다.
세 가지 유형의 로그를 fluentbit에서 수신하는 부분은 동일하지만 분류 방법을 검토합니다.
1. LogA(アクセスログ):stdoutのもの
2. LogB(エラーログ):stderrのもの
3. LogC(アプリケーションログ):stdout/stderrに関わらず、ログの先頭に「application」の識別子が付与されているもの
fluent-bit의 stream-processor 검토
stream-processor도 재설계합니다.
이 처리의 흐름은 보기 보기 어렵고, 흐름을 그림으로 했습니다. 대체로 아래와 같은 흐름이 된다고 인식하고 있습니다.
docker-compose에서 부여 태그 정의
이전 구성에서는 웹 컨테이너에서 표준 출력된 로그에 태그가 부여되지 않은 상태였습니다.
FireLens의 동작에 맞게 docker-compose 레벨에서 태그를 정의하고 로그 일치에 사용합니다.
docker-compose.yml
logging:
driver: fluentd
options:
tag: "service-firelens-xxx"
fluentd-address: "localhost:24224"
fluentd-async-connect: "true"
로그 프로세스
이상의 처리의 결과, 로그가 아래와 같이 출력됩니다.
서식이 이런 느낌으로 바뀐다는 이미지만 잡아 주시면 좋겠습니다.
LogA
web-container-out
172.23.0.1 - - [16/Dec/2019:15:44:49 +0000] GET / HTTP/1.1 200 23578 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 8956
fluentbit-continer-in
[0] xxx-firelens-xxx: [1576511089.000000000, {"source"=>"stdout", "log"=>"172.23.0.1 - - [16/Dec/2019:15:44:49 +0000] GET / HTTP/1.1 200 23578 - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 8956", "container_id"=>"a8b309523a4352f95164b67ab0b19cfd9104b76e51cab930a8ac7060d8707c41", "container_name"=>"/firelens_web_1"}]
fluentbit-continer-out
[0] access: [1576511781.000000000, {"source"=>"stdout", "message"=>"172.23.0.1 - - [16/Dec/2019:15:56:21 +0000] GET /?exception HTTP/1.1 200 - - Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 2209", "container_id"=>"b6fcbeebca39a0b06822f7b16df1de80cd1245521392354fe48b2f915a421834", "container_name"=>"/firelens_web_1", "service"=>"access"}]
LogB
web-container-out
exception
fluentbit-continer-in
[0] xxx-firelens-xxx: [1576511122.000000000, {"container_id"=>"a8b309523a4352f95164b67ab0b19cfd9104b76e51cab930a8ac7060d8707c41", "container_name"=>"/firelens_web_1", "source"=>"stderr", "log"=>"exception"}]
fluentbit-continer-out
[0] error: [1576511781.000000000, {"source"=>"stderr", "message"=>"exception", "container_id"=>"b6fcbeebca39a0b06822f7b16df1de80cd1245521392354fe48b2f915a421834", "container_name"=>"/firelens_web_1", "service"=>"error"}]
LogC
web-container-out
application error error-text
fluentbit-continer-in
[1] xxx-firelens-xxx: [1576511198.000000000, {"log"=>"application error error-text", "container_id"=>"a8b309523a4352f95164b67ab0b19cfd9104b76e51cab930a8ac7060d8707c41", "container_name"=>"/firelens_web_1", "source"=>"stderr"}]
fluentbit-continer-out
[0] application: [1576511737.000000000, {"status"=>"error", "message"=>"error-text", "source"=>"stderr", "container_id"=>"b6fcbeebca39a0b06822f7b16df1de80cd1245521392354fe48b2f915a421834", "container_name"=>"/firelens_web_1", "service"=>"application"}]
기타 리노베이션
fluentbit의 S3 업로드 플러그인 버전 업그레이드와 함께
추가 수정을 했습니다.
S3 Prefix의 버그나, 복수 개소에의 S3의 업로드에 대응할 수 있는 것 같습니다.
요약
당초 이해가 부족했던 부분을 보완하고 반영할 수 있었습니다.
잘 부탁드립니다.
Reference
이 문제에 관하여(FireLens/fluentbit 구성 검토 및 리노베이션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/antennix/items/ebad3bcb33cbd168923d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)