applicationName 및 subsystemName 메타데이터 필드에 대한 사용자 지정 값을 설정하도록 상담원 구성하기

로깅 에이전트가 IBM Cloud Logs 서비스로 로그를 전송하도록 구성할 수 있습니다.

전송하는 로그에는 applicationNamesubsystemName 메타데이터 필드에 대한 값이 포함되어야 합니다.

기본적으로 로깅 에이전트를 구성하면 상담원이 이러한 필드에 대한 기본값을 설정합니다. 기본값을 대체할 사용자 지정 값을 직접 구성할 수 있습니다. 기본값에 대한 자세한 내용은 메타데이터 필드 를 참조하세요.

IBM Cloud Logs에서 applicationNamesubsystemName 메타데이터 필드를 사용하여 다음 기능 중 하나를 구성할 수 있습니다:

  • TCO 정책
  • 구문 분석 규칙
  • 데이터 사용량 보고서
  • 경보
  • 보기
  • 대시보드
  • 이벤트에서 메트릭으로
  • 로그 집계

IBM Cloud Logs에 대한 자세한 내용은 IBM Cloud Logs 문서 에서 확인할 수 있습니다.

사용자 지정 값을 설정하도록 상담원 구성하기

API 옵션을 지정하여 applicationNamesubsystemName 메타데이터 필드에 대한 사용자 지정 값을 사용하여 로깅 에이전트를 구성할 수 있습니다.

  • -a 을 사용하여 사용하려는 applicationName 를 지정합니다.

    기본적으로 applicationName 은 Red Hat OpenShift on IBM Cloud 또는 IBM Cloud Kubernetes Service 클러스터의 네임스페이스 이름 kubernetes.namespace_name 으로 기본 설정되어 있습니다.

    환경의 변수를 사용하여 사용자 지정 값을 설정할 수도 있습니다(예: '${POD_NAMESPACE}').

  • -s 을 사용하여 사용하려는 susbsystemName 를 지정합니다.

    기본적으로 subsystemName 은 Red Hat OpenShift on IBM Cloud 또는 IBM Cloud Kubernetes Service 클러스터에서 컨테이너 이름 kubernetes.container_name 으로 기본값이 지정되어 있습니다.

    환경의 변수를 사용할 수도 있습니다(예: '${POD_NAME}').

이러한 메타데이터 필드를 설정할 때 다음과 같은 옵션을 사용할 수 있습니다:

  • 값을 고정 문자열로 설정할 수 있습니다. 예를 들어 -s 'production' 을 사용할 수 있습니다.
  • 환경의 변수를 사용할 수 있습니다(예: -a '${POD_NAMESPACE}').
  • 고정 문자열을 환경의 변수와 결합할 수 있습니다(예: -a 'mycluster:${POD_NAME}').

applicatioName, subsystemName 또는 둘 다 설정할 수 있습니다. 값을 설정하지 않으면 기본값이 적용됩니다. applicationNamesubsystemName 메타데이터 필드에 설정된 기본값에 대한 자세한 내용은 메타데이터를 참조하세요.

예시: 동적 값 구성

applicationNamesubsystemName 메타데이터 필드에 대한 사용자 정의 동적 값으로 로깅 에이전트를 구성하려면 Kubernetes 클러스터에서 다음과 같이 에이전트를 배포할 수 있습니다:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a '${POD_NAMESPACE}'

예시: 고정 값과 동적 값을 결합한 값 구성하기

로깅 에이전트 메타데이터 필드에 대한 사용자 정의 값으로 applicationNamesubsystemName 를 구성하려면 Kubernetes 클러스터에서 다음과 같이 에이전트를 배포할 수 있습니다:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s '${POD_NAME}' -a 'mycluster-dallas:${POD_NAMESPACE}'

이 예에서는 클러스터의 이름이 문자열로 추가됩니다.

예제: 고정 값 구성

applicationNamesubsystemName 메타데이터 필드에 대한 사용자 정의 고정 값으로 로깅 에이전트를 구성하려면 Kubernetes 클러스터에서 다음과 같이 에이전트를 배포할 수 있습니다:

curl -sSL https://ibm.biz/logs-router-setup | bash -s --   -v 1.1.1   -m IAMAPIKey    -k xxxx   -t Kubernetes   -r eu-es   -p 3443 -s 'mysubsystem' -a 'myapp'

로그 줄에 따라 사용자 지정 값을 설정하도록 상담원 구성하기

로그 행에 따라 애플리케이션 및 하위 시스템 이름에 대한 값을 동적으로 추가할 수 있습니다.

다음 예는 JSON 형식의 메시지에 대한 사용자 정의 애플리케이션 이름을 추가하는 Kubernetes 클러스터에 대한 에이전트를 구성하는 방법을 보여 줍니다:

  1. 로그 행에 applicationName을 추가합니다.

    예를 들어 로그 줄은 다음과 같습니다: {"level":"info", "msg":"Test message", "applicationName":"my-application"}

  2. logger-agent-iks.yaml 파일에 JSON PARSER 플러그인을 추가하여 stingify JSON을 JSON 객체로 변환합니다. 자세한 내용은 JSON를 참조하세요.

    [PARSER]
        # Converts the original log source from a JSON map string to the internal binary representation.
        Name   json
        Format json
        # Time_Key: Set the time in your log entry to the log record time included with the log. If not set, Fluenti Bit uses its own time.
        Time_Key time
        Time_Format %d/%b/%Y:%H:%M:%S %z
        # Time_Keep: To keep all fields in the original log record
        Time_Keep On
    
  3. logger-agent-iks.yaml 파일에 PARSER 플러그인을 추가하여 로그에서 필드를 추출합니다. 자세한 내용은 파서를 참조하세요.

    기본적으로 구문 분석기 플러그인은 구문 분석된 필드만 출력에 유지합니다.

    [FILTER]
       # Name: Specify the name of the parser
       Name parser
       # Match: A pattern that is used to match against the tags that are defined on incoming records.
       Match *
       # Key_Name: Specify the field name in the log to be parsed.
       Key_Name message
       # Parser: Specify the parser name to interpret the field.
       Parser json
       # Reserve_Data: Set to keep all the fields
       Reserve_Data On
       # preserve_key: Set to keep the original key field.
       Preserve_Key On
    
  4. Nest 필터 플러그인을 사용하여 애플리케이션 이름을 추출합니다

    중첩 필터 플러그인을 사용하면 중첩된 데이터에 대해 또는 중첩된 데이터로 작업할 수 있습니다. 작동 모드는 다음과 같습니다: nest 레코드 집합을 가져와 맵에 넣는 경우와 lift 키별로 맵을 가져와 해당 레코드를 끌어올리는 경우입니다. 자세한 내용은 네스트를 참조하세요.

    applicationName는 최상위 레벨에 있어야 하므로 lift 작업을 사용해야 합니다.

    [FILTER] 이름 둥지 일치 * 리프트 작업 Nested_under 메시지 와일드카드 applicationName

이렇게 하면 위의 로그 행 예제에서 "applicationName"은 해당 특정 행에 대해 "my-application"이 됩니다.