运行 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。