博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch集群监控与报警原理解析
阅读量:6952 次
发布时间:2019-06-27

本文共 2167 字,大约阅读时间需要 7 分钟。

开源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,如下所示:

转载地址:http://cykil.baihongyu.com/

你可能感兴趣的文章
必须掌握的八个cmd 命令
查看>>
mysql同主机下 复制一个数据库所有文件到另一个数据库
查看>>
常用API
查看>>
常用git代码提交命令
查看>>
283. Move Zeroes
查看>>
并查集,是否成树,Poj(1308)
查看>>
Gym 101334C 无向仙人掌
查看>>
6年前的一封大学情书草稿,这样的清纯而今还有吗
查看>>
颜色渐变CSS
查看>>
(转) 生活感悟
查看>>
jboss服务器配置多实例
查看>>
浅谈 .NET Framework 与 .NET Core 的区别与联系
查看>>
cudaMemcpy与cudaMemcpyAsync的区别
查看>>
Linux内核【链表】整理笔记(1)
查看>>
FNV与FNV-1a Hash算法说明【转】
查看>>
算法(Algorithms)第4版 练习 1.3.20
查看>>
期末总结
查看>>
Java多线程及并发
查看>>
Combiner
查看>>
常用正则表达式大全!(例如:匹配中文、匹配html) 【转】
查看>>