【问题标题】:Logstash Scheduling first runLogstash 调度首次运行
【发布时间】:2020-04-01 05:56:28
【问题描述】:

我有一个 logstash 管道每 5 分钟运行一次,配置低于 jdbc,问题是在第一次启动管道时,它也等待 5 分钟然后开始调度。有什么方法可以指定我们的查询/语句在 logstash 管道启动后立即执行,而不是在前 5 分钟等待?

input {
  jdbc {
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://${DB_HOST}/${DB_NAME}?useSSL=false"
    jdbc_user => "${DB_USER_NAME}"
    jdbc_password => "${DB_PASSWORD}"
    schedule => "*/5 * * * *"    
    statement => "Select * from students"
  }
}

【问题讨论】:

    标签: elasticsearch logstash elk


    【解决方案1】:

    另一种解决方法是使用两个 jdbc 输入,一个用于启动,一个用于调度。它需要一些复制/粘贴,但还不错。

    input {
        jdbc {
            id => "index_name_startup"
            jdbc_connection_string => "${JDBC_STRING}"
            jdbc_user => "${JDBC_USER}"
            jdbc_password => "${JDBC_PASSWORD}"
            jdbc_driver_library => "/opt/logstash/postgresql-42.2.5.jre7.jar"
            jdbc_driver_class => "org.postgresql.Driver"
            add_field => { "[@metadata][project_id]" => "index_name" }
            statement_filepath => "/mnt/elastic-search-config/sql-scripts/assets-index_name.sql"
        }
    
        jdbc {
            id => "index_name"
            jdbc_connection_string => "${JDBC_STRING}"
            jdbc_user => "${JDBC_USER}"
            jdbc_password => "${JDBC_PASSWORD}"
            jdbc_driver_library => "/opt/logstash/postgresql-42.2.5.jre7.jar"
            jdbc_driver_class => "org.postgresql.Driver"
            add_field => { "[@metadata][project_id]" => "index_name" }
            statement_filepath => "/mnt/elastic-search-config/sql-scripts/assets-index_name.sql"
            schedule => "0 * * * *"
        }
    }
    
    filter {
        mutate {
            gsub => [
             "name", "_", " ",
             "name", "-", " "
            ]
        }
    }
    
    output {
        if [@metadata][project_id] == "index_name" {
            elasticsearch {
                index => "index_name"
                document_id => "%{geom_id}"
                hosts => "localhost:9200"
                template_name => "assets_template"
                id => "index_name_es"
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      不,这不是rufus cron 计划的工作方式(这就是 jdbc 输入使用的方式)。有一个 open issue 包含一个指向添加此补丁的补丁的链接。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 2010-10-30
        相关资源
        最近更新 更多