Kf bietet mehrere Arten von Logs. In diesem Dokument werden diese Logs beschrieben und wie Sie darauf zugreifen.
Anwendungslogs
Alle in die Standardausgabe stdout und den Standardfehler stderr geschriebenen Logs werden in Cloud Logging hochgeladen und unter dem Lognamen user-container gespeichert.
Öffnen Sie Cloud Logging und führen Sie die folgende Abfrage aus:
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
Es sollten alle Anwendungslogs in Standard-stdout und Standardfehler stderr geschrieben sein.
Zugriffslogs für Ihre Anwendungen
Kf stellt Zugriffslogs mit Istio-Sidecar-Injection bereit. Zugriffslogs werden unter dem Lognamen server-accesslog-stackdriver gespeichert.
Öffnen Sie Cloud Logging und führen Sie die folgende Abfrage aus:
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
Sie sollten Zugriffslogs für Ihre Anwendung sehen. Beispiel für ein Zugriffslog:
{
"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"
}
Audit-Logs
Audit-Logs bieten eine chronologische Aufzeichnung von Aufrufen, die an den Kubernetes API-Server gesendet wurden. Die Einträge im Kubernetes-Audit-Log bieten hilfreiche Informationen, um verdächtige API-Anfragen zu untersuchen, Statistiken zu erfassen oder Monitoring-Benachrichtigungen für unerwünschte API-Aufrufe zu erstellen.
Öffnen Sie Cloud Logging und führen Sie die folgende Abfrage aus:
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."
Es sollte ein Trace für Aufrufe an den Kubernetes API-Server angezeigt werden.
Zugriffssteuerung für Logging
Folgen Sie dieser Anleitung, um Entwicklern und anderen Teammitgliedern Zugriff auf Logs zu gewähren. Die Rolle roles/logging.viewer bietet schreibgeschützten Zugriff auf Logs.
Logs Router
Sie können die Logs auch mit Logs Router an unterstützte Ziele weiterleiten.