Crisp是如何实现可扩展微服务监控的
极客时间编辑部
讲述:丁婵大小:1.35M时长:02:57
最近,Crisp 的工程团队分享了他们在监控微服务技术栈方面的经验。他们使用 Rust 编写了监控工具 Vigil,并将其开源。该工具包含了探针和一个仪表盘,仪表盘能够展现探针所收集的各种微服务的状态。
Vigil 的探针分为两类:轮询(poll)和推送(push)。轮询探针会阶段性地通过 TCP 或 HTTP 轮询服务,并基于给定的预期值检查响应内容和响应时间。推送探针则通过集成微服务的源码来实现,它会在服务进程内阶段性地发送状态信息给 Vigil。
这种模式在监控系统中很常见,大多数系统都会支持这两种模型,只是会加关注其中的某一种。
据介绍,Crisp 每月会提供超过 10 亿次的请求,它们的后端有 40 多个不同的微服务,大多数都不是 HTTP 的。服务间的通信通过 RabbitMQ 来实现。有一些基于 HTTP 的微服务,如 REST API,会位于负载均衡器之后。
每个微服务都会在多个节点上运行,每个节点会通过 replica 标识符来进行标识。节点的状态可以通过 Vigil 中的仪表盘来获取,可以查看该节点的状态是健康、病态(sick)还是已经死亡(dead)。
在判断服务节点处于“病态”时,轮询和推送这两种模型会分别按照不同的方式来确定。在推送模型中,是因为所报告的系统负载(CPU 或 RAM)超过了一个阈值,而在轮询模型中,则是因为服务的响应消耗了太多的时间。服务的死亡状态表明它可能已经宕机了。
为了进一步了解 Vigil 是如何进行内部和外部监控的,InfoQ 采访了 Crisp 的 CTO 瓦勒良·萨利乌(Valerian Saliou)。
萨利乌表示,当 Web 节点中的某一个节点宕机时,如果微服务节点是按照推送模式监控的话,大家马上就会知道,因为这意味着节点停机后,它就不会发送报告了,Vigil 将会自动触发一个“Down”提醒到 Slack,然后会显示到公开的状态页中,并且会精确定位宕机的节点。
而对于终端用户外部端点的监控,Vigil 会通过一个轮询探针检查公开访问的状态是否为 OK。另外,相同 API 的微服务还会通过推送方式进行报告,这就是在 Crisp 状态页的“Web”分组和“Relay”分组中会看到两个对该 API 引用的原因。
此外,Vigil 的推送集成支持多种语言,包括 Rust、node 和 Go。它还与第三方的工具进行了集成,如 Slack 和 Email,但目前还没有对其他常见告警工具的支持。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论