腾讯mini项目总结-指标监控服务重构

news2025/2/3 14:04:20

项目概述

本项目的背景是,当前企业内部使用的指标监控服务的方案的成本很高,无法符合用户的需求,于是需要调研并对比测试市面上比较热门的几款开源的监控方案(选择了通用的OpenTelemetry协议:Signoz,otel-collector,jaeger;uptrace不能商用),去重构原有服务,实现降本增效:减少监控服务本身的接入成本、存储成本,提高监控服务的性能。

项目目标

我们需要通过在服务中接入不同监控方案的组件,实现小而精的监控服务,最终给到企业一个测试报表,告诉他们不同的监控方案在成本与性能上的对比。

项目原先需求

image.png

个人角色

开发、测试

  • 本人负责一种监控方案(SigNoz)的接入以及测试;
  • 实现了OTEL Log的上报;
  • 负责调研如何跨服务监控链路及链路关系图;
  • 负责编写并优化监控服务代码,实现无感化接入OTEL SDK、提高可扩展性;
  • 负责替换原项目服务中用到的kafka消息处理框架(使用Watermill-kafka Pub/Sub),并进行性能测试。

项目成果

针对原服务需求,设计了SLI,然后成功在原服务接入了两种监控方案进行指标收集和上报,对监控服务代码进行了无感化和可扩展性的优化,制作出SRE报表。
对不同的监控方案进行了测试,但因为测试经验不足、过程不规范,导致结果不可信。

项目的“开发”部分

image.png

监控对象

  • Venus 是负责性能事件上报的服务
  • Profile 是负责分析性能事件的服务

项目的“测试”部分

最后一周进行的测试流程是不规范的,结果无意义。自己也能从这个错误的过程中吸取些教训。
不规范在:

  • 目标不清晰,使用的手段效率较低
  • 缺少对测试的基础知识,经验不足,走过来全是坑,时间成本高

项目实施总结

小组日程

  • 7月6日~7月13日:熟悉需要监控的服务,并针对该服务设计需监控的SLI;
  • 7月14日~7月20日:接入需调研的监控方案的组件到服务当中,学习通用的可观测性协议:OpenTelemetry;
  • 7月21日~7月25日:在需监控的服务中接入OpenTelemetry SDK,完成trace、metric、log的上报;
  • 7月26日~7月29日:没提出什么需求,在导师对提交的代码review后,解决问题;了解、学习其他成员完成的任务内容。
  • 7月30日~8月4日:调研3种监控服务的cpu、内存的可行性方案;调研如何搭建跨服务链路追踪和本服务的链路关系图。
  • 8月5日~8月10日:没什么需求,研究了下使用到的一些第三方库的源码,解决服务运行时碰到的一些小问题。
  • 8月11日~8月19日:完成新的扩展任务:使用新的kafka消息处理框架替换原有的框架并进行性能测试,解决过程中遇到的难点。
  • 8月20日~8月25日:中期汇报,完成导师提的一些需求,接入腾讯云clickhouse集群。
  • 8月26日~8月30日:OliverDing导师召集会议,安排具体的测试任务,在导师的帮助下尽力完成3种监控方案的存储、性能的测试对比。

个人在项目实施过程的优点及缺点

  • 优点:
  1. 完成我这个开发角色应该完成的任务;
  2. 有一定的主动性,会主动研究源码或查阅资料解决问题;
  3. 积极,不管是在完成任务还是讨论问题、方案上。
  • 缺点:
  1. 对问题的整体来龙去脉没理清楚就动手;
  2. 很长一段时间都不知道离项目的真正需求有多远,只会听安排(导致整体项目是不被自己把控)
  3. 不知道怎么样组织、驱动成员并合理分工(虽然我不是组长角色)

项目问题

本次项目是以失败告终的。项目真正的需求是在8月26日与导师开完会后,才领到的,就是“测试”“测试”“测试”!,看完我们的小组日程,很容易就总结出了项目失败的原因:

  • 完成了对服务的指标监控后,没有立刻开展测试的工作,而是没需求了或者去完成一些扩展任务;
  • 过多关注在本项目的“开发”上,实际应该将重心放在“测试”上(90%的时间花在开发上、10%的时间留给最终最重要的测试)。因为当初本项目招人时,提的需求看起来都是与开发有很大关联的,但需求不断再变化。改需求这个事情是能接受的,不过在“测试”领域上,真的是一点经验没有,没有花时间去学习相关的技术,导致项目最后几天内需要给出测试报表时,“一股脑盲目测试”,测试过程不合理不规范就得把结果全部推翻再重来,产生了很大的时间成本。虽然导师全力帮助我们解决一些问题,但是奈何成员们几乎都没“测试”经验,时间也非常紧急,失败便成了必然。
  • 针对于本项目组8个人在这50多天完成的成果,先不谈成功与否,我和组长都觉得我们只需3、4个人即可完成到相同的程度(暂且不谈离真正的需求差多远)。这里我想表达的是:项目任务安排和成员分工这两个环节是出现了问题的

总结沉淀

本人经过此项目后,熟悉了几套监控方案的部署,积累了一些方法和经验,比如:

  • 如何通过搭建跨服务链路追踪,对多个服务进行监控;
  • 在完成监控服务无感化接入的任务时学习到:如何优化代码,减少对原服务的代码侵入,提高了对代码的可扩展性的关注;
  • 解决问题的方式:多利用搜索引擎,遇到问题先看官方文档和FAQ,不要“闭门造轮子”,多去参考官方的示例,避免增加时间成本,重复造轮子。

体会与收获

  • 项目学习的新知识

    • 通用的可观测性协议:OpenTelemetry和一些实现的方案及组件:Signoz、otel-collector、jaeger、prometheus、grafana
    • 分布式监控链路追踪系统的搭建;
    • 熟悉了Go语言(goroutine、test、benchmark)和一些服务中使用到的开发框架和中间件:fiber、viper、kafka、cobra、zap、watermill-Kafka Pub/Sub等等。
    • 监控cpu、内存等的方式:Pprof、cAdvisor、docker stats
    • 对clickhouse有更多的认识,比如:shard、replica(https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/replication )
      8367d9d717c0ab676898e89bc991f23.png
  • 代办

    • 课余时间去阅读Google的SRE,本项目涉及到其中的一部分:Monitoring,目前我对整体SRE还是没一个清晰的概念。之后我需要能够用一句话去总结SRE到底是什么
  • 参与此课程的感想与建议
    对于本次项目失败的结果,我最大的感受是非常非常非常地惋惜!首先是我们组是最多人的(8个),但是做出这种成果,我对8个人消耗的时间成本感到不能接受(虽然只有3、4个人是主力)
    虽然项目没完成真正的需求,项目体量是比以前自己的做过的项目大,收获也非常多,与组员一起加班赶工的日子也是累并快乐着!

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

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

相关文章

基于SpringBoot的社区报修维修管理系统

末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 一、项目简介 21世纪的今天&#xff0…

QT使用QFileSystemModel实现的文件资源管理器(开源)

文章目录 效果图现实的功能总体框架功能介绍视图双击进入处理复制与剪切粘贴重命名,新建显示文件详细信息文件路径导航栏 总结 效果图 现实的功能 支持文件/文件夹复制,粘贴,剪切,删除,重命名的基本操作支持打开图片&…

zookeeper搭建(单机模式和集群模式)

目录 单机模式: 集群搭建: 单机模式: 1.新建data和logs目录(data目录用来存放数据库快照,logs目录用来存放日志文件) [rootmaster dev]# mkdir -p /home/apps/zookeeper/data [rootmaster dev]# mkdir -p /home/apps/zookeeper/…

静态代理IP是如何助力跨境电商运营的?

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

ROS1入门之节点与指令

文章目录 前言一、RO1的安装与测试1.ROS1安装2.ROS1测试 二、ROS1创建节点1.创建工作空间2.创建功能包3.创建节点4.配置CMakeLists5.编译运行节点🍉编译节点🍓source环境🍎运行节点 三、ROS1常用指令1.rosnode✨rosnode list🎊ros…

C++进阶--多态

概念 多态是面向对象编程中的一个重要概念,它允许不同类型的对象对同一个消息做出不同的响应。具体的来说,当相同的消息传递给不同的对象时,这些对象能够以不同的方式进行处理,从而产生不同的行为。 对于多态的实现,…

FLASH存放uboot及VxWorks并引导自启动

本文使用飞腾E2000Q miniITX开发板,验证在E2000启动用的qspi flash中同时写入uboot固件和vxWorks镜像,并测试开机自动引导启动。 一、环境准备: 1.1 硬件环境: 1.E2000Q miniITX行业开发板一块 2.U盘一个 3.TTL调试串口线一条 1.2 软件环境: 1.做好的vxWorks.bin(公…

2024美赛数学建模A题思路源码——七鳃鳗性别比例和生态系统关系

赛题目的:分析一个物种根据资源可用性改变其性别比例的能力的利弊。开发一个模型,分析对生态系统中由此产生的相互作用。 问题一.七鳃鳗性别比例对生态系统的影响 问题分析 建立一个简化版的模型,来探讨以下问题: 1.我们假设七鳃鳗种群的增长遵循Logistic生长模型,其中食…

Linux网络编程 基础

OSI七层模型 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的…

《HTML 简易速速上手小册》第9章:HTML5 新特性(2024 最新版)

文章目录 9.1 HTML5 新增标签和属性9.1.1 基础知识9.1.2 案例 1:创建一个结构化的博客页面9.1.3 案例 2:使用新的表单元素创建事件注册表单9.1.4 案例 3:创建一个具有高级搜索功能的搜索表单 9.2 HTML5 表单增强9.2.1 基础知识9.2.2 案例 1&a…

海洋鱼类检测7种YOLOV8NANO

【免费】海洋鱼类检测,7种类型,YOLOV8训练,转换成ONNX,OPENCV调用资源-CSDN文库 采用YOLOV8NANO训练模型,得到PT模型,然后转换成ONNX,供OPENCV的DNN调用,摆脱PYTORCH依赖&#xff0c…

中小学电子编程内部集中培训第五课

超声波 小车例程 测试距离 此程序把超声波测量的距离通过串口打印出来,程序中会用到控制模块中的 初始化,串口模块中的比特率设置、Serial 打印和 Serial 打印自动换行,云开智 能中的超声波测距模块,完成后如图 19-1:…

RK3588开发板Ubuntu与开发板使用U盘互传

1 将 U 盘(U 盘的格式必须为 FAT32 格式,大小在 32G 以下)插到开发板的 usb 接口,串口打印信息如下所示,U 盘的设备节点是/dev/sdb4。U 盘的设备节点不是固定的,根据实际情况来查看设备节点。 2 输入以下命令挂载 U 盘&#xff0c…

ssl数字证书是什么

SSL证书是一种数字证书,用于在网络传输中提供加密和身份验证功能,从而保护数据的安全性和完整性。正规的SSL证书大多是由由权威的证书颁发机构(CA)颁发的,例如Certum、Digicert、Sectigo等,它们颁发的SSL数…

Qt多线程与SocketTCP的简单实现

1.相关说明 多线程实现Qt的socket编程实现客户端发送文件,服务端接收文件,并且在客户端设置了心跳,用于监控服务端是否存活。因为Qt中socket套接字发送数据,会先把数据发送至缓冲区中,在发送数据过程中,soc…

基于Transformer结构的扩散模型综述

🎀个人主页: https://zhangxiaoshu.blog.csdn.net 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️,如有错误敬请指正! 💕未来很长,值得我们全力奔赴更美好的生活&…

【Qt基本功修炼】Qt线程的两种运行模式

1. 前言 QThread是Qt中的线程类,用于实现多线程运行。 QThread有两种工作模式,即 消息循环模式无消息循环模式 两种模式分别适用于不同的场景。下面我们将从多个方面,讲解QThread两种工作模式的区别。 2. 消息循环模式 2.1 实现原理 Q…

Tomcat 部署项目时 war 和 war exploded区别

在 Tomcat 调试部署的时候,我们通常会看到有下面 2 个选项。 是选择war还是war exploded 这里首先看一下他们两个的区别: war 模式:将WEB工程以包的形式上传到服务器 ;war exploded 模式:将WEB工程以当前文件夹的位置…

《Pandas 简易速速上手小册》第5章:Pandas 数据合并与重塑(2024 最新版)

文章目录 5.1 数据合并:Concatenate 和 Merge5.1.1 基础知识5.1.2 重点案例:客户订单数据合并5.1.3 拓展案例一:产品目录和销售数据合并5.1.4 拓展案例二:员工信息和部门数据合并 5.2 数据透视和重塑5.2.1 基础知识5.2.2 重点案例…

保姆级系列:各种打印机驱动的安装和使用

保姆级系列:各种打印机驱动的安装和使用 1.介绍2.下载3.安装4.实践教程5.总结 1.介绍 市面上打印机品牌和型号众多,打印机接口目前主要分为如下几种: 逻辑端口:TCP/IP、WSD、USB、LPT、COM 物理端口:RJ45、DB15母、US…