【微服务治理之监控APM】系统监控架构概述

news2025/1/16 7:51:26

APM 简介

APM 通常认为是 Application Performance Management 的简写,它主要有三个方面的内容,分别是

  1. Logs(日志)、
  2. Traces(链路追踪)
  3. Metrics(报表统计)。

以后大家接触任何一个 APM 系统的时候,都可以从这三个方面去分析它到底是什么样的一个系统。Metrics可以用于服务告警,Tracing 和 Logging 用于调试发现问题。监控、追踪和日志是可观测性(observability)的基石
在这里插入图片描述

有些场景中,APM 特指上面三个中的 Metrics,我们这里不去讨论这个概念。这节我们先对这 3 个方面进行介绍,同时介绍一下这 3 个领域里面一些常用的工具。

1、Metrics

Prometheus:收集度量标准
告警管理器:根据指标查询向各种提供者发送警报
Grafana:把prometheus收集到的数据,变成可视化豪华仪表板
在这里插入图片描述
还有一个方案是使用美团开源监控系统CAT,提供了比较全面的实时监控告警服务。
优势:监控功能强大,基本上可以覆盖各种监控场景
劣势:接入成本较高、对业务代码侵入较大

1、Logs ,就是对个应用中打印的 log 进行收集和提供查询能力。

  • Logs 的典型实现是 ELK (ElasticSearch、Logstash、Kibana),三个项目都是由 Elastic 开源,其中最核心的就是 ES 的储存和查询的性能得到了大家的认可,经受了非常多公司的业务考验。Logstash 负责收集日志,然后解析并存储到 ES。通常有两种比较主流的日志采集方式,一种是通过一个客户端程序 FileBeat,收集每个应用打印到本地磁盘的日志,发送给 Logstash;另一种则是每个应用不需要将日志存储到磁盘,而是直接发送到 Kafka 集群中,由 Logstash 来消费。
    Kibana 是一个非常好用的工具,用于对 ES 的数据进行可视化,简单来说,它就是 ES 的客户端。

在这里插入图片描述

我们回过头来分析 Logs 系统,Logs 系统的数据来自于应用中打印的日志,它的特点是数据量可能很大,取决于应用开发者怎么打日志,Logs 系统需要存储全量数据,通常都要支持至少 1 周的储存。

每条日志包含 ip、thread、class、timestamp、traceId、message 等信息,它涉及到的技术点非常容易理解,就是日志的存储和查询。

使用也非常简单,排查问题时,通常先通过关键字搜到一条日志,然后通过它的 traceId 来搜索整个链路的日志。

题外话,Elastic 其实除了 Logs 以外,也提供了 Metrics 和 Traces 的解决方案,不过目前国内用户主要是使用它的 Logs 功能。

2、 Traces 系统,它用于记录整个调用链路。

前面介绍的 Logs 系统使用的是开发者打印的日志,所以它是最贴近业务的。而 Traces 系统就离业务更远一些了,它关注的是一个请求进来以后,经过了哪些应用、哪些方法,分别在各个节点耗费了多少时间,在哪个地方抛出的异常等,用来快速定位问题。

经过多年的发展,Traces 系统虽然在服务端的设计很多样,但是客户端的设计慢慢地趋于统一,所以有了 OpenTracing 项目,我们可以简单理解为它是一个规范,它定义了一套 API,把客户端的模型固化下来。
微服务架构普及,分布式追踪系统大量涌现,但API互不兼容,难以整合和切换,因此OpenTracing提出了统一的平台无关、厂商无关的API,不同的分布式追踪系统去实现。这种作用与“JDBC”类似。
OpenTracing是一个轻量级的标准化层,位于“应用程序/类库”和“日志/追踪程序”之间。
应用程序/类库层示例:开发者在开发应用代码想要加入追踪数据、ORM类库想要加入ORM和SQL的关系、HTTP负载均衡器使用OpenTracing标准来设置请求、跨进程的任务(gRPC等)使用OpenTracing的标准格式注入追踪数据。所有这些,都只需要对接OpenTracing API,而无需关心后面的追踪、监控、日志等如何采集和实现。
当前比较主流的 Traces 系统中**,Jaeger、SkyWalking** 是使用这个规范的,而 Zipkin、Pinpoint 没有使用该规范。

SkyWalking 在国内应该比较多公司使用,是一个比较优秀的由国人发起的开源项目,已进入 Apache 基金会。
另一个比较好的开源 Traces 系统是由韩国人开源的 Pinpoint,它的打点数据非常丰富。国内用skywalking比较好,有成熟的社区,可以加群和创始人沟通。
在这里插入图片描述Skywalking目前想要做成跟踪、监控、日志一体的解决方案(Tracing, Metrics and Logging all-in-one solution)。
数据收集:Tracing依赖探针(Agent),Metrics依赖Prometheus或者新版的Open Telemetry,日志通过ES或者Fluentd。
数据传输:通过kafka、Grpc、HTTP传输到Skywalking Reveiver
数据解析和分析:OAP系统进行数据解析和分析。
数据存储:后端接口支持多种存储实现,例如ES。
UI模块:通过GraphQL进行查询,然后通过VUE搭建的前端进行展示。
告警:可以对接多种告警,最新版已经支持钉钉。

参考:
1、https://developer.aliyun.com/article/971591?spm=a2c6h.14164896.0.0.5b90c520Bz1nGI
2、https://developer.aliyun.com/article/1053064
3、https://blog.51cto.com/mingongge/3313415

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中scoped原理与样式穿透原理

是什么 在vue组件中的style标签上有一个特殊属性:”scoped“ 为什么 当一个style标签拥有scoped属性时,它的CSS样式就只能作用于当前的组件,通过该属性,可以使得组件之间的样式不互相污染。 怎么样实现的 1.为组件实例生成一个唯一…

[附源码]SSM计算机毕业设计智能视频推荐网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

codeforces:F. All Possible Digits【贪心 + 模拟进位】

目录题目截图题目分析ac code总结题目截图 题目分析 注意是只能再最后一位加我们要使得0到p - 1都出现至少一次统计出现的数字aset考虑最后一位pivot情况1:如果pivot前都出现了,就不用进位了,pivot只需要加到最大的未出现在aset的num即可情况…

【编程题】【Scratch二级】2022.09 小老鼠偷面包

小老鼠偷面包 1. 准备工作 (1)背景:Stars,绘制如下图所示的迷宫; (2)角色:Cat 2、Mouse1、Bread。 2. 功能实现 (1)Cat 2、Mouse1和Bread初始位置和方向如…

机器人C++库(12) Robotics Library 之路径规划算法:PRM、RRT、EET算法

机器人C库(12)Robotics Library 之路径规划算法:PRM、RRT、EET算法 RL库的运动规划(rl::plan)模块集成了以下经典的路径规划算法: PRM算法:概率路线图算法RRT算法:快速探索随机树算法EET算法:搜索树算法-基…

牧场系统设计与实现-计算机毕业设计源码+LW文档

关键代码 package com.example.controller; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.huto…

japonensisjava乱码_Java乱码问题原因及解决方案

一. java乱码乱码问题解决思路,java乱码分为以下几种 1. 请求乱码 如果是在请求过程中发生的乱码,有可能是以下几种情况: 参数放在 URL 地址中乱码; 参数在请求体中乱码; 数据库本身乱码; 数据从 Java 应用程序传入数据库的过程中乱码。 2. 响应乱码 如果是响应乱码,那…

Go语言学习(八)-- Gin入门

Gin 是一个 Go (Golang) 编写的轻量级 http web 框架,运行速度非常快。Gin 最擅长的就是 Api 接口的高并发,如果项目的规模不大,业务相对简单,这个时候我们 也推荐您使用 Gin。 当某个接口的性能遭到较大挑战的时候,这…

Prometheus监控案例

一:环境规划: 主机名主机地址角色node4192.168.188.114prometheus客户端node5192.168.188.115prometheus服务端 二. 监控远程linux主机: 1. 解压node_exporter压缩包: [rootnode4 ~]# tar xf node_exporter-1.3.1.linux-amd64…

RT-Thread 下的文件内容对比 MSH shell cmd 命令实现方法

前言 在使用 RT-Thread 时,需要对两个文件的内容进行比较,顺手写了一个测试的 MSH shell 命令,经过优化,发现功能可以使用 RT-Thread 下支持多种文件系统,如FAT等,可以通过 USB、串口 的 Ymodem 等协议把文…

YOLOv5-seg数据集制作、模型训练以及TensorRT部署

YOLOv5-seg数据集制作、模型训练以及TensorRT部署版本声明一、数据集制作:图像 Json转txt二、分割模型训练三 tensorRT部署版本声明 yolov5-seg:官方地址:https://github.com/ultralytics/yolov5/tree/v6.2 TensorRT:8.x.x 语言:…

基于stm32单片机体重秤电子秤超重提醒

资料编号:107 下面是相关功能视频演示: 107-基于stm32单片机体重秤电子秤称重超重报警Proteus仿真(源码仿真全套资料)功能介绍: 采用stm32单片机,可以设置称重上限制,LCD1602显示重量&#xf…

04_tcp

知识点1【多播】 多播地址: 多播地址向以太网MAC地址的映射 UDP多播工作过程: 多播地址结构体: 多播套接口选项: 知识点2【TCP面向链接编程】 1、创建tcp套接字 2、做为客户端需要具备的条件 3、connect链接服务器的函数…

地图下载白嫖神器!你该怎么用好它

今天介绍一下做数据可视化网站比较好的两个平台。一个是阿里云的Datav,另一个是易智微easyv. 一、DataV.GeoAtlas 前段时间 我们就给大家分享过阿里云的DataV.GeoAtlas地理小工具系列。我们可以通过这个平台下载高德比较新的地图数据,数据的时效性是有较…

如何查看SAP版本及HANA版本?

目录 一、查SAP NetWeaver版本 二、查看S/4 HANA版本 在SAP运维及系统集成时,经常外面公司问及本公司的SAP版本及HANA版本。其实是每一个登录SAP的用户都可以查到的。方法如下: 一、查SAP NetWeaver版本 SAP界面上选择菜单:系统-状态&am…

哈夫曼树与哈夫曼编码

哈夫曼树:结点中赋予一个某种意义的值,称为结点的权值,从根结点开始,到目标结点经过的边数,称为路径长度,路径长度乘以权值,称为带权路径长度; 例如:根结点代表着快递集…

上位机工业协议-S7COMM

1、S7协议主要针对西门子相关设备通信。先了解基本通信对象、通信环境、通信报文,再处理S7COMM通信库的封装与测试。 2、西门子设备通信 - PLC:系列 LOGO、200、200Smart、300、400、1200、1500 - PLC:LOGO、200、200Smart、300、400、1…

Elastic Stack容器化部署拓展(Https、AD域集成)并收集Cisco设备的日志信息

前言: 还记得在去年的笔记中提到过EFK(Elasticsearch-Filebeat-Kibana)的部署,但是其中的内容相对简单,也没有提到一些额外的Elastic Stack的特性。链接如下:https://blog.csdn.net/tushanpeipei/article/…

JSTL使用

目录 简介: 组成 使用: code核心库使用 ​编辑 fmt格式化 ​编辑 简介: 全称:JSP Standard Tag Library 中文名:JSP标准标签库 作用:用于扩展JSP中的标签,能够为JSP页面提供流程控制、类型转换等功能的标签。替换JSP中代码…

【Spring Cloud实战】Ribbon负载均衡

gitee地址:https://gitee.com/javaxiaobear/spring-cloud_study.git 在线阅读地址:https://javaxiaobear.gitee.io/ 1、概述 Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项…