Google Cloud 콘솔 또는 Cloud Monitoring API를 사용하여 Pub/Sub를 모니터링할 수 있습니다.
이 문서에서는 Monitoring을 사용하여 Google Cloud 콘솔에서 Pub/Sub 사용량을 모니터링하는 방법을 보여줍니다.
Pub/Sub 측정항목 외에 다른 Google Cloud 리소스의 측정항목을 보려면 Monitoring을 사용하세요.
또는 Pub/Sub에서 제공하는 모니터링 대시보드를 사용할 수 있습니다. 주제 모니터링 및 구독 모니터링을 참조하세요.
자동 확장 시 측정항목 사용에 관한 권장사항은 Pub/Sub 측정항목을 확장 신호로 사용하기 위한 권장사항을 참고하세요.
시작하기 전에
Monitoring을 사용하기 전에 다음 항목이 준비되었는지 확인합니다.
Cloud Billing 계정
결제가 사용 설정된 Pub/Sub 프로젝트
이 두 가지 조건을 모두 확인하기 위한 한 가지 방법은 Cloud 콘솔을 사용한 빠른 시작을 완료하는 것입니다.
기존 대시보드 보기
대시보드를 사용하면 동일한 컨텍스트에서 여러 소스의 데이터를 보고 분석할 수 있습니다. Google Cloud는 사전 정의된 대시보드와 커스텀 대시보드를 모두 제공합니다. 예를 들어 사전 정의된 Pub/Sub 대시보드를 보거나 측정항목 데이터, 경고 정책, Pub/Sub 관련 로그 항목을 보여주는 커스텀 대시보드를 만들 수 있습니다.
Cloud Monitoring을 사용하여 Pub/Sub 프로젝트를 모니터링하려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.
페이지 상단에서 프로젝트 이름을 선택합니다(아직 선택하지 않은 경우).
탐색 메뉴에서 대시보드를 클릭합니다.
대시보드 개요 페이지에서 새 대시보드를 만들거나 기존 Pub/Sub 대시보드를 선택합니다.
기존 Pub/Sub 대시보드를 검색하려면 모든 대시보드 필터에서 이름 속성을 선택하고
Pub/Sub를 입력합니다.
커스텀 대시보드를 생성, 수정, 관리하는 방법은 커스텀 대시보드 관리를 참조하세요.
단일 Pub/Sub 측정항목 보기
Google Cloud 콘솔을 사용하여 단일 Pub/Sub 측정항목을 보려면 다음 단계를 수행합니다.
Google Cloud 콘솔에서 Monitoring 페이지로 이동합니다.
탐색 창에서 측정항목 탐색기를 선택합니다.
구성 섹션에서 측정항목 선택을 클릭합니다.
필터에
Pub/Sub를 입력합니다.활성 리소스에서 Pub/Sub 구독 또는 Pub/Sub 주제를 선택합니다.
특정 측정항목으로 드릴다운하고 적용을 클릭합니다.
특정 측정항목의 페이지가 열립니다.
Cloud Monitoring 문서를 읽고 모니터링 대시보드에 대해 자세히 알아볼 수 있습니다.
Pub/Sub 측정항목 및 리소스 유형 보기
Pub/Sub가 Cloud Monitoring에 보고하는 측정항목을 알아보려면 Cloud Monitoring 문서에서 Pub/Sub 측정항목 목록을 참조하세요.
pubsub_topic,pubsub_subscription또는pubsub_snapshot모니터링 리소스 유형에 대한 자세한 내용은 Cloud Monitoring 문서의 모니터링 리소스 유형을 참조하세요.
PromQL 편집기에 액세스
측정항목 탐색기는 측정항목 데이터를 탐색하고 시각화하도록 설계된 Cloud Monitoring 내의 인터페이스입니다. 측정항목 탐색기에서 Prometheus 쿼리 언어 (PromQL)를 사용하여 Pub/Sub 측정항목을 쿼리하고 분석할 수 있습니다.
측정항목 탐색기에서 코드 편집기에 액세스하고 PromQL로 Cloud Monitoring 측정항목을 쿼리하려면 PromQL용 코드 편집기 사용을 참고하세요.
예를 들어 1시간 동안 특정 구독으로 전송된 메시지 수를 모니터링하는 PromQL 쿼리를 입력할 수 있습니다.
sum(
increase({
"__name__"="pubsub.googleapis.com/subscription/sent_message_count",
"monitored_resource"="pubsub_subscription",
"project_id"="your-project-id",
"subscription_id"="your-subscription-id"
}[1h])
)
할당량 사용량 모니터링
특정 프로젝트의 경우 IAM 및 관리자 할당량 대시보드를 사용하여 현재 할당량 및 사용량을 볼 수 있습니다.
다음 측정항목을 사용하여 이전 할당량 사용량을 볼 수 있습니다.
이러한 측정항목은 consumer_quota 모니터링 리소스 유형을 사용합니다. 할당량 관련 측정항목은 측정항목 목록을 참조하세요.
예를 들어 다음 PromQL 쿼리는 각 리전에서 사용 중인 게시자 할당량의 비율이 포함된 차트를 만듭니다.
sum by (quota_metric, location) (
rate({
"__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com",
"quota_metric"="pubsub.googleapis.com/regionalpublisher"
}[${__interval}])
)
/
(max by (quota_metric, location) (
max_over_time({
"__name__"="serviceruntime.googleapis.com/quota/limit",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com",
"quota_metric"="pubsub.googleapis.com/regionalpublisher"
}[${__interval}])
) / 60 )
사용량이 기본 할당량 한도를 초과할 것으로 예상되면 모든 관련 할당량에 대한 알림 정책을 만듭니다. 이러한 알림은 사용량이 한도에 도달하면 실행됩니다. 예를 들어 다음 PromQL 쿼리는 Pub/Sub 할당량이 80% 사용량을 초과하면 알림 정책을 트리거합니다.
sum by (quota_metric, location) (
increase({
"__name__"="serviceruntime.googleapis.com/quota/rate/net_usage",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com"
}[1m])
)
/
max by (quota_metric, location) (
max_over_time({
"__name__"="serviceruntime.googleapis.com/quota/limit",
"monitored_resource"="consumer_quota",
"service"="pubsub.googleapis.com"
}[1m])
)
> 0.8
할당량 측정항목에 대한 맞춤설정된 모니터링 및 알림은 할당량 측정항목 사용을 참조하세요.
할당량에 대한 자세한 내용은 할당량 및 한도를 참조하세요.
정상 구독 유지
정상 구독을 유지하려면 Pub/Sub 제공 측정항목을 사용하여 여러 구독 속성을 모니터링할 수 있습니다. 예를 들어 미확인 메시지 볼륨, 메시지 확인 마감 시한 종료 등을 모니터링할 수 있습니다. 또한 낮은 메시지 전송 지연 시간을 달성하기에 충분하도록 구독이 정상 상태인지 확인할 수 있습니다.
특정 측정항목에 대해 자세히 알아보려면 다음 섹션을 참조하세요.
메시지 백로그 모니터링
구독자가 메시지 흐름을 따라갈 수 있도록 대시보드를 만듭니다. 대시보드는 모든 구독에 대해 리소스별로 집계된 다음과 같은 백로그 측정항목을 표시할 수 있습니다.
미확인 메시지(
subscription/num_unacked_messages_by_region) - 미확인 메시지 수를 표시합니다.가장 오래된 미확인 메시지 기간(
subscription/oldest_unacked_message_age_by_region) - 설명 백로그에서 가장 오래된 미확인 메시지 기간을 표시합니다.전송 지연 시간 상태 점수(
subscription/delivery_latency_health_score) - 전송 지연 시간과 관련하여 전반적인 구독 상태를 확인합니다. 이 측정항목에 대한 자세한 내용은 이 문서의 관련 섹션을 참조하세요.
이러한 값이 시스템 컨텍스트에서 허용되는 범위를 벗어날 때 트리거되는 알림 정책을 만듭니다. 예를 들어 미확인 메시지의 절대 개수가 반드시 의미 있는 것은 아닙니다. 100만 개 메시지의 백로그는 초당 100만 개의 메시지에 대해 허용되지만 초당 1개의 메시지에 대해서는 허용되지 않습니다.
일반적인 백로그 문제
| 증상 | 문제 | 솔루션 |
|---|---|---|
oldest_unacked_message_age_by_region 및 num_unacked_messages_by_region 모두 동시에 증가하고 있습니다. |
구독자가 메시지 볼륨을 유지하지 못함 |
|
안정적으로 증가하는 oldest_unacked_message_age_by_region와 결합된 안정적인 작은 백로그 크기가 있는 경우 처리할 수 없는 적은 수의 메시지가 있을 수 있습니다. |
메시지가 막힘 | |
oldest_unacked_message_age_by_region에서 구독의 메시지 보관 기간을 초과했습니다. |
영구적인 데이터 손실 |
|
전송 지연 시간 상태 모니터링
Pub/Sub에서 전송 지연 시간은 게시된 메시지가 구독자에게 전송되는 데 걸리는 시간입니다.
메시지 백로그가 증가하면 전송 지연 시간 상태 점수(subscription/delivery_latency_health_score)를 사용하여 지연 시간 증가에 영향을 주는 요인을 확인할 수 있습니다.
이 측정항목은 10분 간격으로 단일 구독의 상태를 측정합니다. 이 측정항목은 구독이 일관적인 낮은 지연 시간을 달성하는 데 필요한 다음 기준에 대한 통계를 제공합니다.
무시 가능한 검색 요청입니다.
무시 가능한 부정적으로 확인된 메시지입니다(NACK 상태).
무시 가능한 만료된 메시지 확인 마감 시한입니다.
30초 미만의 일관적인 확인 지연 시간입니다.
일관적으로 활용률이 낮으면 구독에 새 메시지를 처리할 수 있는 용량이 일관적으로 충분함을 의미합니다.
전송 지연 시간 상태 점수 측정항목은 지정된 각 기준에 대해 점수를 0 또는 1로 보고합니다. 점수 1은 정상 상태를 나타내며 점수 0은 비정상 상태를 나타냅니다.
탐색 요청: 최근 10분 동안 구독에 탐색 요청이 포함된 경우 점수가 0으로 설정됩니다. 구독을 탐색하면 오래된 메시지가 처음 게시되고 나서 한참 후에 재생되어 전송 지연 시간이 증가할 수 있습니다.
부정적으로 확인된(NACK된) 메시지: 구독에 최근 10분 동안 부정적인 확인(NACK) 요청이 포함된 경우 점수가 0으로 설정됩니다. 부정 확인은 메시지를 다시 전송하도록 만들고 전송 지연 시간을 늘립니다.
만료된 확인 마감 시한: 구독에 최근 10분 동안 만료된 확인 마감 시한이 포함된 경우 점수가 0으로 설정됩니다. 확인 기한이 만료된 메시지는 다시 전송되고 전송 지연 시간이 늘어납니다.
확인 지연 시간: 최근 10분 동안 모든 확인 지연 시간의 99.9번째 백분위수가 30초보다 크면 점수가 0으로 설정됩니다. 높은 확인 지연 시간은 구독자 클라이언트가 메시지를 처리하는 데 비정상적으로 시간이 오래 걸린다는 신호입니다. 이 점수는 구독자 클라이언트 측에 버그 또는 일부 리소스 제약조건이 있음을 의미할 수 있습니다.
낮은 사용률: 사용률은 각 구독 유형에 따라 다르게 계산됩니다.
StreamingPull: 충분한 스트림이 열려 있지 않으면 점수가 0으로 설정됩니다. 새 메시지에 대해 적절한 용량이 지원되도록 더 많은 스트림을 엽니다.
푸시: 푸시 엔드포인트에 미해결 메시지가 너무 많으면 점수가 0으로 설정됩니다. 새 메시지 용량을 확보할 수 있도록 푸시 엔드포인트에 용량을 더 추가하세요.
풀: 미해결 풀 요청이 충분하지 않으면 점수가 0으로 설정됩니다. 새 메시지를 수신할 수 있도록 준비하기 위해 더 많은 동시 풀 요청을 엽니다.
측정항목을 보려면 측정항목 탐색기에서 Pub/Sub 구독 리소스 유형에 대해 전송 지연 시간 상태 점수 측정항목을 선택합니다. 한 번에 하나만 구독을 선택하도록 필터를 추가합니다. 누적 영역 차트를 선택하고 특정 시점을 지정하여 해당 시점에 구독의 기준 점수를 확인합니다.
다음은 누적 영역 차트를 사용하여 1시간 동안으로 구성된 측정항목의 스크린샷입니다. 결합된 상태 점수는 오전 4시 15분에 5까지 올라가고 각 기준마다 1점이 부여됩니다. 나중에 결합 점수는 활용률 점수가 0이 되는 오전 4시 20분에 4로 낮아집니다.
PromQL은 Cloud Monitoring 시계열 데이터에 대한 표현형 텍스트 기반 인터페이스를 제공합니다. 다음 PromQL 쿼리는 구독의 전송 지연 시간 상태 점수를 측정하는 차트를 만듭니다.
sum_over_time(
{
"__name__"="pubsub.googleapis.com/subscription/delivery_latency_health_score",
"monitored_resource"="pubsub_subscription",
"subscription_id"="$SUBSCRIPTION"
}[${__interval}]
)
확인 기한 만료 모니터링
메시지 전송 지연 시간을 줄이기 위해 Pub/Sub는 제한된 기간 동안 구독자 클라이언트가 지정된 메시지를 확인(ack)하도록 허용합니다. 이 기간을 ack 기한이라고 부릅니다. 구독자가 메시지를 너무 오래 확인하지 않으면 메시지가 다시 전송되어 구독자에게 중복 메시지가 표시됩니다. 이러한 재전송은 여러 가지 이유로 발생할 수 있습니다.
구독자가 완전히 프로비저닝되지 않았습니다. 스레드나 머신이 더 필요합니다.
각 메시지는 메시지 확인 기한보다 처리하는 데 시간이 오래 걸립니다. Cloud 클라이언트 라이브러리는 일반적으로 개별 메시지의 기한을 구성 가능한 최대 한도까지 연장합니다. 그러나 최대 연장 기한은 라이브러리에도 적용됩니다.
일부 메시지가 지속적으로 클라이언트와 충돌합니다.
구독자가 ack 기한을 놓치는 비율을 측정할 수 있습니다. 구체적인 측정항목은 구독 유형에 따라 다릅니다.
풀 및 StreamingPull:
subscription/expired_ack_deadlines_count푸시:
response_code != "success"로 필터링된subscription/push_request_count
지나친 ACK 기한 만료 비율은 시스템 비효율적인 비용을 초래할 수 있습니다. 재전송하는 경우와 각 메시지를 반복적으로 처리하려는 경우에 요금을 지불합니다. 반대로 적은 만료 비율(예: 0.1~1%)이 양호할 수 있습니다.