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 伺服器做出的呼叫追蹤記錄。
記錄存取權控管
請按照這裡的操作說明,為開發人員和團隊其他成員提供記錄存取權。roles/logging.viewer
角色可提供記錄檔的唯讀存取權。
記錄檔路由器
您也可以使用記錄檔路由器,將記錄檔轉送至支援的目的地。