我在同一台服务器上有一个syslog服务器和一个ELK堆栈。我有一个每个syslog源的目录。 我尝试使用Logstash解析syslog文件,并且我想在#34; host"中保留sys地址源的ip地址或主机名。领域。目前,我在Logstash解析后拥有0.0.0.0源代码。
我的logstash.conf:
input {
file {
path => ["path/to/file.log"]
start_position => "beginning"
type => "linux-syslog"
ignore_older => 0
}
}
filter {
if [type] == "linux-syslog" {
grok {
match => {"message" => "<%{POSINT:syslog_pri}>%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:[%{POSINT:syslog_pid}])?: %{GREEDYDATA:syslog_message}" }
}
}
}
output {
elasticsearch {
hosts => ["@IP_Elastic:Port_Elastic"]
}
stdout { codec => rubydebug }
}
答案 0 :(得分:0)
解析后,您可以使用ip变量覆盖主机。考虑这个例子:
Pipeline main started
{"ip":"1.2.3.4"}
{
"message" => "{\"ip\":\"1.2.3.4\"}",
"@version" => "1",
"@timestamp" => "2016-08-10T13:36:18.875Z",
"host" => "pandaadb",
"ip" => "1.2.3.4",
"@host" => "1.2.3.4"
}
我正在解析json以获取IP。然后我将IP字段写入主机。
过滤器:
filter {
# this parses the ip json
json {
source => "message"
}
mutate {
add_field => { "@host" => "%{ip}" }
}
}
将%{ip}替换为包含您的IP地址的任何字段。
干杯, 阿图尔