将heroku日志消耗连接到logstash
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将heroku日志消耗连接到logstash相关的知识,希望对你有一定的参考价值。
我在Elastic Cloud上创建了一个elasticsearch集群,并尝试从Heroku发送日志。到目前为止,我没有收到数据。
我有以下问题:
- 运行heroku drains时,我应该使用什么URL进行日志消耗:添加?当我访问Kibana时,我的网址是https://my_id.us-east-1.aws.found.io:9243。我应该用吗?或者删除端口?
- 我应该如何设置我的Logstash配置?现在我在GitHub上使用this gist进行设置。
感谢您帮助实现这一目标。
答案
运行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编写的go应用程序代码。它不涉及Logstash。相反,它会自定义处理日志数据。
以上是关于将heroku日志消耗连接到logstash的主要内容,如果未能解决你的问题,请参考以下文章
ini Logstash配置使用编解码器多线解析Scala / Java日志,以将异常和堆栈跟踪消息连接到单个事件和gro中