【阿里云MVP第五期】阿里云李靖威:Elasticsearch集群监控与报警原理解析-阿里云开发者社区

开发者社区> Elasticsearch 技术团队> 正文
登录阅读全文

【阿里云MVP第五期】阿里云李靖威:Elasticsearch集群监控与报警原理解析

简介: 本文节选自阿里云MVP第五期嘉宾阿里云技术专家李靖威分享话题《使用X-Pack和Kibana实现Elasticsearch 的监控与报警》。以开源 Elasticsearch、阿里云 Elasticsearch和X-Pack的Demo show的形式, 对 Elasticsearch 集群监控和报警的内部原理进行讲解和使用方法演示。

嘉宾介绍

李靖威 阿里云技术专家
全栈程序员,精通前后端,在Web微服务系统架构上有深入研究。3年搜索产品相关经验,现负责阿里云Elasticsearch的产品业务部分的开发。

今天会对Elasticsearch集群监控原理介绍和Demo展示,包括集群运行状况、监控信息的搜集、分析和报警等。

我今天的主题主要会从三个方面来逐步介绍,第一个方面会从大家最广泛使用的开源Elasticsearch实现监控和报警相关的原理。第二个方面,从ES官方X-Pack里面的非常强大的Monitor插件,是来如何实现对ES进行的监控和报警。第三个方面是介绍一下在阿里云Elasticsearch里面如何更加方便的去使用ES的集群的监控和报警。

开源Elasticsearch如何实现监控和报警

为了保证一个ES集群的稳定运行,我们要从各个维度去对整个集群进行监控。我对这些不同维度的指标做了一个简单的分类。

_

  • 资源类,主要指ES集群所跑的物理机和操作系统相关所分配的一些资源,包括CPU、内存、网络、磁盘和操作系统的system log等指标。
  • 容器级,这里面就包含Java运行时的JVM等相关指标。
  • 最核心的ES应用级别指标,大概分为两个维度:
    节点级:因为ES是一个分布式的应用,所以在这个应用下可能会有一个维度是跟每一个节点相关的。我们知道,在每一个ES结点上会跑多个Lucene进程,进程相关的指标就属于这个级别。

索引级:一个索引会分布在不同的节点上,针对每一行索引的维度,可以观察到各种各样的行动指标,

  • 最后的就是在通过调用方的一些监控。今天我主要讲的是前面的一部分,不包含调用的部分。

ES集群监控原理

下面给大家介绍一下ES集群监控的一些原理。这个里面刚才我给大家介绍了那么多相关的指标的,看起来很复杂,有各种各样的维度,但实际上ES本身在这上面是做得比较健全,它把刚才提高的绝大部分的信息都已经集成到了RESTful API里面,给大家介绍几个跟ES监控相关的接口。

_

  • Node Stats API,顾名思义就是看集群内的每一个节点的状态信息,在每个节点上会有不同索引的一些分片,这个节点所涉及到的分片每一个单独的信息可以通过这个API观察到的。
  • Cluster Stats API,就是整个集群的比较选举性的信息,通过这个API包括插件节点输入,还有一些各个节点的统计信息的相加结果,都可以在这个API中可以看到。
  • Index_name Stats API,就是刚才提到维度索引级别的。这个API的调用是通过一个index_name斜杠,是指定每一个索引都可以去调用这个接口,去观察这个索引的相关统计信息。部分指标和Node Stats API相匹配。
  • Cluster Health API,这是大家非常了解的,ES绿、黄、红三个状态就是通过这个接口来拿到。这个接口包含整个集群的分片信息和监控状态,这个监控大家应该会用得非常广泛。
  • Pending Tasks API,ES里面有很多的异步任务,利用这个接口可以进行全局性观察。整个集群当中正在跑的一些任务,这些任务包括索引创建任务或者是shard均衡任务等。
    这个接口有一个很好用的一个特性,参数wait_for_completion=ture,可以就结合浏览器里面JS来实现浏览器端和服务器端的实时通信。众所周知http是无状态服务,通过这个参数可以在浏览器里边做到很多类似于实时通信的效果,因此可以给集群监控提供方便。

第三方监控系统

下面提一下第三方监控系统,大多不是开源的,大家可以下面去自己去了解一下。他们的基本原理都是类似的,通过刚才介绍的那几个接口,或者直接通过RestAPI获取信息。

_

X-Pack的Monitor组件

下面介绍X-Pack的监控组件Monitor,以前的名字叫做Marvel。下图界面是X-pack在Kibana安装了Monitor插件之后的功能截面。

_

在这里面能够看到,ES集群现在的监控状态里有很多实用的节点级指标。而下面这张图是索引级别的。

_

X-Pack Monitor的监控原理

Monitor的监控原理其实大部分的监控系统都是类似的。它通过collector,持续收集前面提到的监控API的历史信息。collector收集的时间周期是每10秒钟一次,10秒这个时间是可以通过xpack.monitoring.collection.interal配置项来进行调整。这个值调整得越小,集群监控的实时性就越高,但是集群监控所占用的系统资源也会越多。

还有一个非常重要的实践经验,尽量将你的ES集群的监控做成独立的监控。X-Pack默认开启Monitor监控,它会把监控信息直接存储到当前集群内的。但这样会有出现一个问题,生产环境对监控信息要求非常高的情况下,如果集群挂掉,集群监控也就挂了,因为他们是放在一起的。所以最佳实践是,做成一个dedicated cluster,也就是一个独立的集群。在ES5.0里面可以通过xpack.monitoring.elasticsearch.url配置dedicated cluster。在ES6.0里面,这个功能更加强大,可通过xpack.monitoring.exporters配置到多个目标里面去。

下图是Monitor Collector收集的主要信息:

_

X-Pack报警功能的实现原理
X-Pack的报警功Watcher是一个工作流的配置引擎,通过Rest API可以配置它的触发器,包括数据的输入、触发条件和最后执行的动作,来实现特定条件下触发某个特定动作。

_

X-Pack的监控功能应该是市面上第三方监控系统中功能最强大的了。在国内大家可能更希望使用国内的一些服务进行接受报警的通知,比如邮件、短信、钉钉等。

阿里云Elasticsearch的监控报警

最后分享阿里云Elasticsearch如何做监控报警。基于阿里云云监控和X-Pack的Monitor功能实现集群监控,并配置旺旺接收告警信息。配置DEMO,如下所示:

阿里云MVP介绍

阿里云最有价值专家,简称 MVP(Most Valuable Professional),是专注于帮助他人充分了解和使用阿里云技术的意见领袖。点击了解更多产品信息
阿里云 MVP Meetup 第5期活动视频回顾。点击观看

加入钉钉技术讨论群

dingQR

阿里云Elasticsearch已正式发布啦,Elastic开源官方联合开发,集成5.5商业版本XPack功能,欢迎开通使用。
点击了解更多产品信息

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

Elasticsearch 作为一个分布式、高扩展、实时的搜索与数据分析引擎,因其轻量级、稳定、可靠、快速等特性受到越来越多开发者的青睐,在搜索、日志分析、运维监控和安全分析等领域得到广泛应用。

官方博客
友情链接