【问题标题】:Use python script to edit data in logstash使用python脚本编辑logstash中的数据
【发布时间】:2021-07-19 13:58:29
【问题描述】:

我有一个logstash 配置,它从 MySQL 数据库获取数据并将数据发送到elasticsearch。 这是我的配置:

input {
  jdbc {
    clean_run => true
    jdbc_driver_library => "/usr/share/java/mysql-connector-java.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://IP:PORT/DATABASE"
    jdbc_user => "myuser"
    jdbc_password => "mypassword"
    use_column_value => true
    tracking_column => "field1"
    schedule => "*/2 * * * *"
    statement => "SELECT * FROM test"
  }
}

**need something here before the 'output' section ?**

output {
  elasticsearch {
    hosts => ["http://ELASTICSEARCH_IP:PORT"]
    index => "myindexname"
    document_id => "%{field1}"
  }
}

一切正常,但我需要添加一些值依赖于其他列值的列,因此我尝试编写 Python 脚本来执行此操作。在elasticsearch 发送数据之前,有没有办法执行 python 脚本来添加/编辑列?我需要filter 选项吗?

编辑: 例如,我使用我的 python 脚本来:

  • 根据日期时间字段创建周数列。
  • 根据日期时间字段创建月份数列。
  • 编辑“名称”列并替换一些特殊字符(“/”、“-”、“:”等...)
  • 基于另一列创建线性趋势线。
  • 根据另一列创建移动平均线。
  • 替换某些列值(例如:将“y”替换为“yes”,将“n”替换为“no”)。

【问题讨论】:

  • 我不认为你可以在 Logstash 管道配置中执行 python 脚本,但你可以在ruby 编程中编写自己的过滤器插件。这是elastic.co/guide/en/logstash/current/plugins-filters-ruby.html的方法
  • 您可以在fitler 块内执行ruby 代码,但根据您想要做什么,您可以使用logstash 拥有的众多本机过滤器之一。例如,如果您想根据其他字段的值添加一个新字段,您可以使用mutate 过滤器来实现。用一个你想做什么的例子来更新你的问题。
  • 我刚刚编辑了我的问题,以放置一些示例来说明我的 python 脚本的作用。谢谢你的帮助 :) 如果没有可能使用 python,我会转向 Ruby 代码,但我对这种语言不满意。

标签: python elasticsearch logstash mysql-connector


【解决方案1】:

我终于用 ruby​​ 代码做到了。 感谢小伙伴们的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-02
    • 2015-08-28
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 2023-04-03
    • 2014-08-07
    相关资源
    最近更新 更多