Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LogStash dissect,key=value,逗号_Logstash_Logstash Grok_Logstash Configuration - Fatal编程技术网

LogStash dissect,key=value,逗号

LogStash dissect,key=value,逗号,logstash,logstash-grok,logstash-configuration,Logstash,Logstash Grok,Logstash Configuration,我有一个包含性能和统计数据的日志模式。我已经配置了LogStash,将此数据解析为csv格式,以便将值保存到ES ,www1,3,双测试,扫描,330712.62035,17.3221.4656.3 我正在使用以下LogSTash过滤器并获得所需的结果 grok { match => { "Message" => "\A<%{POSINT:priority}>,%{DATA:pan_host},%{DATA:pan_serial_number},%{DATA:pan_

我有一个包含性能和统计数据的日志模式。我已经配置了LogStash,将此数据解析为csv格式,以便将值保存到ES

,www1,3,双测试,扫描,330712.62035,17.3221.4656.3

我正在使用以下LogSTash过滤器并获得所需的结果

grok {
  match => { "Message" => "\A<%{POSINT:priority}>,%{DATA:pan_host},%{DATA:pan_serial_number},%{DATA:pan_type},%{GREEDYDATA:message}\z" }
  overwrite => [ "Message" ]
}
csv {
  separator => ","
  columns => ["pan_scan","pf01","pf02","pf03","kk04","uy05","xd06"]
}
只要列的顺序不被弄乱,这对我来说目前运行良好

但是,我想使这个日志文件更有意义,并在原始日志中包含每个列名。例如,WWW130000,双测试,扫描,pf01=330,pf02=712.6,pf03=2035,kk04=17.3,uy05=221.4,xd06=656.3


这样,我可以在过程中间继续插入或追加键/值,而不损坏数据。通过使用LogStash5.3

和@baudsp建议,我能够表述以下内容。我完全删除了csv{}块,并将其替换为kv{}块。kv{}自动创建所有键值,让我只将{}字段变为浮点数和整数

 json {
  source => "message"
  remove_field => [ "message", "headers" ]
 }
 date {
   match => [ "timestamp", "YYYY-MM-dd'T'HH:mm:ss.SSS'Z'" ]
   target => "timestamp"
 }
 grok {
   match => { "Message" => "\A<%{POSINT:priority}>,%{DATA:pan_host},%{DATA:pan_serial_number},%{DATA:pan_type},%{GREEDYDATA:message}\z" }
   overwrite => [ "Message" ]
 }
 kv {
  allow_duplicate_values => false
  field_split_pattern => ","
 }
使用上面的块,我能够在消息中的任意位置插入K=V对。再次感谢你的帮助。我为任何试图完成此任务的人添加了一个示例代码块

注意:我使用NLog进行日志记录,它生成JSON输出。从C代码看,格式如下所示

var logger = NLog.LogManager.GetCurrentClassLogger();
logger.ExtendedInfo("<1>,www1,30000,BISTATS,SCAN,pf01=330,pf02=712.6,pf03=2035,kk04=17.3,uy05=221.4,xd06=656.3");

而不是格罗克,这是太脆弱的方式,这个,使用。对于键值对,使用。