Graylog无法连接到Kubernetes群集中的Elasticsearch

我在Kubernetes集群上部署了Graylog,一切正常,直到我决定添加一个环境variables并更新graylog部署。

现在有些东西停止了工作。 我可以看到所有的input都在运行,他们正在接受消息:

在这里输入图像说明

但是,如果我尝试查看收到的消息,则会返回500错误,并显示以下消息:

一个

该文档说,Graylog容器需要一个名为elasticsearch的服务

 docker run --link some-mongo:mongo --link some-elasticsearch:elasticsearch -p 9000:9000 -e GRAYLOG_WEB_ENDPOINT_URI="http://127.0.0.1:9000/api" -d graylog2/server 

如果我附上graylog pod和curl elasticsearch elasticsearch:9200 ,我看到一个成功的结果:

 { "name" : "Vixen", "cluster_name" : "graylog", "cluster_uuid" : "TkZtckzGTnSu3JjERQNf4g", "version" : { "number" : "2.4.4", "build_hash" : "fcbb46dfd45562a9cf00c604b30849a6dec6b017", "build_timestamp" : "2017-01-03T11:33:16Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" } 

但是如果graylog日志说它正在尝试连接到本地主机:

在这里输入图像说明

再次,一切都在努力,直到今天。 为什么它试图连接到本地主机,而不是弹性search服务?

看起来这是一个版本问题。 我将graylog容器降级到以前的稳定版本:2.2.3-1,并重新开始工作。

我的猜测是,当我今天更新图像时,它拉出了最新版本,损坏了一些东西

你可能想尝试添加popup到graylog.conf

https://github.com/Graylog2/graylog2-server/blob/master/misc/graylog.conf

在172线

 # List of Elasticsearch hosts Graylog should connect to. # Need to be specified as a comma-separated list of valid URIs for the http ports of your elasticsearch nodes. # If one or more of your elasticsearch hosts require authentication, include the credentials in each node URI that # requires authentication. # # Default: http://127.0.0.1:9200 #elasticsearch_hosts = http://node1:9200,http://user:password@node2:19200 

你可以创build你自己的graylog.conf,并将其添加到你的dockerfile中,然后用它来构build。

实际上,Graylog已经转向了Graylog 2.3中的HTTP API。 因此,连接到Elasticsearch集群的方法已经改变。 您现在可以提供ES节点的IP地址而不是zen_ping_unicast_hosts。 这是改变这个设置的提交 – https://github.com/Graylog2/graylog2-server/commit/4213a2257429b6a0803ab1b52c39a6a35fbde889

这也使我们能够连接AWS ES服务,而这在以前是不可能的。 看到这个讨论的线索,以获得更多的见解 – https://github.com/Graylog2/graylog2-server/issues/1473