상담원 구성 파일 이해하기

로깅 에이전트는 플루언트 비트 기반 구성 파일을 사용하여 들어오는 데이터가 라우팅되기 전에 처리되는 방식을 결정합니다.

상담원의 구성 파일을 구성할 때는 다음 정보를 고려하세요:

  • 스키마는 여러 섹션으로 나뉩니다.
  • 플루언트 비트 명령을 사용하여 구성 파일을 간소화하고 가독성을 높일 수 있습니다.
  • 셸 환경 변수를 설정하거나 @SET 명령을 사용하여 구성 변수를 노출할 수 있습니다.

섹션

플루언트 비트 구성의 스키마는 여러 섹션으로 나뉩니다.

  • 섹션은 괄호 안의 이름으로 정의됩니다.
  • 구성할 수 있는 섹션에는 네 가지 유형이 있습니다: Service, Input, FilterOutput 입니다.
  • 섹션에는 1개 이상의 항목이 포함될 수 있습니다.
  • 항목은 키와 값이 포함된 텍스트 한 줄로 정의됩니다. 키는 들여쓰기를 해야 하며 줄 바꿈으로 끝나는 값을 포함해야 합니다. 네 칸 들여쓰기를 사용하는 것이 좋습니다.

다음 다이어그램은 섹션이 적용되는 순서를 보여줍니다:

섹션의 유창한 비트 처리 순서
섹션의 유창한 비트 처리 순서

서비스 섹션

SERVICE 섹션을 구성하여 서비스의 전역 속성을 정의할 수 있습니다.

다음 표에는 SERVICE 섹션에서 정의할 수 있는 몇 가지 키가 나와 있습니다:

서비스 정보
설명 기본값
flush 입력 플러그인에서 수집한 기록을 출력 플러그인을 통해 플러시하려면 seconds.nanoseconds로 시간을 설정합니다. 5
log_file 다른 로그 파일의 절대 경로입니다. 기본적으로 로그는 표준 오류 인터페이스(stderr)로 리디렉션됩니다.
log_level 로깅 상세도 수준을 설정합니다. 유효한 값은 다음과 같습니다: off, error, warn, info, debugtrace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning, infodebug 이 포함됩니다. info
parsers_file 구문 분석기 구성 파일의 경로입니다. 한 섹션 내에 여러 Parsers_File 항목을 정의할 수 있습니다.

지원되는 추가 키에 대한 자세한 내용은 서비스 섹션 속성를 참조하세요.

예를 들어 서비스 섹션의 샘플은 다음과 같습니다:

[SERVICE]
      Flush                   1
      Log_Level               info
      Daemon                  off
      Parsers_File            parsers.conf
      plug-ins_File           plug-ins.conf
      HTTP_Server             On
      HTTP_Listen             0.0.0.0
      HTTP_Port               8081
      Health_Check            On
      HC_Errors_Count         1
      HC_Retry_Failure_Count  1
      HC_Period               30
      storage.path            /fluent-bit/cache
      storage.max_chunks_up   192
      storage.metrics         On

입력 섹션

INPUT 섹션을 구성하여 플루언트 비트가 데이터를 수집할 수 있는 소스를 정의할 수 있습니다.

다음 표에는 INPUT 섹션에 대해 구성할 수 있는 키가 간략하게 설명되어 있습니다:

입력 키
설명 상태
Name 입력 플러그인의 이름입니다. 플루언트 비트에서 어떤 입력 플러그인을 로드할지 결정합니다. 필수
Tag 이 플러그인에서 오는 모든 레코드에 연결된 태그입니다. 동적 태그를 제공하는 입력 전달 플러그인을 제외한 모든 플러그인에 필요합니다.
Log_Level 로깅 상세도 수준을 설정합니다. 유효한 값은 다음과 같습니다: off, error, warn, info, debugtrace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning, infodebug 이 포함됩니다. 설정하지 않으면 기본값은 SERVICE 섹션의 Log_Level 값으로 설정됩니다. 선택사항
Path 로그 기록을 읽을 위치를 설정합니다.

Kubernetes 의 로그에 관해서는, 기본적으로 IBM Cloud Logs 로깅 에이전트 는 /var/log/containers/*.log 디렉토리에서만 로그를 수집합니다. /var/log 의 모든 하위 디렉토리에서 로그를 수집하려면 Path 매개변수에 /var/log/**/*.log 를 추가해야 합니다.

선택사항

INPUT 플러그인에 대한 자세한 내용은 입력 플러그인를 참조하세요.

INPUT 플러그인에는 표에 설명된 구성 키 외에도 고유한 구성 키가 있습니다.

예를 들어 INPUT 섹션의 샘플은 다음과 같습니다:

[INPUT]
    # Comment
    Name tail
    Tag  kube.*
    log_level info

필터 섹션

FILTER 섹션을 구성하여 FILTER 플러그인과 관련된 데이터를 대상에 보내기 전에 변환할 수 있습니다.

다음 표에는 FILTER 섹션에 대해 구성할 수 있는 키가 간략하게 설명되어 있습니다:

필터 키
설명 상태
Name 필터 플러그인의 이름입니다. 플루언트 비트에서 어떤 필터 플러그인을 로드할지 결정합니다. 필수
Match 들어오는 레코드에 정의된 태그와 일치하는 데 사용되는 패턴입니다. Match 은 대소문자를 구분합니다. 별표 문자 * 를 와일드카드로 사용할 수 있습니다. 필수 [*]
Match_Regex 들어오는 레코드에 정의된 태그와 일치시키는 데 사용되는 정규식입니다. 전체 정규식 구문을 사용하려면 이 옵션을 사용합니다. 필수 [*]
Log_Level 로깅 상세도 수준을 설정합니다. 유효한 값은 다음과 같습니다: off, error, warn, info, debugtrace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning, infodebug 이 포함됩니다. 설정하지 않으면 기본값은 SERVICE 섹션의 Log_Level 값으로 설정됩니다. 선택사항

[*] Match 키, Match_Regex 키 또는 둘 다를 구성할 수 있습니다. 항상 하나를 구성해야 합니다. 둘 다 구성하는 경우 Match_Regex 가 우선합니다.

예를 들어, 필터 섹션의 샘플은 다음과 같습니다:

[FILTER]
    Name  kubernetes
    Match kube.*
    log_level info

출력 섹션

OUTPUT 섹션을 구성하여 태그 일치 후 플루언트 비트가 데이터를 전송할 대상을 정의할 수 있습니다.

플루언트 비트는 최대 256개의 OUTPUT 플러그인을 라우팅할 수 있습니다.

다음 표에는 출력 섹션에 대해 구성할 수 있는 키가 간략하게 설명되어 있습니다:

출력 키
설명 상태
Name 출력 플러그인의 이름입니다. 플루언트 비트가 로드할 출력 플러그인을 결정합니다. 필수
Match 들어오는 레코드에 정의된 태그와 일치하는 데 사용되는 패턴입니다. Match 은 대소문자를 구분합니다. 별표 문자 * 를 와일드카드로 사용할 수 있습니다. 필수 [*]
Match_Regex 들어오는 레코드에 정의된 태그와 일치시키는 데 사용되는 정규식입니다. 전체 정규식 구문을 사용하려면 이 옵션을 사용합니다. 필수 [*]
Log_Level 로깅 상세도 수준을 설정합니다. 유효한 값은 다음과 같습니다: off, error, warn, info, debugtrace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning, infodebug 이 포함됩니다. 설정하지 않으면 기본값은 SERVICE 섹션의 Log_Level 값으로 설정됩니다. 선택사항

[*] Match 키, Match_Regex 키 또는 둘 다를 구성할 수 있습니다. 항상 하나를 구성해야 합니다. 둘 다 구성하는 경우 Match_Regex 가 우선합니다.

예를 들어 logger-icl-output-plugin 의 OUTPUT 섹션은 다음과 유사합니다:

    [OUTPUT]
        Name logger-icl-output-plugin
        Id icl-output-plugin
        Match *
        Retry_Limit 8

        # Connection
        Target_Host REPLACE_INGESTER_HOST
        Target_Port REPLACE_INGESTER_PORT
        Target_Path /logs/v1/singles

        # Authentication
        Authentication_Mode REPLACE_IAM_AUTH_MODE
        IAM_Environment REPLACE_IAM_ENVIRONMENT
        REPLACE_TRUSTED_PROFILE_ID
        CR_Token_Mount_Path /var/run/secrets/tokens/vault-token

        # Logging
        Logging_Level info

        # Buffer storage
        storage.total_limit_size 5G

logger-icl-output-plugin 은 플루언트 비트에 내장된 상태 확인 기능을 사용합니다. 플러그인에서 오류를 한 번 이상 발생하거나 30초 동안 재시도 제한이 모두 소진되면 파드는 비정상적인 것으로 간주됩니다.

변수

플루언트 비트에서는 환경 변수를 사용하여 플루언트 비트 구성 파일에 정의된 키의 값을 설정할 수 있습니다.

변수는 대소문자를 구분합니다.

변수를 표현하려면 다음 형식을 사용합니다:

${MY_VARIABLE}

환경 변수를 정의하려면 bash 구문을 사용하면 됩니다.

환경 변수를 정의하려면 다음 옵션 중 하나를 선택할 수 있습니다:

  • 터미널을 열고 내보내기 명령을 사용하여 환경 변수를 설정합니다.

    예를 들어 다음과 같이 정의할 수 있습니다: $ export MY_VARIABLE=stdout.

    플루언트 비트가 시작되면 구성 리더가 MY_VARIABLE 이라는 이름의 환경 변수를 찾습니다.

  • 공식 패키지를 사용하여 시스템드에서 플루언트 비트를 실행하는 경우 다음 파일 중 하나에서 환경 변수를 설정하세요: /etc/default/fluent-bit (Debian 기반 시스템) 또는 /etc/sysconfig/fluent-bit (기타 시스템).

예를 들어 터미널을 열고 환경 변수를 설정합니다: $ export MY_OUTPUT=stderr 그런 다음 다음 구성 파일을 만듭니다:

[INPUT]
    Name              tail
    Tag               kube.*

[OUTPUT]
    Name  ${MY_OUTPUT}
    Match kube.*

환경 변수 ${MY_OUTPUT} 로 설정하도록 정의된 키 이름은 stderr로 설정됩니다.

명령

플루언트 비트 명령을 사용하여 구성 파일을 간소화하고 가독성을 높일 수 있습니다.

다음 표에는 사용할 수 있는 명령이 간략하게 나와 있습니다:

지원되는 명령
명령 설명
@INCLUDE 구성 파일을 포함합니다. @INCLUDE <FILE>
@SET 구성 변수를 설정합니다. @SET KEY=VAL

INCLUDE 명령

복잡하고 긴 구성 파일을 피하려면 @INCLUDE 명령을 사용하여 기본 플루언트 비트 구성 파일을 여러 파일로 분할할 수 있습니다. @INCLUDE 명령을 사용하면 외부 파일을 포함할 수 있습니다.

다음 형식을 준수하는 항목을 추가하여 구성 파일을 추가로 포함할 수 있습니다:

@INCLUDE <FILE>

@INCLUDE 명령을 사용할 때는 다음 정보를 고려하세요:

  • 구성 줄의 왼쪽 상단에서 @INCLUDE 명령을 사용할 수 있습니다.
  • 섹션 안에 @INCLUDE 명령을 포함할 수 없습니다.
  • 와일드카드 문자(*)를 사용하여 여러 파일을 포함할 수 있습니다. 예를 들어 다음을 사용할 수 있습니다: @INCLUDE input_*.conf.
  • 와일드카드(*)를 사용하여 여러 파일을 포함하는 경우 와일드카드 문자와 일치하는 파일은 정렬되지 않은 상태로 포함됩니다. 파일 간의 순서를 유지해야 하는 경우 파일을 원하는 순서대로 명시적으로 포함시켜야 합니다.
  • 정의하는 모든 경로는 루트 구성 파일에서 상대 경로로 읽습니다.

예를 들면 다음과 같습니다.

@INCLUDE somefile.conf

SET 명령

@SET 명령을 사용하여 구성 변수를 플루언트 비트 구성에 삽입할 수 있습니다.

  • 각 줄의 루트 수준에서 @SET 명령을 사용할 수 있습니다.
  • 섹션 내에서는 @SET 명령을 사용할 수 없습니다.

예를 들어 다음 변수를 설정하고 이를 사용하여 다양한 키를 구성할 수 있습니다:

@SET my_input=abc
@SET my_output=def

[SERVICE]
    Flush 1

[INPUT]
    Name ${my_input}

[OUTPUT]
    Name ${my_output}