首页 > 解决方案 > 识别logstash jdbc SQL语句何时完成执行

问题描述

logstash.conf我已经建立了一个logstash管道,用jdbc输入和elasticsearch输出监视s的目录。

我启用.logstash_jdbc_test_last_run了,它记录了执行查询的时间:

--- 2019-08-23 15:26:42.847349000 Z

在命令行上运行 logstash 时,我的管道成功处理了一个 logstash conf 文件:

[2019-08-23T15:26:48,168][INFO ][logstash.inputs.jdbc     ] (5.250782s) select S0.* from mytable S0

我试图让我的应用程序通知 logstash 已完成对 logstash conf 的处理并且数据在 ES 中可用。有没有办法在查询完成后将时间戳写入文件(用作我的应用程序中的标志)?

标签: logstashlogstash-jdbc

解决方案


最终,我能够通过利用多个管道获得所需的结果感谢@apt-get_install_skill,您带领我走上了正确的道路!

pipelines.yml

- pipeline.id: logstash
  pipeline.workers: 1
  path.config: "/tmp/logstash*.conf"
  queue.type: persisted
- pipeline.id: postprocessing
  pipeline.workers: 1
  path.config: "/tmp/postprocessing*.conf"

logstash.conf

input {
   jdbc {
     ...
   }
}
output   {
    elasticsearch {
      ...
    }
    pipeline { send_to => [postProcessing] }
}

postprocessing.conf,它使用logstash管道的输出:

input {
    pipeline { address => postProcessing }
}
output {
    file{
        path => "/tmp/finishedflag"
        codec => "dots"
    }
}

编解码器dots,因为我不关心数据本身。

当它运行时,它将首先运行logstash管道,当它完成时,它运行postprocessing管道。


推荐阅读