API Logging and Gateway Monitoring
API 로깅
"stdout-log" 정책이 APIM 콘솔의 각 API에 적용되고 배포되면, API 로그는 ZCP 로깅 리포지토리에 저장됩니다.
API 로그 보기
- Cloud ZCP 콘솔에 로그인 > [시스템 관리자] 화면으로 이동 > [로깅] 메뉴 클릭
- Kibana에서 오른쪽 상단의 사용자 아이콘을 클릭하고 드롭다운 > 테넌트 전환 > 사용자 정의에서 선택 > apim_tenant 선택
- [발견] 메뉴: API 로그 데이터 검색 (xxxx.apim* 인덱스 선택) 및 + 필터 추가 사용:
- kubernetes.container_name: proxy
- api_id: exists
- 클러스터를 구분하기 위한 필터: kubernetes.namespace_labels.cluster: xxxxxx-prd (선택 사항)
- [발견] 메뉴: API 로그 세부정보 확인
{
"_index": "xxxx.apim.xxxxx-prd.apim-xxxx.xx.xx",
"_id": "xxxxxxxxxxxxxx",
"_score": 1,
"_source": {
"@timestamp": "dd mm yyyy hh:mm:ss.sssZ",
"log": "{\"space_name\":\"xxxxxxx\",\"request_uri\":\"/path/to/api\",\"request_method\":\"POST\",\"duration\":xx,\"api_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"response_status\":200,\"api_name\":\"xxxxxx\",\"response_size\":xxx,\"request_size\":xxx,\"start_at\":xxxxxxxxxxxxxxx,\"duration_kong\":0,\"duration_proxy\":xx,\"space_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"}",
"logtag": "F",
"stream": "stdout",
"time": "dd mm yyyy hh:mm:ss.sss+hh:mm",
"topic": "kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log",
"space_name": "xxxxxxx",
"request_uri": "/path/to/api",
"request_method": "POST",
"duration": xx,
"api_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"response_status": 200,
"api_name": "xxxxxx",
"response_size": xxx,
"request_size": xxx,
"start_at": xxxxxxxxxxxxxxx,
"duration_kong": 0,
"duration_proxy": xx,
"space_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"kubernetes": {
"container_name": "xxxx",
"namespace_name": "xxxx",
"pod_name": "xxxx-xxxx-xxxx-xxxx",
"container_image": "xxxxxx",
"container_image_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"pod_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"pod_ip": "xxx.xxx.xxx.xxx",
"host": "xxxxxx",
"labels": {
"app": "xxxxxx",
"app_kubernetes_io/component": "xxxx",
"app_kubernetes_io/instance": "xxxxxx",
"app_kubernetes_io/managed-by": "Helm",
"app_kubernetes_io/name": "xxxx",
"app_kubernetes_io/version": "x.x",
"helm_sh/chart": "xxxx-x.x.x",
"pod-template-hash": "xxxxxxxx",
"security_istio_io/tlsMode": "istio",
"service_istio_io/canonical-name": "xxxx",
"service_istio_io/canonical-revision": "x.x",
"version": "x.x"
},
"master_url": "https://xxx.xxx.xxx.xxx:xxx/api",
"namespace_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"namespace_labels": {
"cloudzcp_io/deploygroup": "xxxxxx",
"cloudzcp_io/deploygroup-cluster": "xxxxxx-prd",
"cloudzcp_io/managed-by": "xxxx",
"cloudzcp_io/project": "xxxx",
"cloudzcp_io/realm": "xxxxxx",
"cloudzdb_io/zdb-system": "true",
"cluster": "xxxxxx-prd",
"istio-injection": "enabled",
"kubernetes_io/metadata_name": "xxxx",
"project": "xxxx",
"realm": "xxxxxx"
}
},
"docker": {
"container_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
"tag": "projectPlain.project.kube.var.log.containers.xxxxx-apim.xxxx-xxxx-yyyyy.log"
},
"fields": {
"@timestamp": [
"dd mm yyyy hh:mm:ss.sssZ"
],
"time": [
"dd mm yyyy hh:mm:ss.sssZ"
]
- [대시보드] 메뉴: 환경(DEV, STG, PRD)별로 분류된 APIM 대시보드를 확인하세요.

### 대시보드 설명 \{#dashboard-description}
- 총 API 호출, 총 성공 호출, 총 실패 호출 및 성공/실패 상태:
실패 수에는 401, 499와 같은 비치명적인 오류가 포함될 수 있으며, 이는 실제 애플리케이션에서 치명적인 오류가 아닐 수 있습니다. 따라서 상태 코드(성공/실패 상태)를 확인하는 것이 중요합니다.

- 상위 5개 API 호출 - 막대 차트, 테이블:
성능 테스트 중에 주로 호출되는 API의 상태를 확인할 수 있습니다.

- 상위 5개 API 응답 지연:
- 호출 시 느린 응답 지연이 있는 API를 표시합니다.
- 게이트웨이 응답 지연: 게이트웨이에서 발생하는 지연.
- 백엔드 응답 지연: 백엔드 애플리케이션에서의 응답 지연.
- API 응답 지연: 게이트웨이와 백엔드 응답 지연을 합친 총 지연.
- 모든 응답 지연 값은 밀리초(ms)로 측정되므로, 100ms 지연은 0.1초에 불과하며, 이는 크게 느리지 않습니다. 일반적으로 1000ms(1초) 이상의 응답 시간은 느린 것으로 간주됩니다.

- 실패 로그 확인:
사용자는 상태 코드가 200이 아닌 API 호출의 로그를 확인할 수 있습니다.

- Kong 게이트웨이 오류 로그:
Kong 게이트웨이에서 발생하는 오류 로그를 확인할 수 있습니다. 오류, redis를 로그 필터로 사용하세요.

[시각화] 메뉴: APIM 사용자 정의 차트를 관리할 수 있습니다.

## API 게이트웨이 모니터링 \{#api-gateway-monitoring}
- Cloud ZCP 콘솔에 로그인> [시스템 관리자] 화면으로 이동 > [모니터링] 메뉴 클릭 > [고급 모니터링] 버튼 클릭
- Grafana > 왼쪽 상단의 사용자 ID > admin@localhost 선택
- 대시보드 > 탐색 > APIM 대시보드
API 게이트웨이 리소스 메트릭
- 홈 > 대시보드 > APIM 대시보드 > APIM 게이트웨이
- 클러스터, Kong-이름, Kong-서비스, Kong-경로
API 게이트웨이 리소스 메트릭. v2
게이트웨이에 대한 더 자세한 지표가 포함된 버전입니다.
- 홈 > 대시보드 > APIM 대시보드 > APIM > 게이트웨이 V2
- 클러스터, Kong-이름, Kong-서비스, Kong-경로, 배포, 포드
APIM 로깅/모니터링 데이터 누적 방정식 샘플 가이드
APIM 로깅 데이터 양
APIM API 로그:
- 빈도: 언제든지.
- 단일 데이터 양: 2KB + HTTP 본문 크기.
- 월별 데이터 수집 규모:
- 본문 포함 로그: True로 설정할 때
- 가정: 평균 본문 크기 Assuming 10KB로 분당 3000회 호출 (초당 50회 호출)
- (2 KB + 10 KB) * 3000 호출 * 60 분 * 24 시간 * 30 일 = 1555 GB
- 본문 포함 로그: False로 설정할 때
- 가정: 평균 본문 크기가 0 KB이고 분당 3000회 호출 (초당 50회 호출)
- (2 KB + 0 KB) * 3000 호출 * 60 분 * 24 시간 * 30 일 = 259 GB
- 본문 포함 로그: True로 설정할 때
APIM 모니터링 데이터 양
Kong GW 메트릭 (지연 시간, 연결 등)
- 주기: 15초 (기본값)
- 단일 데이터 양: 20KB
- 월별 데이터 수집 규모: 20KB * 4 (1분에 4회) * 60분 * 24시간 * 30일 = 3.5 GB