Zurück zur Startseite

Log Forwarding

Mit Log Forwarding können alle Ihre GKE Container Logs an eine bestehende zentralisierte Logging-Lösung gesendet werden.

Details

Wir erstellen eine Fluent Bit Instanz um alle Ihre Pod Logs an eine vordefinierte Adresse zu senden. Auf dieser Adresse erstellen Sie einen Empfänger, welcher das Fluentd Forward Protocol unterstützt. Im Normalfall ist diese eine Fluent Bit Instanz für einfache use-cases oder Fluentd für mehr Flexibilität. Normalerweise sollte dieser Empfänger im GKE Cluster laufen. Sofern der Empfänger ausserhalb des Clusters laufen soll, bitte kontaktieren Sie uns um die Optionen zu evaluieren.

Verfügbarkeit

Log Forwarding ist ein zusätzlicher Dienst von nine Managed GKE.

Nutzung

Lassen Sie uns wissen, auf welche Adresse wir die Logs senden sollen. Nachdem wir die Installation abgeschlossen haben, werden die Details auf runway angezeigt.

Beispiel-Empfänger mit Fluentd

Hier ein einfaches Beispiel eines möglichen Empfängers mit Fluentd. Die Logs werden von Fluentd empfangen und an stdout ausgegeben. Diese Konfiguration ist nur für debugging geeignet, um aufzuzeigen, dass die Logs korrekt empfangen werden. In einem echten Szenario sollten die Logs z.B. an eine Elasticsearch Instanz gesendet werden.

Dieses Beispiel erstellt eine ConfigMap, einen Service und ein Deployment im Namespace logging. Alle Logs, die wir senden beginnen mit dem Tag kube., somit muss ein match kube.** erstellt werden, damit alle Logs ausgewählt werden. Mit dieser Konfiguration lautet die resultierende Empfänger-Adresse fluentd.logging.svc:24224. Diese Adresse müssten Sie uns nun mitteilen, damit wir die Logs darauf senden können.

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
  namespace: logging
data:
  fluent.conf: |-
    <source>
      @type forward
      port 24224
      bind 0.0.0.0
    </source>

    <match kube.**>
      # here you would usually configure something like elasticsearch
      @type stdout
    </match>
---
apiVersion: v1
kind: Service
metadata:
  name: fluentd
  namespace: logging
spec:
  selector:
    app: fluentd
  ports:
    - protocol: TCP
      port: 24224
      targetPort: 24224
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fluentd
  namespace: logging
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fluentd
  template:
    metadata:
      labels:
        app: fluentd
      annotations:
        # we exclude this pod so we don't create a logging loop
        fluentbit.io/exclude: "true"
    spec:
      volumes:
      - name: fluentd-config
        configMap:
          name: fluentd-config
      containers:
      - name: fluentd
        image: fluent/fluentd:v1.9
        ports:
          - containerPort: 24224
        volumeMounts:
        - name: fluentd-config
          mountPath: /fluentd/etc
$ kubectl create ns logging
$ kubectl create -f fluentd.yaml
$ kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
fluentd-5465bb48d7-x5lbt   1/1     Running   0          1m
# check if logs are being received. It might take a minute for the first logs to arrive.
$ kubectl logs fluentd-5465bb48d7-x5lbt -n logging

Haben Sie die gewünschten Informationen nicht gefunden?

Kontaktieren Sie unseren Support:

+41 44 637 40 40 Support Portal support@nine.ch