상담원 구성 파일 이해하기
로깅 에이전트는 플루언트 비트 기반 구성 파일을 사용하여 들어오는 데이터가 라우팅되기 전에 처리되는 방식을 결정합니다.
상담원의 구성 파일을 구성할 때는 다음 정보를 고려하세요:
- 스키마는 여러 섹션으로 나뉩니다.
- 플루언트 비트 명령을 사용하여 구성 파일을 간소화하고 가독성을 높일 수 있습니다.
- 셸 환경 변수를 설정하거나 @SET 명령을 사용하여 구성 변수를 노출할 수 있습니다.
섹션
플루언트 비트 구성의 스키마는 여러 섹션으로 나뉩니다.
- 섹션은 괄호 안의 이름으로 정의됩니다.
- 구성할 수 있는 섹션에는 네 가지 유형이 있습니다:
Service,Input,Filter및Output입니다. - 섹션에는 1개 이상의 항목이 포함될 수 있습니다.
- 항목은 키와 값이 포함된 텍스트 한 줄로 정의됩니다. 키는 들여쓰기를 해야 하며 줄 바꿈으로 끝나는 값을 포함해야 합니다. 네 칸 들여쓰기를 사용하는 것이 좋습니다.
다음 다이어그램은 섹션이 적용되는 순서를 보여줍니다:
서비스 섹션
SERVICE 섹션을 구성하여 서비스의 전역 속성을 정의할 수 있습니다.
다음 표에는 SERVICE 섹션에서 정의할 수 있는 몇 가지 키가 나와 있습니다:
| 키 | 설명 | 기본값 |
|---|---|---|
flush |
입력 플러그인에서 수집한 기록을 출력 플러그인을 통해 플러시하려면 seconds.nanoseconds로 시간을 설정합니다. | 5 |
log_file |
다른 로그 파일의 절대 경로입니다. | 기본적으로 로그는 표준 오류 인터페이스(stderr)로 리디렉션됩니다. |
log_level |
로깅 상세도 수준을 설정합니다. 유효한 값은 다음과 같습니다: off, error, warn, info, debug 및 trace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning,
info 및 debug 이 포함됩니다. |
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, debug 및 trace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning,
info 및 debug 이 포함됩니다. 설정하지 않으면 기본값은 SERVICE 섹션의 Log_Level 값으로 설정됩니다. |
선택사항 |
Path |
로그 기록을 읽을 위치를 설정합니다.
Kubernetes 의 로그에 관해서는, 기본적으로 IBM Cloud Logs 로깅 에이전트 는 |
선택사항 |
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, debug 및 trace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning,
info 및 debug 이 포함됩니다. 설정하지 않으면 기본값은 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, debug 및 trace 입니다. 값이 누적된다는 점에 유의하세요. 예를 들어 debug 이 설정되어 있으면 error, warning,
info 및 debug 이 포함됩니다. 설정하지 않으면 기본값은 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}