Google Cloud 콘솔에서 Anthos Service Mesh 탐색

Google Cloud 콘솔의 Anthos Service Mesh 페이지는 서비스 동작을 관찰할 수 있게 해주는 요약 및 자세한 측정항목, 차트, 그래프를 모두 제공합니다. 서비스의 전체 상태를 모니터링하거나 특정 서비스를 상세히 살펴보아 서비스 수준 목표(SLO)를 설정하거나 문제를 해결할 수 있습니다.

요약 SLO 및 서비스 상태 보기

Anthos Service Mesh 페이지는 진입점입니다. 페이지 상단에 알림 및 SLO 요약이 표시됩니다.

이미지

SLO 상태 섹션 아래에는 서비스 메시의 서비스 상태 요약이 표시됩니다.

이미지

각 서비스 이름 옆의 아이콘은 서비스의 SLO 상태를 나타냅니다. 특정 서비스의 세부정보를 모니터링하거나 보려면 서비스 이름을 클릭합니다. 필터를 적용하여 표에 표시할 서비스를 제어할 수 있습니다.

  • SLO 상태 섹션에서 필터링 기준 링크를 클릭하여 테이블에 해당하는 서비스만 표시합니다. 예를 들어 SLO가 설정되지 않은 서비스만 표시하도록 테이블을 필터링할 수 있습니다.
  • 추가 조건을 적용하려면 테이블의 왼쪽 상단에 있는 서비스 필터링을 클릭합니다.

창의 오른쪽 상단에서 다음과 같은 컨트롤을 사용할 수 있습니다.

이미지

  • 기간 드롭다운 목록을 클릭하여 특정 기간의 상태 정보를 표시합니다.
  • 토폴로지를 클릭하여 서비스 그래프를 표시합니다.
  • 테이블 보기로 전환하려면 테이블을 클릭합니다.

서비스 그래프 탐색

다음을 보여주는 서비스 토폴로지 그래프 시각화를 탐색할 수 있습니다.

  • 메시 서비스
  • 이러한 서비스를 지원하는 Kubernetes 워크로드
  • 서비스 간의 관계

아래 스크린샷에서 프런트엔드 서비스는 단일 프런트엔드 Kubernetes 워크로드로 지원됩니다. 그러면 워크로드가 요청을 다른 여러 서비스로 보냅니다. 각 서비스 옆의 아이콘은 테이블 뷰에 표시되는 것과 동일한 SLO 상태 아이콘입니다.

이미지

서비스 아이콘을 클릭하면 몇 가지 주요 측정항목을 포함한 서비스 세부정보가 포함된 카드가 표시됩니다. 이 카드에는 특정 서비스의 개요 페이지 링크도 포함됩니다.

이미지

그래프와 상호작용할 수 있는 몇 가지 방법은 다음과 같습니다.

  • 그래프에서 이동하려면 백그라운드에서 클릭하고 드래그합니다.
  • 그래프를 확대하려면 마우스 휠을 사용합니다.
  • 더욱 손쉽게 보기 위해 그래프에서 서비스 또는 워크로드의 위치를 변경하려면 그래프 노드를 클릭하여 드래그합니다.

워크로드 아이콘 위에 마우스 포인터를 올려놓고 아이콘 오른쪽 상단에 표시되는 더하기 기호를 클릭하면 워크로드를 기본 구성요소로 확장할 수 있습니다. 더하기 기호를 몇 번 더 클릭하면 워크로드에서 배포, 복제본 집합, Pod, 컨테이너까지 상세히 살펴볼 수 있습니다.

서비스 및 통신 패턴이 시간 경과에 따라 변경되면 서비스 그래프가 이러한 변화를 추적합니다. 페이지 하단의 타임라인을 사용하여 그래프의 상태를 볼 특정 시점을 정의할 수 있습니다. 범례에는 그래프의 시간 간격이 표시됩니다.

이미지

통신 관계는 관찰된 네트워크 트래픽을 기반으로 합니다. 서비스가 지정된 시간에 통신하지 않으면 이러한 서비스 간에 에지가 존재하지 않습니다.

오른쪽의 타임라인 위에는 시간차 비교 사용 설정 아이콘(시간차 비교 사용 설정)이 있습니다.

이 아이콘을 클릭하면 그래프가 비교 모드로 전환되므로 두 시점의 그래프를 비교할 수 있습니다.
비교 모드에서 비교 모드 아이콘 아이콘을 사용하여 다양한 시각화 간에 전환할 수 있습니다.

창 하단의 타임라인은 비교하려는 두 시점을 제어합니다. 두 슬라이더를 조정하여 기간을 변경할 수 있습니다.

이미지

특정 서비스 모니터링

서비스 메시 페이지에서 테이블 또는 토폴로지 뷰에서 모니터링할 서비스를 선택할 수 있습니다. 서비스를 선택하면 왼쪽 탐색 메뉴가 다음 페이지 링크와 함께 표시됩니다.

  • 개요 페이지에는 SLO 상태, 주요 측정항목, 서비스 세부정보가 표시됩니다.

  • 상태 페이지에 SLO 세부정보가 표시됩니다.

  • 측정항목 페이지에는 주요 트래픽 및 인프라 측정항목에 대한 차트가 표시됩니다. 클러스터 및 포드와 같은 다양한 방법으로 측정항목을 분류할 수 있습니다.

  • 연결된 서비스 페이지에는 인바운드 및 아웃바운드 요청에 대한 세부정보가 표시됩니다.

  • 진단 페이지에 오류 로그가 표시됩니다.

  • 인프라 페이지에는 각 Pod에 대한 주요 측정항목 및 세부정보가 표시됩니다. 포드 이름을 클릭하면 Google Cloud 콘솔에서 워크로드 페이지로 이동할 수 있습니다.

타임라인 작업

특정 서비스의 각 페이지 상단에서 기간 드롭다운 목록을 클릭하면 특정 기간의 정보를 표시할 수 있습니다.

이미지

커스텀 시간을 지정하려면 타임라인 표시를 클릭합니다.

이미지

타임라인을 사용하여 페이지에 적용된 시간 간격을 세부적으로 조정할 수 있습니다. 타임라인에 표시된 총 기간은 기간 드롭다운 목록에 의해 제어됩니다. 새 기간을 선택하면 페이지의 타임라인과 기타 요소가 해당 기간을 반영하도록 업데이트됩니다. 예를 들어 측정항목 페이지의 그래프에는 선택한 기간에 해당하는 데이터가 표시됩니다. 기간을 더욱 세분화하려면 파란색 슬라이더를 드래그합니다.

이미지

Cloud Logging 액세스

Anthos Service Mesh 페이지는 Cloud Logging에 대한 다음 링크를 제공합니다.

  • 측정항목 페이지의 필터 선택 링크에서 트래픽 로그 보기 링크를 클릭하여 지정된 기간 동안의 서비스에 대한 모든 로그를 봅니다.

  • 진단 페이지의 창 오른쪽 상단에 있는 로깅에서 열기 링크를 클릭하여 지정된 기간 동안의 오류 로그를 봅니다.

트래픽 로그는 이름이 server-accesslog-stackdriver이고 k8s_container 모니터링 리소스에 연결되어 있습니다. 트래픽 로그에는 다음 정보가 포함됩니다.

  • ID, URL, 크기, 지연 시간, 공통 헤더 등 HTTP 요청 속성

  • 이름, 네임스페이스, ID, 일반 라벨과 같은 소스 및 대상 워크로드 정보

  • 추적이 사용 설정된 경우 샘플링, 추적 ID, 스팬 ID와 같은 추적 정보

다양한 방식으로 트래픽 로그를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

로그 항목의 예시는 다음과 같습니다.

{
  insertId: "1awb4hug5pos2qi"
  httpRequest: {
    requestMethod: "GET"
    requestUrl: "YOUR-INGRESS/productpage"
    requestSize: "952"
    status: 200
    responseSize: "5875"
    remoteIp: "10.8.0.44:0"
    serverIp: "10.56.4.25:9080"
    latency: "1.587232023s"
    protocol: "http"
  }
  resource: {
    type: "k8s_container"
    labels: {
      location: "us-central1-a"
      project_id: "YOUR-PROJECT"
      pod_name: "productpage-v1-76589d9fdc-ptnt9"
      cluster_name: "YOUR-CLUSTER-NAME"
      container_name: "productpage"
      namespace_name: "default"
    }
  }
  timestamp: "2020-04-28T19:55:21.056759Z"
  severity: "INFO"
  labels: {
    destination_principal: "spiffe://cluster.local/ns/default/sa/bookinfo-productpage"
    response_flag: "-"
    destination_service_host: "productpage.default.svc.cluster.local"
    source_app: "istio-ingressgateway"
    service_authentication_policy: "MUTUAL_TLS"
    source_name: "istio-ingressgateway-5ff85d8dd8-mwplb"
    mesh_uid: "YOUR-MESH-UID"
    request_id: "021ce752-9001-4ac6-b6d6-3b15f5d3632"
    destination_namespace: "default"
    source_principal:  "spiffe://cluster.local/ns/istio-system/sa/istio-ingressgateway-service-account"
    destination_workload: "productpage-v1"
    destination_version: "v1"
    source_namespace: "istio-system"
    source_workload: "istio-ingressgateway"
    destination_name: "productpage-v1-76589d9fdc-ptnt9"
    destination_app: "productpage"
  }
  trace: "projects/YOUR-PROJECT/traces/d4197f59b7a43e3aeff3571bac99d536"
  receiveTimestamp: "2020-04-29T03:07:14.362416217Z"
  spanId: "43226343ca2bb2b1"
  traceSampled: true
  logName: "projects/YOUR-PROJECT/logs/server-accesslog-stackdriver"
  receiveTimestamp: "2020-04-28T19:55:32.185229100Z"
}

다음 단계