当前位置: 首页 > article >正文

如何监控 Elasticsearch 集群健康状态并实现邮件自动预警?

1、Elasticsearch 自动化预警重要性

在实际运维中,Elasticsearch 集群的健康状态至关重要。集群健康状态一旦变为红色,意味着至少存在一个主分片未分配或丢失,这可能导致数据不可用或查询失败。因此,监控 Elasticsearch 集群健康状态 并及时预警,是保障系统稳定运行的重要手段。

在早期的运维实践环节,我们团队用过最传统的 python + shell 脚本的监控方式,轮询监控集群状态,出现问题自动发送邮件。

那么,有没有全自动化的方式呢?轮询的方式、轮询内容都受限于自己的技术团队,可能并没有那么全面。

2、Elasticsearch 集群自动化预警方式介绍

传统的 kibana 客户端 Alert 预警是收费功能,开源的 elasticalert(yelp公司出品)也是个备选方案,貌似会有版本兼容性问题。地址:https://github.com/jertel/elastalert2

本文将介绍如何使用 INFINI Console 的告警功能,监控 Elasticsearch 集群健康状态,并通过邮件实现自动预警。之前我们讲解了一讲如何极简部署安装 INFINI Console 极限控制台,没有安装的读者可以参考阅读一下,基本上是傻瓜式下一步安装方式,至少我个人感觉非常方便。欢迎大家留言说一下感受。

特别说明一点,如果 Elasticsearch 集群是红色,极限客户端首次连接的测试连接部分会连接不上,F12 后会有如下报错信息

c70154582df90d94639b483771b79ee4.png

但提示信息不准确,就是连接不上。应该是:集群健康状态不对类似提示信息。

3、 INFINI Console 的告警功能介绍

我先说一下自己部署实操环节的摸索以及走过的弯路。先大致过了一遍文档,然后跟着文档进行摸索告警步骤,不过一步步实践环节发现出了问题。

在邮件服务器设置那里没有问题,测试邮件可以发送成功。但是,告警渠道那里测试邮件显示发送成功,但邮件端着实收不到邮件。

我甚至跟官方反馈,最终技术团队一步步引导大致给出排查思路和解决方案。

a286e8aefb7a71d2504405af7abd61e0.png

在第二次实操时,相对顺利,差不多 5 分钟左右(肯定没有超过10分钟)从安装到邮件预警全部搞定。

所以,有必要从整体复盘的角度、从宏观到微观的角度给大家做一下整体介绍。

3.1 告警或者自动化预警的本质是?

我早期的项目正好做过这个功能模块,我说一下我的认知。 

自动化预警本质:就是当系统或集群触发了某个条件(红线条件或咱们设置过的预警值)后,系统会自动给预警渠道发送一条消息,以让技术人员(运维或者开发)第一时间收到消息,并第一时间处理。有了这个认识,再看极限控制台的设计就很好理解。

3.2 极限控制台预警涉及的模块

有图有真相。其实应该从下往上看(很重要,因为实操就得这么来)。

1b52d6989a3bb4eeb57a558401fa4329.png

3.2.1 告警渠道

微信、邮件、钉钉等这些告警的通道。

488c9decef165259fc55637a1da19062.png

3.2.2 规则管理

需要咱们设置的规则,满足了所谓“规则”,就会触发预警。

ca89b9558c5cbaa1713507e40f275953.png

3.2.3 告警中心

预警列表及统计功能。

422e9840a80d1a5fb1cccd07cfe485a6.png

4、 INFINI Console 的邮件预警实操步骤

4.1 设置邮件服务器

没有它,一切无从谈起!

咱们自己做过开发的读者知道,哪怕自己 Java、Python 去写,也需要邮件端配置。

所以这里分两个部分,一、本身的邮件服务器端(QQ邮箱、163邮箱等)的设置;二、极限控制台端的邮件服务器设置。

4.1.1 邮箱端设置

直接看图,设置->POP3/SMTP/IMAP。

95552c0be69d90ce06f0fce80f9affda.png

进去之后,获取唯一授权码即可。唯一授权码就是下一步极限控制台邮件设置后面的密码。

ec91142dc5a8b67eb7d94dc4bf1e1552.png

4.1.2 极限控制台邮件服务器设置

7e5127519ca46c590c68734678a5c52d.png

d31eea9f532465c7fc2baec87e96d1d4.png

这里务必测试一下,连接成功标志就是成功收到邮件。

4b98ec99af4a1e98e17bf67e54311631.png

4.2 设置告警通道

这里通道模版很多,不要自己新建,自己改原有推荐配置更不容易出错(血淋淋教训)。

9f450730bc96979d5c545b9645ba3550.png

我只测试了预警功能,先0到1,再考虑1到100。

6460b6b6bd779be3a78e0ca1114a06cc.png

这里成功标志,也是点击发送邮件,可以发出,并能成功收到邮件。

c8780649245f37633d6f0a81576d2766.png

4.3 规则管理(本质就是规则设置)

我第一次部署,陷入了解如下各个字段的含义以及如何设置问题。甚至还多次和原厂技术工程师交流请教。事后发现,更快的方式是先用模版,用起来,能用后再考虑学习字段细节会更好!

如下模版内容,我基本没有修改。

56f6f0313f25a10b1ac48b960a31a676.png

d4cf3c881599794055209269154ddcb2.png

4.4 触发预警测试

前提认知:前几个步骤,我们把邮件服务器都设置和关联好了,我们期望做邮件预警。 

进而,我们设置邮件预警规则也就是触发条件,什么条件呢?这个虽然不需要了解技术实现细节,但是大致的咱们得熟悉。就是:当集群状态由黄色变成红色的时候,就会触发预警发送邮件。

那么怎么手动模拟呢?告诉大家一个实战妙招。

PUT /test-red-index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0,
    "index.routing.allocation.require.nonexistent_attr": "true"
  }
}

d42b4942bf79b7e9cea1be6b56cc20c2.png

什么意思呢?索引创建的时候指定了一个不存在的路由属性,导致创建不成功,集群状态会立马变成红色。

此时,正常情况下,在预警中心要看到预警列表,且在自己邮件那里可以收到邮件。

4.5 预警中心

57bc435a5d19abdc303acc3023f22cdc.png

d1f96676c9e2e8e7b0439ce3195a76e4.png

点击View Detail,能看到预警详情。

3974587d7c34e0e9af2fc26745aa357d.png

这是我非常喜欢的功能,也是我们之前开发做预警想做但没有实现的功能。

5、小结

现在看来水到渠成,可能读者也会反馈说,没有难度。但是,自己首次部署时候,还是陷入了过重去了解字段细节的弊端。正如文中我所说的,对于新技术的了解,更重要的是先从0到1,不是直接从zero 到 Hero。

一步步来,会更容易。当然使用时候,也发现一些问题。比如:

  • 中英文混杂的提示。

  • 中文外壳下的英文配置。

  • 部分配置字段过于冗杂。

  • 规则设置语法有一定的学习成本。

  • 部分提示信息并不直观,比如英文邮箱密码那里,是不是“用户凭证”会更好。

瑕不掩瑜,总体看来和使用下来,还是非常好用的。

12b9e190ab765415414e1c54d05a60bf.jpeg

  1. Kibana 一步步可视化实战构建步骤全集

  2. 一个免费的 Elasticsearch 多集群监控和管理工具

  3. Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南、

  4. 探索 INFINI Console:提升 Elasticsearch 管理效率的新利器

  5. 读者留言:有 Elasticsearch 国产化替代品吗?现在国产化不让用 ES 了......

b3318ad587e256a72774c9d1e4393672.png

更短时间更快习得更多干货!

和全球2000+ Elastic 爱好者一起精进!

elastic6.cn——ElasticStack进阶助手

da541b0f74d10c7405faa1350196b2d5.gif

抢先一步学习进阶干货!


http://www.kler.cn/a/504504.html

相关文章:

  • R 语言科研绘图 --- 折线图-汇总
  • 代码随想录day03
  • 信息时代的消费者行为变迁与应对策略:基于链动2+1模式、AI智能名片及S2B2C商城小程序的分析
  • Spring Boot Web技术栈(官网文档解读)
  • Opencv之模板匹配可视化
  • Flutter:使用FVM安装多个Flutter SDK 版本和使用教程
  • java -jar启动项目报错:XXX.jar中没有主清单属性
  • 小游戏前端地区获取
  • Django基础之ORM初识
  • Windows图形界面(GUI)-QT-C/C++ - Qt图形绘制详解
  • 长安“战疫”网络安全公益赛的一些随想
  • 基础理论知识:无人机图数传数据链技术详解
  • 多租户架构是什么?
  • 初学stm32 --- ADC采集内部温度传感器
  • 如何调整 Nginx 工作进程数以提升性能
  • 怎么实现Redis的高可用?
  • html中鼠标位置信息
  • 【HarmonyOS NAPI 深度探索4】安装开发环境(Node.js、C++ 编译器、node-gyp)
  • Go语言的面向对象接口说明及代码示例
  • 用户登录/登出功能,当登录页面在另一域名下