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 미터링을 위한 쿼리 적용

  1. 다음 명령을 입력하여 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

1
ISO 8601 형식의 보고서 시작일입니다.
2
ISO 8601 형식의 보고서 종료일입니다.
3
CPU 사용량 보고서의 경우 knative-service-cpu-usage 또는 메모리 사용량 보고서의 경우 knative-service-memory-usage입니다.

6.6.4.1. 미터링 보고서 실행

  1. 다음 명령을 입력하여 보고서를 실행합니다.

    $ oc apply -f <report-name>.yml
  2. 그러면 다음 명령을 입력하여 보고서를 확인할 수 있습니다.

    $ 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