버전 2.4

로깅

Kf는 여러 유형의 로그를 제공합니다. 이 문서에서는 이러한 로그와 로그에 액세스하는 방법을 설명합니다.

애플리케이션 로그

표준 출력 stdout 및 표준 오류 stderr에 작성된 모든 로그가 Cloud Logging에 업로드되며 로그 이름 user-container으로 저장됩니다.

Cloud Logging을 열고 다음 쿼리를 실행합니다.

resource.type="k8s_container"
log_name="projects/YOUR_PROJECT_ID/logs/user-container"
resource.labels.project_id=YOUR_PROJECT_ID
resource.labels.location=GCP_COMPUTE_ZONE (e.g. us-central1-a)
resource.labels.cluster_name=YOUR_CLUSTER_NAME
resource.labels.namespace_name=YOUR_KF_SPACE_NAME
resource.labels.pod_name:YOUR_KF_APP_NAME

표준 stdout 및 표준 오류 stderr에 작성된 모든 애플리케이션 로그가 표시됩니다.

애플리케이션 액세스 로그

Kf는 Istio 사이드카 삽입을 사용하여 액세스 로그를 제공합니다. 액세스 로그는 로그 이름 server-accesslog-stackdriver에 저장됩니다.

Cloud Logging을 열고 다음 쿼리를 실행합니다.

resource.type="k8s_container"
log_name="projects/YOUR_PROJECT_ID/logs/server-accesslog-stackdriver"
resource.labels.project_id=YOUR_PROJECT_ID
resource.labels.location=GCP_COMPUTE_ZONE (e.g. us-central1-a)
resource.labels.cluster_name=YOUR_CLUSTER_NAME
resource.labels.namespace_name=YOUR_KF_SPACE_NAME
resource.labels.pod_name:YOUR_KF_APP_NAME

애플리케이션의 액세스 로그가 표시됩니다. 샘플 액세스 로그:

{
  "insertId": "166tsrsg273q5mf",
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "http://test-app-38n6dgwh9kx7h-c72edc13nkcm.***. ***.nip.io/",
    "requestSize": "738",
    "status": 200,
    "responseSize": "3353",
    "remoteIp": "10.128.0.54:0",
    "serverIp": "10.48.0.18:8080",
    "latency": "0.000723777s",
    "protocol": "http"
  },
  "resource": {
    "type": "k8s_container",
    "labels": {
      "container_name": "user-container",
      "project_id": ***,
      "namespace_name": ***,
      "pod_name": "test-app-85888b9796-bqg7b",
      "location": "us-central1-a",
      "cluster_name": ***
    }
  },
  "timestamp": "2020-11-19T20:09:21.721815Z",
  "severity": "INFO",
  "labels": {
    "source_canonical_service": "istio-ingressgateway",
    "source_principal": "spiffe://***.svc.id.goog/ns/istio-system/sa/istio-ingressgateway-service-account",
    "request_id": "0e3bac08-ab68-408f-9b14-0aec671845bf",
    "source_app": "istio-ingressgateway",
    "response_flag": "-",
    "route_name": "default",
    "upstream_cluster": "inbound|80|http-user-port|test-app.***.svc.cluster.local",
    "destination_name": "test-app-85888b9796-bqg7b",
    "destination_canonical_revision": "latest",
    "destination_principal": "spiffe://***.svc.id.goog/ns/***/sa/sa-test-app",
    "connection_id": "82261",
    "destination_workload": "test-app",
    "destination_namespace": ***,
    "destination_canonical_service": "test-app",
    "upstream_host": "127.0.0.1:8080",
    "log_sampled": "false",
    "mesh_uid": "proj-228179605852",
    "source_namespace": "istio-system",
    "requested_server_name": "outbound_.80_._.test-app.***.svc.cluster.local",
    "source_canonical_revision": "asm-173-6",
    "x-envoy-original-dst-host": "",
    "destination_service_host": "test-app.***.svc.cluster.local",
    "source_name": "istio-ingressgateway-5469f77856-4n2pw",
    "source_workload": "istio-ingressgateway",
    "x-envoy-original-path": "",
    "service_authentication_policy": "MUTUAL_TLS",
    "protocol": "http"
  },
  "logName": "projects/*/logs/server-accesslog-stackdriver",
  "receiveTimestamp": "2020-11-19T20:09:24.627065813Z"
}

감사 로그

감사 로그는 Kubernetes API 서버로 보낸 호출 시간순 기록을 제공합니다. Kubernetes 감사 로그 항목은 의심스러운 API 요청 조사, 통계 수집 또는 원치 않는 API 호출에 대한 모니터링 알림 생성에 유용합니다.

Cloud Logging을 열고 다음 쿼리를 실행합니다.

resource.type="k8s_container"
log_name="projects/YOUR_PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity"
resource.labels.project_id=YOUR_PROJECT_ID
resource.labels.location=GCP_COMPUTE_ZONE (e.g. us-central1-a)
resource.labels.cluster_name=YOUR_CLUSTER_NAME
protoPayload.request.metadata.name=YOUR_APP_NAME
protoPayload.methodName:"deployments."

Kubernetes API 서버로 전달되는 호출에 대한 trace가 표시됩니다.

액세스 제어 로깅

여기에서 안내에 따라 개발자 및 팀의 다른 구성원에게 로그 액세스 권한을 부여합니다. roles/logging.viewer 역할은 로그에 대한 읽기 전용 액세스 권한을 제공합니다.

로그 라우터

로그 라우터를 사용하여 로그를 지원되는 대상으로 라우팅할 수도 있습니다.