0

我们有一个单独的 logstash 服务器,日志在远程机器上。我们使用伐木工人的logstash插件将这些相同的日志从远程机器发送到logstash服务器。

我试过这个:

客户端配置(存在日志):

input {
        file{
                path => "/home/Desktop/Logstash-Input/**/*_log"
        }
}

output {

        lumberjack {
                hosts => ["xx.xx.xx.xx"]
                port => 4545
                ssl_certificate => "./logstash.pub"
    }

我想从我的文件输入的路径变量中提取字段,以便相应地针对不同的字段值应用不同的解析模式。

例如:像这样的东西

grok {
    match => ["path", "/home/Desktop/Logstash-Input/(?<server>[^/]+)/(?<logtype>[^/]+)/(?<logdate>[\d]+.[\d]+.[\d]+)/(?<logfilename>.*)_log"]
}

这里服务器,logtype 是我希望在我的字段中应用不同解析模式的目录名称,例如:

filter{

   if [server] == "Server2" and [logtype] == "CronLog" {
               grok........
}


if [server] == "Server3" and [logtype] == "CronLog" {
               grok............
}
}

我应该如何在我的 logstash-server 配置上应用上述内容,因为文件输入位于我想从路径中提取字段的客户端机器上?

Lumberjack 成功地将日志发送到服务器。我尝试在客户端应用 grok:

grok {
    match => ["path", "/home/Desktop/Logstash-Input/(?<server>[^/]+)/(?<logtype>[^/]+)/(?<logdate>[\d]+.[\d]+.[\d]+)/(?<logfilename>.*)_log"]
}

我在客户端控制台上检查了它在日志中添加了服务器、日志类型等字段,但在 logstsh-server 控制台上没有添加这些字段。

我应该如何才能达到上述目的????

4

1 回答 1

0

两种选择:

  1. 在最初发货时设置字段。完整的 logstash 和 logstash-forwarder(又名伐木工人)允许您执行此操作。
  2. 从文件路径中获取信息,我的文档在一个名为“文件”的字段中。检查您的文档以找到实际的字段名称。
于 2015-05-30T00:25:17.697 回答