|
Este documento ha sido traducido utilizando tecnología de traducción automática. Si bien nos esforzamos por proporcionar traducciones precisas, no ofrecemos garantías sobre la integridad, precisión o confiabilidad del contenido traducido. En caso de discrepancia, la versión original en inglés prevalecerá y constituirá el texto autorizado. |
Salidas y Salidas de Clúster
Consulta la documentación del operador de logging para obtener todos los detalles sobre cómo configurar Flows y ClusterFlows.
Consulta Rancher Integración con Servicios de Logging: Resolución de Problemas para saber cómo resolver problemas de memoria con el búfer de logging.
Salidas
El recurso Output define dónde tu Flows puede enviar los mensajes de registro. Outputs son la etapa final para un Flow de registro.
El Output es un recurso con espacio de nombres, lo que significa que solo un Flow dentro del mismo espacio de nombres puede acceder a él.
Puedes usar secretos en estas definiciones, pero también deben estar en el mismo espacio de nombres.
Outputs se puede configurar completando formularios en la interfaz de usuario de Rancher.
Para los detalles del recurso personalizado Output, consulta OutputSpec..
La interfaz de usuario de Rancher proporciona formularios para configurar los siguientes tipos de Output:
-
Amazon ElasticSearch
-
Azure Storage
-
Cloudwatch
-
Datadog
-
Elasticsearch
-
Archivo
-
Fluentd
-
GCS
-
Kafka
-
Kinesis Stream
-
LogDNA
-
LogZ
-
Loki
-
New Relic
-
Splunk
-
SumoLogic
-
Syslog
La interfaz de usuario de Rancher proporciona formularios para configurar el tipo Output, el objetivo y las credenciales de acceso si corresponde.
Para la configuración de ejemplo de cada complemento de registro soportado por el operador de registro, consulta la documentación del operador de registro.
ClusterOutputs
ClusterOutput define un Output sin restricciones de espacio de nombres. Solo es efectivo cuando se despliega en el mismo espacio de nombres que el operador de registro.
ClusterOutputs se puede configurar completando formularios en la interfaz de usuario de Rancher.
Para los detalles del recurso personalizado ClusterOutput, consulta ClusterOutput.
Ejemplos de YAML
Una vez que se ha instalado el registro, puedes utilizar estos ejemplos para ayudar a crear tu propia canalización de registro.
Salida del clúster a ElasticSearch
Supongamos que quieres enviar todos los registros de tu clúster a un clúster elasticsearch. Primero, creamos un clúster 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
Hemos creado este ClusterOutput, sin configuración de elasticsearch, en el mismo espacio de nombres que nuestro operador: cattle-logging-system.. Cada vez que creamos un ClusterFlow o ClusterOutput, tenemos que colocarlo en el espacio de nombres cattle-logging-system.
Ahora que hemos configurado a dónde queremos que vayan los registros, configuremos todos los registros para que vayan a ese ClusterOutput.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: "cattle-logging-system"
spec:
globalOutputRefs:
- "example-es"
Ahora deberíamos ver nuestro índice configurado con registros en él.
Salida a Splunk
¿Qué pasa si tenemos un equipo de aplicación que solo quiere que se envíen registros de un espacio de nombres específico a un servidor splunk? Para este caso, podemos usar Outputs y Flows con espacio de nombres.
Antes de comenzar, configuremos la aplicación de ese equipo: 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
Con coolapp en funcionamiento, seguiremos un camino similar al que seguimos cuando creamos un ClusterOutput. Sin embargo, a diferencia de ClusterOutputs, creamos nuestro Output en el espacio de nombres de nuestra aplicación.
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
Una vez más, alimentemos a nuestro Output con algunos registros:
apiVersion: logging.banzaicloud.io/v1beta1
kind: Flow
metadata:
name: "devteam-logs"
namespace: "devteam"
spec:
localOutputRefs:
- "devteam-splunk"
Salida a Syslog
Supongamos que quieres enviar todos los registros de tu clúster a un servidor syslog. Primero, creamos un 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
Ahora que hemos configurado a dónde queremos que vayan los registros, configuremos todos los registros para que vayan a ese Output.
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow
metadata:
name: "all-logs"
namespace: cattle-logging-system
spec:
globalOutputRefs:
- "example-syslog"
Salidas no soportadas
Para el ejemplo final, creamos un Output para escribir registros en un destino que no está soportado de forma predeterminada:
|
Nota sobre 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
Desglosemos lo que está sucediendo aquí. Primero, creamos una ampliación de un contenedor que tiene el plugin adicional syslog y acepta registros reenviados desde otro fluentd. A continuación, creamos un Output configurado como reenviador a nuestra ampliación. La ampliación fluentd reenviará entonces todos los registros al destino syslog configurado.