Cómo agregar el campo de dirección IP (variable de referencia) cuando Filebeat recopila registros

Enlace original de este artículo: https://blog.csdn.net/xzk9381/article/details/114630076

Cuando se usa filebeat para recopilar registros, se agrega un campo host.name de forma predeterminada para identificar el host. Sin embargo, cuando el nombre del host no es una dirección IP, este campo no se puede filtrar fácilmente contra la dirección IP, por lo que debe agregar uno al recopilar registros El campo que muestra la dirección IP.

Para agregar campos, puede usar el módulo de campos. En este módulo, puede personalizar campos, admitir matrices, matrices y otros formatos, y también puede llamar a las variables de entorno del sistema:

filebeat.inputs:
- type: log
  paths:
  - /opt/test.log
  scan_frequency: 10s
  tail_lines: true
  fields:                     # 使用 fields 模块添加字段
    host_ip: ${
    
    SERVER_IP}     # host_ip 为字段名称,后面的值为 SERVER_IP 变量值,该变量为系统变量
  fields_under_root: true     # 将新增的字段放在顶级,收集后字段名称显示 host_ip。如果设置为 false,则放在子集,收集后显示为 fields.host_ip

Una vez completada la configuración, configure las variables de entorno correspondientes en / etc / profile y surta efecto en el sistema. Reinicie filebeat (necesita actualizar el modo de índice en kibana).

Cabe señalar que si el reinicio de filebeat se ejecuta localmente, filebeat puede obtener los nombres de las variables del sistema normalmente. Sin embargo, si el comando ssh se ejecuta de forma remota en otra máquina para reiniciar filebeat, puede hacer que filebeat no se inicie.

Por ejemplo, en mi entorno actual de prueba de filebeat, el comando para reiniciar filebeat se ejecuta de forma remota desde el trampolín:

bash /opt/filebeat-7.3.0/filebeat.sh ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15528.yml restart

El script filebeat.sh se usa para iniciar filebeat de acuerdo con el archivo de configuración y puede escribirlo usted mismo

Pero en el caso de usar variables del sistema, el reinicio remoto de filebeat falla. Verifique el registro de filebeat y encuentre el siguiente error:

Exiting: Error while initializing input: missing field accessing 'filebeat.inputs.0.fields.host_ip' (source:'/opt/filebeat-7.3.0/conf/ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15520.yml')

Este problema se produce porque filebeat no puede cargar variables de entorno. La razón por la que las variables de entorno no se pueden cargar es que cuando el comando de shell se ejecuta de forma remota, es un shell no interactivo y sin inicio de sesión. Para este modo, buscará la variable de entorno BASH_ENV, usará el valor de la variable como nombre de archivo y lo cargará si lo encuentra. Sin embargo, el valor de esta variable generalmente no se establece en el sistema, por lo que la variable de entorno no se puede cargar.

La forma más fácil de resolver este problema es agregar la opción -l al ejecutar el script, que abrirá un shell de inicio de sesión para que se pueda cargar el archivo de configuración de la variable de entorno global / etc / profile. Las variables configuradas anteriormente también tendrán efecto. Así que modifique el comando original de la siguiente manera:

bash -l /opt/filebeat-7.3.0/filebeat.sh ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15528.yml restart

Enlace original de este artículo: https://blog.csdn.net/xzk9381/article/details/114630076

Supongo que te gusta

Origin blog.csdn.net/xzk9381/article/details/114630076
Recomendado
Clasificación