Utilice el módulo propio de filebeat para leer registros de nginx y registros de mysql y guárdelos en elasticsearch
Muchos tutoriales en línea son filebeat leen el archivo y luego se envían al logstash resuelto, luego se envían a elasticsearch
buscando durante mucho tiempo no encontré filebeat leyó el archivo enviado a elasticsearch hoy para aprender en su propio registro
documentación de referencia documentación del comando filebeat , documentación de los módulos filebeat
配置 filebeat.yml
~~~yaml
output.elasticsearch:
enabled: true
hosts: ["192.168.0.202:9200"]
#index: "log-%{[event.dataset]}-%{+yyyy.MM.dd}" 也可以不用配置下面的indices,直接配置这个即可
#默认索引格式 filebeat-%{[agent.version]}-%{+yyyy.MM.dd}
indices:
#自定义索引,更细粒度的控制索引,注意不会使用到filebeat索引模板,想要特定的字段类型 需要自己配置索引模板
- index: "log-%{[event.dataset]}-%{+yyyy}" #按年索引
#条件语法参考https://www.elastic.co/guide/en/beats/filebeat/7.9/defining-processors.html#conditions
when.equals:
#需要提前知道数据格式 再决定如何判断
event.module: "mysql"
- index: "log-%{[event.dataset]}-%{+yyyy.MM.dd}" #按天索引
when.equals:
event.module: "nginx"
Ejecutar filebeat
No es necesario cambiar el archivo de configuración del módulo para abrir por comando
#运行filebeat -e输出详细日志 -modeules
./filebeat run -e -modules=mysql,nginx -M "mysql.slowlog.var.paths=['/data/mariadb/13306/data/log/mariadb-slow.log*']" -M "nginx.access.var.paths=['/usr/local/nginx/logs/access.log']" -M "nginx.error.var.paths=['/usr/local/nginx/logs/error.log']"
Nota: Esta forma de inicio es solo una parte de la configuración, la visualización no es buena, se recomienda utilizar el archivo de configuración
Abrir mediante archivo de configuración
Use el comando para abrir el módulo
O vaya directamente al directorio modules.d para modificar el nombre de archivo del archivo de configuración correspondiente y eliminar .disabled
#开启模块 运行完这个命令之后 你会发现modules.d目录下 nginx.yml.disabled变成了nginx.yml
./filebeat enable nginx mysql
Editar configuración
módulos.d / mysql.yml
# Module: mysql
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.10/filebeat-module-mysql.html
- module: mysql
# Error logs
error:
enabled: false
slowlog:
enabled: true
#慢日志路径
var.paths: ["/data/mariadb/13306/data/log/mariadb-slow.log*"]
módulos.d / nginx.yml
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.10/filebeat-module-nginx.html
- module: nginx
# Access logs
access:
enabled: true
#nginx access日志
var.paths: ["/usr/local/nginx/logs/access.log*"]
error:
enabled: true
#nginx error日志
var.paths: ["/usr/local/nginx/logs/error.log*"]
ingress_controller:
enabled: false
Abrir filebeat
#启动filebeat
./filebeat run -e
Resultados de la prueba
Agregar registro de prueba
Declaración de prueba de registro lento de MySQL
select sleep(2);
Prueba de Nginx, ponte a prueba
curl 192.168.0.202/test
Ver lista de índice
El formato final de los datos guardados es el siguiente
Comandos comunes
#查看支持的模块
./filebeat modules list
#设置初始环境,包括索引模板,ILM策略和写入别名,Kibana仪表板(如果可用)以及机器学习作业(如果可用)。
./filebeat setemp
#开启指定模块 比如mysql 然后去编辑/modules.d/mysql.yml
./filebeat modules enable mysql