写点什么

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:001603

评论

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

《中国汽车OTA行业发展洞察2022》案例征集

易观分析

汽车 OTA 案例征集

流支付时代的Zebec,将打开Web3支付的大门?

鳄鱼视界

悲观锁和乐观锁的区别以及实现方式

浅羽技术

乐观锁 悲观锁 8月月更

2022年7月视频行业用户洞察:暑期优质内容上线,用户规模及使用时长增长显著

易观分析

视频 报告

流支付时代的Zebec,将打开Web3支付的大门?

小哈区块

[JS入门到进阶] 手写裁剪图片的工具,并部署。一键裁剪掘金文章封面

HullQin

CSS JavaScript html 前端 8月月更

前端高频面试题(二)(附答案)

helloworld1024fd

JavaScript 前端

vivo前端智能化实践:机器学习在自动网页布局中的应用

vivo互联网技术

机器学习 前端 网页布局

灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报

声网

直播 RTE NG-Lab

JPEX围绕世界杯打造“平台+运动”新生态,为JPC深度赋能

股市老人

流支付时代的Zebec,将打开Web3支付的大门?

股市老人

Mysql安装教程

楠羽

#开源

流支付时代的Zebec,将打开Web3支付的大门?

西柚子

锁住它,快告诉我乐观锁与悲观锁的区别?

知识浅谈

8月月更

【机器学习】向量化计算 -- 机器学习路上必经路

计算机魔术师

8月月更

【小程序项目开发 -- 京东商城】uni-app 商品分类页面(上)

计算机魔术师

8月月更

数字藏品app开发:nft数字藏品是什么?怎么制作和出售?

开源直播系统源码

数字藏品 数字藏品软件开发 数字藏品源码出售 数字藏品开发 数字藏品系统

mysql 的索引分类 B + 和 hash 详解

浅羽技术

MySQL 索引 hash B+树 8月月更

mysql的存储引擎详解

浅羽技术

MySQL 存储引擎 MySQL InnoDB memory Store 8月月更

云原生(三十) | Kubernetes 篇之应用商店 -Helm 介绍

Lansonli

云原生 8月月更

MQ 的原理以及持久化

浅羽技术

MQ 消息队列 Activemq active 8月月更

【CSS】你还记得组合选择器怎么用吗?

翼同学

前端 编程语言 8月月更 学习分享

【小程序项目开发 -- 京东商城】uni-app 商品分类页面(下)

计算机魔术师

8月月更

【算法实践】有始有终,雨露均沾--手把手带你手撸选择排序

迷彩

Python 开源 选择排序 算法实践 8月月更

【CSS】背景样式(颜色、图片、平铺、附着和位置)

翼同学

CSS html 前端 8月月更 学习分享

数据仓库与数据中台最大的区别是什么?终于有人讲明白了

雨果

数据中台 数据仓库

长安链源码分析启动(6)

长安链

【小程序项目开发-- 京东商城】uni-app之首页商品楼层

计算机魔术师

8月月更

【CSS】伪类选择器有什么用?有哪些是常用的伪类?

翼同学

CSS 前端 编程语言 8月月更 学习分享

Go 语言实现常见排序算法

宇宙之一粟

排序算法 Go 语言 8月月更

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