Kubernetes 모니터링 에이전트 사용자 정의
IBM Cloud Monitoring에서는 모니터링 에이전트 구성을 사용자 정의하여 로그 레벨 설정, 포트 차단, 메트릭 데이터 포함/제외, 이벤트 추가/제거 및 필터링으로 컨테이너 걸러내기를 수행할 수 있습니다.
Kubernetes 모니터링 에이전트를 사용자 정의하려면 sysdig-agent-configmap.yaml 파일을 구성해야 합니다.
구성 파일의 수정에 사용할 수 있는 두 가지 방법이 있습니다.
- 방법 1: 에이전트가 실행되는 클러스터에서 직접 파일을 수정합니다.
- 방법 2: 로컬로 파일을 수정하고 변경사항을 클러스터에 적용합니다.
kubectl edit를 사용하여 Kubernetes 모니터링 에이전트 구성 편집
Kubernetes 모니터링 에이전트 구성을 편집하려면 다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe변경을 수행하십시오. 참고: 변경하는 방법을 알아보려면
vi편집기 지시사항을 참조하십시오.변경사항을 저장하십시오. 변경사항이 자동으로 적용됩니다.
kubectl apply를 사용하여 Kubernetes 모니터링 에이전트 구성 편집
소스 제어 시스템에서 저장 및 관리되는 구성 yaml 파일이 있는 경우에는 이 방법을 사용하십시오.
Kubernetes 모니터링 에이전트 구성을 편집하려면 다음 단계를 완료하십시오.
-
소스 제어기에서 각 파일의 최신 사본을 가져오십시오.
클러스터에 배치된 구성으로 로컬 파일을 작성하기 위해 다음 명령을 실행할 수도 있습니다.
kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml -
구성을 편집하십시오.
-
다음 명령을 사용하여 변경사항을 적용하십시오.
kubectl apply -f sysdig-agent-configmap.yaml
실행 에이전트는 Kubernetes가 클러스터의 모든 노드에서 변경사항을 푸시한 이후 새 구성을 자동으로 선정합니다.
Kubernetes 이벤트 세트 수집
Monitoring 는 Kubernetes와의 이벤트 통합을 지원합니다. Monitoring 에이전트는 이러한 서비스를 자동으로 검색하고 해당 서비스에서 이벤트 데이터를 수집합니다. 사용자는 에이전트 구성 파일을 편집하여 기본 작동을 변경하고 이벤트 데이터를 포함 또는 제외할 수 있습니다.
기본적으로는 한정된 세트의 이벤트만 수집됩니다. 기본적으로 수집되는 이벤트에 대한 자세한 내용은 이벤트 유형을 참조하세요.
이벤트를 추가 또는 제거하려면 sysdig-agent-configmap.yaml 파일을 사용자 정의하여 포함할 이벤트와 필터링하여 걸러낼 이벤트를 지정해야 합니다. 참고: sysdig-agent-configmap.yaml에 있는 섹션의 항목은 기본 구성의 전체 섹션을 대체합니다.
Kubernetes 팟(Pod)에서 이벤트를 필터링하려면 다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. events 섹션을 추가하거나 해당 섹션을 업데이트하십시오.
참고: 변경하는 방법을 알아보려면
vi편집기 지시사항을 참조하십시오.예를 들어, Kubernetes 팟(Pod) 풀링 이벤트는 수집하지만 기본적으로 수집되는 기타 팟(Pod) 이벤트는 필터링하여 걸러내고자 할 수 있습니다. replicationController 및 노드에 대한 기본 Kubernetes 이벤트는 여전히 수집하고자 합니다.
events: kubernetes: pod: - Pulling -
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
Kubernetes 이벤트의 서브세트를 수집하는 방법을 볼 수 있는 다른 예제: 팟(Pod)에 대해 풀링 중, 풀링된 및 실패한 이벤트만 모니터하고자 합니다.
-
옵션 1: 글머리 기호 목록으로 항목의 시퀀스 정의:
events: kubernetes: pod: - Pulling - Pulled - Failed -
옵션 2: 대괄호로 묶인 단일 행에 항목의 시퀀스 정의:
events: kubernetes: pod: [Pulling, Pulled, Failed]
사용자 정의 이벤트에 대해 작업하는 방법에 대한 자세한 정보는 사용자 정의 이벤트를 참조하십시오.
이벤트 수집 사용 안함
모니터링 에이전트가 Kubernetes 이벤트를 수집하지 않도록 하려면 sysdig-agent-configmap.yaml 파일을 수정해야 합니다. events 섹션의 Kubernetes 항목을 none으로 설정하십시오.
다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. events 섹션을 추가하거나 해당 섹션을 업데이트하십시오.
events: kubernetes: none -
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
메트릭 포함 및 제외
사용자 정의 메트릭을 필터링하려면 sysdig-agent-configmap.yaml 파일의 metrics_filter 섹션을 사용자 정의해야 합니다. include 및 exclude 필터링 매개변수를 구성하여 포함할 메트릭과 필터링하여 제외할 메트릭을 지정할 수 있습니다.
필터링 규칙 순서의 설정: 메트릭과 일치하는 첫 번째 규칙이 적용됩니다. 해당 메트릭에 대한 후속 규칙은 무시됩니다.
다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. metrics_filter 섹션을 추가하거나 해당 섹션을 업데이트하십시오.
예를 들어, 모니터링 에이전트의 metrics_filter 섹션이 다음과 같은 경우:
metrics_filter: - include: metricA.* - exclude: metricA.* - include: metricB.* - include: haproxy.backend.* - exclude: haproxy.* - exclude: metricC.*-
metricA, metricB 및 haproxy.backend로 시작하는 메트릭에서 모든 데이터를 수집하도록 모니터링 에이전트가 구성됩니다.
-
metricC로 시작하는 메트릭과 haproxy로 시작하는 기타 메트릭은 필터링하여 걸러냅니다.
-
exclude: metricA.*항목은 무시합니다.
-
-
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
데이터가 수집되는 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 섹션에 정의된 규칙을 적용하는 방법에 대해 다음 정보를 고려하십시오.
- include 및 exclude 필터링 매개변수로 구성하여 조건을 정의합니다.
- 목록의 첫 번째 일치 규칙은 컨테이너의 포함 또는 제외 여부를 판별합니다.
- 조건은 키 이름 및 값으로 구성됩니다. 컨테이너에 대한 해당 키가 값과 일치하면 규칙이 적용됩니다.
- 규칙에 여러 조건이 포함되어 있으면 적용되는 규칙에 대해
all the conditions이 일치해야 합니다.
모니터링 에이전트가 클러스터에서 모니터하는 컨테이너를 필터링하여 걸러내려면 다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. 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 -
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
포트 차단
네트워크 포트에서 네트워크 트래픽 및 메트릭을 차단하려면 sysdig-agent-configmap.yaml 파일의 blacklisted_ports 섹션을 사용자 정의해야 합니다. 사용자는 해당 데이터를 필터링하여 걸러내고자 하는 포트를 나열해야 합니다.
포트 53(DNS)은 항상 차단 목록 내에 있으며 blacklisted_ports에 지정될 필요가 없습니다.
다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. metrics_filter 섹션을 추가하거나 해당 섹션을 업데이트하십시오.
예를 들어, 다음 샘플은 포트 6666 및 6379에서 유입되는 데이터를 제외하도록 모니터링 에이전트의 blacklisted_ports 섹션을 설정하는 방법을 보여줍니다.
blacklisted_ports: - 6666 - 6379 -
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
로그 구성 변경
로그 구성을 구성하려면 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_log를 true로 설정하면 포함되거나 제거된 사용자 정의 메트릭의 로깅이 사용으로 설정됩니다.
-
메트릭 로깅은 기본적으로 사용 안함으로 설정되어 있습니다.
-
로깅은 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*])
로그 설정을 구성하려면 다음 단계를 완료하십시오.
-
클러스터 환경을 설정하십시오. 다음 명령을 실행하십시오.
우선 환경 변수를 설정하는 명령을 가져오고 Kubernetes 구성 파일을 다운로드하십시오.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
sysdig-agent-configmap.yaml 파일을 편집하십시오.
다음 명령을 실행하십시오.
kubectl edit configmap sysdig-agent -n ibm-observe -
변경을 수행하십시오. 로그 섹션을 추가하거나 섹션을 업데이트하고 이전 설명에 따라 수정할 구성을 포함하십시오.
예를 들어, 다음과 같습니다.
log: file_priority: warning console_priority: info event_priority: warning metrics_excess_log: true metricsfile: { location : metrics } -
변경사항을 저장하십시오.
변경사항이 자동으로 적용됩니다.
샘플 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:
...