在Ubuntu 14.04上安装新的ELK,Kibana返回拒绝连接

时间:2015-08-30 22:30:49

标签: ubuntu kibana-4 elastic-stack

运行Ubuntu 14.04服务器的新服务器。今天全新安装ELK堆栈。在家用Ubuntu机器上检查Spyder的弹性搜索。结果(使用Python'请求包):

res = requests.get('http://' + falcon618 + ':' + port)

print(res.content)
{
  "status" : 200,
  "name" : "Six of Nine",
  "cluster_name" : "{my cluster name}",
  "version" : {
    "number" : "1.4.4",
    "build_hash" : "c88f77ffc81301dfa9dfd81ca2232f09588bd512",
    "build_timestamp" : "2015-02-19T13:05:36Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.3"
  },
  "tagline" : "You Know, for Search"
}

但是,当我通过Chrome转到server_ip:5601时,我拒绝连接。当我向Ubuntu询问Kibana的状态时,它表示正在运行。当我查看netstat -lnp时,端口9200(elaticsearch)有一个条目(监听),但没有端口5601的条目。

我搜索并搜索了Google,但无法找到Kibana错误日志的位置。 ElasticSearch的日志中没有任何内容会显示问题,显然我的家庭计算机可以通过服务器的IP查看ES。我试图从同一台服务器上运行Kibana。所以在Kibana的配置中:

# Kibana is served by a back end server. This controls which port to use.
port: 5601

# The host to bind the server to.
host: "{server IP}"

# The Elasticsearch instance to use for all your queries.
elasticsearch_url: "http://{server IP}:9200"

首先,Kibana日志在哪里?第二,关于为什么会发生这种情况的任何想法?我已经阅读了几个有类似错误消息的人的线程,但没有一个完全匹配。

我按照此页面安装了ELK: ELK on Ubuntu 14.04

但是,我跳过了Nginx安装,并在公共IP上提供了ES。 (使用iptables拒绝所有不是来自已知服务器的内容。但iptables目前是空的。)

---------编辑以澄清下面的评论----------

我对ELK堆栈的第一次尝试包括运行ElasticSearch的同一台服务器上的Kibana。但是,由于我希望ElasticSearch可用于我的家庭服务器,我告诉它要听服务器的公共IP。所以我在该服务器上配置了Kibana,以便在服务器的IP上查找ElasticSearch。

我测试了ElasticSearch,并使用我的家庭服务器为其添加了大约3000个文档。我也可以从家庭服务器检索这些文档。所以我在家用服务器上设置了Kibana,看看它是否可行。如果Kibana在我的LAN服务器上工作,可能会建议简单的重新安装可能会修复WAN服务器上的Kibana安装。或者可能是某些权限或安全问题。

广域网服务器上的Kibana安装始终在Chrome中返回ERR_CONNECTION_REFUSED,但仍然可以。我的局域网服务器上的Kibana安装程序显示了Kibana,但不允许我指定默认的索引模式。我来的第一页要求该模式,但没有按钮来保存模式。我试图通过高级设置添加模式,但它没有保存。

在ElasticSearch上运行_cat/indices会返回以下内容:

yellow open visitors 5 1 3282 0 54.8mb 54.8mb 
yellow open .kibana  1 1    1 0  2.5kb  2.5kb

因此,显然有一个.kibana索引以及我的visitors索引。我第一次运行此API调用时需要一段时间才能显示。然而,从那时起,这些指数的提升非常快。

-----编辑#2 ------

我现在尝试在我租用的另一台WAN服务器上安装Kibana。结果与我的LAN服务器相同。它加载但仍然没有按钮来保存它。当我输入索引模式并点击返回右上方循环中的3个白点。很长一段时间后,我得到了"没有生活的联系"错误。

它似乎无法连接到ES,但我认为这似乎是一个超时问题。从这个WAN服务器#2我可以卷曲ES并得到正确的响应但是它需要很长时间 - 甚至可能整整一分钟。当我使用curl来获取指数时,我没有计时,但它似乎至少花了几分钟。

最重要的是,我一直在想访客索引。它有大约3000个条目,每个条目占用3K磁盘空间,总共大约9M。但是,在索引中,它们占用了超过50M。

最后,虽然ES的所有内容似乎都在运行,但它也很慢。当我进行搜索时,我得到了正确的答案,但仅在几秒钟之后。我的整个WordPress网站可以加载得更快(在WAN服务器#2上),而不是我可以获得3K的JSON文本。 (两个WAN服务器都是相同的规格 - 8核AMD,32 GB RAM,Ubuntu 14.04和100 Mbps管道。)

--------编辑#3 --------

虽然我还没有找到解决方案,但我还有另外一个难题。 DIgitalOcean提供了一个ELK堆栈,所以我有一个。它工作得很好,我可以看到Kibana中的数据,它看起来像本地服务器日志数据。太好了!

然而,我随后更改了ElasticSearch群集名称并重新启动了ES。然后Kibana看起来有与我上面描述的相同的问题,我无法定义默认的索引模式。

所以我重新启动了机器。现在我得到一个502 Bad Gateway Error。然后我将ES更改回默认群集名称 - elasticsearch - 并重新启动。还是502

Hmmmm。希望DigitalOcean的支持可以解决这个问题。

--------编辑#4 ---------

在浪费太多时间后,我在Ubuntu 14.04上启动了一个ELK堆栈的DigitalOcean图像。一旦我在elsaticsearch.yml配置文件中更改了群集名称,就会破坏。

但是,在DO支持的帮助下,我发现群集参数也需要添加到logstash配置文件中。所以要使用DO的一个名为snuggles的集群示例:

/etc/logstash/conf.d/30-lumberjack-output.conf:

output {
  elasticsearch { host => localhost cluster => snuggles }
  stdout { codec => rubydebug }
}

/etc/logstash/conf.d/01-lumberjack-input.conf:

input {
  lumberjack {
    port => 5000
    type => "logs"
    cluster => "snuggles"
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }

}

/etc/elasticsearch/elasticsearch.yml:

cluster.name: snuggles

这让它影响了DO的形象。我假设该图像基于本教程: ELK on Ubuntu 14.04

我还没有让这个堆栈在任何其他机器上工作。 Marvel插件正在我的原始 - 非DO服务器上工作,并显示一些关于集群的好数据...... 1。

0 个答案:

没有答案