各位长老 logstash分析syslog问题 关于@timestamp数组
以下是我的logstash 的conf 目的是从waf回收syslog日志 使用ruby plugin进行解析字符串
input {
syslog {
port => 1514
syslog_field => "syslog"
}
}
filter{
if "waf_attack" not in [message] { drop{} }
ruby{
init=>"@names=['os', 'osVersion', 'logdate', 'wafos', 'attack_level', 'shebei', 'logtype', 'buzhidao', 'originIp', 'originPort', 'aimIp', 'aimPort', 'protocol', 'celue', 'serverDomain', 'url', 'parama', 'method', 'clientType', 'buzhidao2', 'buzhidao3', 'realIp', 'fengxiandengji', 'attack_type', 'guizebianhao', 'chuzhifangshi', 'buzhidao5', 'wenti1', 'wenti2', 'buzhidao8', 'buzhidao9']"
code=>"message = event.get('message')
arr_message = message.scan(/(?<=\").*?(?=\")/)
arr_message.delete_if{|x| x==' '}
newevent = LogStash::Event.new(Hash[@names.zip(arr_message)])
event.append(newevent)"
remove_field => [ "@timestamp" ]
add_field => { "@timestamp" => "%{logdate}" }
}
geoip {
source => "originIp"
}
}
output {
stdout {
codec => rubydebug
}
}
问题出现在 解析结果上
解析结果产生@timestamp为一个数组了 这导致我无法将这个结果传给elasticsearch
我想使用以下方法 删除再创建 但是由于@timestamp是数组 导致ruby语法错误
remove_field => [ "@timestamp" ]
add_field => { "@timestamp" => "%{logdate}" }
想请问
1.为什么@timestamp出现两条记录?
2.是否是由于ruby插件造成的 我该如何将两条记录删除一条 把@timestamp转变成正常的文本类型
请赐教
补充 不使用filter的情况下 @timestamp是正常的
补充2 目前可以断定是因为下面这一句造成的event.append(newevent)"
执行这一句之后 会产生第二条@timestamp值
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论