写点什么

Crisp是如何实现可扩展微服务监控的

2018 年 3 月 29 日

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Crisp 的工程团队分享了他们在监控微服务技术栈方面的经验。他们开源了使用Rust 编写的Vigil 监控项目,该项目是一组拉取/ 推送的探针,用于为多种语言收集健康数据,它包含了一个状态仪表盘并且能够与其他外部告警工具集成。

Crisp 为 Web 站点提供了实时的方案。Crisp 的监控工具,名为 Vigil,包含了探针和一个仪表盘,该仪表盘能够展现探针所收集的各种微服务的状态。Vigil 的探针分为两类:轮询(poll)和推送(push)。轮询探针会阶段性地通过TCP 或HTTP 轮询服务,并基于给定的预期值检查响应内容和响应时间。推送探针通过集成微服务的源码来实现,它会在服务进程内阶段性地发送状态信息给Vigil。这种模式在监控系统中是很常见的,大多数系统这两种方式都支持,只是会加关注其中的某一种。Vigil 是使用 Rust 编写的,在开源之前已经作为内部项目运行好几年了。

Crisp 每月会提供超多 10 亿次的请求。它们的后端有 40 多个不同的微服务,大多数都不是 HTTP 的。服务间的通信通过 RabbitMQ 来实现。有一些基于 HTTP 的微服务,如 REST API,会位于负载均衡器之后。另外,还有大约 20 个守护进程,如 Postfix 和 MongoDB。

每个微服务都会在多个节点上运行,每个节点会通过 replica 标识符来进行标识。节点的状态可以通过仪表盘来获取,可以查看该节点的状态是健康、病态(sick)还是已经死亡(dead)。在判断服务节点处于“病态”时,在两种模型中,分别按照不同的方式来确定,在推送模型中,是因为所报告的系统负载(CPU 或 RAM)超过了一个阈值,而在轮询模型中,则是因为服务的响应消耗了太多的时间。服务的死亡状态表明它可能已经宕机了。

InfoQ 采访了 Crisp 的 CTO Valerian Saliou,以了解 Vigil 如何进行内部和外部监控的更多信息:

当 Web 节点中的某一个节点宕机时,如果微服务节点是按照推送模式监控的话,我们马上就会知道,因为这意味着节点停机后,它就不会发送报告了,Vigil 将会自动触发一个“Down”提醒到 Slack,然后会显示到公开的状态页中,并且会精确定位宕机的节点。

Saliou 说到,对于终端用户外部端点的监控,Vigil 在 https://api.crisp.chat 上会检查 API,通过一个轮询探针检查公开访问的状态是否为 OK。另外,相同 API 的微服务还会通过推送方式进行报告,这就是在 Crisp 的状态页的“Web”分组和“Relay”分组会看到两个对该 API 引用的原因。

Vigil 的推送集成支持多种语言: Rust , node Go 。它还与第三方的工具进行了集成,如 Slack 和 Email,但是还没有对其他常见告警工具的支持,如 Nagios 和 PagerDuty。在 Crisp,Vigil 目前以单节点方式运行。冗余功能目前还没有日程表,Saliou 说因为它的目标是“拥有一个简单的状态页面,足以完成任务,并让 SaaS 开发人员 / 系统管理员能够轻松访问一个不需任何成本的状态页面”。

查看英文原文 Monitoring Microservices at Scale at Crisp

2018 年 3 月 29 日 19:00950

评论

发布
暂无评论
发现更多内容

Springboot拦截器使用及其底层源码剖析

南方有乔木兮

并发编程基础原理

刚刚🏂

Twitter高性能分布式日志系统架构解析

俊俊哥

pulsar bookKeeper 分布式文件存储

秒懂云通信:如何用阿里云语音通知服务(小白指南)

巨侠说

语音

六字说出微服务的本质

看山

架构 微服务

助力银行核心下移,监控分布式数据库,融天鹰眼轻松应对五大挑战

DT极客

继oneAPI之后,英特尔为异构计算跨架构编程再添“利器” 发布全新机器编程系统

飞天鱼2017

LeetCode002-两数相加-medium

书旅

算法 数据结构与算法

面经手册 · 第1篇《认知自己的技术栈盲区》

小傅哥

Java 小傅哥 面试官 技术栈

【华为云技术分享】DLI跨源|当DLI遇见MongoDB

华为云开发者社区

数据库 mongodb dlib 数据集 华为云

实践录丨如何在鲲鹏服务器OpenEuler操作系统中快速部署OpenGauss数据库

华为云开发者社区

数据库 鲲鹏920 操作系统 服务器 opengauss

海华大赛第一名团队聊比赛经验和心得:AI在垃圾分类中的应用

华为云开发者社区

AI 算法 数据分析 垃圾回收机制 华为云

LeetCode题解:189. 旋转数组,使用新数组Copy,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

webRTC框架下的视频主动丢帧

fumingwang

音视频 WebRTC

Spring系列第2篇:控制反转(IoC)与依赖注入(DI),晦涩难懂么?

老大哥

(政务上链)新数据孤岛、安全风险等问题待解

CECBC区块链专委会

工作效率 公开透明 新技术

IDEA 插件找不到?看这里!那就自己敲一个!

程序员小航

json IDEA 开发工具 idea插件 IntelliJ IDEA

Android Development最佳实践

teoking

ARTS打卡Week 09

teoking

JVM系列之:通过一个例子分析JIT的汇编代码

程序那些事

Java JVM JIT 汇编

骚操作!用 CPU 烤肉,这位程序员做到了!

程序员生活志

程序员 gpu 程序人生

新技术(区块链)--让游戏行业走的更远

CECBC区块链专委会

区块链技术 防篡改不可逆

实现扫码登陆的最简单方案与原理

Java小咖秀

Java 解决方案 经验总结

创业公司技术体系建设-CI/CD

星际行者

CI/CD

腾讯安全领御区块链与张裕集团达成战略合作,打造高端葡萄酒区块链溯源平台

CECBC区块链专委会

产品溯源 无法篡改

Java异步之《我call(),Future在哪里》

BUZHIDAO

信创舆情一线--抖音、微信读书被判侵害用户个人信息权益

统小信uos

功能扎实的ERP模版已上架应用库(支持免费安装使用)

明道云

java高并发系列 - 第11天:线程中断的几种方式

简爱W

架构师技术领导力成长之路

IT民工大叔

领导力 架构师

一年多远程工作经验,说说真实的感受

盛安德软件

2021年,算法还“香”吗?

2021年,算法还“香”吗?

Crisp是如何实现可扩展微服务监控的-InfoQ