我有一个4实例的Nagios日志服务器集群,它处理来自多个服务器的日志。我希望日志条目具有处理它的日志服务器的名称;processingLogServer";;
if [type] == 'Log' {
grok {
match => [ 'message', '%{TIME:logTime}%{GREEDYDATA:logEntry}' ]
}
mutate {
remove_field => [ '@version', 'highlight', 'port', 'SourceModuleType', 'EventReceivedTime', 'message' ]
add_field => [ 'processingLogServer', 'hostname' ]
}
}
我需要的解决方案是使用ruby,根据https://discuss.elastic.co/t/logstash-hostname-as-field/146662
filter {
ruby {
init => "require 'socket'"
code => "event['some-field-name'] = Socket.gethostname"
}
}
您可以在logstash配置文件中使用环境变量。因此,您可以使用它将依赖于服务器的信息添加到日志中:
在Windows上,COMPUTERNAME
环境可用于:
mutate {
add_field => { "processingLogServer" => "${COMPUTERNAME}" }
}
在Linux系统上,您应该能够使用HOSTNAME
环境变量。
或者您可以使用由logstash自动创建和设置的host
字段。
您可以复制如下字段的内容:
mutate {
add_field => { "processingLogServer" => "%{host}" }
}