kibana看不到任何模式

时间:2016-05-23 11:43:35

标签: configuration logstash kibana

我的问题是我创建了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 { }
    }

任何想法如何解决这个问题?

1 个答案:

答案 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没有收到任何信息?