0

运行 Ubuntu 14.04 服务器的新服务器。今天全新安装 ELK 堆栈。在家用 Ubuntu 机器上检查来自 Spyder 的 Elastic Search。结果(使用 Python 的 Requests 包):

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"
}

但是,当我server_ip:5601通过 Chrome 访问时,连接被拒绝。当我向 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 安装并让 ES 在公共 IP 上可用。(使用 iptables 拒绝不是来自已知服务器的所有内容。但 iptables 目前是空的。)

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

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

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

WAN 服务器上的 Kibana 安装始终ERR_CONNECTION_REFUSED在 Chrome 中返回,并且仍然如此。我的 LAN 服务器上的 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

嗯。希望 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。

4

0 回答 0