ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ClickHouse] Logger 설정하기
    Database/Clickhouse 2024. 6. 2. 07:21
    728x90
    반응형

     

    - 목차

     

    들어가며.

    ClickHouseLogger 설정을 통해 서버 동작과 관련된 다양한 정보를 효율적으로 관리할 수 있습니다.

    로깅 시스템을 활용하면 콘솔 출력, 파일 출력, 그리고 로그 파일의 위치 및 크기를 포함한 세부적인 설정을 사용자 환경에 맞게 조정할 수 있습니다.

    이러한 설정은 시스템 운영 중 발생하는 문제를 빠르게 파악하고, 로그 데이터를 체계적으로 관리하는 데 중요한 역할을 합니다.

     

    이 글에서는 ClickHouseConfig xml 파일을 통해서 정적으로 Logger 를 설정하는 방식에 대해서 다루어보도록 하겠습니다.

     

    Console 출력 설정하기.

    ClickHouseConsole 출력을 통해 실시간으로 서버 동작 상태를 확인할 수 있는 기능을 제공합니다.

    Console 출력은 특히 테스트 환경이나 디버깅 과정에서 유용하며, 서버 설정 파일(config.xml)의 <logger> 섹션에서 간단히 활성화할 수 있습니다.

     

     ClickHouse 24.9.3 Docker 이미지를 통해서 ClickHouse Docker Container 를 실행하여 실습을 진행하도록 하겠습니다.

    https://hub.docker.com/_/clickhouse

     

    clickhouse - Official Image | Docker Hub

    Docker Official Images are a curated set of Docker open source and drop-in solution repositories. Why Official Images? These images have clear documentation, promote best practices, and are designed for the most common use cases.

    hub.docker.com

     

     

    아래 설정은 logger.xml 파일에 작성하며,

    해당 파일은 반드시 /etc/clickhouse-server/config.d 디렉토리 하위에 위치해야 합니다

    이렇게 구성된 설정은 정적인 방식으로 서버가 시작될 때에 반영되게 됩니다.

     

    cat <<'EOF'> /tmp/logger.xml
    <clickhouse>
        <logger>
            <console>true</console>
            <console_level>trace</console_level>
        </logger>
    </clickhouse>
    EOF
    docker run -d --platform linux/amd64 \
    --name clickhouse-server \
    --mount type=bind,source=/tmp/logger.xml,target=/etc/clickhouse-server/config.d/logger.xml \
    clickhouse:24.9.3

     

    위 명령어들을 실행하게 되면, clickhouse-server 라는 이름의 Docker Container 가 실행됩니다.

    그리고 docker logs 명령어를 통해서 컨테이너의 로그를 확인할 수 있습니다.

     

    docker logs clickhouse-server --tail 5

     

     

    console 비활성화.

    아래의 logger.xml 내부에서 console 태그의 값을 false 로 비활성화시켜봅니다.

     

    cat <<'EOF'> /tmp/logger.xml
    <clickhouse>
        <logger>
            <console>false</console>
            <console_level>trace</console_level>
        </logger>
    </clickhouse>
    EOF
    docker run -d --platform linux/amd64 \
    --name clickhouse-server \
    --mount type=bind,source=/tmp/logger.xml,target=/etc/clickhouse-server/config.d/logger.xml \
    clickhouse:24.9.3

     

    아래의 이미지를 console 이 비활성화된 ClickHouse Container 의 로그 출력의 결과입니다.

    아래의 결과처럼 설정파일들의 처리 이외의 로그가 출력되지 않습니다.

     

     

     

    console_level 변경해보기.

    운영 환경에서는 지나치게 많은 로그가 출력되는 것을 방지하기 위해 console_level 을 적절히 설정하는 것이 중요합니다.

    ClickHouse 에서 로그 레벨 순서는 아래와 같습니다.

    trace → debug → information → warning → error → critical → fatal

     

     

    아래의 예시는 ClickHouse 의 console_level 을 warning 으로 설정하는 명령어들입니다.

    실제로 여러가지 테스트를 진행한 결과 console_level 의 설정이 제대로 동작하지 않았고,

    <level> 옵션을 통해서 Console 출력의 Logger Level 을 지정할 수 있었습니다.

    cat <<'EOF'> /tmp/logger.xml
    <clickhouse>
        <logger>
            <console>true</console>
            <console_level>warning</console_level>
            <level>warning</level>
        </logger>
    </clickhouse>
    EOF
    docker run -d --platform linux/amd64 \
    --name clickhouse-server \
    --mount type=bind,source=/tmp/logger.xml,target=/etc/clickhouse-server/config.d/logger.xml \
    clickhouse:24.9.3

     

    아래 이미지와 같이 Warning 이상의 Level 메시지들을 확인할 수 있습니다.

     

     

    File Log 출력 알아보기.

    ClickHouseConsole Logger 뿐만 아니라 File Logger 기능과 설정을 제공합니다.

    <log> 설정을 통해서 서버의 동작과 관련된 로그가 저장된 파일 위치를 지정합니다.

    <errorlog> 설정을 통해서 오류와 관련된 로그를 저장된 파일 위치를 지정할 수 있습니다.

    기본적으로 각 로그 파일의 위치는 /var/log/clickhouse-server 디렉토리 하위에 위치합니다.

     

     

     

    cat <<'EOF'> /tmp/logger.xml
    <clickhouse>
        <logger>
            <log>/var/log/clickhouse-server/clickhouse-server.log</log>
            <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>
            <level>information</level>
        </logger>
    </clickhouse>
    EOF
    docker run -d --platform linux/amd64 \
    --name clickhouse-server \
    --mount type=bind,source=/tmp/logger.xml,target=/etc/clickhouse-server/config.d/logger.xml \
    clickhouse:24.9.3

     

     

    일반적으로 clickhouse-server.log 파일<level> 에 지정된 Information 이상의 레벨 로그들을 모두 기록하게 됩니다.

    따라서 clickhouse-server.err.log 의 내용들을 포함하게 됩니다.

     

    반응형
Designed by Tistory.