监控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
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收集三种类型的信息( |
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、指明将数据存在哪里 note:The Elasticsearch monitoring features use ingest pipelines, therefore the cluster that stores the monitoring data must have at least one ingest node. 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。 PUT _cluster/settings
{
"persistent": {
"xpack.monitoring.elasticsearch.collection.enabled": false
}
}
9、在Kibana中查看监视数据。 |
5、Stack监控
kibana监控功能包括2个: 如果启用跨Elastic Stack的监视,则基于其持久性UUID,每个Elasticsearch节点,Logstash节点,Kibana实例和Beat都被认为是唯一的,该UUID在节点或实例启动时被写入path.data目录。 note:必须启用观察程序才能查看群集警报。 |
6、监控生产集群
监视集群中必须至少有一个ingest node摄取节点(预处理节点);它不必是专用的摄取节点。 1、设置要用作监视集群的Elasticsearch集群。
remote_monitoring_collector内置角色的用户和一个具有remote_monitoring_agent 内置角色的用户。或者,使用remote_monitoring_user内置用户。
remote_monitoring_agent内置角色的用户。 例如: POST /_security/user/remote_monitor
{
"password" : "changeme",
"roles" : [ "remote_monitoring_agent"],
"full_name" : "Internal Agent For Remote Monitoring"
}
2、配置生产集群以收集数据并将其发送到监视集群。 3、(可选)将Logstash配置为收集数据并将其发送到监视群集。 5、(可选)配置Kibana以收集数据并将其发送到监视集群: 6、(可选)创建用于监视的专用Kibana实例,而不是使用单个Kibana实例来访问生产集群和监视集群。 7、配置Kibana以检索和显示监视数据。 |
每种数据类型仅来自一个收集器。换句话说,对于创建的任何监视文档,它都来自单个收集器,而不是来自多个收集器。当前,Elasticsearch的X-Pack监视有几个收集器,因为目标是最大程度地减少它们之间的重叠以实现最佳性能。
从6.0开始,摄取群集功能是监视集群的一项要求;您必须至少在一个节点上启用node.ingest。 |