6.6. OpenShift Serverless에서 미터링 사용하기
미터링은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
클러스터 관리자는 미터링을 사용하여 OpenShift Serverless 클러스터에서 발생하는 상황을 분석할 수 있습니다.
OpenShift Container Platform의 미터링에 대한 자세한 내용은 미터링 정보를 참조하십시오.
미터링은 현재 IBM Z 및 IBM Power Systems에서 지원되지 않습니다.
6.6.1. 미터링 설치
OpenShift Container Platform에 미터링을 설치하는 방법에 대한 내용은 미터링 설치를 참조하십시오.
6.6.2. Knative Serving 미터링 데이터 소스
다음 ReportDataSources
는 OpenShift Container Platform 미터링에 Knative Serving을 사용하는 방법에 대한 예제입니다.
6.6.2.1. Knative Serving의 CPU 사용량에 대한 데이터 소스
이 데이터 소스에서는 보고 기간에 Knative 서비스당 사용된 누적 CPU 시간(초)을 제공합니다.
YAML 파일
apiVersion: metering.openshift.io/v1 kind: ReportDataSource metadata: name: knative-service-cpu-usage spec: prometheusMetricsImporter: query: > sum by(namespace, label_serving_knative_dev_service, label_serving_knative_dev_revision) ( label_replace(rate(container_cpu_usage_seconds_total{container!="POD",container!="",pod!=""}[1m]), "pod", "$1", "pod", "(.*)") * on(pod, namespace) group_left(label_serving_knative_dev_service, label_serving_knative_dev_revision) kube_pod_labels{label_serving_knative_dev_service!=""} )
6.6.2.2. Knative Serving의 메모리 사용량에 대한 데이터 소스
이 데이터 소스에서는 보고 기간에 Knative 서비스당 평균 메모리 사용량을 제공합니다.
YAML 파일
apiVersion: metering.openshift.io/v1 kind: ReportDataSource metadata: name: knative-service-memory-usage spec: prometheusMetricsImporter: query: > sum by(namespace, label_serving_knative_dev_service, label_serving_knative_dev_revision) ( label_replace(container_memory_usage_bytes{container!="POD", container!="",pod!=""}, "pod", "$1", "pod", "(.*)") * on(pod, namespace) group_left(label_serving_knative_dev_service, label_serving_knative_dev_revision) kube_pod_labels{label_serving_knative_dev_service!=""} )
6.6.2.3. Knative Serving 미터링 데이터 소스 적용
다음 명령을 사용하여 ReportDataSources
를 적용할 수 있습니다.
$ oc apply -f <datasource_name>.yaml
예
$ oc apply -f knative-service-memory-usage.yaml
6.6.3. Knative Serving 미터링 쿼리
다음 ReportQuery
리소스에서는 제공된 DataSources
예제를 참조합니다.
6.6.3.1. Knative Serving의 CPU 사용량 쿼리
YAML 파일
apiVersion: metering.openshift.io/v1 kind: ReportQuery metadata: name: knative-service-cpu-usage spec: inputs: - name: ReportingStart type: time - name: ReportingEnd type: time - default: knative-service-cpu-usage name: KnativeServiceCpuUsageDataSource type: ReportDataSource columns: - name: period_start type: timestamp unit: date - name: period_end type: timestamp unit: date - name: namespace type: varchar unit: kubernetes_namespace - name: service type: varchar - name: data_start type: timestamp unit: date - name: data_end type: timestamp unit: date - name: service_cpu_seconds type: double unit: cpu_core_seconds query: | SELECT timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart| prestoTimestamp |}' AS period_start, timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' AS period_end, labels['namespace'] as project, labels['label_serving_knative_dev_service'] as service, min("timestamp") as data_start, max("timestamp") as data_end, sum(amount * "timeprecision") AS service_cpu_seconds FROM {| dataSourceTableName .Report.Inputs.KnativeServiceCpuUsageDataSource |} WHERE "timestamp" >= timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prestoTimestamp |}' AND "timestamp" < timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' GROUP BY labels['namespace'],labels['label_serving_knative_dev_service']
6.6.3.2. Knative Serving의 메모리 사용량 쿼리
YAML 파일
apiVersion: metering.openshift.io/v1 kind: ReportQuery metadata: name: knative-service-memory-usage spec: inputs: - name: ReportingStart type: time - name: ReportingEnd type: time - default: knative-service-memory-usage name: KnativeServiceMemoryUsageDataSource type: ReportDataSource columns: - name: period_start type: timestamp unit: date - name: period_end type: timestamp unit: date - name: namespace type: varchar unit: kubernetes_namespace - name: service type: varchar - name: data_start type: timestamp unit: date - name: data_end type: timestamp unit: date - name: service_usage_memory_byte_seconds type: double unit: byte_seconds query: | SELECT timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart| prestoTimestamp |}' AS period_start, timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' AS period_end, labels['namespace'] as project, labels['label_serving_knative_dev_service'] as service, min("timestamp") as data_start, max("timestamp") as data_end, sum(amount * "timeprecision") AS service_usage_memory_byte_seconds FROM {| dataSourceTableName .Report.Inputs.KnativeServiceMemoryUsageDataSource |} WHERE "timestamp" >= timestamp '{| default .Report.ReportingStart .Report.Inputs.ReportingStart | prestoTimestamp |}' AND "timestamp" < timestamp '{| default .Report.ReportingEnd .Report.Inputs.ReportingEnd | prestoTimestamp |}' GROUP BY labels['namespace'],labels['label_serving_knative_dev_service']
6.6.3.3. Knative Serving 미터링을 위한 쿼리 적용
다음 명령을 입력하여
ReportQuery
를 적용합니다.$ oc apply -f <query-name>.yaml
명령 예
$ oc apply -f knative-service-memory-usage.yaml
6.6.4. Knative Serving에 대한 미터링 보고서
Report
리소스를 생성하여 Knative Serving에 대한 미터링 보고서를 실행할 수 있습니다. 보고서를 실행하기 전에 Report
리소스 내에서 입력 매개변수를 수정하여 보고 기간 시작일 및 종료일을 지정해야 합니다.
YAML 파일
apiVersion: metering.openshift.io/v1 kind: Report metadata: name: knative-service-cpu-usage spec: reportingStart: '2019-06-01T00:00:00Z' 1 reportingEnd: '2019-06-30T23:59:59Z' 2 query: knative-service-cpu-usage 3 runImmediately: true
6.6.4.1. 미터링 보고서 실행
다음 명령을 입력하여 보고서를 실행합니다.
$ oc apply -f <report-name>.yml
그러면 다음 명령을 입력하여 보고서를 확인할 수 있습니다.
$ oc get report
출력 예
NAME QUERY SCHEDULE RUNNING FAILED LAST REPORT TIME AGE knative-service-cpu-usage knative-service-cpu-usage Finished 2019-06-30T23:59:59Z 10h