Trident 모니터링
Trident는 Trident 성능을 모니터링하는 데 사용할 수 있는 Prometheus 메트릭 엔드포인트 세트를 제공합니다.
개요
Trident에서 제공하는 메트릭을 통해 다음과 같은 작업을 수행할 수 있습니다.
-
Trident의 상태와 구성을 추적합니다. 작업이 얼마나 성공적인지, 그리고 예상대로 백엔드와 통신할 수 있는지 확인할 수 있습니다.
-
백엔드 사용 정보를 분석하여 백엔드에 프로비저닝된 볼륨 수와 사용된 공간의 양 등을 파악합니다.
-
사용 가능한 백엔드에 프로비저닝된 볼륨 수에 대한 매핑을 유지 관리합니다.
-
성능을 추적하세요. Trident가 백엔드와 통신하고 작업을 수행하는 데 걸리는 시간을 확인할 수 있습니다.
|
|
기본적으로 Trident의 메트릭은 대상 포트 8001`의 `/metrics 엔드포인트에 노출됩니다. 이러한 메트릭은 Trident 설치 시 *기본적으로 활성화*됩니다. 포트 `8444`에서 HTTPS를 통해 Trident 메트릭을 사용하도록 구성할 수도 있습니다.
|
-
Trident가 설치된 Kubernetes 클러스터.
-
Prometheus 인스턴스. 이것은 "컨테이너화된 Prometheus 배포"일 수 있으며, Prometheus를 "네이티브 애플리케이션"로 실행하도록 선택할 수도 있습니다.
1단계: Prometheus 타겟 정의
Trident가 관리하는 백엔드, 생성하는 볼륨 등에 대한 메트릭과 정보를 수집하려면 Prometheus 타겟을 정의해야 합니다. "Prometheus Operator 설명서"을 참조하십시오.
2단계: Prometheus ServiceMonitor 생성
Trident 메트릭을 사용하려면 trident-csi 서비스를 감시하고 metrics 포트에서 수신 대기하는 Prometheus ServiceMonitor를 생성해야 합니다. 샘플 ServiceMonitor는 다음과 같습니다.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: trident-sm
namespace: monitoring
labels:
release: prom-operator
spec:
jobLabel: trident
selector:
matchLabels:
app: controller.csi.trident.netapp.io
namespaceSelector:
matchNames:
- trident
endpoints:
- port: metrics
interval: 15s
이 ServiceMonitor 정의는 trident-csi 서비스에서 반환되는 메트릭을 검색하고 특히 서비스의 metrics 엔드포인트를 찾습니다. 결과적으로 이제 Prometheus는 Trident의 메트릭을 이해하도록 구성되었습니다.
Trident에서 직접 사용할 수 있는 메트릭 외에도 kubelet은 kubelet_volume_* 자체 메트릭 엔드포인트를 통해 다양한 메트릭을 제공합니다. Kubelet은 연결된 볼륨, Pod 및 처리하는 기타 내부 작업에 대한 정보를 제공할 수 있습니다. "여기"을 참조하십시오.
HTTPS를 통해 Trident 메트릭을 사용합니다
HTTPS(포트 8444)를 통해 Trident 메트릭을 사용하려면, ServiceMonitor 정의를 수정하여 TLS 구성을 포함해야 합니다. 또한 trident-csi 시크릿을 trident 네임스페이스에서 Prometheus가 실행 중인 네임스페이스로 복사해야 합니다. 다음 명령어를 사용하여 이 작업을 수행할 수 있습니다:
kubectl get secret trident-csi -n trident -o yaml | sed 's/namespace: trident/namespace: monitoring/' | kubectl apply -f -
HTTPS 메트릭을 위한 ServiceMonitor 샘플은 다음과 같습니다.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: trident-sm
namespace: monitoring
labels:
release: prom-operator
spec:
jobLabel: trident
selector:
matchLabels:
app: controller.csi.trident.netapp.io
namespaceSelector:
matchNames:
- trident
endpoints:
- interval: 15s
path: /metrics
port: https-metrics
scheme: https
tlsConfig:
ca:
secret:
key: caCert
name: trident-csi
cert:
secret:
key: clientCert
name: trident-csi
keySecret:
key: clientKey
name: trident-csi
serverName: trident-csi
Trident는 tridentctl, Helm 차트 및 Operator를 포함한 모든 설치 방법에서 HTTPS 메트릭을 지원합니다.
-
tridentctl install명령을 사용하는 경우--https-metrics플래그를 전달하여 HTTPS 메트릭을 활성화할 수 있습니다. -
Helm 차트를 사용하는 경우
httpsMetrics매개변수를 설정하여 HTTPS 메트릭을 활성화할 수 있습니다. -
YAML 파일을 사용하는 경우,
--https_metrics플래그를trident-main컨테이너에trident-deployment.yaml파일에서 추가할 수 있습니다.
3단계: PromQL을 사용하여 Trident 메트릭을 쿼리합니다
PromQL은 시계열 또는 표 형식 데이터를 반환하는 표현식을 생성하는 데 유용합니다.
다음은 사용할 수 있는 PromQL 쿼리입니다.
Trident 상태 정보를 확인하십시오
-
Trident의 HTTP 2XX 응답 비율
(sum (trident_rest_ops_seconds_total_count{status_code=~"2.."} OR on() vector(0)) / sum (trident_rest_ops_seconds_total_count)) * 100
-
상태 코드별 Trident의 REST 응답 비율
(sum (trident_rest_ops_seconds_total_count) by (status_code) / scalar (sum (trident_rest_ops_seconds_total_count))) * 100
-
Trident에서 수행한 작업의 평균 기간(ms)
sum by (operation) (trident_operation_duration_milliseconds_sum{success="true"}) / sum by (operation) (trident_operation_duration_milliseconds_count{success="true"})
Trident 사용 정보를 확인하세요
-
평균 볼륨 크기
trident_volume_allocated_bytes/trident_volume_count
-
각 백엔드에서 프로비저닝한 총 볼륨 공간
sum (trident_volume_allocated_bytes) by (backend_uuid)
개별 볼륨 사용량 확인
|
|
이 기능은 kubelet 메트릭도 수집되는 경우에만 활성화됩니다. |
-
각 볼륨의 사용된 공간 비율
kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes * 100
Trident AutoSupport 원격 측정에 대해 알아보세요
기본적으로 Trident는 Prometheus 메트릭과 기본 백엔드 정보를 매일 NetApp으로 전송합니다.
-
Trident가 Prometheus 메트릭 및 기본 백엔드 정보를 NetApp으로 전송하지 못하도록 하려면 Trident 설치 중에
--silence-autosupport플래그를 전달하십시오. -
Trident는 `tridentctl send autosupport`를 통해 필요에 따라 컨테이너 로그를 NetApp 지원팀에 전송할 수도 있습니다. Trident가 로그를 업로드하도록 트리거해야 합니다. 로그를 제출하기 전에 NetApp의https://www.netapp.com/company/legal/privacy-policy/["개인정보 보호정책"^]에 동의해야 합니다.
-
별도로 지정하지 않으면 Trident는 지난 24시간 동안의 로그를 가져옵니다.
-
--since플래그를 사용하여 로그 보존 기간을 지정할 수 있습니다. 예를 들면 다음과 같습니다tridentctl send autosupport --since=1h. 이 정보는 Trident와 함께 설치되는trident-autosupport컨테이너를 통해 수집되고 전송됩니다. 컨테이너 이미지는 "Trident AutoSupport"에서 얻을 수 있습니다. -
Trident AutoSupport는 개인 식별 정보(PII) 또는 개인 정보를 수집하거나 전송하지 않습니다. Trident 컨테이너 이미지 자체에는 적용되지 않는 "EULA"와 함께 제공됩니다. NetApp의 데이터 보안 및 신뢰에 대한 노력에 대해 자세히 알아볼 수 있습니다 "여기".
Trident에서 보낸 페이로드의 예는 다음과 같습니다.
---
items:
- backendUUID: ff3852e1-18a5-4df4-b2d3-f59f829627ed
protocol: file
config:
version: 1
storageDriverName: ontap-nas
debug: false
debugTraceFlags: null
disableDelete: false
serialNumbers:
- nwkvzfanek_SN
limitVolumeSize: ""
state: online
online: true
-
AutoSupport 메시지는 NetApp의 AutoSupport 엔드포인트로 전송됩니다. 컨테이너 이미지를 저장하는 데 개인 레지스트리를 사용하는 경우
--image-registry플래그를 사용할 수 있습니다. -
설치 YAML 파일을 생성하여 프록시 URL을 구성할 수도 있습니다. 이 작업은 YAML 파일을 생성하기 위해
tridentctl install --generate-custom-yaml`를 사용하고, `trident-autosupport컨테이너에--proxy-url인수를 `trident-deployment.yaml`에 추가하여 수행할 수 있습니다.
Trident 메트릭을 비활성화합니다
메트릭 보고를 비활성화하려면, 사용자 지정 YAML을 생성해야 합니다( --generate-custom-yaml 플래그 사용). 그런 다음 해당 파일을 편집하여 --metrics 플래그가 trident-main 컨테이너에서 호출되지 않도록 제거해야 합니다.