将heroku日志消耗连接到logstash

问题描述 投票:0回答:1

我在Elastic Cloud上创建了一个elasticsearch集群,并尝试从Heroku发送日志。到目前为止,我没有收到数据。

我有以下问题:

  1. 运行heroku drains时,我应该使用什么URL进行日志消耗:添加?当我访问Kibana时,我的网址是https://my_id.us-east-1.aws.found.io:9243。我应该用吗?或者删除端口?
  2. 我应该如何设置我的Logstash配置?现在我在GitHub上使用this gist进行设置。

感谢您帮助实现这一目标。

elasticsearch heroku logstash
1个回答
0
投票

运行heroku时,我应该使用什么URL来记录日志

它应该是运行Logstash的实例的URL。该URL应包含Logstash正在侦听的端口。

例如,如果您使用https://my_id.us-east-1.aws.found.io作为实例地址,并使用您提到的作为logstash配置的要点,则URL应为:

https://my_id.us-east-1.aws.found.io:1514

我应该如何设置我的Logstash配置?

这得看情况。你提到的要点可能是一个好的开始。但它很过时了。因此,如果它不起作用,请考虑以下事项:

  • 根据Heroku官方文档的“Log Drains”页面中的“HTTPS drains”部分,heroku发送的日志是syslog格式: 使用HTTPS消息,Logplex会缓冲日志消息,并通过POST请求将批量消息提交到HTTPS端点。 POST正文包含syslog格式的消息...
  • 在ElasticSearch官方文档的“Logstash配置示例”页面的“处理Syslog消息”部分中,有一个Logstash配置示例将解析syslog格式的消息。 这是完整的例子: filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" } add_field => [ "received_at", "%{@timestamp}" ] add_field => [ "received_from", "%{host}" ] } date { match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } } output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } } 注意:在此配置中,您需要将localhost:9200更改为Elastic Cloud上Elasticsearch集群的地址。

另外,这是一个用sample编写的应用程序代码。它不涉及Logstash。相反,它会自定义处理日志数据。

© www.soinside.com 2019 - 2024. All rights reserved.