写点什么

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

  • 2018-03-29
  • 本文字数:1214 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 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-03-29 19:001798

评论

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

网站安全检测:推荐8款免费的 Web 安全测试工具

喀拉峻

网络安全

15 Promethus之核心组件介绍

穿过生命散发芬芳

Prometheus 1月月更

好家伙!你这网络基础可以啊!1️⃣

XiaoLin_Java

1月日更

ReactNative进阶(十九):React Native 按钮 Touchable 系列组件使用详解

No Silver Bullet

​React Native 1月月更 Touchable

架构实战-毕业设计项目

无名

架构实战营 「架构实战营」

架构实战营-毕业设计

瓜子葫芦侠

「架构实战营」

消息积压&消息丢失解决方案

JavaEdge

1月月更

技术管理养成:一个普通的在线文档做瀑布与敏捷的融合

dclar

团队管理 项目管理 敏捷开发 团队协作 CTO

「offer来了」1张思维导图,6大知识板块,带你梳理面试中CSS的知识点!

星期一研究室

css3 前端开发 面试题 面试‘ HTML5, CSS3

zip文件自动打包

你?

设计电商秒杀系统

Mars

架构实战营 「架构实战营」

一条 Git 命令减少了一般存储空间,我的服务器在偷着笑

沉默王二

LeetCode每日一题 No.1716 计算力扣银行的钱

DawnMagnet

算法 rust LeetCode 力扣

Go 语言快速入门指南: Go 并发互斥锁

宇宙之一粟

并发 Go 语言 互斥锁 1月月更

云原生训练营 毕业总结

张大彪

云原生

电商秒杀系统设计

天天向上

架构实战营

“微博评论”高性能高可用计算架构设计

swallowluo

架构实战营 #架构实战营 「架构实战营」

记中山公园全马--一场无准备的马

wood

跑步 300天创作

设计电商秒杀系统

Steven

架构实战营

为什么您的企业需要移动CRM系统

低代码小观

移动 CRM CRM系统 客户关系管理系统 企业管理工具

【微博评论】功能的高性能高可用计算架构设计

红莲疾风

「架构实战营」

架构训练营 - 模块 9 作业

焦龙

架构训练营

第一节:创建SpringBoot项目并运行HelloWorld

入门小站

springboot

kafka Controller作用

石头哥谈架构

大数据 kafka 消息中间件

Hoo虎符研究院 | 投资前沿——过去一周顶级投资机构动向

区块链前沿News

虎符 Hoo 虎符交易所 区块链投资

当使用Vue2+Babel时,如何实现组件重新渲染

吴脑的键客

Vue babel

[架构实战营] 模块六作业

Geek_0ed632

「架构实战营」

渗透测试思路总结

网络安全学海

黑客 信息安全 渗透测试 安全漏洞

盘点 2021|人只有跌入谷底,每一步都是往上走的。

踏雪痕

生活 盘点2021 盘点 2021

连续读书1000天,我开始思考一篇好的读书总结是什么样子的

宇宙之一粟

读书总结 1月月更

大数据集群节点磁盘负载不均衡怎么办?

明哥的IT随笔

大数据 hadoop CDH CDP

Crisp是如何实现可扩展微服务监控的_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章