지표 내보내기 - AWS App Mesh

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

지표 내보내기

Envoy는 자체 운영과 인바운드 및 아웃바운드 트래픽의 다양한 측정기준에 대한 많은 통계를 내보냅니다. Envoy 통계에 대한 자세한 내용은 Envoy 설명서의 통계를 참조하세요. 이러한 지표는 일반적으로 9901인 프록시의 관리 포트에 있는 /stats 엔드포인트를 통해 사용할 수 있습니다.

단일 리스터를 사용하는지 또는 여러 리스너를 사용하는지에 따라 stat 접두사가 달라집니다. 다음은 차이점을 보여 주는 몇 가지 예입니다.

주의

단일 리스너를 다중 리스너 기능으로 업데이트하면 다음 표에 나와 있는 업데이트된 통계 접두사로 인해 주요 변경 사항이 발생할 수 있습니다.

Envoy 이미지 1.22.2.1-prod 이상을 사용하는 것이 좋습니다. 이렇게 하면 Prometheus 엔드포인트에서 유사한 메트릭 이름을 볼 수 있습니다.

단일 리스너(SL)/“ingress” 리스너 접두사가 붙은 기존 통계 다중 리스터(ML)/"ingress.<protocol>.<port>" 리스너 접두사가 붙은 새 통계

http.*ingress*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.5555*.rds.rds_ingress_http_5555.version_text

http.*ingress.http.6666*.rds.rds_ingress_http_6666.version_text

listener.0.0.0.0_15000.http.*ingress*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.5555*.downstream_rq_2xx

listener.0.0.0.0_15000.http.*ingress.http.6666*.downstream_rq_2xx

http.*ingress*.downstream_cx_length_ms

http.*ingress.http.5555*.downstream_cx_length_ms

http.*ingress.http.6666*.downstream_cx_length_ms

통계 엔드포인트에 대한 자세한 내용은 Envoy 설명서의 통계 엔드포인트를 참조하세요. 관리 인터페이스에 대한 자세한 내용은 Envoy 프록시 관리 인터페이스 활성화 섹션을 참조하세요.

Amazon EKS를 포함하는 App Mesh용 Prometheus

Prometheus는 오픈 소스 모니터링 및 알림 도구 키트입니다. 해당 기능 중 하나는 다른 시스템에서 사용할 수 있는 지표를 내보내는 형식을 지정하는 것입니다. Prometheus에 대한 자세한 내용은 Prometheus 설명서의 개요를 참조하세요. Envoy는 파라미터 /stats?format=prometheus를 전달하여 통계 엔드포인트를 통해 지표를 내보낼 수 있습니다.

Envoy 이미지 빌드 v1.22.2.1-prod를 사용하는 고객의 경우 수신 리스너별 통계를 나타내는 두 가지 추가 측정기준이 있습니다.

  • appmesh.listener_protocol

  • appmesh.listener_port

아래는 Prometheus의 기존 통계와 새 통계를 비교한 것입니다.

  • “수신” 리스너 접두사가 붙은 기존 통계

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 931433
  • "ingress.<protocol>.<port>" + Appmesh Envoy Image v1.22.2.1-prod 이상이 있는 새 통계

    envoy_http_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",appmesh_listener_protocol="http",appmesh_listener_port="5555",envoy_http_conn_manager_prefix="ingress"} 20
  • "ingress.<protocol>.<port>" + 사용자 지정 Envoy Imagebuild가 있는 새 통계

    envoy_http_http_5555_downstream_rq_xx{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_node="foodteller-vn",envoy_response_code_class="2",envoy_http_conn_manager_prefix="ingress"} 15983

여러 리스너의 경우 cds_ingress_<mesh name>_<virtual gateway name>_self_redirect_<ingress_listener_port>_<protocol>_<port> 특수 클러스터는 리스너별로 다릅니다.

  • “수신” 리스너 접두사가 붙은 기존 통계

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",Mesh="multiple-listeners-mesh",VirtualGateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_http_15001"} 0
  • "ingress.<protocol>.<port>"가 있는 새 통계

    envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_1111_http_15001"} 0 envoy_cluster_assignment_stale{appmesh_mesh="multiple-listeners-mesh",appmesh_virtual_gateway="tellergateway-vg",envoy_cluster_name="cds_ingress_multiple-listeners-mesh_tellergateway-vg_self_redirect_2222_http_15001"} 0

Prometheus 설치

  1. Helm에 EKS 리포지토리를 추가합니다.

    helm repo add eks https://aws.github.io/eks-charts
  2. App Mesh Prometheus 설치

    helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system

Prometheus 예제

다음은 Prometheus용 PersistentVolumeClaim 영구 스토리지를 생성하는 예제입니다.

helm upgrade -i appmesh-prometheus eks/appmesh-prometheus \ --namespace appmesh-system \ --set retention=12h \ --set persistentVolumeClaim.claimName=prometheus

Prometheus 사용 방법 살펴보기

Prometheus 및 Amazon EKS를 포함하는 Prometheus에 대해 자세히 알아보려면 다음을 참조하세요.

App Mesh용 CloudWatch

Envoy 통계를 Amazon EKS에서 CloudWatch로 내보내기

클러스터에 CloudWatch Agent를 설치하고 프록시에서 지표의 하위 세트를 수집하도록 구성할 수 있습니다. Amazon EKS 클러스터가 아직 없는 경우 GitHub에서 살펴보기: Amazon EKS를 포함하는 App Mesh의 단계에 따라 클러스터를 생성할 수 있습니다. 동일한 안내를 따라 클러스터에 샘플 애플리케이션을 설치할 수 있습니다.

클러스터에 대해 적절한 IAM 권한을 설정하고 에이전트를 설치하려면 Prometheus 지표 수집과 함께 CloudWatch Agent 설치의 단계를 따르세요. 기본 설치에는 Envoy 통계의 유용한 하위 세트를 가져오는 Prometheus 수집 구성이 포함되어 있습니다. 자세한 내용은 App Mesh용 Prometheus 지표를 참조하세요.

에이전트가 수집하는 지표를 표시하도록 구성된 App Mesh 사용자 지정 CloudWatch 대시보드를 생성하려면 Prometheus 지표 보기 자습서의 단계를 따르세요. 트래픽이 App Mesh 애플리케이션으로 유입되면 그래프가 해당 지표로 채워지기 시작합니다.

CloudWatch의 지표 필터링

App Mesh 지표 확장은 메시에서 정의한 리소스의 동작에 대한 인사이트를 제공하는 유용한 지표의 하위 세트를 제공합니다. CloudWatch 에이전트는 Prometheus 지표 수집을 지원하므로, Envoy에서 가져와서 CloudWatch로 전송할 지표를 선택하는 수집 구성을 제공할 수 있습니다.

Prometheus를 사용하여 지표를 스크랩하는 예제는 지표 확장 안내에서 확인할 수 있습니다.

CloudWatch 예제

AWS 샘플 리포지토리에서 CloudWatch의 샘플 구성을 찾을 수 있습니다.

CloudWatch 사용 방법 살펴보기

App Mesh의 지표 확장

Envoy는 수백 개의 지표를 몇 가지 다른 측정기준으로 세분화하여 생성합니다. 지표가 App Mesh와 연관되는 방식은 간단하지 않습니다. 가상 서비스의 경우 어떤 가상 서비스가 특정 가상 노드나 가상 게이트웨이와 통신하고 있는지 확인할 수 있는 메커니즘이 없습니다.

App Mesh 지표 확장은 메시에서 실행되는 Envoy 프록시를 개선합니다. 이러한 개선을 통해 프록시는 사용자가 정의한 리소스를 인식하는 추가 지표를 내보낼 수 있습니다. 이 소규모 추가 지표 세트는 App Mesh에서 정의한 리소스의 동작에 대한 더 나은 인사이트를 얻는 데 도움이 됩니다.

App Mesh 지표 확장을 활성화하려면 환경 변수 APPMESH_METRIC_EXTENSION_VERSION1로 설정합니다.

APPMESH_METRIC_EXTENSION_VERSION=1

Envoy 구성 변수에 대한 자세한 내용은 Envoy 구성 변수 섹션을 참조하세요.

인바운드 트래픽 관련 지표

  • ActiveConnectionCount

    • envoy.appmesh.ActiveConnectionCount — 활성 TCP 연결의 수.

    • 측정기준 — Mesh, VirtualNode, VirtualGateway

  • NewConnectionCount

    • envoy.appmesh.NewConnectionCount — 총 TCP 연결 수.

    • 측정기준 — Mesh, VirtualNode, VirtualGateway

  • ProcessedBytes

    • envoy.appmesh.ProcessedBytes — 다운스트림 클라이언트에서 전송 및 수신한 총 TCP 바이트 수.

    • 측정기준 — Mesh, VirtualNode, VirtualGateway

  • RequestCount

    • envoy.appmesh.RequestCount - 처리된 HTTP 요청 수.

    • 측정기준 — Mesh, VirtualNode, VirtualGateway

  • GrpcRequestCount

    • envoy.appmesh.GrpcRequestCount - 처리된 gPRC 요청 수.

    • 측정기준 — Mesh, VirtualNode, VirtualGateway

아웃바운드 트래픽과 관련된 지표

가상 노드 또는 가상 게이트웨이 중에서 아웃바운드 지표를 가져온 소스에 따라 다양한 측정기준이 표시됩니다.

  • TargetProcessedBytes

    • envoy.appmesh.TargetProcessedBytes — Envoy의 대상 업스트림에서 전송 및 수신된 총 TCP 바이트 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_2XX_Count

    • envoy.appmesh.HTTPCode_Target_2XX_Count — Envoy의 대상 업스트림에 대한 HTTP 요청 중에서 2xx HTTP 응답을 받은 요청 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_3XX_Count

    • envoy.appmesh.HTTPCode_Target_3XX_Count — Envoy의 대상 업스트림에 대한 HTTP 요청 중에서 3xx HTTP 응답을 받은 요청 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_4XX_Count

    • envoy.appmesh.HTTPCode_Target_4XX_Count — Envoy의 대상 업스트림에 대한 HTTP 요청 중에서 4xx HTTP 응답을 받은 요청 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • HTTPCode_Target_5XX_Count

    • envoy.appmesh.HTTPCode_Target_5XX_Count — Envoy의 대상 업스트림에 대한 HTTP 요청 중에서 5xx HTTP 응답을 받은 요청 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • RequestCountPerTarget

    • envoy.appmesh.RequestCountPerTarget — Envoy의 대상 업스트림으로 전송된 요청 수입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

  • TargetResponseTime

    • envoy.appmesh.TargetResponseTime — Envoy의 대상 업스트림에 요청을 보낸 시점부터 전체 응답을 받을 때까지 소요된 시간입니다.

    • 측정기준:

      • 가상 노드 측정기준 — Mesh, VirtualNode, TargetVirtualService, TargetVirtualNode

      • 가상 게이트웨이 측정기준 — Mesh, VirtualGateway, TargetVirtualService, TargetVirtualNode

App Mesh용 Datadog

Datadog은 클라우드 애플리케이션의 엔드투엔드 모니터링, 지표 및 로깅을 위한 모니터링 및 보안 애플리케이션입니다. Datadog을 사용하면 인프라, 애플리케이션 및 타사 애플리케이션을 완벽하게 관찰할 수 있습니다.

Datadog 설치

  • EKS - EKS로 Datadog을 설정하려면 Datadog 설명서의 다음 단계를 따르세요.

  • ECS EC2 - ECS EC2로 Datadog을 설정하려면 Datadog 설명서의 다음 단계를 따르세요.

Datadog에 대해 자세히 알아보려면 다음을 참조하세요.