|
Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar. |
Ausgaben und ClusterAusgaben
Siehe die Dokumentation des Logging-Betreibers für die vollständigen Details zur Konfiguration von Flows und ClusterFlows.
Siehe Rancher-Integration mit Logging-Diensten: Fehlerbehebung zur Behebung von Speicherproblemen mit dem Logging-Puffer.
Ausgaben
Die Output Ressource definiert, wo Ihre Flows die Protokollnachrichten senden kann. Outputs sind die letzte Stufe für ein Logging Flow.
Die Output ist eine Namespace-Ressource, was bedeutet, dass nur ein Flow innerhalb desselben Namespace darauf zugreifen kann.
Sie können Geheimnisse in diesen Definitionen verwenden, aber sie müssen sich ebenfalls im selben Namespace befinden.
Outputs kann konfiguriert werden, indem Formulare in der Rancher-Benutzeroberfläche ausgefüllt werden.
Für die Einzelheiten der Output benutzerdefinierten Ressource siehe OutputSpec..
Die Rancher-Benutzeroberfläche bietet Formulare zur Konfiguration der folgenden Output Typen an:
-
Amazon ElasticSearch
-
Azure Storage
-
Cloudwatch
-
Datadog
-
Elasticsearch
-
Datei
-
Fluentd
-
GCS
-
Kafka
-
Kinesis Stream
-
LogDNA
-
LogZ
-
Loki
-
New Relic
-
Splunk
-
SumoLogic
-
Syslog
Die Rancher-Benutzeroberfläche bietet Formulare zur Konfiguration des Output Typs, Ziels und der Zugriffsanmeldeinformationen, falls zutreffend.
Für Beispielkonfigurationen für jedes vom Logging-Operator unterstützte Logging-Plugin siehe die Dokumentation des Logging-Operators.
ClusterOutputs
ClusterOutput definiert ein Output ohne Namespace-Einschränkungen. Es ist nur wirksam, wenn es im selben Namespace wie der Logging-Operator bereitgestellt wird.
ClusterOutputs kann konfiguriert werden, indem Formulare in der Rancher-Benutzeroberfläche ausgefüllt werden.
Für die Einzelheiten der ClusterOutput benutzerdefinierten Ressource siehe ClusterOutput.
YAML-Beispiele
Sobald das Logging installiert ist, können Sie diese Beispiele verwenden, um Ihre eigene Logging-Pipeline zu erstellen.
Cluster-Ausgabe an Elasticsearch
Angenommen, Sie möchten alle Protokolle in Ihrem Cluster an ein elasticsearch-Cluster senden. Zuerst erstellen wir ein Cluster Output.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: "example-es"
namespace: "cattle-logging-system"
spec:
elasticsearch:
host: elasticsearch.example.com
port: 9200
scheme: http
Wir haben dieses ClusterOutput ohne Elasticsearch-Konfiguration im selben Namespace wie unserem Operator erstellt: cattle-logging-system.. Jedes Mal, wenn wir ein ClusterFlow oder ClusterOutput erstellen, müssen wir es im cattle-logging-system Namespace platzieren.
Jetzt, da wir konfiguriert haben, wohin wir die Protokolle senden möchten, lassen Sie uns alle Protokolle so konfigurieren, dass sie an dieses ClusterOutput gesendet werden.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: "cattle-logging-system"
spec:
globalOutputRefs:
- "example-es"
Wir sollten jetzt unseren konfigurierten Index mit Protokollen darin sehen.
Ausgabe an Splunk
Was ist, wenn wir ein Anwendungsteam haben, das nur Protokolle aus bestimmten Namespaces an einen splunk Server senden möchte? Für diesen Fall können wir namespaced Outputs und Flows verwenden.
Bevor wir beginnen, lassen Sie uns die Anwendung dieses Teams einrichten: coolapp.
apiVersion: v1
kind: Namespace
metadata:
name: devteam
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: coolapp
namespace: devteam
labels:
app: coolapp
spec:
replicas: 2
selector:
matchLabels:
app: coolapp
template:
metadata:
labels:
app: coolapp
spec:
containers:
- name: generator
image: paynejacob/loggenerator:latest
Während coolapp läuft, werden wir einen ähnlichen Pfad einschlagen, wie bei der Erstellung eines ClusterOutput. Allerdings erstellen wir im Gegensatz zu ClusterOutputs unser Output im Namespace unserer Anwendung.
apiVersion: logging.banzaicloud.io/v1beta1
kind: Output
metadata:
name: "devteam-splunk"
namespace: "devteam"
spec:
splunkHec:
hec_host: splunk.example.com
hec_port: 8088
protocol: http
Einmal mehr, lassen Sie uns unserem Output einige Protokolle zuführen:
apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
name: "devteam-logs"
namespace: "devteam"
spec:
localOutputRefs:
- "devteam-splunk"
Ausgabe an Syslog
Angenommen, Sie möchten alle Protokolle in Ihrem Cluster an einen syslog-Server senden. Zuerst erstellen wir ein ClusterOutput:
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: "example-syslog"
namespace: "cattle-logging-system"
spec:
syslog:
buffer:
timekey: 30s
timekey_use_utc: true
timekey_wait: 10s
flush_interval: 5s
format:
type: json
app_name_field: test
host: syslog.example.com
insecure: true
port: 514
transport: tcp
Jetzt, da wir konfiguriert haben, wohin wir die Protokolle senden möchten, lassen Sie uns alle Protokolle so konfigurieren, dass sie an dieses Output gesendet werden.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: cattle-logging-system
spec:
globalOutputRefs:
- "example-syslog"
Nicht unterstützte Ausgaben
Für das letzte Beispiel erstellen wir ein Output, um Protokolle an ein Ziel zu schreiben, das nicht standardmäßig unterstützt wird:
|
Hinweis zu syslog:
|
apiVersion: v1
kind: Secret
metadata:
name: syslog-config
namespace: cattle-logging-system
type: Opaque
stringData:
fluent-bit.conf: |
[INPUT]
Name forward
Port 24224
[OUTPUT]
Name syslog
InstanceName syslog-output
Match *
Addr syslog.example.com
Port 514
Cluster ranchers
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: fluentbit-syslog-forwarder
namespace: cattle-logging-system
labels:
output: syslog
spec:
selector:
matchLabels:
output: syslog
template:
metadata:
labels:
output: syslog
spec:
containers:
- name: fluentbit
image: paynejacob/fluent-bit-out-syslog:latest
ports:
- containerPort: 24224
volumeMounts:
- mountPath: "/fluent-bit/etc/"
name: configuration
volumes:
- name: configuration
secret:
secretName: syslog-config
---
apiVersion: v1
kind: Service
metadata:
name: syslog-forwarder
namespace: cattle-logging-system
spec:
selector:
output: syslog
ports:
- protocol: TCP
port: 24224
targetPort: 24224
---
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: all-logs
namespace: cattle-logging-system
spec:
globalOutputRefs:
- syslog
---
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput
metadata:
name: syslog
namespace: cattle-logging-system
spec:
forward:
servers:
- host: "syslog-forwarder.cattle-logging-system"
require_ack_response: false
ignore_network_errors_at_startup: false
Lassen Sie uns aufschlüsseln, was hier passiert. Zuerst erstellen wir eine Implementierung eines Containers, der das zusätzliche syslog-Plugin hat und Protokolle von einem anderen fluentd akzeptiert. Als Nächstes erstellen wir ein Output, das als Forwarder für unsere Implementierung konfiguriert ist. Die Implementierung fluentd wird dann alle Protokolle an das konfigurierte syslog-Ziel weiterleiten.