4.2.2.Elasticsearch智能巡检开发设计实践
创作人:张妙成
审稿人:田雪松
项目背景
PaaS 下管理了大量集群,监控和告警能快速的让开发维护人员,知道系统已经发生故障,并且辅助高效排障。
但是无法提前预知集群的健康状况,开发人员和维护人员均无法在故障前及时作出调整。为了帮助用户及时的知道集群的健康状态,更好使用 Elasticsearch 集群,可以定期对集群进行指标检查并给出相应报告。巡检作业及时发现集群的健康问题,集群的配置是否合理,提前主动发现问题,能有效保证集群的稳定性、健状性,从而减少业务中断时间保证服务质量。
为了解决集群健康状态提前预知困难的问题,可以通过抽取一些指标,进行定时检查达到健康诊断的目的。
巡检主要是对集群的各个指标检查,给出一份全方位的报告,并提供一定的推荐解决、优化方案。如阿里的 EYOU 平台(阿里云 Elasticsearch 智能诊断系统)会系统的在 Elasticsearch 公有云进行各个指标的检查,并给出相应报告,极大的减小了风险,降低了维护成本。
智能管理系统不是一个独立的检查系统,而是一个与其他系统相结合的闭环系统,独立的巡检模块对各项指标进行检查分析,将结果通过 PaaS 系统展示给用户,并在 PaaS 中给予入口,用以帮助用户手动再次触发检查,增强实时性,提高用户体验。
本文将介绍智能巡检系统在整个 Elasticsearch 相关系统中的位置与意义,并从指标分析选取、异常标准的角度,主要阐述智能巡检系统的设计与实现。
整个应用的框架如上:
l Elasticsearch 集群在 K8S 环境中(实际生产大多是 K8S 环境与物理机、虚拟机环境共存,这里简化成最终要达到的统一环境),由 PaaS 平台进行统一管理。
l PaaS 的信息数据主要是与 DB 交互(PaaS 是与 DB 的唯一交互入口),用户主要与
l PaaS平台进行交互。
智能巡检系统信息收集模块(一组 Python Job)主要是 K8S 环境中的 Elasticsearchl cluster、宿主机进行交互,数据报告信息通过 PaaS 平台存入 DB。
l 监控使用 VictoriaMetrics( Prometheus 的高可用方案)作为存储,grafana 作为前端展示页面。监控可以配置 Elasticsearch 各项指标,其中与智能巡检相关是巡检异常数量的监控面板,用来给 OPS 观察巡检亚健康集群异常点的修复(优化)情况。
l PaaS 提供入口手动触发再次检查。
指标选取简介
巡检的指标、异常阈值与告警配置的主要区别是,检的指标项会更加关心可能引发故障的某些现象和配置,参考阈值相对告警配置会更加宽松。巡检主要是通过指标的采集分析,得出一份相对全面的报告和推荐解决方案。为了报告的全面性与分析的准确性,巡检的指标项会与告警配置有一定相似或重复。
告警与巡检需要解决的问题不同,告警的目的是将异常指标恢复到正常状态,响应的实时性要求较高,而巡检的目的是预防故障、消除隐患、优化集群性能,以报告的形式推到平台和用户,不需要用户主动响应,只需解决问题后重新触发巡检。为推进优化,可将巡检报告中非健康指标配置成监控面板、告警。
集群健康程度可以从几个方面表现:cluster 层面、node 层面、shard 层面、index 层面、
jvm 层面、threadpool 层面。如下为参考指标:
Elasticsearch 功能强大、使用方便,也就意味着对用户来说有很多的默认设置,用户使用的自由度很高,也就意味着开放的能力丰富,用户的使用对集群健康程度有着很大的影响。
所以指标选取需要从两个角度,一是现有的现象指标,二是常用不合理的配置指标。接下来对选取的指标进行简要逐一分析。
《Elastic Stack 实战手册》——四、应用实践——4.2 可观测性应用场景 ——4.2.2.Elasticsearch智能巡检开发设计实践(2) https://developer.aliyun.com/article/1226094