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

K8s中Logstash未连Loki却尝试连接Elasticsearch问题求助

问题:Logstash在K8s中持续连接Elasticsearch而非输出到Loki

Logstash部署在Kubernetes集群中,已通过环境变量设置XPACK_MONITORING_ENABLED: false,同时在logstash.yml里配置了xpack.monitoring.enabled: false,但Logstash并未按配置将日志输出到Loki,反而持续尝试连接Elasticsearch并报错。


相关配置及报错信息

配置文件

logstash.yml: |
    http.host: "0.0.0.0"
    log.level: debug
    xpack.monitoring.enabled: false
    path.config: /usr/share/logstash/pipeline
  logstash.conf: |
     input {
        file{
          path => "/var/log/containers/*.log"
        }
      }
      filter {
         kubernetes {
          source => "path"
          target => "loki"
        }
      }

     output {
      stdout { codec => rubydebug}
      loki {
          url => "http://loki-loki-distributed-distributor.loki-benchmark.svc.cluster.local:3100/loki/api/v1/push"
        }
     }

控制台输出

[2022-12-13T06:31:40,411][ERROR][logstash.licensechecker.licensereader] 无法从许可证服务器获取许可证信息 {:message=>"无可用连接"}
[2022-12-13T06:31:50,775][WARN ][logstash.licensechecker.licensereader] 尝试恢复与已失效ES实例的连接,但失败。 {:url=>"http://elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch 不可达: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: 名称或服务未知"}
[2022-12-13T06:32:10,414][ERROR][logstash.licensechecker.licensereader] 无法从许可证服务器获取许可证信息 {:message=>"无可用连接"}
[2022-12-13T06:32:20,910][WARN ][logstash.licensechecker.licensereader] 尝试恢复与已失效ES实例的连接,但失败。 {:url=>"http://elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch 不可达: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: 名称或服务未知"}
[2022-12-13T06:32:40,412][ERROR][logstash.licensechecker.licensereader] 无法从许可证服务器获取许可证信息 {:message=>"无可用连接"}
[2022-12-13T06:32:50,998][WARN ][logstash.licensechecker.licensereader] 尝试恢复与已失效ES实例的连接,但失败。 {:url=>"http://elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch 不可达: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: 名称或服务未知"}
[2022-12-13T06:33:10,410][ERROR][logstash.licensechecker.licensereader] 无法从许可证服务器获取许可证信息 {:message=>"无可用连接"}
[2022-12-13T06:33:21,328][WARN ][logstash.licensechecker.licensereader] 尝试恢复与已失效ES实例的连接,但失败。 {:url=>"http://elasticsearch:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch 不可达: [http://elasticsearch:9200/][Manticore::ResolutionFailure] elasticsearch: 名称或服务未知"}

Kubernetes配置

image: "grafana/logstash-output-loki:1.0.1"
        imagePullPolicy: "IfNotPresent"
        command:
            - '/bin/sh'
            - '-c'
            - 'logstash-plugin install --no-verify logstash-filter-kubernetes && logstash -f /usr/share/logstash/pipeline/logstash.conf'

解决方案

1. 补充X-Pack相关禁用配置

报错来自logstash.licensechecker.licensereader,说明仅关闭monitoring不足以阻止Logstash尝试连接Elasticsearch获取许可证。需要在logstash.yml中添加以下配置,彻底禁用相关X-Pack功能:

xpack.monitoring.enabled: false
xpack.management.enabled: false
xpack.license.self_generated.type: basic

2. 确保配置文件正确加载

当前启动命令直接指定了pipeline配置,但可能未正确加载logstash.yml。需确认logstash.yml已挂载到Logstash默认配置目录(通常是/usr/share/logstash/config/),或者在启动命令中显式指定配置路径:

command:
    - '/bin/sh'
    - '-c'
    - 'logstash-plugin install --no-verify logstash-filter-kubernetes && logstash --path.settings /usr/share/logstash/config -f /usr/share/logstash/pipeline/logstash.conf'

3. 验证配置生效

修改配置后重启Logstash Pod,观察控制台日志是否再无Elasticsearch连接报错,同时检查Loki是否接收到日志数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:45:34