kubesphere k8s instala Fluentd con el complemento elasticsearch

Tabla de contenido

prefacio

1. Haz una imagen de Fluentd

2. Escriba el archivo de configuración

1. Editar configuración

2. Instrucciones de configuración (se pueden ignorar)

 3. Configuración de logback-spring.xml

3. Implementar con fluidez




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)

 <fuente>

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 4560y la etiqueta está configurada debug.

<source>
  @type  tcp
  @id    debug-input
  port  24221
  tag debug
  <parse>
    @type json
  </parse>
</source>

 <analizar>

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>

 <filtro xxx>

Se puede realizar una serie de procesamientos en los registros recopilados, como imprimir los registros en la consola o analizar los registros.

Para recordel registro con la etiqueta como fuente, messageconvertimos los atributos en él a formato JSON. De lo contrario, messageel atributo será una cadena.

<filter record>
  @type parser
  key_name message
  reserve_data true
  remove_key_name_field true
  <parse>
    @type json
  </parse>
</filter>

 <coincidencia>

Define dónde se envían finalmente los registros recopilados y se pueden enviar a stdout (consola), archivo, elasticsearch, mongo, etc.

 Aquí usamos elasticsearchpara almacenar información de registro. logstash_format, logstash_prefix, logstash_dateformatse 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-23para flush_intervalcontrolar 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.


Supongo que te gusta

Origin blog.csdn.net/qq_31277409/article/details/120922878
Recomendado
Clasificación