【问题标题】:Fluentbit with mycat multiline parsingFluentbit 与 mycat 多行解析
【发布时间】:2018-08-02 04:02:03
【问题描述】:

我想通过EFK做一个日志管理系统。我正在尝试几天来让我的多行 mycat 日志解析器与 fluent-bit 一起工作。

我的 fluentbit 配置:

parsers.conf:
    [PARSER]
      Name        mycat_error_log_parser_head
      Format      regex
      Regex       ^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)
      Time_Key    time
      Time_Format %Y-%m-%d %H:%M:%S.%L
      Time_Keep   On

    [PARSER]
      Name        mycat_error_log_parser
      Format      regex
      Regex       ^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)(\s+)(?<content>(.|\s)*)$
      Time_Key    time
      Time_Format %Y-%m-%d %H:%M:%S.%L
      Time_Keep   On

fluent-bit.conf
    [INPUT]
        Name tail
        tag mycat
        path /var/log/mycat.log
        Multiline On
        Parser_Firstline mycat_error_log_parser_head
        Parser mycat_error_log_parser
        Path_Key file

mycat.log 看起来像这样:

mycat.log
2018-08-02 09:59:41.205  INFO [$_NIOConnector] (io.mycat.backend.datasource.PhysicalDatasource.getConnection(PhysicalDatasource.java:529)) - no ilde connection in pool,create new connection for hostS1 of schema mysql
2018-08-02 09:59:53.939  INFO [Timer0] (io.mycat.backend.datasource.PhysicalDatasource.getConnection(PhysicalDatasource.java:529)) - no ilde connection in pool,create new connection for hostS1 of schema mysql
2018-08-02 10:00:01.173 ERROR [$_NIOConnector] (io.mycat.net.NIOConnector.finishConnect(NIOConnector.java:155)) - error:
java.net.ConnectException: Connection timed out
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[?:1.7.0_111]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:744) ~[?:1.7.0_111]
    at io.mycat.net.NIOConnector.finishConnect(NIOConnector.java:165) ~[Mycat-server-1.6.5-release.jar:?]
    at io.mycat.net.NIOConnector.finishConnect(NIOConnector.java:143) ~[Mycat-server-1.6.5-release.jar:?]
    at io.mycat.net.NIOConnector.run(NIOConnector.java:98) ~[Mycat-server-1.6.5-release.jar:?]
2018-08-02 10:00:01.173  INFO [$_NIOConnector] (io.mycat.net.AbstractConnection.close(AbstractConnection.java:514)) - close connection,reason:java.net.ConnectException: Connection timed out ,MySQLConnection [id=0, lastTime=1533175073937, user=root, schema=mysql, old shema=mysql, borrowed=false, fromSlaveDB=true, threadId=0, charset=utf8, txIsolation=3, autocommit=true, attachment=null, respHandler=null, host=parse1, port=3306, statusSync=null, writeQueue=0, modifiedSQLExecuted=false]
2018-08-02 10:00:01.173  INFO [$_NIOConnector] (io.mycat.sqlengine.SQLJob.connectionError(SQLJob.java:117)) - can't get connection for sql :select user()

我想我现在很接近了,但到目前为止还没有运气。

在我的 kibana 中。我得到以下结果: enter image description here

我的多行错误日志丢失。但我用 rubular 测试它正常解析 enter image description here

任何帮助将不胜感激。

【问题讨论】:

  • 你能解决这个问题吗?我被困在同一个地方。需要注意的是,fluent-bit.conf 中的 Parser 不会在 Multiline On 模式下使用

标签: parsing elasticsearch fluentd fluent-bit


【解决方案1】:

此配置适用于您的日志文件,Fluent Bit 使用此配置发布了 5 个文档到弹性搜索。

   parsers.conf
    [PARSER]
      Name        mycat_error_log_parser_head
      Format      regex
      Regex       ^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)(\s+)(?<content>.*)
      Time_Key    time
      Time_Format %Y-%m-%d %H:%M:%S.%L
      Time_Keep On

    [PARSER]
      Name        mycat_error_log_parser
      Format      regex
      Regex       (?m-ix)^(?<time>(\d)+(-\d+)+(\S)+\W(\S)+)(\s+)(?<action>\S+)(\s+)(?<on>\S+)(\s+)(?<content>.*)
      Time_Key    time
      Time_Format %Y-%m-%d %H:%M:%S.%L
      Time_Keep On


  fluent-bit.conf
   [INPUT]
      Name tail
      tag mycat
      path /var/log/mycat.log
      Multiline On
      Parser_Firstline mycat_error_log_parser_head
      Parser_1 mycat_error_log_parser
      Path_Key file

对问题的配置进行了两项更改 - [PARSER] 部分中的 Regex 配置已更改,并且 [INPUT] 部分中的 Parser 更改为 Parser_1。

我在多行解析中遇到过类似的问题,我的观察是 Parser_Firstline 应该覆盖多行消息中的整个第一行,而 Parser_1 .. Parser_N 应该覆盖多行消息的整个结构。

Fluent Bit 多行配置文档:https://fluentbit.io/documentation/0.12/input/tail.html

【讨论】:

    【解决方案2】:

    请将Parser 更改为Parser_1

    Parser_Firstline 必须是匹配除多行异常之外的所有内容的正则表达式 并且Parser_1 必须是匹配所有包括多行异常的正则表达式。

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多