22.5. OpenShift에서 Kafka 메트릭 및 대시보드 보기


AMQ Streams가 OpenShift Container Platform에 배포되면 사용자 정의 프로젝트 모니터링을 통해 메트릭이 제공됩니다. 이 OpenShift 기능을 사용하면 개발자가 자체 프로젝트(예: Kafka 프로젝트)를 모니터링하기 위해 별도의 Prometheus 인스턴스에 액세스할 수 있습니다.

사용자 정의 프로젝트에 대한 모니터링이 활성화된 경우 openshift-user-workload-monitoring 프로젝트에 다음 구성 요소가 포함됩니다.

  • Prometheus Operator
  • Prometheus 인스턴스(Prometheus Operator에서 자동으로 배포)
  • Thanos Ruler 인스턴스

AMQ Streams는 이러한 구성 요소를 사용하여 메트릭을 사용합니다.

클러스터 관리자는 사용자 정의 프로젝트에 대한 모니터링을 활성화한 다음 개발자 및 기타 사용자에게 자체 프로젝트 내에서 애플리케이션을 모니터링할 수 있는 권한을 부여해야 합니다.

Grafana 배포

Kafka 클러스터가 포함된 프로젝트에 Grafana 인스턴스를 배포할 수 있습니다. 그런 다음 예제 Grafana 대시보드를 사용하여 Grafana 사용자 인터페이스에서 AMQ Streams에 대한 Prometheus 지표를 시각화할 수 있습니다.

중요

openshift-monitoring 프로젝트는 핵심 플랫폼 구성 요소에 대한 모니터링을 제공합니다. 이 프로젝트에서 Prometheus 및 Grafana 구성 요소를 사용하여 OpenShift Container Platform 4.x에서 AMQ Streams에 대한 모니터링을 구성하지 마십시오.

절차 개요

OpenShift Container Platform에서 AMQ Streams 모니터링을 설정하려면 다음 절차를 순서대로 따르십시오.

22.5.1. 사전 요구 사항

  • 예제 YAML 파일을 사용하여 Prometheus 지표 구성을 배포 했습니다.
  • 사용자 정의 프로젝트에 대한 모니터링이 활성화됩니다. 클러스터 관리자가 OpenShift 클러스터에 cluster-monitoring-config 구성 맵을 생성했습니다.
  • 클러스터 관리자에게 monitoring-rules-edit 또는 monitoring-edit 역할이 할당되었습니다.

cluster-monitoring-config 구성 맵을 생성하고 사용자 정의 프로젝트를 모니터링할 수 있는 사용자에게 권한을 부여하는 방법에 대한 자세한 내용은 OpenShift 설명서 를 참조하십시오.

22.5.2. Prometheus 리소스 배포

Prometheus를 사용하여 Kafka 클러스터에서 모니터링 데이터를 가져옵니다.

자체 Prometheus 배포를 사용하거나 AMQ Streams에서 제공하는 예제 지표 구성 파일을 사용하여 Prometheus를 배포할 수 있습니다. 예제 파일을 사용하려면 PodMonitor 리소스를 구성하고 배포합니다. PodMonitor 는 Apache Kafka, Zoo Cryostat, Operators, Kafka Bridge 및 Cruise Control의 Pod에서 직접 데이터를 스크랩합니다.

그런 다음 Alertmanager에 대한 경고 규칙 예제를 배포합니다.

사전 요구 사항

프로세스

  1. 사용자 정의 프로젝트에 대한 모니터링이 활성화되어 있는지 확인합니다.

    oc get pods -n openshift-user-workload-monitoring
    Copy to Clipboard Toggle word wrap

    활성화하면 모니터링 구성 요소의 Pod가 반환됩니다. 예를 들면 다음과 같습니다.

    NAME                                   READY   STATUS    RESTARTS   AGE
    prometheus-operator-5cc59f9bc6-kgcq8   1/1     Running   0          25s
    prometheus-user-workload-0             5/5     Running   1          14s
    prometheus-user-workload-1             5/5     Running   1          14s
    thanos-ruler-user-workload-0           3/3     Running   0          14s
    thanos-ruler-user-workload-1           3/3     Running   0          14s
    Copy to Clipboard Toggle word wrap

    반환된 Pod가 없는 경우 사용자 정의 프로젝트에 대한 모니터링이 비활성화됩니다. 22.5절. “OpenShift에서 Kafka 메트릭 및 대시보드 보기” 의 사전 요구 사항을 참조하십시오.

  2. 여러 PodMonitor 리소스는 examples/metrics/prometheus-install/strimzi-pod-monitor.yaml 에서 정의됩니다.

    PodMonitor 리소스에 대해 spec.namespaceSelector.matchNames 속성을 편집합니다.

    apiVersion: monitoring.coreos.com/v1
    kind: PodMonitor
    metadata:
      name: cluster-operator-metrics
      labels:
        app: strimzi
    spec:
      selector:
        matchLabels:
          strimzi.io/kind: cluster-operator
      namespaceSelector:
        matchNames:
          - <project-name> 
    1
    
      podMetricsEndpoints:
      - path: /metrics
        port: http
    # ...
    Copy to Clipboard Toggle word wrap
    1
    메트릭을 스크랩할 Pod가 실행 중인 프로젝트입니다(예: Kafka ).
  3. strimzi-pod-monitor.yaml 파일을 Kafka 클러스터가 실행 중인 프로젝트에 배포합니다.

    oc apply -f strimzi-pod-monitor.yaml -n MY-PROJECT
    Copy to Clipboard Toggle word wrap
  4. 예제 Prometheus 규칙을 동일한 프로젝트에 배포합니다.

    oc apply -f prometheus-rules.yaml -n MY-PROJECT
    Copy to Clipboard Toggle word wrap

22.5.3. Grafana의 서비스 계정 생성

AMQ Streams의 Grafana 인스턴스는 cluster-monitoring-view 역할이 할당된 서비스 계정으로 실행해야 합니다.

Grafana를 사용하여 모니터링에 대한 지표를 표시하는 경우 서비스 계정을 생성합니다.

사전 요구 사항

프로세스

  1. Kafka 클러스터가 포함된 프로젝트에서 Grafana에 대한 ServiceAccount 를 생성합니다.

     oc create sa grafana-service-account -n my-project
    Copy to Clipboard Toggle word wrap

    이 예에서는 my-project 네임스페이스에 grafana-service-account 라는 서비스 계정이 생성됩니다.

  2. Grafana ServiceAccountcluster-monitoring-view 역할을 할당하는 ClusterRoleBinding 리소스를 생성합니다. 여기서 리소스의 이름은 grafana-cluster-monitoring-binding 입니다.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: grafana-cluster-monitoring-binding
      labels:
        app: strimzi
    subjects:
      - kind: ServiceAccount
        name: grafana-service-account
        namespace: my-project
    roleRef:
      kind: ClusterRole
      name: cluster-monitoring-view
      apiGroup: rbac.authorization.k8s.io
    Copy to Clipboard Toggle word wrap
  3. 동일한 프로젝트에 ClusterRoleBinding 을 배포합니다.

    oc apply -f grafana-cluster-monitoring-binding.yaml -n my-project
    Copy to Clipboard Toggle word wrap
  4. 서비스 계정에 대한 토큰 시크릿을 생성합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: secret-sa
      annotations:
        kubernetes.io/service-account.name: "grafana-service-account" 
    1
    
    type: kubernetes.io/service-account-token 
    2
    Copy to Clipboard Toggle word wrap
    1
    서비스 계정을 지정합니다.
    2
    서비스 계정 토큰 시크릿을 지정합니다.
  5. Secret 오브젝트 및 액세스 토큰을 생성합니다.

    oc create -f <secret_configuration>.yaml
    Copy to Clipboard Toggle word wrap

    Grafana를 배포할 때 액세스 토큰이 필요합니다.

22.5.4. Prometheus 데이터 소스를 사용하여 Grafana 배포

Prometheus 지표를 표시하기 위해 Grafana를 배포합니다. Grafana 애플리케이션에는 OpenShift Container Platform 모니터링 스택에 대한 구성이 필요합니다.

OpenShift Container Platform에는 openshift-monitoring 프로젝트에 Thanos Querier 인스턴스가 포함되어 있습니다. Thanos Querier는 플랫폼 메트릭을 집계하는 데 사용됩니다.

필요한 플랫폼 지표를 사용하려면 Grafana 인스턴스에 Thanos Querier에 연결할 수 있는 Prometheus 데이터 소스가 필요합니다. 이 연결을 구성하려면 Thanos Querier와 함께 실행되는 oauth-proxy 사이드카에 토큰을 사용하여 인증하는 구성 맵을 생성합니다. datasource.yaml 파일은 구성 맵의 소스로 사용됩니다.

마지막으로 Kafka 클러스터가 포함된 프로젝트에 볼륨으로 마운트된 구성 맵을 사용하여 Grafana 애플리케이션을 배포합니다.

사전 요구 사항

프로세스

  1. Grafana ServiceAccount:의 액세스 토큰을 가져옵니다.

    oc describe sa/grafana-service-account | grep Tokens:
    oc describe secret grafana-service-account-token-mmlp9 | grep token:
    Copy to Clipboard Toggle word wrap

    이 예에서 서비스 계정의 이름은 grafana-service-account 입니다. 다음 단계에서 사용할 액세스 토큰을 복사합니다.

  2. Grafana에 대한 Thanos Querier 구성이 포함된 datasource.yaml 파일을 생성합니다.

    표시된 대로 액세스 토큰을 httpHeaderValue1 속성에 붙여넣습니다.

    apiVersion: 1
    
    datasources:
    - name: Prometheus
      type: prometheus
      url: https://thanos-querier.openshift-monitoring.svc.cluster.local:9091
      access: proxy
      basicAuth: false
      withCredentials: false
      isDefault: true
      jsonData:
        timeInterval: 5s
        tlsSkipVerify: true
        httpHeaderName1: "Authorization"
      secureJsonData:
        httpHeaderValue1: "Bearer ${GRAFANA-ACCESS-TOKEN}" 
    1
    
      editable: true
    Copy to Clipboard Toggle word wrap
    1
    GRAFANA-ACCESS-TOKEN: Grafana ServiceAccount 에 대한 액세스 토큰의 값입니다.
  3. datasource.yaml 파일에서 grafana-config 라는 구성 맵을 생성합니다.

    oc create configmap grafana-config --from-file=datasource.yaml -n MY-PROJECT
    Copy to Clipboard Toggle word wrap
  4. 배포 및 서비스로 구성된 Grafana 애플리케이션을 생성합니다.

    grafana-config 구성 맵은 데이터 소스 구성의 볼륨으로 마운트됩니다.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: grafana
      labels:
        app: strimzi
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: grafana
      template:
        metadata:
          labels:
            name: grafana
        spec:
          serviceAccountName: grafana-service-account
          containers:
          - name: grafana
            image: grafana/grafana:10.4.2
            ports:
            - name: grafana
              containerPort: 3000
              protocol: TCP
            volumeMounts:
            - name: grafana-data
              mountPath: /var/lib/grafana
            - name: grafana-logs
              mountPath: /var/log/grafana
            - name: grafana-config
              mountPath: /etc/grafana/provisioning/datasources/datasource.yaml
              readOnly: true
              subPath: datasource.yaml
            readinessProbe:
              httpGet:
                path: /api/health
                port: 3000
              initialDelaySeconds: 5
              periodSeconds: 10
            livenessProbe:
              httpGet:
                path: /api/health
                port: 3000
              initialDelaySeconds: 15
              periodSeconds: 20
          volumes:
          - name: grafana-data
            emptyDir: {}
          - name: grafana-logs
            emptyDir: {}
          - name: grafana-config
            configMap:
              name: grafana-config
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
      labels:
        app: strimzi
    spec:
      ports:
      - name: grafana
        port: 3000
        targetPort: 3000
        protocol: TCP
      selector:
        name: grafana
      type: ClusterIP
    Copy to Clipboard Toggle word wrap
  5. Kafka 클러스터가 포함된 프로젝트에 Grafana 애플리케이션을 배포합니다.

    oc apply -f <grafana-application> -n <my-project>
    Copy to Clipboard Toggle word wrap

22.5.5. Grafana 서비스에 대한 경로 생성

Grafana 서비스를 노출하는 경로를 통해 Grafana 사용자 인터페이스에 액세스할 수 있습니다.

프로세스

  • grafana 서비스에 대한 에지 경로를 생성합니다.

    oc create route edge <my-grafana-route> --service=grafana --namespace=KAFKA-NAMESPACE
    Copy to Clipboard Toggle word wrap

22.5.6. Grafana 대시보드 가져오기

Grafana를 사용하여 사용자 지정 가능한 대시보드에 Prometheus 지표의 시각화를 제공합니다.

AMQ Streams는 JSON 형식의 Grafana에 대한 대시보드 구성 파일의 예제 를 제공합니다.

  • 예/metrics/grafana-dashboards

이 절차에서는 Grafana 대시보드 예제를 사용합니다.

예제 대시보드는 키 메트릭을 모니터링하는 데 좋은 시작점이지만 Kafka에서 지원하는 모든 메트릭은 표시되지 않습니다. 인프라에 따라 예제 대시보드를 수정하거나 다른 메트릭을 추가할 수 있습니다.

프로세스

  1. Grafana 서비스로의 경로 세부 정보를 가져옵니다. 예를 들면 다음과 같습니다.

    oc get routes
    
    NAME               HOST/PORT                         PATH  SERVICES
    MY-GRAFANA-ROUTE   MY-GRAFANA-ROUTE-amq-streams.net        grafana
    Copy to Clipboard Toggle word wrap
  2. 웹 브라우저에서 경로 호스트 및 포트의 URL을 사용하여 Grafana 로그인 화면에 액세스합니다.
  3. 사용자 이름과 암호를 입력한 다음 로그인 을 클릭합니다.

    기본 Grafana 사용자 이름과 암호는 모두 admin 입니다. 처음 로그인한 후 암호를 변경할 수 있습니다.

  4. Configuration > Data Sources 에서 Prometheus 데이터 소스가 생성되었는지 확인합니다. 데이터 소스는 22.5.4절. “Prometheus 데이터 소스를 사용하여 Grafana 배포” 에서 생성되었습니다.
  5. + 아이콘을 클릭한 다음 가져오기 를 클릭합니다.
  6. examples/metrics/grafana-dashboards 에서 가져올 대시보드의 JSON을 복사합니다.
  7. 텍스트 상자에 JSON을 붙여넣은 다음 Load 를 클릭합니다.
  8. 다른 예제 Grafana 대시보드에 대해 5-7단계를 반복합니다.

가져온 Grafana 대시보드는 대시보드 홈 페이지에서 볼 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat