You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Logstash结合Elastic Cloud的cloud.id配置文档存在缺失问题

解决Logstash通过cloud.id对接Elastic Cloud的Output配置问题

我碰到过好几个开发者踩这个坑——当你已经在logstash.yml里配置了cloud.id和cloud.auth,确实不用手动写ES实例的URL,但直接写空的elasticsearch { }块肯定不行,这会让Logstash默认去连本地的127.0.0.1:9200,也就是你看到的这个报错:

[WARN ][logstash.outputs.elasticsearch] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://127.0.0.1:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://127.0.0.1:9200/]

正确的两种配置方式:

方式1:在output块里显式引用全局配置变量

你需要在*.conf的output段里,明确告诉elasticsearch插件使用logstash.yml里的cloud配置,直接引用变量就行:

output {
  elasticsearch {
    cloud_id => "${cloud.id}"
    cloud_auth => "${cloud.auth}"
    # 这里可以加你的其他配置,比如自定义index:index => "my-logs-%{+YYYY.MM.dd}"
  }
}

方式2:在logstash.yml里设置elasticsearch输出的默认配置

如果你不想在每个conf文件里重复写cloud参数,可以在logstash.yml里给output.elasticsearch设置全局默认值:

output.elasticsearch:
  cloud_id: "${cloud.id}"
  cloud_auth: "${cloud.auth}"

这样之后,你的conf文件里只需要写最简单的output块,插件会自动读取默认配置,不会再连localhost了:

output {
  elasticsearch { }
}

为什么之前的配置不行?

Logstash的elasticsearch输出插件不会自动读取logstash.yml里的全局cloud.id和cloud.auth,必须要么在output块里显式声明,要么通过output.elasticsearch前缀的全局配置来指定默认值。空的elasticsearch { }块会触发插件的默认行为,也就是连接本地ES实例。

内容的提问来源于stack exchange,提问作者Walker Rowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:28:04