7.2. Prometheus를 사용하여 브로커 런타임 메트릭 모니터링

다음 섹션에서는 OpenShift Container Platform에서 AMQ Broker에 대한 Prometheus 지표 플러그인을 구성하는 방법을 설명합니다. 플러그인을 사용하여 브로커 런타임 메트릭을 모니터링하고 저장할 수 있습니다. Grafana와 같은 그래픽 도구를 사용하여 Prometheus 플러그인이 수집하는 데이터의 고급 시각화 및 대시보드를 구성할 수도 있습니다.

참고

Prometheus 지표 플러그인을 사용하면 Prometheus 형식으로 브로커 지표를 수집하고 내보낼 수 있습니다. 그러나 Red Hat 은 Prometheus 자체의 설치 또는 구성이나 Grafana와 같은 시각화 툴을 지원하지 않습니다. Prometheus 또는 Grafana 설치, 구성 또는 실행에 대한 지원이 필요한 경우 커뮤니티 지원 및 문서와 같은 리소스의 제품 웹 사이트를 참조하십시오.

7.2.1. 메트릭 개요

브로커 인스턴스의 상태 및 성능을 모니터링하려면 AMQ Broker에 Prometheus 플러그인을 사용하여 브로커 런타임 메트릭을 모니터링하고 저장할 수 있습니다. AMQ Broker Prometheus 플러그인은 브로커 런타임 지표를 Prometheus 형식으로 내보내 Prometheus 자체를 사용하여 데이터에 대한 쿼리를 시각화하고 실행할 수 있습니다.

Grafana와 같은 그래픽 도구를 사용하여 Prometheus 플러그인에서 수집하는 메트릭에 대한 고급 시각화 및 대시보드를 구성할 수도 있습니다.

플러그인이 Prometheus 형식으로 내보내는 메트릭은 다음과 같습니다.

브로커 메트릭

artemis_address_memory_usage
메모리 내 메시지에 대해 이 브로커의 모든 주소에서 사용하는 바이트 수입니다.
artemis_address_memory_usage_percentage
이 브로커의 모든 주소가 global-max-size 매개변수의 백분율로 사용하는 메모리입니다.
artemis_connection_count
이 브로커에 연결된 고객 수입니다.
artemis_total_connection_count
이 브로커에 연결된 클라이언트의 수가 시작되었기 때문입니다.

주소 메트릭

artemis_routed_message_count
하나 이상의 큐 바인딩으로 라우팅되는 메시지 수입니다.
artemis_unrouted_message_count
큐 바인딩으로 라우팅 되지 않은 메시지 수입니다.

대기열 메트릭

artemis_consumer_count
지정된 큐의 메시지를 사용하는 클라이언트 수입니다.
artemis_delivering_durable_message_count
지정된 큐가 현재 소비자에게 전달되고 있는 불안정한 메시지 수입니다.
artemis_delivering_durable_persistent_size
지정된 큐가 현재 소비자에게 전달되고 있는 불완전한 메시지의 영구 크기입니다.
artemis_delivering_message_count
지정된 큐가 현재 소비자에게 전달되고 있는 메시지 수입니다.
artemis_delivering_persistent_size
지정된 큐가 현재 소비자에게 전달되고 있는 메시지의 영구 크기입니다.
artemis_durable_message_count
지정된 큐에 현재 없는 메시지 수입니다. 여기에는 scheduled, paged, in-delivery 메시지가 포함됩니다.
artemis_durable_persistent_size
현재 지정된 큐에 있는 미완성 메시지의 영구 크기입니다. 여기에는 scheduled, paged, in-delivery 메시지가 포함됩니다.
artemis_messages_acknowledged
대기열이 생성된 이후 지정된 큐에서 확인되는 메시지 수입니다.
artemis_messages_added
큐가 생성된 이후 지정된 큐에 추가된 메시지 수입니다.
artemis_message_count
지정된 큐에 현재 메시지 수입니다. 여기에는 scheduled, paged, in-delivery 메시지가 포함됩니다.
artemis_messages_killed
큐가 생성된 이후 지정된 큐에서 삭제된 메시지 수입니다. 메시지가 구성된 최대 전달 시도 수를 초과하면 브로커가 메시지를 종료합니다.
artemis_messages_expired
큐가 생성된 이후 지정된 큐에서 만료된 메시지 수입니다.
artemis_persistent_size
현재 지정된 큐에 있는 모든 메시지의 영구 크기(아니요 및 비내화 가능)입니다. 여기에는 scheduled, paged, in-delivery 메시지가 포함됩니다.
artemis_scheduled_durable_message_count
지정된 큐에서 미완성, 예약된 메시지 수입니다.
artemis_scheduled_durable_persistent_size
지정된 큐에 위치하고 예약된 메시지의 영구 크기입니다.
artemis_scheduled_message_count
지정된 큐에서 예약된 메시지 수입니다.
artemis_scheduled_persistent_size
지정된 큐에서 예약된 메시지의 영구 크기입니다.

위에 나열되지 않은 고급 브로커 메트릭의 경우 하위 수준 메트릭을 집계하여 이러한 메트릭을 계산할 수 있습니다. 예를 들어 총 메시지 수를 계산하려면 브로커 배포의 모든 대기열에서 artemis_message_count 지표를 집계할 수 있습니다.

AMQ Broker를 온프레미스 배포를 위해 브로커를 호스팅하는 Java 가상 머신(JVM)에 대한 메트릭도 Prometheus 형식으로 내보냅니다. 이는 OpenShift Container Platform의 AMQ Broker 배포에 적용되지 않습니다.

7.2.2. CR을 사용하여 Prometheus 플러그인 활성화

AMQ Broker를 설치할 때 Prometheus 지표 플러그인이 설치에 포함됩니다. 활성화하면 플러그인은 브로커에 대한 런타임 지표를 수집하고 이를 Prometheus 형식으로 내보냅니다.

다음 절차에서는 CR을 사용하여 AMQ Broker에 대한 Prometheus 플러그인을 활성화하는 방법을 보여줍니다. 이 절차에서는 AMQ Broker 7.9 이상의 새 배포 및 기존 배포를 지원합니다.

브로커를 실행하는 대체 절차는 7.2.3절. “환경 변수를 사용하여 실행 중인 브로커 배포에 대한 Prometheus 플러그인 활성화” 을 참조하십시오.

절차

  1. 브로커 배포에 사용하는 CR 인스턴스를 엽니다. 예를 들어 기본 배포의 CR은 다음과 유사합니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 4
        image: registry.redhat.io/amq7/amq-broker-rhel8:7.10
      ...
  2. deploymentPlan 섹션에서 enableMetricsPlugin 속성을 추가하고 아래와 같이 값을 true 로 설정합니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 4
        image: registry.redhat.io/amq7/amq-broker-rhel8:7.10
        ...
        enableMetricsPlugin: true
    enableMetricsPlugin
    배포 브로커에 대해 Prometheus 플러그인이 활성화되어 있는지 여부를 지정합니다.
  3. CR 인스턴스를 저장합니다.
  4. 이전에 브로커 배포를 생성한 프로젝트로 전환합니다.

    $ oc project <project_name>
  5. 명령줄에서 변경 사항을 적용합니다.

    $ oc apply -f <path/to/custom_resource_instance>.yaml

    지표 플러그인은 Prometheus 형식으로 브로커 런타임 지표를 수집하기 시작합니다.

추가 리소스

7.2.3. 환경 변수를 사용하여 실행 중인 브로커 배포에 대한 Prometheus 플러그인 활성화

다음 절차에서는 환경 변수를 사용하여 AMQ Broker에 대한 Prometheus 플러그인을 활성화하는 방법을 보여줍니다. 대체 절차는 7.2.2절. “CR을 사용하여 Prometheus 플러그인 활성화” 을 참조하십시오.

사전 요구 사항

  • AMQ Broker Operator를 사용하여 생성된 브로커 Pod에 대해 Prometheus 플러그인을 활성화할 수 있습니다. 그러나 배포된 브로커는 AMQ Broker 7.7 이상에 브로커 컨테이너 이미지를 사용해야 합니다.

절차

  1. 브로커 배포가 포함된 프로젝트에 대한 관리자 권한으로 OpenShift Container Platform 웹 콘솔에 로그인합니다.
  2. 웹 콘솔에서 HomeProjects (프로젝트) 를 클릭합니다. 브로커 배포가 포함된 프로젝트를 선택합니다.
  3. 프로젝트의 StatefulSets 또는 DeploymentConfigs를 보려면 WorkloadsStatefulSets 를 클릭합니다.
  4. 브로커 배포에 해당하는 StatefulSet 또는 DeploymentConfig를 클릭합니다.
  5. 브로커 배포의 환경 변수에 액세스하려면 환경 탭을 클릭합니다.
  6. AMQ_ENABLE_METRICS_PLUGIN 이라는 새 환경 변수를 추가합니다. 변수의 값을 true 로 설정합니다.

    AMQ_ENABLE_METRICS_PLUGIN 환경 변수를 설정하면 OpenShift에서 StatefulSet 또는 DeploymentConfig에서 각 브로커 포드를 재시작합니다. 배포에 Pod가 여러 개 있는 경우 OpenShift는 각 포드를 차례로 다시 시작합니다. 각 브로커 Pod가 다시 시작되면 해당 브로커의 Prometheus 플러그인이 브로커 런타임 메트릭을 수집하기 시작합니다.

7.2.4. 실행 중인 브로커 Pod에 대한 Prometheus 메트릭 액세스

다음 절차에서는 실행 중인 브로커 Pod에 대한 Prometheus 메트릭에 액세스하는 방법을 보여줍니다.

사전 요구 사항

절차

  1. 액세스할 메트릭이 있는 브로커 Pod의 경우 Pod를 AMQ Broker 관리 콘솔에 연결하기 위해 이전에 생성한 경로를 확인해야 합니다. 경로 이름은 메트릭에 액세스하는 데 필요한 URL의 일부를 형성합니다.

    1. NetworkingRoutes (경로) 를 클릭합니다.
    2. 선택한 브로커 Pod의 경우 Pod를 AMQ Broker 관리 콘솔에 연결하기 위해 생성된 경로를 확인합니다. Hostname 에서 표시되는 전체 URL을 기록해 둡니다. 예를 들면 다음과 같습니다.

      http://rte-console-access-pod1.openshiftdomain
  2. Prometheus 지표에 액세스하려면 웹 브라우저에 "/metrics" 가 추가된 이전에 명시된 경로 이름을 입력합니다. 예를 들면 다음과 같습니다.

    http://rte-console-access-pod1.openshiftdomain/metrics
참고

콘솔 구성에서 SSL을 사용하지 않는 경우 URL에 http 를 지정합니다. 이 경우 호스트 이름의 DNS 확인은 트래픽을 OpenShift 라우터의 포트 80으로 전달합니다. 콘솔 구성에서 SSL을 사용하는 경우 URL에 https 를 지정합니다. 이 경우 브라우저는 기본적으로 OpenShift 라우터의 443 포트로 설정됩니다. 이렇게 하면 OpenShift 라우터에서 기본적으로 수행하는 SSL 트래픽에 포트 443을 사용하는 경우 콘솔에 성공적으로 연결할 수 있습니다.