如何匹配LogStash中的数据一个来自API的数据输入,第二个数据输入了服务器上的CSV文件

发布于 2025-02-06 18:15:01 字数 798 浏览 1 评论 0原文

我尝试了所有可能的情况,但无法匹配API和CSV文件之间的数据。我的最终目标是从REST API中读取主机密钥,并与CSV文件匹配并打印各自的OS。请建议,如下所示

    input{
  http{
      host => "*****"
      port => "****"
      type => "api_input"
     }
  file {
     path => "/etc/logstash/conf.d/Event.csv"
     start_position => "beginning"
     sincedb_path => "/dev/null"
  }
}
filter {
  csv {
      separator => ","
      skip_header => "true"
      columns => ["server", "os"]
      }
if [server] == [result][host] {
         mutate { add_field => { "OS_Name" => "%{[os]}" } }
           }

else{drop {}}
}
output {
  stdout {
    codec => rubydebug
    }
}

-CSV文件数据: - Server_1,Windows server_2,linux server_3,unix Server_4,Windows

API数据: - {“结果”:[{“ host”:“ server_4”,“参数”:“ 22”}]}

I have tried all possible case but unable to match data between API and CSV file. my ultimate goal is read host key from REST API and matching with CSV file and print respective OS. Please suggest, Configuration as below -

    input{
  http{
      host => "*****"
      port => "****"
      type => "api_input"
     }
  file {
     path => "/etc/logstash/conf.d/Event.csv"
     start_position => "beginning"
     sincedb_path => "/dev/null"
  }
}
filter {
  csv {
      separator => ","
      skip_header => "true"
      columns => ["server", "os"]
      }
if [server] == [result][host] {
         mutate { add_field => { "OS_Name" => "%{[os]}" } }
           }

else{drop {}}
}
output {
  stdout {
    codec => rubydebug
    }
}

csv file data :-
server_1,Windows
server_2,Linux
server_3,Unix
server_4,Windows

API data :-
{"result":[{"host":"server_4","parameter":"22"}]}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蹲在坟头点根烟 2025-02-13 18:15:01

translate 两列CSV文件中的字段。

The translate filter can do a lookup of a field in a two column CSV file.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文