Logstash Elasticsearch输入schedule的时区与时间来源咨询
Logstash Elasticsearch输入调度问题解答
问题1:schedule的时间读取来源
Logstash的schedule配置读取的是运行Logstash进程的服务器本地系统时间,调度逻辑完全在Logstash端执行,和Elasticsearch服务器的时间无关。
问题2:调度使用的时区
默认情况下,Logstash的cron调度使用Logstash进程所在服务器的本地时区。如果需要指定特定时区,可以在Elasticsearch输入配置中添加timezone参数,示例:
elasticsearch { # 其他配置... schedule => "*/5 17 * * *" timezone => "Asia/Shanghai" # 指定目标时区 }
关于调度不生效的排查提示
你配置的*/5 17 * * *表示每天17点整开始,每5分钟执行一次。如果该规则未生效,大概率是Logstash服务器的本地时区和你预期的不一致,导致实际触发时间偏离预期的17点。可以先检查Logstash服务器的系统时区,再根据需要调整schedule规则或添加timezone参数。
格式化后的完整配置
input{ elasticsearch { hosts => "ip:9200" index => "indexname" user => "user" password => "elastic" query => '{ "query": { "query_string": { "query": "*" } } }' schedule => "*/5 17 * * *" # 查询执行频率:每天17点每5分钟一次 size => 1500 # 单次查询最大获取文档数 scroll => "5m" # Elasticsearch搜索上下文保留时长 docinfo => true } } filter {} output { if "API_REQUEST" in [message] { jdbc { driver_jar_path => '/usr/share/logstash/vendor/jar/jdbc/mssql-jdbc-12.2.0.jre8.jar' connection_string => "jdbc:sqlserver://ip:1433;databaseName=izdb;user=user;password=pass;ssl=false;trustServerCertificate=true" enable_event_as_json_keyword => true statement => [ "INSERT INTO Transaction (document_id, logLevel, timestamp) VALUES (?,?,?)", "document_id", "logLevel", "timestamp" ] } } }
内容的提问来源于stack exchange,提问作者Ali farahzadi
相关产品推荐
相关产品推荐

