Log 16

08. Fluentd high availability config

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 개요 트래픽이 많은 웹사이트의 경우, fluentd의 high-availability 설정을 하는 것을 추천합니다. 그렇다면 high-availability 설정은 뭘까요?! 2. Message Delivery Semantics Fluentd는 주로 이벤트 로그를 전달하는 시스템을 위해 설계되었습니다. 이런 시스템에선 몇 가지 배송 방법이 있습니다. At most once: 메시지는 즉시 전달됨. 전송 실패시 전달을 못하고 메시지를 잃을 수 있음. At least once: 메시지는 최소 1번 전달됨. 실패시 2번 보낼 수도 있음. Exactly once: 메시지는 딱 한 번 전달됨. 가장 이상적 만약 ..

Log/fluentd 2022.10.09

07. Fluentd fomatter plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 개요 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 formatter 플러그인에 대해 살펴보겠습니다. Formatter plugin은 output format을 커스터마이징할 수 있게 해줍니다. 2. formatter_out_file formatter_out_file은 time, tag, record를 구분자로 구분지어 출력시켜 줍니다. time[delimiter]tag[delimiter]record[newline] 3. formatter_json formatter_json은 이벤트를 JSON 형태로 포맷팅해줍니다. 기본적으로 tag, time은 들어가지 않습니다. 넣으려면 를 사용하면 됩니..

Log/fluentd 2022.10.09

06. Fluentd parser plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 개요 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 parser 플러그인에 대해 살펴보겠습니다. Parser plugin은 사용자의 커스텀 데이타 포맷을 파싱할 수 있게 해줍니다. 2. parser_regexp parser_regexp는 주어진 정규 표현식대로 로그를 파싱합니다. 적어도 하나의 named capture(?)을 필요로 합니다. 만약 time을 포착했다면 그건 time_key를 통해 설정이 가능합니다. 참고 : named capture는 정규 표현식에서 필드를 추출해내는 것을 의미하는 것 같습니다. @type regexp expression /^\[(?[^\]]*)\] (?[^ ..

Log/fluentd 2022.10.09

05. Fluentd buffer plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 개요 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 buffer 플러그인에 대해 살펴보겠습니다. Buffer plugin은 output plugin에 의해 사용되는 플러그인입니다. 버퍼는 본질적으로 chunk의 집합입니다. Chunk는 이벤트의 집합입니다. 각각의 chunk는 파일 혹은 메모리에 관리됩니다. Chunk는 화물 상자로 비유될 수 있습니다. Fluentd는 input source로부터 화물 상자에 이벤트를 차곡차곡 쌓습니다. 화물 상자가 가득차면 목적지로 배송됩니다. 내부적으로 버퍼는 2개의 분리된 공간으로 구분됩니다. "Stage"는 chunk가 채워지는 공간이며 "queue"..

Log/fluentd 2022.10.08

04. Fluentd filter plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 도입 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 filter 플러그인에 대해 살펴보겠습니다. Filter plugin은 이벤트 스트림을 바꿀 수 있게 해줍니다. 예를 들어, 하나 이상의 필드를 이용해 이벤트를 필터링하기 새로운 필드를 이벤트에 더해주기 개인 정보 보호와 규정을 위해 특정 필드를 지우거나 마스킹하기 등을 할 수 있습니다. 2. filter_record_transformer filter_record_transformer는 이벤트 스트림을 변경시킬 수 있게 합니다. 만약 이벤트를 추가/삭제/수정하고 싶으면 이 필터를 먼저 써보세요. @type record_transformer ..

Log/fluentd 2022.10.08

03. Fluentd output plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 도입 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 output 플러그인에 대해 살펴보겠습니다. Fluentd v1.0 output 플러그인은 3가지 모드가 있습니다. Non-buffered mode - 데이터를 버퍼에 넣지 않고 바로 쓰는 모드 Synchronous Buffered mode - buffer chunk들(이벤트들의 집합)에 이벤트들을 넣은 후, 큐에 chunk를 하나씩 넣고 빼내 chunk를 쓰는 모드 Asynchronous Buffered mode - buffer chunk, queue는 있지만 output plugin은 chunk를 쓰지 않고 나중에 쓰는 모드? outpu..

Log/fluentd 2022.10.08

02. Fluentd input plugins

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. 도입 Fluentd는 9가지 종류의 플러그인이 있습니다. 그 중 input 플러그인에 대해 살펴보겠습니다.Input 플러그인은 이벤트를 받거나 가져옵니다. 이번엔 공식 문서에서 비교적 자세히 설명된 플러그인들만 소개하겠습니다. 다른 플러그인들은 플러그인에서 볼 수 있습니다. 2. in_tail in_tail 플러그인은 텍스트 파일의 끝부터 이벤트를 읽을 수 있게 해줍니다. @type tail path /var/log/httpd-access.log pos_file /var/log/td-agent/httpd-access.log.pos tag apache.access @type apache2 위와 같은 설정을..

Log/fluentd 2022.10.08

01. Fluentd란?

본 글은 https://docs.fluentd.org/을 번역/요약/정리/사견 추가한 글입니다. 1. Fluentd란? Fluentd는 통합된 로깅 레이어를 위한 오픈소스 데이터 수집기입니다. Fluentd는 데이터 수집과 소비를 통합시켜줍니다.특히 125개 이상의 시스템을 지원함으로써 모든 것을 로깅할 수 있게 해줍니다. Fluentd는 로그를 JSON으로 취급합니다. 그리고 fluent의 확장성도 현업에서 이미 인정되었다고 합니다. Fluentd의 가장 큰 고객은 5만 여개 이상의 서버로부터 로그를 수집하고 있답니다. 2. Use cases (사용 사례) 오픈소스(elasticsearch, kibana)만을 이용해 Splunk와 같은 데이터(로그) 검색 데이터를 감지해서 경고 메시지 이메일로 보내기 ..

Log/fluentd 2022.10.08

Chapter 8. logback Mapped Diagnostic Contexts

본 문서는 https://logback.qos.ch/manual/introduction.html을 번역/요약/정리/사견 추가한 글입니다. 1. 서론 logback의 설계 목표 중 하나는 복잡한 분산 어플리케이션을 감사하고 디버깅하는 것입니다. 대부분의 실제 분산 시스템은 여러 명의 클라이언트를 동시에 처리해야 합니다. 일반적인 멀티 쓰레드 시스템에선 하나의 시스템이 하나의 클라이언트를 담당하는데 이 때, 클라이언트를 구분하기 위해 클라이언트마다 로그 객체를 생성해 로깅을 하는 것은 비효율적입니다. 좀 더 괜찮은 방법은 각각의 로그 요청마다 클라이언트별 도장을 찍는 것입니다. 이 기술은 에 나온 내용으로 logback은 이 기술을 조금 변형한 Mapped Diagnostic Contexts(MDC)를 사용..

Log/Logback Manual 2022.10.06

Chapter 7. logback filter

본 문서는 https://logback.qos.ch/manual/introduction.html을 번역/요약/정리/사견 추가한 글입니다. 1. Filter가 뭘까? Chapter 2 마지막 부분에서 로깅 이벤트가 요청되면 먼저 로그를 남길지 말지 1차적으로 결정하는 필터를 거친다고 했습니다. 이 때 말씀드린 필터가 지금 알아볼 필터와 같은 것입니다. 2. logback-classic에서 Logback-classic은 2가지 종류의 필터를 제공합니다. Regular filter, turbo filter 3. Regular filters Regular filter는 Filter 추상 클래스를 확장합니다. 이 클래스에선 ILoggingEvent를 인자로 받는 decide() 메소드 하나를 구현하면 됩니다. 이..

Log/Logback Manual 2022.10.05