elasticsearch 正确设置了使用logstash到kibana解析自定义日志,我看不到任何错误和数据
我正在和kibana玩一玩,看看它是如何工作的 我能够直接从同一台服务器添加nginx日志数据,而无需日志存储,并且工作正常。但是使用logstash从不同的服务器读取日志文件不会显示数据。没有错误。。但没有数据 我有来自的自定义日志,它为我运行一些PHP脚本,消息的格式如下:
elasticsearch 正确设置了使用logstash到kibana解析自定义日志,我看不到任何错误和数据,
elasticsearch,logstash,kibana,filebeat,
elasticsearch,Logstash,Kibana,Filebeat,我正在和kibana玩一玩,看看它是如何工作的 我能够直接从同一台服务器添加nginx日志数据,而无需日志存储,并且工作正常。但是使用logstash从不同的服务器读取日志文件不会显示数据。没有错误。。但没有数据 我有来自的自定义日志,它为我运行一些PHP脚本,消息的格式如下: Timestamp[LogLevel]:msg 例如: 2021-02-21 21:34:17 [DEBUG]: file size matches written file size 1194179 所以我的gork
Timestamp[LogLevel]:msg
例如:
2021-02-21 21:34:17 [DEBUG]: file size matches written file size 1194179
所以我的gork过滤器是:
"%{DATESTAMP:timestamp} \[%{LOGLEVEL:loglevel}\]: %{GREEDYDATA:msg}"
我检查了,语法与文件格式匹配
我有一些包含后缀out
的文件,它们是调试级别的,还有一些带有后缀error
的文件是错误级别的
因此,为了在kibana服务器上配置logstash,我添加了文件/etc/logstash/conf.d/pipeline.conf
,其中包含以下内容:
input {
beats {
port => 5544
}
}
filter {
grok {
match => {"message"=>"%{DATESTAMP:timestamp} \[%{LOGLEVEL:loglevel}\]: %{GREEDYDATA:msg}"}
}
mutate {
rename => ["host", "server"]
convert => {"server" => "string"}
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
user => "<USER>"
password => "<PASSWORD>"
}
}
- type: filestream
enabled: true
paths:
- /home/ubuntu/.pm2/*-error-*log
fields:
level: error
- type: filestream
enabled: true
paths:
- /home/ubuntu/.pm2/logs/*-out-*log
fields:
level: debug
我尝试使用log
而不是filestream
结果是一样的。
但是使用filestream
是有意义的,因为日志会在上不断更新
因此,我在一台服务器上运行了logstash
,在另一台服务器上运行了filebeat
,打开了防火墙端口,我可以看到它们正在连接,但在Kibana logs仪表板中没有看到与我使用logstash获取的文件相关的任何新数据
filebeat日志始终显示这一行Feb 24 04:41:56 vcx-prod-backup-01 filebeat[3797286]:2021-02-24T04:41:56.991Z信息[file_watcher]filestream/fswatch.go:131开始下一次扫描
和一些关于分析指标的信息,这样看起来很好,但仍然没有数据
我试图在这里提供尽可能多的信息,我是kibana的新手,我不知道如果没有错误,为什么kibana中不会显示数据
我想可能我没有正确地跳过gork过滤器中的方括号,所以我尝试使用“%{DATESTAMP:timestamp}\\\[%{LOGLEVEL:LOGLEVEL}\\\]:%{greedyddata:msg}”
替换\[
,但结果是一样的
如能提供有关此问题的任何信息,将不胜感激
#更新
ֿ
使用堆栈版本7.11.1
根据@leandrojmp的建议,我改回了log
,而不是filestream
我检查了harverser.go
filebeat中的相关行,发现如下:
Feb 24 14:16:36 SERVER filebeat[4128025]: 2021-02-24T14:16:36.566Z INFO log/harvester.go:302 Harvester started for file: /home/ubuntu/.pm2/logs/cdr-ssh-out-1.log
Feb 24 14:16:36 SERVER filebeat[4128025]: 2021-02-24T14:16:36.567Z INFO log/harvester.go:302 Harvester started for file: /home/ubuntu/.pm2/logs/cdr-ftp-out-0.log
我还注意到,当我将输出配置为stdout时,我确实看到了来自另一台服务器的事件。因此,logstash确实正确地接收了它们,但由于某些原因,我在kiban中没有看到它们。如果您同时使用
stdout
和elasticsearch
输出,但在Kibana中看不到日志,那么您可以我需要在Kibana中创建一个索引模式
,以便它可以显示您的数据
在为您的数据创建
索引模式之后,在您的情况下索引模式可能类似于logstash-*
,您需要在Kibana中配置Logs应用程序来查找此索引,默认情况下Logs应用程序查找filebeat-*
索引。好的……因此@leandrojmp在unde中帮了我很多忙了解kibana的情况。谢谢!所有的功劳都归你!只想写一个日志回答,帮助其他人克服初始设置
让我们重新开始
我想要一个kibana节点,用于监视不同服务器上的自定义日志。
我在两者上都安装了ubuntu最新的LTS,添加了deb存储库,第一个安装了kibana、elsaticsearch和logstash,第二个安装了filebeat
基本的设置没有太多的安全性和SSL,这不是我在这里寻找的,因为我是这个主题的新手,一切都是基本设置
在kibana.yml
中,我将主机更改为0.0.0
,而不是localhost
,以便可以从外部连接,并在logstash中添加了以下配置文件:
input {
beats {
port => 5544
}
}
filter {
grok {
match => {"message"=>"%{DATESTAMP:timestamp} \[%{LOGLEVEL:loglevel}\]: %{GREEDYDATA:msg}"}
}
mutate {
rename => ["host", "server"]
convert => {"server" => "string"}
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}
我没有使事情复杂化,也不需要设置额外的身份验证
my filebeat.yml配置:
- type: log
enabled: true
paths:
- /home/ubuntu/.pm2/*-error-*log
fields:
level: error
- type: log
enabled: true
paths:
- /home/ubuntu/.pm2/logs/*-out-*log
level: debug
我启动了一切,在任何日志中都没有错误,但在kibana中仍然没有数据,因为我不知道elasticsearch如何存储它的数据,我需要找出如何连接到elasticsearch并查看数据是否存在,所以我执行了curl-X GEThttp://localhost:9200/_cat/indices?v
并注意到一个logstash索引,所以我执行了curl-X得到http://localhost:9200/logstash-2021.02.24-000001/_search
我注意到日志数据显示在数据库中
因此,这一定意味着它与kibana有关。因此,在设置下使用kibana的web界面时,我注意到一个名为索引模式的配置,用于匹配包含日志数据的索引,并且那里的输入与logstash索引名不匹配,因此我在其中添加了,logstash*
,瞧!它起作用了:)
谢谢您使用的是哪个版本的堆栈?文件流
仍然是实验性的,我建议您将其更改回日志
,直到您发现什么不起作用。将其更改为日志
,重新启动filebeat并使用harvester查找行。转到filebeat日志中的
。如果使用stdout
如果您看到事件,那么问题可能出现在logstash和elasticsearch之间的通信中,或者在尝试接收文档时出现在elasticsearch中。您应该同时查看日志、logstash日志和elasticsearch日志,以查看是否有任何相关信息、任何错误或警告。@leandrojmp-出于某种原因没有考虑到这些问题检查elasticsearch日志时,我看到的身份验证错误不是来自logstash。现在我了解了更多信息,我正在清除集群,重新配置,让我们看看它是如何运行的:)您可以使用检查elasticsearch中的索引,例如,使用curlhttp://localhost:9200/_cat/indices
将向您显示所有索引。您创建了吗索引模式?我不使用中的logs接口