Kubernetes 모니터링 에이전트 사용자 정의

IBM Cloud Monitoring에서는 모니터링 에이전트 구성을 사용자 정의하여 로그 레벨 설정, 포트 차단, 메트릭 데이터 포함/제외, 이벤트 추가/제거 및 필터링으로 컨테이너 걸러내기를 수행할 수 있습니다.

Kubernetes 모니터링 에이전트를 사용자 정의하려면 sysdig-agent-configmap.yaml 파일을 구성해야 합니다.

구성 파일의 수정에 사용할 수 있는 두 가지 방법이 있습니다.

  • 방법 1: 에이전트가 실행되는 클러스터에서 직접 파일을 수정합니다.
  • 방법 2: 로컬로 파일을 수정하고 변경사항을 클러스터에 적용합니다.

kubectl edit를 사용하여 Kubernetes 모니터링 에이전트 구성 편집

Kubernetes 모니터링 에이전트 구성을 편집하려면 다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    

    변경을 수행하십시오. 참고: 변경하는 방법을 알아보려면 vi 편집기 지시사항을 참조하십시오.

    변경사항을 저장하십시오. 변경사항이 자동으로 적용됩니다.

kubectl apply를 사용하여 Kubernetes 모니터링 에이전트 구성 편집

소스 제어 시스템에서 저장 및 관리되는 구성 yaml 파일이 있는 경우에는 이 방법을 사용하십시오.

Kubernetes 모니터링 에이전트 구성을 편집하려면 다음 단계를 완료하십시오.

  1. 소스 제어기에서 각 파일의 최신 사본을 가져오십시오.

    클러스터에 배치된 구성으로 로컬 파일을 작성하기 위해 다음 명령을 실행할 수도 있습니다.

    kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml
    
  2. 구성을 편집하십시오.

  3. 다음 명령을 사용하여 변경사항을 적용하십시오.

    kubectl apply -f sysdig-agent-configmap.yaml
    

실행 에이전트는 Kubernetes가 클러스터의 모든 노드에서 변경사항을 푸시한 이후 새 구성을 자동으로 선정합니다.

Kubernetes 모니터링 에이전트에서 수집된 데이터에 태그 추가

이미 배치한 Kubernetes 모니터링 에이전트 구성에 태그를 더 추가하려면 다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. 참고: 변경하는 방법을 알아보려면 vi 편집기 지시사항을 참조하십시오.

    apiVersion: v1
      data:
        dragent.yaml:
            k8s_cluster_name: mycluster
            collector: ingest.us-south.monitoring.cloud.ibm.com
            collector_port: 6443
            ssl: true
            sysdig_capture_enabled: false
            new_k8s: true
            tags: department:finance,region:us-south
      ...
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

제공된 샘플의 경우 agent.tag.departmentagent.tag.region 태그를 얻게 됩니다. 이를 사용하여 경보를 정의하고 범위 등을 사용자 정의할 수 있습니다.

Kubernetes 이벤트 세트 수집

Monitoring 는 Kubernetes와의 이벤트 통합을 지원합니다. Monitoring 에이전트는 이러한 서비스를 자동으로 검색하고 해당 서비스에서 이벤트 데이터를 수집합니다. 사용자는 에이전트 구성 파일을 편집하여 기본 작동을 변경하고 이벤트 데이터를 포함 또는 제외할 수 있습니다.

기본적으로는 한정된 세트의 이벤트만 수집됩니다. 기본적으로 수집되는 이벤트에 대한 자세한 내용은 이벤트 유형을 참조하세요.

이벤트를 추가 또는 제거하려면 sysdig-agent-configmap.yaml 파일을 사용자 정의하여 포함할 이벤트와 필터링하여 걸러낼 이벤트를 지정해야 합니다. 참고: sysdig-agent-configmap.yaml에 있는 섹션의 항목은 기본 구성의 전체 섹션을 대체합니다.

Kubernetes 팟(Pod)에서 이벤트를 필터링하려면 다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. events 섹션을 추가하거나 해당 섹션을 업데이트하십시오.

    참고: 변경하는 방법을 알아보려면 vi 편집기 지시사항을 참조하십시오.

    예를 들어, Kubernetes 팟(Pod) 풀링 이벤트는 수집하지만 기본적으로 수집되는 기타 팟(Pod) 이벤트는 필터링하여 걸러내고자 할 수 있습니다. replicationController 및 노드에 대한 기본 Kubernetes 이벤트는 여전히 수집하고자 합니다.

    events:
      kubernetes:
        pod:
          - Pulling
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

Kubernetes 이벤트의 서브세트를 수집하는 방법을 볼 수 있는 다른 예제: 팟(Pod)에 대해 풀링 중, 풀링된 및 실패한 이벤트만 모니터하고자 합니다.

  • 옵션 1: 글머리 기호 목록으로 항목의 시퀀스 정의:

    events:
      kubernetes:
        pod:
          - Pulling
          - Pulled
          - Failed
    
  • 옵션 2: 대괄호로 묶인 단일 행에 항목의 시퀀스 정의:

    events:
      kubernetes:
        pod: [Pulling, Pulled, Failed]
    

사용자 정의 이벤트에 대해 작업하는 방법에 대한 자세한 정보는 사용자 정의 이벤트를 참조하십시오.

이벤트 수집 사용 안함

모니터링 에이전트가 Kubernetes 이벤트를 수집하지 않도록 하려면 sysdig-agent-configmap.yaml 파일을 수정해야 합니다. events 섹션의 Kubernetes 항목을 none으로 설정하십시오.

다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. events 섹션을 추가하거나 해당 섹션을 업데이트하십시오.

    events:
      kubernetes: none
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

메트릭 포함 및 제외

사용자 정의 메트릭을 필터링하려면 sysdig-agent-configmap.yaml 파일의 metrics_filter 섹션을 사용자 정의해야 합니다. includeexclude 필터링 매개변수를 구성하여 포함할 메트릭과 필터링하여 제외할 메트릭을 지정할 수 있습니다.

필터링 규칙 순서의 설정: 메트릭과 일치하는 첫 번째 규칙이 적용됩니다. 해당 메트릭에 대한 후속 규칙은 무시됩니다.

다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. metrics_filter 섹션을 추가하거나 해당 섹션을 업데이트하십시오.

    예를 들어, 모니터링 에이전트의 metrics_filter 섹션이 다음과 같은 경우:

    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
      - include: haproxy.backend.*
      - exclude: haproxy.*
      - exclude: metricC.*
    
    • metricA, metricBhaproxy.backend로 시작하는 메트릭에서 모든 데이터를 수집하도록 모니터링 에이전트가 구성됩니다.

    • metricC로 시작하는 메트릭과 haproxy로 시작하는 기타 메트릭은 필터링하여 걸러냅니다.

    • exclude: metricA.* 항목은 무시합니다.

  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

데이터가 수집되는 kubernetes 오브젝트 및 컨테이너 필터링

Kubernetes 모니터링 에이전트는 Prometheus, StatsD, JMX, app-check 및 기본 제공 메트릭을 포함하여 클러스터에서 발견된 모든 컨테이너에서 자동으로 메트릭을 수집합니다.

메트릭 수집에서 컨테이너를 제외하도록 모니터링 에이전트를 사용자 정의할 수 있습니다.

컨테이너를 제외할 때는 다음 정보를 고려하십시오.

  • 에이전트 및 백엔드 로드를 경감합니다.
  • 모니터하고자 하는 컨테이너의 데이터만 수집합니다.
  • 중요한 컨테이너에 대해서는 보고하고 불필요한 또는 중요치 않은 컨테이너는 필터링하여 걸러내어 비용을 통제할 수 있습니다.

모니터링 에이전트가 컨테이너를 필터링하는 기능을 사용으로 설정하려면 sysdig-agent-configmap.yaml 파일을 사용자 정의해야 합니다. containers 섹션의 use_container_filter 항목을 true로 설정하십시오. 참고: 기본적으로 이 기능은 꺼져 있습니다. 그 다음에는 하나 이상의 조건이 포함되며 적용하고자 하는 규칙을 정의하십시오.

다음 표에는 클러스터에서 필터링 규칙의 설정을 위해 정의할 수 있는 매개변수가 간략하게 설명되어 있습니다.

컨테이너의 조건을 정의하는 매개변수
매개변수 조건
container.image 컨테이너 이미지 이름
container.name 컨테이너 이름
container.label.* 컨테이너 레이블
kubernetes.object.* Kubernetes 오브젝트. 오브젝트는 팟(Pod), 네임스페이스 등일 수 있습니다.
kubernetes.object.annotation.* Kubernetes 오브젝트 어노테이션
kubernetes.object.label.* Kubernetes 오브젝트 레이블
all 모든 오브젝트를 지정하기 위한 기본 규칙

모니터링 에이전트가 container_filter 섹션에 정의된 규칙을 적용하는 방법에 대해 다음 정보를 고려하십시오.

  • includeexclude 필터링 매개변수로 구성하여 조건을 정의합니다.
  • 목록의 첫 번째 일치 규칙은 컨테이너의 포함 또는 제외 여부를 판별합니다.
  • 조건은 키 이름 및 값으로 구성됩니다. 컨테이너에 대한 해당 키가 값과 일치하면 규칙이 적용됩니다.
  • 규칙에 여러 조건이 포함되어 있으면 적용되는 규칙에 대해 all the conditions이 일치해야 합니다.

모니터링 에이전트가 클러스터에서 모니터하는 컨테이너를 필터링하여 걸러내려면 다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. use_container_filter 항목과 container_filter 섹션을 추가하거나 기존 항목을 업데이트하십시오.

    예를 들어, 구성 맵의 다음 추출을 참조하십시오.

    # Enable the feature
    use_container_filter: true
    #
    # Include or exclude conditions
    container_filter:
      - include:
            container.image: appdomain/my-app-image
      - include:
            container.name: my-java-app
      - exclude:
            kubernetes.namespace.name: kube-system
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

포트 차단

네트워크 포트에서 네트워크 트래픽 및 메트릭을 차단하려면 sysdig-agent-configmap.yaml 파일의 blacklisted_ports 섹션을 사용자 정의해야 합니다. 사용자는 해당 데이터를 필터링하여 걸러내고자 하는 포트를 나열해야 합니다.

포트 53(DNS)은 항상 차단 목록 내에 있으며 blacklisted_ports에 지정될 필요가 없습니다.

다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. metrics_filter 섹션을 추가하거나 해당 섹션을 업데이트하십시오.

    예를 들어, 다음 샘플은 포트 6666 및 6379에서 유입되는 데이터를 제외하도록 모니터링 에이전트의 blacklisted_ports 섹션을 설정하는 방법을 보여줍니다.

    blacklisted_ports:
      - 6666
      - 6379
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

로그 구성 변경

로그 구성을 구성하려면 sysdig-agent-configmap.yaml 파일의 log 섹션을 사용자 정의해야 합니다.

모니터링 에이전트는 /opt/draios/logs/draios.log에 로그 항목을 생성합니다.

  • 로그 파일은 10MB 크기에 도달하면 순환됩니다.
  • 10개의 최근 로그 파일이 보관됩니다. 파일 이름에 추가된 날짜 소인은 보관할 파일을 판별하는 데 사용됩니다.

다음 표에는 일부 공통 시나리오 및 이들 각각에서 사용자가 설정해야 하는 값이 나열되어 있습니다.

로그 섹션 항목
유스 케이스 로그 섹션 항목 기본값
에이전트 작동의 문제점 해결 file_priority: debug info
컨테이너 콘솔 출력 감소 console_priority: warning info
심각도별 이벤트 필터링 event_priority: warning information
포함 또는 제외되는 메트릭 확인 metrics_excess_log: true false

로그 레벨 변경

  • log 섹션의 file_priority/opt/draios/logs/draios.log 파일에 기록되는 로그 항목의 유형을 제어합니다.
  • log 섹션의 console_priority는 컨테이너화된 에이전트를 실행하는 경우 컨테이너 콘솔 출력에 기록되는 로그 항목의 유형을 제어합니다.
  • 기본 로그 레벨은 경고 및 오류에 대한 항목 외에, 백엔드 서버로의 각 집계 메트릭 전송에 대해 초당 한 번씩 로그 항목이 작성되는 정보입니다.
  • 유효한 로그 레벨은 없음, 오류, 경고, 정보, 디버그, 추적입니다.

심각도별 Kubernetes 이벤트 필터링

  • log 섹션의 event_priority는 에이전트에 전송되는 이벤트의 유형을 제어합니다.
  • 기본 로그 레벨은 정보입니다. 이는 정보 이상의 심각도 이벤트만 전송됨을 의미합니다.
  • 유효한 레벨은 긴급, 경보, 심각, 오류, 경고, 알림, 정보, 디버그없음입니다. 참고: 값은 높은 우선순위에서 낮은 우선순위 순으로 나열되어 있습니다.
  • 이 레벨을 none으로 설정하면 모든 이벤트 콜렉션이 차단됩니다.

포함 또는 제외되는 메트릭을 파일에 로깅

  • log 섹션에서 metrics_excess_logtrue로 설정하면 포함되거나 제거된 사용자 정의 메트릭의 로깅이 사용으로 설정됩니다.

  • 메트릭 로깅은 기본적으로 사용 안함으로 설정되어 있습니다.

  • 로깅은 30초마다 정보 레벨에서 발생하며 10초간 지속됩니다.

  • 에이전트에 의해 기록되는 메트릭의 위치를 지정하려면 metricsfile 설정이 필요합니다. metricsfile.location 값은 /opt/draios 디렉토리 내의 상대 경로입니다. 참고: metricsfile 항목은 log와 동일한 레벨에서 지정됩니다(yaml 내의 하위가 아님).

  • 로깅 데이터의 형식은 다음과 같습니다.

    +/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])
    
    • +/-는 메트릭의 포함 또는 제외 여부를 표시하는 기호입니다. 더하기(+)는 메트릭이 포함됨을 표시합니다. 빼기(-)는 메트릭이 제외됨을 표시합니다.

    • [유형은] 메트릭 유형을 지정합니다(예: statsd).

    • [메트릭 포함/제외는] 사람이 읽을 수 있는 방식으로 메트릭이 포함되는지 제외되는지를 나타냅니다.

    • metric.name은 메트릭 이름을 표시합니다.

    • (필터: +/-metric[metric.filter])는 sysdig-agent-configmap.yaml 파일의 metrics_filter 섹션에 정의된 모든 필터에 대한 정보를 제공합니다.

샘플 로그 항목은 다음과 같습니다.

-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])

로그 설정을 구성하려면 다음 단계를 완료하십시오.

  1. 클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.

    우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.

    ibmcloud ks cluster config --cluster <cluster_name_or_ID>
    
  2. sysdig-agent-configmap.yaml 파일을 편집하십시오.

    다음 명령을 실행하십시오.

    kubectl edit configmap sysdig-agent -n ibm-observe
    
  3. 변경을 수행하십시오. 로그 섹션을 추가하거나 섹션을 업데이트하고 이전 설명에 따라 수정할 구성을 포함하십시오.

    예를 들어, 다음과 같습니다.

    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
    
  4. 변경사항을 저장하십시오.

변경사항이 자동으로 적용됩니다.

샘플 configmap yaml 파일

apiVersion: v1
data:
  dragent.yaml: |
    ### Agent tags
    # tags: linux:ubuntu,dept:dev,local:nyc

    ####
    # collector address
    # collector: 192.168.1.1
    # Collector TCP port
    # collector_port: 6666
    # Whether collector accepts ssl
    # ssl: true
    # collector certificate validation
    # ssl_verify_certificate: true
    #######################################
    #
    k8s_cluster_name: cluster12
    collector: ingest.us-south.monitoring.cloud.ibm.com
    collector_port: 6443
    ssl: true
    ssl_verify_certificate: true
    sysdig_capture_enabled: false
    new_k8s: true
    tags: type:mycluster,region:us-south
    blacklisted_ports:
      - 6666
      - 6379
    events:
      kubernetes:
        node:
          - Rebooted
    metrics_filter:
      - include: metricA.*
      - exclude: metricA.*
      - include: metricB.*
    use_container_filter: true
    container_filter:
      - exclude:
        kubernetes.namespace.name: kube-system
    log:
      file_priority: warning
      console_priority: info
      event_priority: warning
      metrics_excess_log: true
    metricsfile: { location : metrics }
kind: ConfigMap
metadata:
  annotations:
...