JSON 로깅 & Datadog

로깅에 JSON을 사용해야 하는 이유

현재 JSON 로깅을 사용하지 않는다면, 아마도 일반 텍스트 로그와 정규식에 의존하여 로그를 이해하고 있을 것입니다. 처음에는 효과가 있을 수 있지만, 시스템이 성장함에 따라 구조가 깨지고 손실되기 시작하며 점점 더 악화될 것입니다. JSON 로깅이 표준입니다. 최신 애플리케이션에서 구조화되고 쉽게 구문 분석할 수 있는 로그는 더 이상 선택 사항이 아닙니다. 서비스 전반에서 일관성을 유지하면서 유연성을 확보할 수 있습니다.

데이터독이 JSON 로깅을 권장하는 데는 이유가 있습니다. 로그가 유효한 JSON으로 전송되면 Datadog의 전처리기가 자동으로 로그를 구문 분석하여 오버헤드를 줄이고 일관된 필드 추출을 보장하는 여러 예약된 속성에 매핑합니다. 이러한 예약된 속성은 가장 관련성이 높은 필드를 제공하므로 다른 시스템과의 통합, 로그 필터링, 효율적인 검색, 알림 설정이 쉬워지므로 추가 구성이 필요하지 않습니다. 중요한 예약 속성에는 통합 가시성 및 문제 해결에 필수적인 호스트, 서비스, 상태, 추적 ID, 스팬 ID 등이 있습니다.

설정 방법

제 경험상 JSON 로깅을 가장 잘 구성하는 방법에 대한 리소스가 풍부했습니다. 제가 주로 참고한 것은 Datadog의 문서였습니다: https://docs.datadoghq.com/logs/log_collection/java/?tab=logback. Datadog은 우리가 주로 사용하는 통합 가시성 도구였고 문제가 발생하면 더 쉽게 문제를 해결할 수 있었기 때문에 가장 적합하다고 생각했습니다.

Datadog 문서를 가이드로 삼아 로그백-spring.xml 구성 파일을 만드는 것으로 시작했습니다. 대부분의 작업이 이곳에서 이루어집니다. 처음에는 다양한 JSON 인코더를 실험해보고 도움이 될 것 같은 필드를 추가했습니다. 결국 저는 단순함의 힘을 깨달았습니다. 깔끔하고 최소한의 구성이 유지 관리가 쉽고 고장 가능성도 적다는 사실을요.

<springProfile name="json-logs">

        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
        </appender>

        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>

필요한 Logback 종속성을 추가하고 이 코드를 logback-spring.xml 파일에 추가한 후, 마지막 주요 단계는 애플리케이션 YAML에서 'json-logs'를 활성 Spring 프로필로 설정하는 것입니다. 이렇게 하면 환경 전체에서 JSON 로깅이 활성화되고 모든 서비스에서 일관되게 작동합니다.

이 단계를 올바르게 수행했다면 로그를 추적하여 결과를 확인할 수 있어야 합니다. 이와 유사한 키-값 로그에 있어야 합니다:

{"@timestamp":"2025-1-13T13:02:27.512333-02:00","@version":"1","message":"Tomcat initialized with port 8080(http)",
"logger_name":"org.springframework.boot.web.embedded.tomcat.TomcatWebServer","thread_name":"main","level":"INFO",
"level_value":20000,"appName":"json-logs"}  

이 시점에서 Datadog의 로그는 구조화되어 있어야 하고, 추적 ID가 있는 로그에 대해 추적 상관 관계가 작동해야 하며, 보다 상세하고 일관된 속성을 볼 수 있어야 합니다.

일반적인 실수 & 조언

올바른 설정을 사용하면 Datadog의 JSON 로깅이 안정적이고 유지 관리가 훨씬 쉬워집니다. 기존 가정을 제거하고 구성을 단순하게 유지하면 구조화된 로그, 일관된 필드, 추적 상관관계, 더 쉬운 필터링 및 알림을 얻을 수 있습니다. JSON 로깅은 모범 사례일 뿐만 아니라 최신 애플리케이션에서 통합 가시성을 개선하는 데 필수적입니다.

저자 소개

체이스 홀랜더
Arbory Digital의 AEM 개발자

애자일 인증 전문가, 개발자 및 컨설턴트로서 AEM에 대한 경험이 있습니다.

링크드인에서 체이스에게 문의하기

들으신 내용이 마음에 드시나요? 어떤 것이 적합한지 궁금한 점이 있으신가요? 상담하고 싶어요! 문의하기

관련 기사

category
AEM Technical Help
tags
number of rows
1