我正在学习ELK堆栈。所以我写了一个java代码的例子,在一个文件中产生一些日志行。我试图看看日志行是否在Kibana UI中显示。所以我会尽我所能解释我所做的。所以我首先启动elasticsearch,然后logstash,然后Kibana。
我的logstash配置文件如下所示:
input {
file {
type => "java"
path => "C:/temp/logs/application.log"
codec => multiline {
pattern => "^%{MONTHDAY}/%{MONTHNUM}/%{YEAR} %{TIME}.*"
negate => "true"
what => "previous"
}
}
}
filter {
grok {
match => { "message" => "%{DATE_EU:date} %{TIME:time} %{ISO8601_TIMEZONE:zone} \[%{LOGLEVEL:loglevel}.*] \[%{DATA:thread}] %{DATA:class} - %{GREEDYDATA:message}" }
add_tag => [ "log" ]
}
}
output {
stdout {
codec => rubydebug
}
# Sending properly parsed log events to elasticsearch
elasticsearch {
hosts => ["localhost:9200"]
}
}
日志文件中的日志如下所示:
07/06/2022 14:37:41.471 +0530 [ERROR] [main] com.cmt.ncaas.logging.LoggingTrial - Trying to log an error
07/06/2022 14:37:41.471 +0530 [DEBUG] [main] com.cmt.ncaas.logging.LoggingTrial - Trying to log an debug
07/06/2022 14:37:41.471 +0530 [TRACE] [main] com.cmt.ncaas.logging.LoggingTrial - Trying to log an trace
07/06/2022 14:37:41.471 +0530 [WARN ] [main] com.cmt.ncaas.logging.LoggingTrial - Trying to log an warn
07/06/2022 14:37:41.471 +0530 [ERROR] [main] com.cmt.ncaas.logging.LoggingTrial - Exception occured:
java.lang.ArithmeticException: / by zero
at com.cmt.ncaas.logging.LoggingTrial.exceptionLogging(LoggingTrial.java:39)
at com.cmt.ncaas.logging.LoggingTrial.main(LoggingTrial.java:32)
在此之后,我创建了一个模式为logs-*
的索引模板。但我没有看到任何东西显示在Kibana中。
你能告诉我我哪里出错了吗?我怀疑是输入部分把它搞砸了。但是我是这么新,我不确定我能改变什么。
任何指点,我非常感激。提前感谢。
1条答案
按热度按时间4smxwvx51#
你在elasticsearch输出中缺少“索引”。
如果不指定,日志将进入以下任一状态:
“日志存储-%{+yyyy.MM.dd}”或“ecs日志存储-%{+yyyy.MM.dd}”
这些与您的logs-* 索引模式不匹配。
请参阅此处的文档并搜索索引部分
这应该解决:
祝你好运