IBM MQ 큐 관리자가 Kubernetes에서 파드로 실행될 때, 클러스터가 확장됨에 따라 이를 자동으로 검색하고 추적할 수 있는 모니터링 솔루션이 필요합니다. 이 가이드는 수동 설정 변경 없이 큐 관리자를 자동으로 찾고 해당 메트릭을 뉴렐릭으로 전송하는 수집기를 배포하는 방법을 보여줍니다.
뉴렐릭의 OpenTelemetry 배포판(NRDOT) 또는 OpenTelemetry Collector Contrib 중 하나를 사용할 수 있습니다 ― 두 가지 모두 동일한 설정 및 자동 검색 방식을 사용합니다. 수집기는 주석을 통해 큐 관리자 파드를 검색하고, 메트릭을 수집하며, 정리된 데이터를 뉴렐릭으로 전송하여 바로 사용할 수 있는 대시보드와 함께 IBMMQ_MANAGER 및 IBMMQ_QUEUE 엔티티로 표시되도록 합니다. 새 큐 관리자를 추가하면 수집기가 자동으로 이를 찾습니다 ― 설정 업데이트가 필요하지 않습니다.
팁
대신 큐 관리자가 기존 호스트에서 실행되는 경우 자체 호스팅 IBM MQ 모니터를 참조하십시오.
시작하기 전에
수집기를 설정하기 전에 다음 구성 요소가 필요합니다:
- 유효한 라이선스 키가 있는 뉴렐릭 계정
- 해당 리전의 뉴렐릭 OTLP 엔드포인트
kubectl액세스 권한이 있고 Helm 이 설치된 쿠버네티스 클러스터- 포트에서 메트릭을 노출하는 mq-metric-samples 익스포터 사이드카와 함께 실행되는 IBM MQ 큐 관리자 파드
9157 - 필수 Prometheus 주석으로 주석이 달린 큐 관리자 파드
팁
더 나은 처리량 메트릭을 위해 ALTER QMGR STATMQI(ON) STATQ(ON) 을(를) 사용하여 큐 관리자에서 MQI 통계를 활성화하는 것을 권장합니다.
IBM MQ 모니터링 설정
수집기를 배포하고 IBM MQ 메트릭을 뉴렐릭으로 전송하기 시작하려면 다음 단계를 따르십시오:
뉴렐릭 자격 증명 비밀을 생성합니다.
뉴렐릭 자격 증명을 안전하게 저장하기 위해 Kubernetes Secret을 생성합니다. 수집기는 런타임에 이러한 값을 읽어 민감한 정보가 설정 파일에 포함되지 않도록 합니다.
ibmmq네임스페이스가 존재하는지 확인합니다:bash$kubectl get namespace ibmmq >/dev/null 2>&1 || kubectl create namespace ibmmq자격 증명 시크릿을 생성하고,
<YOUR_LICENSE_KEY>을(를) 실제 라이선스 키로 바꿉니다:bash$kubectl create secret generic newrelic-otlp-secret \>--namespace ibmmq \>--from-literal=NEW_RELIC_LICENSE_KEY="<YOUR_LICENSE_KEY>" \>--from-literal=NEW_RELIC_OTLP_ENDPOINT="https://otlp.nr-data.net:4318" \>--dry-run=client -o yaml | kubectl apply -f -EU 계정의 경우 엔드포인트 값으로
https://otlp.eu01.nr-data.net:4318을(를) 사용합니다.
수집기 Helm 값 구성
수집기 설정이 포함된 로컬 values.yaml 파일을 생성합니다. 이 파일에는 OpenTelemetry Helm 차트를 통해 수집기를 배포하는 데 필요한 모든 설정이 포함되어 있습니다.
주의
초기 배포 후 TARGET_NAME 을(를) 변경하지 마십시오. 이 값은 모든 IBMMQ_MANAGER 및 IBMMQ_QUEUE 엔티티 GUID의 첫 번째 세그먼트를 형성합니다. 이를 변경하면 새로운 엔티티가 생성되고 기존 엔티티가 고립되어 대시보드 및 알림이 손상됩니다.
이 설정의 역할
이 설정은 IBM MQ 큐 관리자 파드를 찾고 해당 메트릭을 뉴렐릭으로 전송하는 자동 검색 파이프라인을 생성합니다. 처리 파이프라인은 호스트 설정과 동일하지만, 정적 타겟 대신 파드 자동 검색을 사용합니다:
| 부분 | 역할 |
|---|---|
prometheus/ibmmq 수신기 | 필수 어노테이션이 있는 ibmmq 네임스페이스의 큐 관리자 파드를 자동으로 검색합니다. 각 파드의 메트릭 엔드포인트에 연결하고 60초마다 IBM MQ 데이터를 수집합니다. |
filter/ibmmq-overhead | IBM MQ 데이터를 포함하지 않는 익스포터의 내부 자체 메트릭(go_* 및 process_* 등)을 제거하여 데이터 수집 비용을 최적화합니다. |
filter/ibmmq-queues | 애플리케이션 큐만 뉴렐릭에서 엔티티가 되도록 내부 IBM MQ 시스템 큐(SYSTEM.* 및 AMQ.*)를 제외합니다. |
transform/ibmmq-cleanup | 메트릭을 뉴렐릭의 적절한 IBM MQ 엔티티에 매핑하는 핵심 구성 요소 입니다. 이것이 없으면 데이터는 대시보드 및 알림이 있는 IBMMQ_MANAGER 및 IBMMQ_QUEUE 엔티티 대신 일반 수집기 메트릭으로 나타납니다. |
memory_limiter/ibmmq | Kubernetes에 의해 수집기 파드가 종료되는 것을 방지하기 위해 메모리 사용량을 400MB(512Mi 컨테이너 제한 미만)로 제한합니다. |
batch/ibmmq | 요청당 최대 1,000개의 데이터 포인트를 번들로 묶어 네트워크 오버헤드를 줄이기 위해 전송 전에 메트릭을 함께 그룹화합니다. |
otlphttp/ibmmq 수출업자 | 인증을 위한 라이선스 키와 설정된 리전 엔드포인트를 사용하여 처리된 메트릭을 뉴렐릭으로 내보냅니다. |
중요한 Kubernetes 설정:
| 환경 | 필요한 이유 |
|---|---|
replicaCount: 1 | kubernetes_sd 을(를) 사용하고 TargetAllocator가 없으면 모든 복제본이 모든 타겟을 스크랩하므로 둘 이상의 복제본이 메트릭을 이중으로 계산(및 이중 청구)합니다. HA의 경우 OpenTelemetry TargetAllocator를 사용하여 타겟을 샤딩합니다. |
mode: deployment (daemonset 아님) | DaemonSet은 모든 노드에서 kubernetes_sd 을(를) 실행하고 N-노드 클러스터의 모든 메트릭에 대해 N개의 복사본을 생성합니다. |
clusterRole.create: true | kubernetes_sd 파드에 get/list/watch 이(가) 필요합니다, 이것이 없으면 API는 403 Forbidden 을(를) 반환하고 수신기는 0개의 타겟을 발견합니다(수집기는 시작되지만 아무것도 내보내지 않음). |
service.enabled: false | 이 수집기에는 인바운드 수신기가 없으므로, 그렇지 않으면 차트가 0 포트 서비스를 생성하려고 시도하여 설치 시 실패하게 됩니다. :8888 의 자체 텔레메트리는 여전히 kubectl port-forward을(를) 통해 도달할 수 있습니다. |
replacement: $$1:$$2 (레이블 재지정 규칙 4) | $$ 은(는) OTel 구성 로더의 ${...} 환경 변수 확장을 이스케이프하여 Prometheus 엔진이 리터럴 $1:$2 캡처 그룹 구문을 수신하도록 합니다. 단일 $1:$2 은(는) 빈 환경 변수로 소비되어 주소 구성을 손상시킵니다. |
image.tag: "latest" | 테스트에 적합하며, 프로덕션 환경에서는 특정 버전을 사용하세요. |
Helm으로 수집기 설치
OpenTelemetry Helm 저장소를 추가하고 이전 단계에서 만든 values.yaml 을(를) 사용하여 ibmmq 네임스페이스에 수집기를 설치합니다:
$helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts$helm repo update$
$helm upgrade --install ibmmq-collector open-telemetry/opentelemetry-collector \> --namespace ibmmq \> --create-namespace \> --values values.yaml수집기 파드가 1/1 Running에 도달하지 못하는 경우, 아래의 문제 진단, 해결 을 참조하세요.
배포 확인
수집기 파드가 실행 중인지 확인합니다:
$kubectl -n ibmmq rollout status deploy/ibmmq-collector-opentelemetry-collector --timeout=180s$kubectl -n ibmmq get pods수집기 파드에 1/1 Running이(가) 표시되어야 합니다. 실제로 파드를 검색하고 스크랩하는지 확인하려면 자체 텔레메트리 엔드포인트(인바운드 서비스가 비활성화되어 있으므로 :8888에 노출되고 port-forward 을(를) 통해서만 연결 가능)를 포트 포워딩하고 허용/내보낸 카운터를 확인합니다:
$kubectl -n ibmmq port-forward deploy/ibmmq-collector-opentelemetry-collector 8888:8888 &$curl -s http://localhost:8888/metrics | \> grep -E 'otelcol_(receiver_accepted|exporter_sent|exporter_send_failed)_metric_points'$kill %1 2>/dev/nullotelcol_receiver_accepted_metric_points 0보다 큰 값은 수집기가 주석이 달린 실행 중인 파드를 하나 이상 찾아 스크랩했음을 확인합니다, otelcol_exporter_send_failed_metric_points 은(는) 0 에 유지되어야 합니다(0이 아닌 값은 OTLP 연결 또는 자격 증명 문제를 나타냄).
그런 다음 데이터 찾기 및 쿼리의 확인 쿼리를 사용하여 뉴렐릭에서 IBM MQ 메트릭 및 엔티티를 확인합니다. 상태 값의 의미는 MQ 상태 코드 참조를 확인하세요.
New Relic에서 데이터 보기
수집기 파드가 실행되고 메트릭이 흐르기 시작하면 뉴렐릭에서 큐 관리자가 IBMMQ_MANAGER 엔티티로 표시되고 해당 큐가 하위 IBMMQ_QUEUE 엔티티로 표시됩니다. 데이터 찾기, 쿼리 실행, 대시보드 및 알림 설정에 대한 자세한 내용은 데이터 보기 및 쿼리를 참조하세요.