我在Elastic Cloud上创建了一个Elasticsearch集群,并试图从Heroku发送日志。到目前为止,我还没有收到数据。
我有以下问题:
运行heroku Drains:add时应使用哪个URL进行日志泄漏?当我访问Kibana时,我的URL是https://my_id.us-east-1.aws.found.io:9243。我应该用那个吗?还是删除端口?
我应该如何设置Logstash配置?现在,我已经在GitHub上使用this gist对其进行了设置。
谢谢您的帮助。
答案 0 :(得分: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官方文档的“日志泄漏”页面中的“ 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集群的地址。