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.