elasticsearch ElastissSearch索引作为日志存储中的文件名-报价问题,elasticsearch,indexing,logstash,elasticsearch,Indexing,Logstash" /> elasticsearch ElastissSearch索引作为日志存储中的文件名-报价问题,elasticsearch,indexing,logstash,elasticsearch,Indexing,Logstash" />

elasticsearch ElastissSearch索引作为日志存储中的文件名-报价问题

elasticsearch ElastissSearch索引作为日志存储中的文件名-报价问题,elasticsearch,indexing,logstash,elasticsearch,Indexing,Logstash,我想把ElasticSearch中的索引作为上传文件的名称。我遵循了这里建议的答案-。但是,我没有将索引作为文件名接收,而是获取引号-%{index_name}之间的内容的索引。我做错了什么 更新-my syslog.conf: input { beats { port => 5044 } udp { port => 514 type => "syslog" } file { path => "C:\web-dev

我想把ElasticSearch中的索引作为上传文件的名称。我遵循了这里建议的答案-。但是,我没有将索引作为文件名接收,而是获取引号-%{index_name}之间的内容的索引。我做错了什么

更新-my syslog.conf:

input {
  beats {
    port => 5044
  }
  udp {
    port => 514
    type => "syslog"
  }
  file {
       path => "C:\web-developement\...\data\*.log"
       start_position => "beginning"
       type => "logs"
   }
}

filter {    
    grok {
     match => ["path", "data/%{GREEDYDATA:index_name}" ]
    }
}

output {
  elasticsearch { 
      hosts => ["localhost:9200"] 
      index => "%{index_name}"
      manage_template => false
  }
  stdout { codec => rubydebug }
}
UPD 2-日志存储输出:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.headius.backport9.modules.Modules (file:/C:/ELK/logstash-7.6.2/logstash-7.6.2/logstash-core/lib/jars/jruby-complete-9.2.9.0.jar) to field java.io.Console.cs
WARNING: Please consider reporting this to the maintainers of com.headius.backport9.modules.Modules
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Sending Logstash logs to C:/ELK/logstash-7.6.2/logstash-7.6.2/logs which is now configured via log4j2.properties
[2020-06-10T17:37:34,552][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
[2020-06-10T17:37:34,670][INFO ][logstash.runner          ] Starting Logstash {"logstash.version"=>"7.6.2"}
[2020-06-10T17:37:36,144][INFO ][org.reflections.Reflections] Reflections took 37 ms to scan 1 urls, producing 20 keys and 40 values
[2020-06-10T17:37:37,535][INFO ][logstash.outputs.elasticsearch][main] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}}
[2020-06-10T17:37:37,704][WARN ][logstash.outputs.elasticsearch][main] Restored connection to ES instance {:url=>"http://localhost:9200/"}
[2020-06-10T17:37:37,752][INFO ][logstash.outputs.elasticsearch][main] ES Output version determined {:es_version=>7}
[2020-06-10T17:37:37,755][WARN ][logstash.outputs.elasticsearch][main] Detected a 6.x and above cluster: the `type` event field won't be used to determine the document _type {:es_version=>7}
[2020-06-10T17:37:37,838][INFO ][logstash.outputs.elasticsearch][main] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//localhost:9200"]}
[2020-06-10T17:37:38,020][WARN ][org.logstash.instrument.metrics.gauge.LazyDelegatingGauge][main] A gauge metric of an unknown type (org.jruby.specialized.RubyArrayOneObject) has been created for key: cluster_uuids. This may result in invalid serialization.  It is recommended to log an issue to the responsible developer/development team.
[2020-06-10T17:37:38,025][INFO ][logstash.javapipeline    ][main] Starting pipeline {:pipeline_id=>"main", "pipeline.workers"=>8, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>1000, "pipeline.sources"=>["C:/ELK/logstash-7.6.2/logstash-7.6.2/config/syslog.conf"], :thread=>"#<Thread:0x577ae8e run>"}
[2020-06-10T17:37:38,798][INFO ][logstash.inputs.beats    ][main] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
[2020-06-10T17:37:39,237][INFO ][logstash.inputs.file     ][main] No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"C:/ELK/logstash-7.6.2/logstash-7.6.2/data/plugins/inputs/file/.sincedb_029446dc83f19d43b8822e485aa6e7a4", :path=>["C:\\web-developement\\project\\data\\*.log"]}
[2020-06-10T17:37:39,263][INFO ][logstash.javapipeline    ][main] Pipeline started {"pipeline.id"=>"main"}
[2020-06-10T17:37:39,312][INFO ][logstash.inputs.udp      ][main] Starting UDP listener {:address=>"0.0.0.0:514"}
[2020-06-10T17:37:39,353][INFO ][filewatch.observingtail  ][main] START, creating Discoverer, Watch with file and sincedb collections
[2020-06-10T17:37:39,378][INFO ][logstash.agent           ] Pipelines running {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]}
[2020-06-10T17:37:39,390][INFO ][logstash.inputs.udp      ][main] UDP listener started {:address=>"0.0.0.0:514", :receive_buffer_bytes=>"65536", :queue_size=>"2000"}
[2020-06-10T17:37:39,404][INFO ][org.logstash.beats.Server][main] Starting server on port: 5044
[2020-06-10T17:37:39,665][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

在过滤器中尝试以下grok模式

grok {
    match => ["path", "C:\\%{GREEDYDATA}\\%{GREEDYDATA:index_name}.log"]
}
这将匹配以
C:\
开头的任何路径,并将提取文件名并将其存储在字段
index\u name

例如,对于
path=C:\Web development\tests\filename001.log
index\u name
将是
filename001


如果您的任何文件都有大写字母,则需要使用a将
索引名称
转换为小写,索引名称中不能有大写字母,如果文件名中有空格,则还需要使用mutate筛选器删除空格,索引名称中不能有空格,这些是一些

在过滤器中尝试以下grok模式

grok {
    match => ["path", "C:\\%{GREEDYDATA}\\%{GREEDYDATA:index_name}.log"]
}
这将匹配以
C:\
开头的任何路径,并将提取文件名并将其存储在字段
index\u name

例如,对于
path=C:\Web development\tests\filename001.log
index\u name
将是
filename001



如果您的任何文件都有大写字母,则需要使用a将
索引名称
转换为小写,索引名称中不能有大写字母,如果文件名中有空格,则还需要使用mutate筛选器删除空格,索引名称中不能有空格,这些是用你的全部日志库更新你的问题的一些方法。如果您将
%{index\u name}
作为名称,您可能没有名为
index\u name
的字段,但为了确保您需要共享日志存储管道。我添加了syslog.conf。请让我知道,如果应该提供更多的信息你的工作?您在文件筛选器输入中使用的是windows路径,它使用向后斜杠,\,但您的grok尝试匹配使用向前斜杠的路径,/,这将永远不会匹配,并且您将永远不会有字段
索引\u name
,您需要更改grok。另外,索引名也有一些,使用文件名作为索引名,这似乎不是一个好主意。如果gork筛选器看起来像so-grok{match=>[“path”,“data\%{greedydydata:index_name}]},则会导致错误。如果我使用两个反斜杠\\,我会得到最初描述的错误。我知道这不是将索引作为文件名的最佳方式,但这正是我现在需要的。感谢您分享此信息。请使用完整的日志库更新您的问题。如果您将
%{index\u name}
作为名称,您可能没有名为
index\u name
的字段,但为了确保您需要共享日志存储管道。我添加了syslog.conf。请让我知道,如果应该提供更多的信息你的工作?您在文件筛选器输入中使用的是windows路径,它使用向后斜杠,\,但您的grok尝试匹配使用向前斜杠的路径,/,这将永远不会匹配,并且您将永远不会有字段
索引\u name
,您需要更改grok。另外,索引名也有一些,使用文件名作为索引名,这似乎不是一个好主意。如果gork筛选器看起来像so-grok{match=>[“path”,“data\%{greedydydata:index_name}]},则会导致错误。如果我使用两个反斜杠\\,我会得到最初描述的错误。我知道这不是将索引作为文件名的最佳方式,但这正是我现在需要的。谢谢你分享这些信息。仍然没有成功。即使设置了完整路径。它仍然将我的索引名显示为%{index_name}。%{}占位符可能有问题吗?我的文件名不包含大写字母或空格。不,需要
%{FIELDNAME}
,这是logstash访问引用字段内容的方式。尝试只使用
stdout
输出运行管道,不使用任何筛选器,并使用此输出更新您的问题,这样我们就可以看到logstash是如何处理您的消息的。您所说的输出是指我在控制台中收到的输出?!是的,
stdout
输出到控制台。我已经将输出添加到问题描述中。仍然不起作用。即使设置了完整路径。它仍然将我的索引名显示为%{index_name}。%{}占位符可能有问题吗?我的文件名不包含大写字母或空格。不,需要
%{FIELDNAME}
,这是logstash访问引用字段内容的方式。尝试只使用
stdout
输出运行管道,不使用任何筛选器,并使用此输出更新您的问题,这样我们就可以看到logstash是如何处理您的消息的。您所说的输出是指我在控制台中收到的输出?!是的,
stdout
输出到控制台。我已将输出添加到问题描述中。