重新学习web后端开发-006-了解服务监控

thumb

知己知彼,百战不殆。- 《孙子兵法》

1. 了解服务监控

为了能够及时了解服务线上运行时的状态,同时能够在服务处于异常状态时能够进行有效的通知报警,我们通常需要对服务进行监控管理。随着分布式微服务架构的流行,服务监控已经是现代web后端开发体系中,非常重要的组成部分。

通常服务监控系统包括如下几个部分:

  • 数据提供方

    产生数据的终端,比如某web后端服务。

  • 数据采集器

    主要用来采集数据,使用push或者pull的方式,从终端收集数据

  • 数据存储

    主要将采集过来的数据以某种方式(通常存储到数据库)存储起来,供数据展示分析系统使用。

  • 数据展示分析系统

    主要是对存储中的监控数据进行分析处理,并提供报警等功能。

服务监控系统简单结构图

对于web后端开发人员,在开发服务时,就应考虑到服务监控的问题。我们可以采用比较流行的服务监控系统,帮助我们快速搭建服务监控平台。一般来说服务监控系统会集成了数据采集、数据存储、数据展示分析等功能。而后端开发人员则主要集中于数据提供方如何产生数据这部分的功能。

推荐使用telegraf(数据采集) + influxdb(数据存储) + grafana(数据展示)组合,其中:

  • telegraf:作为数据采集器,是一个插件驱动的服务器代理,用于收集指标数据。
  • influxdb:作为数据仓库,是一款优秀的时间序列数据库,使用Go语言编写。
  • grafana:作为服务监控系统界面,是一款高颜值且功能强大的开源可视化工具。

2. 数据采集方式

2.1 push方式

推方式,即数据提供方(如上图中的服务A),主动将自身运行状态信息(如内存使用信息、线程信息、GC信息等)进行上报。

常见有两种方式:

  • 一种是数据提供方将数据push到数据采集器,一般数据采集器会提供socket通道,通过tcp/udp的方式来传输数据。

  • 一种是数据提供方将数据push到消息中间件(如kafka、rabbitmq等),数据采集器通过监听消息队列获取数据。

    这种方式可以通过消息中间件进行对数据提供方和数据采集器进行解耦,比较适合用于大型的系统中。

2.2 pull方式

拉方式,即由数据采集器进行定时轮询从数据提供方进行拉取,要求数据提供方提供相应的接口供数据采集器获取数据。一般来说,数据提供方可以提供基于HTTP Restful接口。

2.3 如何选择?

push方式和pull方式各有其优点,使用何种方式应该集合具体业务场景、团队情况等方面综合而定。

项目 pull push
实时性 一般,取决于定时周期 较好
数据提供方 被动上报数据,无需感知数据采集器的存在 主动上报数据,需要主动感知数据采集器或消息中间件
数据采集器 主动拉取数据,需要感知数据提供方的存在 被动接收数据,无需感知数据提供方的存在
通常实现 短连接,如:http接口 长连接,如:tcp

3. uranus-service 服务监控模块

该服务监控模块,对外提供基于http restful接口,供数据采集器通过pull的方式收集数据。主要参考了java spring boot框架的actuaotr模块,提供了如下接口:

HTTP方法 接口地址 描述 是否需授权
GET /health 查看应用健康指标 否,如需查看详细信息,则需要授权
GET /info 查看应用信息
GET /metrics 查看应用指标信息
GET /metrics/{name} 查看具体指标
POST /shutdown 关闭应用

3.1 health接口

该接口用于查看应用健康指标。

当未通过授权时,只能查看基本信息,例如:

{
    "status": "up",
    "statusCode": 1
}

当通过授权(http basic auth)时,可以查看详细信息,例如:

{
    "details": {
        "disk": {
            "status": "up",
            "details": {
                "free": 930381459456,
                "threshold": 0,
                "total": 1127625711616
            }
        },
        "mem": {
            "status": "up",
            "details": {
                "free": 8645541888,
                "total": 17035321344,
                "used": 8389779456
            }
        },
        ....
    },
    "status": "up",
    "statusCode": 1
}

4. 小结

本节主要介绍了后端开发中需要了解的服务监控相关的知识、数据采集方式以及uranus-service服务监控模块的基本情况。下一节我们将重点关注health接口的实现中需要后端人员了解的http basic auth机制。

本文为作者原创作品,属于《重新学习web后端开发》专辑中的一篇,转载时请备注作者信息及来源。本文原文地址:https://www.donnyzhang.com/2019/02/26/uranus-006/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容