为 Elasticsearch 设置单独的监控集群
Setting up a Separate Monitoring Cluster for Elasticsearch
我正在尝试设置一个单独的集群 (kibanacluster) 来监控我的主要 elasticsearch 集群 (marveltest)。下面是我使用的 ES、Marvel 和 Kibana 版本。 ES版本暂时固定。如果需要,我可以更新或降级其他组件。
- kibana-4.4.1
- elasticsearch-2.2.1
- marvel-agent-2.2.1
监控集群和Kibana都在主机192.168.2.124中运行,主集群在单独的主机192.168.2.116中运行。
192.168.2.116: elasticsearch.yml
marvel.agent.exporter.es.hosts: ["192.168.2.124"]
marvel.enabled: true
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
查看监控集群中的 DEBUG
日志,我可以看到数据来自主集群,但正在获取 "filtered",因为集群名称不同。
[2016-07-04 16:33:25,144][DEBUG][transport.netty ] [nodek] connected
to node [{#zen_unicast_2#}{192.168.2.124}{192.168.2.124:9300}]
[2016-07-04 16:33:25,144][DEBUG][transport.netty ] [nodek] connected
to node [{#zen_unicast_1#}{192.168.2.116}{192.168.2.116:9300}]
[2016-07-04 16:33:25,183][DEBUG][discovery.zen.ping.unicast] [nodek]
[1] filtering out response from
{node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300},
not same cluster_name [marveltest]
[2016-07-04 16:33:26,533][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from
{node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300},
not same cluster_name [marveltest]
[2016-07-04 16:33:28,039][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from
{node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300},
not same cluster_name [marveltest]
[2016-07-04 16:33:28,040][DEBUG][transport.netty ] [nodek] disconnecting from
[{#zen_unicast_2#}{192.168.2.124}{192.168.2.124:9300}] due to explicit
disconnect call
[2016-07-04 16:33:28,040][DEBUG][discovery.zen ]
[nodek] filtered ping responses: (filter_client[true],
filter_data[false])
--> ping_response{node [{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}],
id[42], master
[{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}],
hasJoinedOnce [true], cluster_name[kibanacluster]}
[2016-07-04 16:33:28,053][DEBUG][transport.netty ] [nodek] disconnecting from
[{#zen_unicast_1#}{192.168.2.116}{192.168.2.116:9300}] due to explicit
disconnect call [2016-07-04 16:33:28,057][DEBUG][transport.netty ]
[nodek] connected to node
[{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}]
[2016-07-04 16:33:28,117][DEBUG][discovery.zen.publish ] [nodek]
received full cluster state version 32 with size 5589
问题是您在混合使用 Marvel 1.x settings with Marvel 2.2 settings,而且您的其他配置似乎已关闭,正如 Andrei 在评论中指出的那样。
marvel.agent.exporter.es.hosts: ["192.168.2.124"]
这不是 Marvel 已知的设置 2.x。根据您的 copy/paste,YAML 也可能由于空格而出现格式错误:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
这应该是:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
正如 Andrei 暗示的那样,您可能已将生产节点添加到您的 discovery.zen.ping.unicast.hosts
,它试图将其加入他们的集群。我怀疑您可以在 monitoring 集群中完全删除该设置。
[2016-07-04 16:33:26,533][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from {node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300}, not same cluster_name [marveltest]
这表明它忽略了它正在连接的节点,因为 other 节点 (node1
) 不在同一个集群中。
要设置单独的监控集群,非常简单,但需要先了解活动部分。
- 您需要一个单独的集群,其中 至少 一个节点(大多数人只需要一个节点)。
- 这个独立的集群实际上不知道它监控的集群。它只接收数据。
- 您需要将数据从 production 集群发送到那个单独的集群。
- 监控集群解读数据使用Kibana+MarvelUI插件展示图表
所以,你需要什么:
- 您的生产集群需要在每个节点上安装
marvel-agent
。
- 每个节点需要配置导出器:
这和你以前的一样:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
- Kibana 应该与监控集群通信(在本例中为
192.168.2.124
)并且 Kibana 需要相同版本的 Marvel UI 插件。
我正在尝试设置一个单独的集群 (kibanacluster) 来监控我的主要 elasticsearch 集群 (marveltest)。下面是我使用的 ES、Marvel 和 Kibana 版本。 ES版本暂时固定。如果需要,我可以更新或降级其他组件。
- kibana-4.4.1
- elasticsearch-2.2.1
- marvel-agent-2.2.1
监控集群和Kibana都在主机192.168.2.124中运行,主集群在单独的主机192.168.2.116中运行。
192.168.2.116: elasticsearch.yml
marvel.agent.exporter.es.hosts: ["192.168.2.124"]
marvel.enabled: true
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
查看监控集群中的 DEBUG
日志,我可以看到数据来自主集群,但正在获取 "filtered",因为集群名称不同。
[2016-07-04 16:33:25,144][DEBUG][transport.netty ] [nodek] connected to node [{#zen_unicast_2#}{192.168.2.124}{192.168.2.124:9300}]
[2016-07-04 16:33:25,144][DEBUG][transport.netty ] [nodek] connected to node [{#zen_unicast_1#}{192.168.2.116}{192.168.2.116:9300}]
[2016-07-04 16:33:25,183][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from {node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300}, not same cluster_name [marveltest]
[2016-07-04 16:33:26,533][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from {node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300}, not same cluster_name [marveltest]
[2016-07-04 16:33:28,039][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from {node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300}, not same cluster_name [marveltest]
[2016-07-04 16:33:28,040][DEBUG][transport.netty ] [nodek] disconnecting from [{#zen_unicast_2#}{192.168.2.124}{192.168.2.124:9300}] due to explicit disconnect call [2016-07-04 16:33:28,040][DEBUG][discovery.zen ] [nodek] filtered ping responses: (filter_client[true], filter_data[false]) --> ping_response{node [{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}], id[42], master [{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}], hasJoinedOnce [true], cluster_name[kibanacluster]}
[2016-07-04 16:33:28,053][DEBUG][transport.netty ] [nodek] disconnecting from [{#zen_unicast_1#}{192.168.2.116}{192.168.2.116:9300}] due to explicit disconnect call [2016-07-04 16:33:28,057][DEBUG][transport.netty ] [nodek] connected to node [{nodek}{vQ-Iq8dKSz26AJUX77Ncfw}{192.168.2.124}{192.168.2.124:9300}]
[2016-07-04 16:33:28,117][DEBUG][discovery.zen.publish ] [nodek] received full cluster state version 32 with size 5589
问题是您在混合使用 Marvel 1.x settings with Marvel 2.2 settings,而且您的其他配置似乎已关闭,正如 Andrei 在评论中指出的那样。
marvel.agent.exporter.es.hosts: ["192.168.2.124"]
这不是 Marvel 已知的设置 2.x。根据您的 copy/paste,YAML 也可能由于空格而出现格式错误:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
这应该是:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
正如 Andrei 暗示的那样,您可能已将生产节点添加到您的 discovery.zen.ping.unicast.hosts
,它试图将其加入他们的集群。我怀疑您可以在 monitoring 集群中完全删除该设置。
[2016-07-04 16:33:26,533][DEBUG][discovery.zen.ping.unicast] [nodek] [1] filtering out response from {node1}{Rmgg0Mw1TSmIpytqfnFgFQ}{192.168.2.116}{192.168.2.116:9300}, not same cluster_name [marveltest]
这表明它忽略了它正在连接的节点,因为 other 节点 (node1
) 不在同一个集群中。
要设置单独的监控集群,非常简单,但需要先了解活动部分。
- 您需要一个单独的集群,其中 至少 一个节点(大多数人只需要一个节点)。
- 这个独立的集群实际上不知道它监控的集群。它只接收数据。
- 您需要将数据从 production 集群发送到那个单独的集群。
- 监控集群解读数据使用Kibana+MarvelUI插件展示图表
所以,你需要什么:
- 您的生产集群需要在每个节点上安装
marvel-agent
。 - 每个节点需要配置导出器:
这和你以前的一样:
marvel.agent.exporters:
id1:
type: http
host: ["http://192.168.2.124:9200"]
- Kibana 应该与监控集群通信(在本例中为
192.168.2.124
)并且 Kibana 需要相同版本的 Marvel UI 插件。