Tabla de contenido
2. Escriba el archivo de configuración
2. Instrucciones de configuración (se pueden ignorar)
3. Configuración de logback-spring.xml
prefacio
Fluentd es una función de recopilación de registros de código abierto, que se puede usar junto con Elasticsearch y Kibana para crear un sistema de recopilación de registros EFK. La ventaja es que Fluentd es mucho más ligero que Logstash. El uso de memoria es menos de una décima parte de Logstash. Este artículo demostrará cómo implementar Fluentd en kubesphere k8s
1. Haz una imagen de Fluentd
Hay una imagen oficial en dockerhub, pero no hay un complemento de búsqueda elástica incorporado . En este caso, habrá algunos problemas en k8s, ¡y no se podrá instalar! !
El método de producción también es un tutorial oficial muy simple:
fluent/fluentd-docker-image: imagen de Docker para Fluentd (github.com)
Si eres demasiado perezoso para molestarte, puedes usar lo que he hecho.
aliyun: registro de extracción de la ventana acoplable.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1
2. Escriba el archivo de configuración
1. Editar configuración
Crear un nuevo archivo de configuración en kubesphere
clave:fluent.conf
valor:
<source>
@type tcp
@id depuración-entrada
puerto 4560
etiqueta depuración
<parse>
@type json
</parse>
</source><fuente>
@type tcp
@id error-entrada
puerto 4561
error de etiqueta
<parse>
@type json
</parse>
</source><translation>
@type tcp
@id business-input
port 4562
tag business
<parse>
@type json
</parse>
</source><fuente>
@type tcp
@id registro-entrada
puerto 4563
etiqueta registro
<parse>
@type json
</parse>
</source><filter record>
@type parser
key_name message
reserve_data true
remove_key_name_field true
<parse>
@type json
</parse>
</filter><coincidencia fluida.**>
@type stdout
salida_tipo json
</coincidencia><match **>
@type elasticsearch
host elastic-9g8m25-elasticsearch-master.mall-swarm
port 9200
type_name docker
logstash_format true
logstash_prefix docker-${tag}-logs
logstash_dateformat %Y-%m-%d
flush_interval 5s
include_tag_key true
</match>
2. Instrucciones de configuración (se pueden ignorar)
Define la fuente de recopilación de registros, que puede ser tcp, udp, tail (archivo), adelante (tcp+udp), http, etc.
Aquí recopilamos registros de solicitudes TCP, el puerto es 4560
y la etiqueta está configurada debug
.
<source>
@type tcp
@id debug-input
port 24221
tag debug
<parse>
@type json
</parse>
</source>
Defina el método de análisis para los datos sin procesar y convierta los registros en JSON.
La conversión de registros de depuración a JSON se puede configurar de la siguiente manera.
<source>
@type tcp
@id debug-input
port 4560
tag debug
<parse>
@type json
</parse>
</source>
Se puede realizar una serie de procesamientos en los registros recopilados, como imprimir los registros en la consola o analizar los registros.
Para record
el registro con la etiqueta como fuente, message
convertimos los atributos en él a formato JSON. De lo contrario, message
el atributo será una cadena.
<filter record>
@type parser
key_name message
reserve_data true
remove_key_name_field true
<parse>
@type json
</parse>
</filter>
Define dónde se envían finalmente los registros recopilados y se pueden enviar a stdout (consola), archivo, elasticsearch, mongo, etc.
Aquí usamos elasticsearch
para almacenar información de registro. logstash_format
, logstash_prefix
, logstash_dateformat
se usan principalmente para controlar la generación de nombres de índice de registro. El formato de índice de la configuración actual para generar registros de depuración es docker-debug-logs-2021-10-23
para flush_interval
controlar el intervalo de tiempo para la salida del registro a elasticsearch.
<match **>
@type elasticsearch
host elastic-9g8m25-elasticsearch-master.samaritan
port 9200
type_name docker
logstash_format true
logstash_prefix docker-${tag}-logs
logstash_dateformat %Y-%m-%d
flush_interval 5s
include_tag_key true
</match>
3. Configuración de logback-spring.xml
No hay nada que decir aquí, solo configure el puerto anterior para que el registro se pueda enviar a fluentd
<appender name="LOG_STASH_DEBUG" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOG_STASH_HOST}:4560</destination>
</appender>
3. Implementar con fluidez
Kubesphere implementa servicios sin estado.
Use la dirección del almacén personalizado aquí para crear y cargar la imagen espejo con el complemento es:
registro.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1。
Elija usar el puerto predeterminado
Configure el puerto de recopilación de registros.
Monte el archivo de configuración, seleccione el archivo de configuración escrito anteriormente y móntelo en el directorio /fluentd/etc.
Haga clic en Siguiente para crear.
Verifique el registro de inicio para asegurarse de que nuestro archivo de configuración personalizado se cargue sin errores.