regex - Filebeat将mysql-slow.log的几行合并为一行

标签 regex elasticsearch logstash elastic-stack filebeat

我正在尝试通过使用Filebeat Logstash和Elasticsearch分析mysql-slow.log。我在mysql-slow.log文件中有如下消息:

# Time: 2019-11-08T20:02:05.474508Z
# User@Host: user[user] @ localhost []  Id:     2
# Query_time: 0.000716  Lock_time: 0.000223 Rows_sent: 2  Rows_examined: 2
SET timestamp=1573243325;
select * from Persons;

首先,我尝试让Filebeat将这行日志消息以5行的形式发送到elasticsearch,但将它们全部一起发送到一行。

我在filebeat.yml中设置多行输入
multiline.pattern = `^\#`
multiline.negate = true
multiline.match = after

不幸的是,这行不通,elasticsearch分别接收行
  • message->#时间:2019-11-08T20:02:05.474508Z
  • message->#User @ Host:用户[user] @ localhost [] ID:2
    等等...

  • 我想在以下格式的一封邮件中收到它:
    # Time: 2019-11-08T20:02:05.474508Z # User@Host: user[user] @ localhost []  Id:     2 # Query_time: 0.000716  Lock_time: 0.000223 Rows_sent: 2  Rows_examined: 2 SET timestamp=1573243325; select * from Persons;
    

    最佳答案

    您的多行模式是错误的,它将与以#开头的任何行匹配,因此示例中的前三行将是filebeat / logstash的事件。

    您需要更改多行模式以仅匹配事件的第一行,即以# Time开头的行。

    以下filebeat配置适用于我的测试。

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /opt/data/stackoverflow/*.log
      multiline.pattern: '^\#[[:space:]]Time'
      multiline.negate: true
      multiline.match: after
    
    output.logstash:
      hosts: ["elk:5044"]
    

    logstash管道简单函数侦听5044并输出到elasticsearch,然后结果如下。

    enter image description here

    如您所见,所有文件行都被索引为Elasticsearch上的单个事件。

    关于regex - Filebeat将mysql-slow.log的几行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58773202/

    相关文章:

    elasticsearch - Redis 与 RabbitMQ 作为介于 Logstash 和 elasticsearch 之间的数据代理/消息系统

    node.js - 具有过滤器和聚合的 Elastic Search 查询不返回聚合

    elasticsearch - 如何在从 logstash 索引到 elasticsearch 时对文档进行重复数据删除

    java - 是否有 CheckStyle 规则强制 if else 关键字在 if/else 阶梯中位于同一行?

    javascript - match() 函数输入的 TypeScript "type"是什么

    javascript - 使用 javascript 从重写的 URL 获取参数

    database - 如何 “join” 2索引并在ElasticSearch中搜索?

    google-app-engine - 将日志文件从 Google Cloud Storage 导入 BigQuery

    logging - logstash/kibana中的子查询或类似查询?

    正则表达式删除具有特定符号的连续行