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

栏目: 后端 · 发布时间: 5年前

内容简介:为了能够及时了解服务线上运行时的状态,同时能够在服务处于异常状态时能够进行有效的通知报警,我们通常需要对服务进行监控管理。随着分布式微服务架构的流行,服务监控已经是现代web后端开发体系中,非常重要的组成部分。通常服务监控系统包括如下几个部分:对于web后端开发人员,在开发服务时,就应考虑到服务监控的问题。我们可以采用比较流行的服务监控系统,帮助我们快速搭建服务监控平台。一般来说服务监控系统会集成了数据采集、数据存储、数据展示分析等功能。而后端开发人员则主要集中于数据提供方如何产生数据这部分的功能。

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

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

  • 数据提供方

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

  • 数据采集器

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

  • 数据存储

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

  • 数据展示分析系统

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

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

对于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
}
复制代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP基础教程

PHP基础教程

厄尔曼 / 贾菡、刘彦博 / 人民邮电出版社 / 2010-1 / 49.00元

《PHP基础教程(第3版)》非常通俗易懂地向初学者介绍了PHP语言的基本概念、使用方法和注意事项。全书通过丰富的示例,引领读者逐步掌握这门流行的Web开发语言,使读者能够上手亲自编写适用于常用场景的PHP脚本。《PHP基础教程(第3版)》适合有基本的HTML经验的读者阅读。 点击链接进入新版: Web开发系列:PHP基础教程(第4版)一起来看看 《PHP基础教程》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具