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 角色可提供記錄檔的唯讀存取權。
記錄檔路由器
您也可以使用記錄檔路由器,將記錄檔轉送至支援的目的地。