监控elasticsearch集群方案

1、监控组件

X-Pack是一个Elastic Stack的扩展,包括安全,警报,监控,报告和图形等功能。

es5.x以后可以安装X-Pack,5.x以前需要安装多个组件(Shield,Watcher,Marvel,Graph,Reporting)(这些组件现已集成到X-Pack中),sense也已集成到kibana中。

6.x以后的版本无需单独安装X-Pack,es已集成。

其中5.x-6.8的免费版基本没有安全功能,需要破解或升至黄金版,白金版。6.8以及以后安全功能免费。

2、es API

elasticsearch API

3、监控es集群方法

生产中建议使用一个单独的集群作为监控集群,存储生产集群的监控信息。

分为低版本和高版本:

3.1、低版本:5.x以前

使用es API获取监控数据并存至监控集群

3.2、高版本:5.x以后

3.2.1、X-Pack监控集群,收集数据并导出(collectors and exporters)

数据默认存在本地集群,可以设置X-Pack的导出方式为http-exporter,将监控数据导出到一个专门的监控集群

索引格式样例:

 

此方法没有每个节点系统级别的信息,比如系统cpu利用率

可以导出的监控指标包括:

Collector(收集器) 数据类型 描述
Cluster Stats cluster_stats

只在被选举的master节点上收集。产生一个cluster_stats类型的document。

5.5x以前由三个单独的collector收集三种类型的信息(cluster_statscluster_state, and cluster_info),5.5x以后这三种类型的信息结合进cluster_stats(其中包括部分集群实际状态GET /_cluster/state和集群统计信息GET /_cluster/stats)。

Node Stats node_stats 在每个节点上进行收集,每个节点产生一个node_stats类型的document。
Index Stats indices_stats, index_stats 在被选举的master节点上进行,产生一个indices_stats类型的document,每个索引产生一个index_stats类型的document。
Shards shards  
Jobs job_stats  
Index Recovery index_recovery  

解决5.5之前X-Pack导出的数据格式与5.5之后的数据格式不一样:

                                                                 

3.2.2、使用metricbeat收集并导出(6.5及以后可用)

索引格式样例:

此方法还可以导出系统信息,比如cpu,memory,network相关信息,并在kibana上进行可视化

metric目录下:

es集群中有2个host:

点击view metrics:

metricbeat安装包下运行:

 

kibana dashboard目录下:

 

 

 

4、配置高版本集群收集监控数据(主要包括2种方式)

官网文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/monitor-elasticsearch-cluster.html

4.1、使用collectors and exporters收集数据,导出数据

1、

  a、es配置文件中 xpack.monitoring.enabled 设为 true

  b、es配置文件中 xpack.monitoring.elasticsearch.collection.enabled 设为 true

  c、es配置文件中xpack.monitoring.collection.enabled 设为 true

  d、Optional: Specify which indices you want to monitor.

  默认情况下,监视代理程序从所有Elasticsearch索引收集数据。要从特定索引收集数据,

  请配置xpack.monitoring.collection.indices设置。您可以将多个索引指定为以逗号分

  隔的列表,也可以使用索引模式来匹配多个索引。

  比如:

xpack.monitoring.collection.indices: logstash-*, index1, test2

  e、Optional: Specify how often to collect monitoring data.

2、指明将数据存在哪里
  默认使用local exporter存在本地集群,也可以使用http exporter将数据存到专门的监控集群

  note:The Elasticsearch monitoring features use ingest pipelines, therefore the

  cluster that stores the monitoring data must have at least one ingest node.
  ingest node:在索引之前预处理文档
  ingest node:拦截批量和索引请求,应用转换,然后将文档传递回索引或批量API。
3、选择是否使用http exporter并设置相关安全选项。

4、配置您的集群以将监视数据从Kibana,Beats和Logstash等来源路由到监视集群。

5、如果您在生产集群上的elasticsearch.yml文件中更新了设置,请重新启动Elasticsearch。

6、可选:配置用于存储监视数据的索引。

7、在Kibana中查看监视数据。

 

4.2、使用Metricbeat收集Elasticsearch监视数据并导出

在6.5及更高版本中,您可以使用Metricbeat收集有关Elasticsearch的数据并将其发送到监视集群,而不是按照4.1中所述通过导出器进行路由。

1、Enable the collection of monitoring data

GET _cluster/settings

PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.collection.enabled": true
}
}

2、在生产集群中的每个Elasticsearch节点上安装Metricbeat。
3、在每个Elasticsearch节点上的Metricbeat中启用Elasticsearch X-Pack模块。
4. 在每个Elasticsearch节点上的Metricbeat中配置Elasticsearch X-Pack模块。
5、可选:在Metricbeat中禁用系统模块。
6、确定将监视数据发送到哪里。
7、在每个节点上启动Metricbeat。
8、禁用Elasticsearch监控指标的默认集合。

PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.elasticsearch.collection.enabled": false
}
}

9、在Kibana中查看监视数据。

 

5、Stack监控

kibana监控功能包括2个:
1、可视化来自Elastic Stack的监视数据。您可以实时查看Elasticsearch,Logstash和Beats的运行状况和性能数据,以及分析过去的性能。
2、监视Kibana本身并将该数据路由到监视集群。

如果启用跨Elastic Stack的监视,则基于其持久性UUID,每个Elasticsearch节点,Logstash节点,Kibana实例和Beat都被认为是唯一的,该UUID在节点或实例启动时被写入path.data目录。

note:必须启用观察程序才能查看群集警报。
如果您具有基本许可证,则不会显示“热门群集警报”。

 

6、监控生产集群


监控7.x的Elasticsearch生产集群, 监控集群必循在7.x以后。

监视集群中必须至少有一个ingest node摄取节点(预处理节点);它不必是专用的摄取节点。

1、设置要用作监视集群的Elasticsearch集群。
  例如,您可以使用节点es-mon-1和es-mon-2设置两个主机群集。

  • 如果计划使用Metricbeat收集有关Elasticsearch或Kibana的数据,请创建一个具有

    remote_monitoring_collector内置角色的用户和一个具有remote_monitoring_agent

    内置角色的用户。或者,使用remote_monitoring_user内置用户。

 

  • 如果计划使用HTTP导出程序通过生产集群路由数据,请创建一个具有

    remote_monitoring_agent内置角色的用户。

    例如:

POST /_security/user/remote_monitor
{
"password" : "changeme",
"roles" : [ "remote_monitoring_agent"],
"full_name" : "Internal Agent For Remote Monitoring"
}

 

2、配置生产集群以收集数据并将其发送到监视集群。
  Use Metricbeat.
  Use HTTP exporters.

3、(可选)将Logstash配置为收集数据并将其发送到监视群集。
4、(可选)将Beats配置为收集数据并将其发送到监视群集。

5、(可选)配置Kibana以收集数据并将其发送到监视集群:

6、(可选)创建用于监视的专用Kibana实例,而不是使用单个Kibana实例来访问生产集群和监视集群。
  (可选)在此Kibana实例中禁用监视数据收集。
   将kibana.yml文件中的xpack.monitoring.kibana.collection.enabled设置设置为false。

7、配置Kibana以检索和显示监视数据。

 

每种数据类型仅来自一个收集器。换句话说,对于创建的任何监视文档,它都来自单个收集器,而不是来自多个收集器。当前,Elasticsearch的X-Pack监视有几个收集器,因为目标是最大程度地减少它们之间的重叠以实现最佳性能。


对于监视在所有节点上禁用了node.ingest的群集,可以禁用使用摄取管道功能。但是,这样做会阻止其目的,即随着我们的映射随着时间的推移而改进,它会升级较旧的监视数据。

从6.0开始,摄取群集功能是监视集群的一项要求;您必须至少在一个节点上启用node.ingest。

posted @ 2020-02-15 14:50  highly  阅读(1179)  评论(0编辑  收藏  举报