我的问题是我创建了logstash模式(wchich是正确的),我想通过elasticsearch发送给kibana。一切都应该工作正常,但kibana无法检测到任何模式(无法获取映射)。
这是我的logstash.conf:
input {
udp {
port => 1514
type => docker
}
}
filter {
grok {
match => {
"message" => "<%{NUMBER}>%{DATA}(?:\s+)%{DATA:hostname}(?:\s+)%{DATA:imageName}(?:\s+)%{DATA:containerName}(?:\s+\[%{NUMBER}\]:\s+)(?:%{NUMBER:logCode}?(?:\s*)\[(?<logDate>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}Z)\] %{LOGLEVEL:logLevel}(?:\s*); %{DATA:logAdditionalInfo}; )?%{GREEDYDATA:logMsg}"
}
keep_empty_captures => false
remove_field => ["message"]
}
#check if logCode was matched, if not then add a logCode = 0
if [logCode] !~ /.+/ {
mutate {
add_field => { "logCode" => "0"}
}
}
}
output {
elasticsearch { }
}
任何想法如何解决这个问题?
答案 0 :(得分:0)
感谢您的回复。
好的,我会尝试尽我所能地描述我的问题。
我已创建配置文件(logstash.conf)。我安装了elasticsearch和kibana来处理日志,但是在使用logstash运行测试后,kibana没有收到任何消息,因此kibana无法获取任何映射。
我甚至尝试处理最简单的日志,看看是否一切正常,所以我使用了命令:
/opt/logstash/bin/logstash -e 'input { stdin { } } output { elasticsearch { hosts => localhost } stdout { codec => rubydebug } }
所以我可以将日志发送到elasticsearch并查看输出是否正确。
从命令行看,一切都很好:
hello world
{
"message" => "hello world",
"@version" => "1",
"@timestamp" => "2016-05-27T08:37:29.365Z",
"host" => "tm"
}
但是弹性搜索中没有输出(http://localhost:9200/_search?pretty没有看到我的日志)。
我不知道出了什么问题,因为我已经从教程中安装了logstash,elasticsearch和kibana(一步一步)。
好的,我不知道发生了什么,但它现在正在使用stdin:
"_index" : "logstash-2016.05.27",
"_type" : "logs",
"_id" : "AVTyGOQ718zRCPMUwWXj",
"_score" : 1.0,
"_source" : {
"message" : "hey hey hey world",
"@version" : "1",
"@timestamp" : "2016-05-27T12:03:17.409Z",
"host" : "tm"
但是从/etc/logstash/conf.d/使用conf运行logstash不起作用(configtest没问题)。这是我的新logstash.conf文件:
input {
file {
path => "filepath"
start_position => "beginning"
codec => multiline {
pattern => "^~"
negate => true
what => previous
}
}
}
filter {
mutate {
gsub => [ "message", "\r", "" ]
}
grok {
match => { "message" => "(?m)~%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:severity} %{GREEDYDATA:message}" }
overwrite => [ "message" ]
}
date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss,SSS" ]
}
}
output {
elasticsearch {
hosts => ["localhost"]
index => "logs-%{{+YYYY.MM.dd}}"
flush_size => 5
}
}
您是否看到一些清楚说明为什么elasticsearch没有收到任何信息?