运维工具如此割裂,九招帮你统一纳管
背景
在运维工具这个江湖中,出现了众多独行侠客,各怀绝技,各自为战。这些开源监控软件如同武林中的各派门派:SkyWalking 以精湛的追踪功夫独步武林;Prometheus 以灵活的告警机制纵横江湖;ELK 则如同黯然销魂掌,以卓越的日志分析、数据可视化技能令人叹为观止。
门派各自捍卫领地,争夺资源,却忽略了武林大势。江湖中有人指出,如果这些侠客们能够携手共进,共同面对武林变局,必定能够形成无敌的联合之势。
直到江湖中出现了一位侠客,号称能“以一抵十”,同时击退 SkyWalking、Sentry、Prometheus、OpenSearch 等各派高手,让运维团队从“对运维工具的运维”工作中解放出来,并提升产、研、运团队的整体效能。
这位侠客便是「观测云」,它是一款面向开发、运维、测试及业务团队的实时数据监测平台,能够统一满足云、云原生、应用及业务上的监测需求,快速实现基础设施、中间件、应用层和业务层的可观测。基础设施监测、日志与指标管理、应用性能监测、用户访问监测、可用性监测、系统级安全巡检、场景和仪表板等均为「观测云」的可观测解决方案,通过统一的数据采集、全面的数据监控、无缝的关联分析、自定义的场景搭建、高度的可编程性及敏捷的成员协作,为用户提供最迅速、最轻松、最全面、最自由的系统可观测平台。
笔者今天就给大家分享这样一个 case:观测云用九招帮助某客户替换掉 5 套监控平台。
客户个例
该客户为一家中小型的金融方案提供商,客户的 DevOps 团队分为前端、后端、运维等几个小组,大家各司其职、密切合作,不断地推出新产品、新功能以满足业务需求。
根据双方的两次技术交流,该客户向观测云团队反馈了监控现状:前端、后端、运维三个小组使用了 5 个以上运维工具/服务,包括:Sentry、SkyWalking、Prometheus+Grafana、OpenSearch 订阅服务(AWS)、AWS CloudWatch 等。
显然,分散的监控带来了数据割裂,每个小组都用自己的数据来评价系统问题,容易造成“本位主义”,团队难以对故障/异常的原因快速达成一致。且数个自建的平台也给运维团队带来了较重的运维负担。
- 监控分散带来的诸多问题
在与客户团队进行充分沟通后,观测云提出有信心帮助客户进行监控整合,替换掉多套开源监控工具。客户对观测云“统一平台,提升团队整体协同效率”的价值主张非常认可,迅速组织团队开始进入技术验证阶段。双方经过为期两周的交流和互动,实现了全部场景的验证。
- 观测云的价值主张——统一平台,提升团队整体协同效率
关键招数
在为期两周的验证过程中,客户的前端、后端、运维小组一共有 8 位同事参与了此项工作。最终双方总结出多个关键场景,并成功向客户的决策层进行了汇报,获得决策层高度认可。下面跟大家分享一下观测云打动客户的九大招数。
招数 1:主机/容器的监控
在主机和容器监控方面,该客户原先使用 Prometheus+Grafana 的组合。而观测云则是依靠 DataKit 采集器进行主机/容器的对象和指标采集。
l 如果是主机方式,采用一条 sh 语句即可进行一键式安装;
- 一条命令安装 DataKit 采集器
l 如果是 k8s 方式,则通过 yaml 文件进行配置。
- 通过 yaml 文件管理采集器和对应插件的安装
当安装完 DataKit ,主机/容器的对象属性、指标即可展现在观测云上。观测云提供了蜂窝图等看板,通过颜色来展示主机/容器的健康度,方便客户在大量基础设施的情况下快速对亚健康的主机/容器进行分析。
在 DataKit 安装时可以选择开启 ebpf 采集器,以实现基础之间的网络通信分析,客户可以观察到 TCP 重传、时延等情况,充分了解集群内的网络状况。
- 主机/容器的监控
招数 2:AWS 各服务监控
客户的基础设施均部署在 AWS 上,并且使用了大量 PaaS 服务,但原先通过 CloudWatch 的监控覆盖并不完整。在本次使用观测云期间,我们推荐客户使用了观测云 Func 服务模块,该模块是基于 Python 的脚本开发、管理、执行平台,在官方脚本市场中已经包含了数十个 AWS 服务的监控脚本。
用户只需要选择对应的脚本进行简单修改(填写 AK/SK、Region、修改默认采集指标)等操作,并开启定时任务,即可轻松将 AWS 服务的对象和监控指标在观测云平台界面上进行展示。
- AWS 各服务监控
- 观测云当前已支持的数十个 AWS 服务
招数 3:日志的采集与分析
客户原先使用 AWS OpenSearch 订阅服务来处理业务系统中的重要日志。在使用观测云期间,客户使用了观测云的冷、热分级存储,将最近 30 天的日志存储在 GuanceDB (观测云高性能 OLAP 列存数据库)中,冷日志通过观测云转存到 AWS S3 中进行备份,并且在审计等需要查询历史日志的场景下,无需解冻即可直接从观测云界面上进行查询,取得了效率/成本的完美平衡。
除此之外,客户日常还需要对日志黑名单进行管理,并基于一些业务关键字的组合来实现及时的故障通知。这些需求在观测云上均得到了很好的支持。
超出客户预期的是,观测云的日志除了和链路 tracing 数据进行关联之外,还和主机、容器等数据进行了自动关联。客户在分析日志的时候可以轻松点击标签查看对应主机/容器的运行指标,大大提升了 troubleshooting 的速度。
- 观测云日志分析
招数 4:用户体验数据(RUM)的采集和分析
客户前端团队原先使用 Sentry 进行用户体验的分析,主要关注接口的性能、会话重放等功能,但没有实现和后端 APM 的关联追踪分析。
观测云则提供了 session、view、action、error、LongTask 等多个角度的 RUM 元数据采集和分析,帮助客户了解用户的实际体验。
“会话重放”在观测云上得到良好的支持,并且提供了多种级别模式来对敏感数据进行脱敏,确保不会顾此失彼(即在复现用户故障现场的同时导致用户的敏感数据泄露)。
前端 RUM 与后端 APM 的关联追踪,则依靠 SDK 自动向 HTTP request Header 中添加的追踪参数来实现,客户无需在代码中进行埋点即可实现前后端的数据关联分析。
- 对用户体验数据进行采集和分析
招数 5:链路追踪
客户后端开发团队原先使用 SkyWalking 对链路进行追踪,但由于产品迭代的压力较大,未能投入精力去实现 Tracing 和 Log 的关联分析。
观测云通过对 DDTrace/OpenTelemetry/SkyWalking 等主流 APM 方案的良好支持,将客户的链路数据进行实时收集,并指导客户调整 Log 输出格式,很快便实现了客户期待已久的 Tracing+Log 关联分析。
此外,由于观测云采集的数据默认提供了非常多的扩展字段,客户可以使用 key:value 的查询方式根据任意扩展字段进行搜索分析,以便对疑似异常的现象进行探索,灵活性十足。
招数 6:统一告警
在统一告警方面,客户主要关注对主机运行指标的监控,日志关键字的监控,所有的告警会通过钉钉发送群通知,并通过 PagerDuty 实现电话通知。
观测云提供了十余种“监控器”,包含阈值监测、日志监测、进程监测、应用性能监测等,完全满足了客户对故障预警的需求。此外,事件模板可自定义、与 PagerDuty 轻松对接也让客户原有的使用习惯得以保留。
- 观测云的统一告警
招数 7:灵活、易用的仪表板
客户原先使用 Grafana 进行仪表板的绘制,运维小组主要关注的是容器运行、AWS 服务监控等仪表板,前端小组则需要经常响应产品团队的需求,帮助产品团队进行业务看板的绘制。
观测云在仪表板方面既有二十多种图表,又提供了灵活易用的图表绘制交互体验。对于产品、运营同学完全可以采用拖拉拽式的方式来构建图表样式,通过下拉菜单来筛选自己关注的指标和查询条件,实现图表的绘制;对于运维、开发同学来说,则可以使用 DQL 语句来进行各种观测数据的查询。无论是指标、链路还是日志,采用的是同一种查询语法,并且兼容了 promQL 的写法,让客户能轻松从原有的数据分析平台过渡到观测云。在短短的两周时间内,客户团队自行配置了 30+ 仪表板,得到了客户决策层的肯定。
招数 8:数据的高效、安全分享
由于客户的业务是属于金融服务,因此对数据安全非常看重。在过往工作过程中,团队通过截图、远程协助、发送日志等方式进行协作,不仅效率较低而且十分容易导致数据泄露。
观测云提供了快照分享功能,让客户能够将经过筛选过后的数据保存为快照,分享给其他同事,后者打开快照能进行一定程度的交互分析。在此过程中,观测云能够对指定数据进行脱敏,并且设置快照的有效期/访问 IP 白名单/加密访问等,让客户不会有数据泄露方面的担忧。
招数 9:从用户 ID 出发的立体化分析
在观测云的助力下,客户实现了从用户 ID 出发的全链路追踪。根据 userID 和时间段很容易找到报障用户的访问会话,从前端关联分析到后端链路、日志、主机/ Pod /容器基础资源/数据库中间件运行情况等,真正实现立体化、全访问的分析。产品、研发、运维同学终于可以用同一套工具来进行问题分析,快速对问题结论达成一致。
回顾
回顾历史,秦国的“统一度量衡”推动了经济和社会的繁荣发展。而云原生时代,同样需要有统一监控平台来实现监控数据的统一、团队分析视角的统一、数据标准的统一。
在双方向客户决策的汇报过程中,我们还汇报了观测云相对于国外商业产品的优势:数百万字的中文文档能让客户团队轻松上手,完善的国际化支持又能适应海外员工的使用需求。对于商用客户,观测云还提供多元化的技术服务,例如定期例会、最佳实践专题分享等,确保客户在使用强大的产品功能的同时,能够感受到观测云技术服务的温度。
相关文章:

运维工具如此割裂,九招帮你统一纳管
背景 在运维工具这个江湖中,出现了众多独行侠客,各怀绝技,各自为战。这些开源监控软件如同武林中的各派门派:SkyWalking 以精湛的追踪功夫独步武林;Prometheus 以灵活的告警机制纵横江湖;ELK 则如同黯然销…...

基于springboot的大创管理系统源码数据库
基于springboot的大创管理系统源码数据库 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了大创管理系统的开发全过程。通过分析大创管理系统管理的不足,创建了一个计算机管理大创管理系统的方案。…...

解密辛普森悖论:如何在数据分析中保持清醒头脑
解密辛普森悖论:如何在数据分析中保持清醒头脑 之前也参加fine Bi的 培训,学到了辛普森悖论,今天为大家介绍一下 文章目录 解密辛普森悖论:如何在数据分析中保持清醒头脑前言我们来举一个例子数据分析解释管理应用的启示 前言 什…...

Vue前端框架
1.vue基本使用1 1.vue环境搭建 一般创建vue项目是在cmd命令中用:vue ui 命令,采用ui图形界面的方式直观创建项目。 2.vue基本使用方式:vue组件 3.文本插值 4.属性绑定 5.事件绑定 6.双向绑定 7.条件渲染 2.vue基本使用2 1.axios 安装axios命令…...

【随笔】Git 基础篇 -- 远程仓库 git clone(二十五)
💌 所属专栏:【Git】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…...

在js中如果a的值是空是不是if(表达式的值是false)?
在JavaScript中,一个变量的“空”值可以有多种含义,具体取决于该变量的类型和内容。对于if语句中的条件表达式,其值会被隐式地转换为布尔值。以下是JavaScript中常见的“空”值以及它们在布尔上下文中的行为: null:在…...

数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成
数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成 目录 数据生成 | Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于K-means和SVM的GMM高斯混合分布的数据生成…...

HarmonyOS开发:【NFC配置流程】
一、简介 碰一碰是HarmonyOS具备的多终端业务协同技术。其依托NFC短距通信协议,通过碰一碰的交互方式,将手机和全场景设备连接起来。然后通过手机端的原子化服务能力,快速完成配网、远程控制的能力,解决了应用与设备之间接续慢、…...

解决JQuery和其他库的冲突
文章目录 1.使用 noConflict() 方法:2.使用 IIFE(立即调用函数表达式):3.加载顺序:4.使用命名空间:5.使用 jQuery Migrate 插件: 1.使用 noConflict() 方法: 这是最常见和简单的解决…...

【Linux】在 Linux 上模拟网络故障
文章目录 模拟网络丢包模拟网络延迟、抖动模拟网络包重复模拟网络带宽受限模拟网络错误模拟网络乱序配合 cgroup 进行进程级带宽限制重置网络清空所有规则 模拟网络丢包 # 在eth0网络接口上替换排队规则,应用netem规则来模拟30%的数据包丢失 tc qdisc replace dev …...

腾讯云流量怎么计算的?轻量服务器流量价格表
腾讯云轻量应用服务器套餐带流量包,就是有月流量限制的意思,超出轻量套餐的流量需要另外支付流量费,轻量服务器地域不同超额流量费用也不同,北京上海广州等中国内地地域流量价格是0.8元每GB,中国香港地域流量价格是1元…...

解决Maven Clean过程因内存溢出导致的“Process terminated”问题
正文: 在今天的开发过程中,我遇到了一个意料之外的问题,当我尝试使用 Maven 进行项目清理(maven clean)时,命令行反馈了一个错误信息:“Process terminated”。经过一番排查,发现问…...

十分钟掌握在 PyTorch 中构建一个深度神经网络,基本组件、步骤和代码实现,从导入模块和定义网络结构到训练和评估网络性能。
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 深度神经网络(Deep Neural Networks, DNNs),也被称为人工神经网络(Artificial Neural Networks,ANNs),已成为当今机器学习任务中最流行、最成功的方法之一。这些网络能够表示数据中的复杂关系,并在图像分类、自然…...

BUG:vue表单验证校验不报错,必填都有信息,就是不能正常往下进行
vue表单验证未报错却出现异常 框架bug场景解决办法 框架 UI:element-UI 前端:vue2 bug场景 正常表单里面,有的信息要求必填或者加了一些限制,作为校验验证,只有走到校验才会执行其他行为,比如调用保存接…...

MapStruct入门教程详解:轻松掌握Java Bean映射
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

Springboot 集成websocket
webSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信--浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。 http协议和websocket协议对比 http是短连接 websocket是长连接 http通信是单向的…...

FPGA和ARM学习那个比较好
FPGA和ARM是两种不同的技术,具有不同的应用领域和学习难度。以下是对两者进行比较的一些建议: 1. 应用领域:FPGA主要用于数字电路设计和硬件加速器开发,可在实时系统、信号处理、嵌入式系统等方面发挥重要作用。ARM则是一种处理器…...

你知道 Java 线程池的原理吗?
Java线程池是用于管理和复用线程的机制,它可以帮助开发者有效地管理线程的生命周期和资源,并提高应用程序的性能和稳定性。 1. 线程池概述 在计算机科学中,线程池是一种可用来执行异步任务的线程队列。它主要包含以下几个组成部分ÿ…...

numpy学习笔记(1),不定期更新
在对numpy进行了几个小时的学习后,做出如下学习笔记 1. numpy类型入门 写完这边笔记后,过了几天补充一些理解: numpy处理的主要内容是数组,一维的,二维的,三维的,多维的。numpy的数组与python原…...

如何使用静态IP代理解决Facebook多账号注册并进行网络推广业务?
在当今的数字时代,社交媒体成为了企业进行网络推广的一个重要途径,其中,Facebook是最受欢迎的社交媒体之一,因为它可以让企业通过创建广告和页面来推广他们的产品或服务。 但是,使用Facebook进行网络推广时࿰…...

局部适配器在产品和二次开发中的应用
局部适配器这个说法是本人从产品项目中总结出的一种叫法。原理是在产品项目的某一项业务处理时,嵌入抽象方法和默认实现,以便产品作二次开发时,不用迁分支或重写就适配修改产品工程的局部逻辑。该方法使用原理很简单,但好处明显&a…...

C++之类和对象(上)
目录 1.面向过程和面向对象初步认识 2.类的引入 3.类的定义 4.类的访问限定符及封装 4.1访问限定符 4.2 类的两种定义方式 第一种: 第二种: 4.3封装 5.类的实例化 6.类对象模型 1.面向过程和面向对象初步认识 C语言是面向过程的,…...

Linux 测试磁盘读写速度
1、先熟悉两个特殊的设备: (1)/dev/null:回收站、无底洞。 (2)/dev/zero:产生字符。 2、测试磁盘写能力 time dd if/dev/zero of/testw.dbf bs4k count100000 因为/dev//zero是一个伪设备…...

【YOLOv8】Yolov5和Yolov8网络结构的分析与对比
目录 一 YOLOv5 二 YOLOv8 yolo通常采用backbone-neck-head的网络结构。 Backbone 主要负责从输入图像中提取高层次的语义特征,常包含多个卷积层和池化层,构建了一个深层次的特征提取器。Neck通常用来进一步整合与调整backbone提取的特征,有利于将不同…...

无人机低空数字摄影测量系统
一、 系统概述 系统完全基于IDL设计实现,包括界面布局到人机交互再到底层核心函数功能。整体设计框架基于数字摄影测量的专业处理流程,实现了数据输入、数据预处理、影像信息检测、空间定向、地形三维建模、专题信息提取、成果输出与更新等功能。同时为…...

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版
Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…...

day55 最长递增子序列 最长连续递增子序列 最长重复子数组
题目1 300 最长递增子序列 题目链接 300 最长递增子序列 题意 找到整数数组nums的最长严格递增子序列的长度(子序列并不改变原始的顺序,但是可以删除元素) 动态规划 动规五部曲 1)dp数组及下标i的含义 dp[i] 表示以nums[i…...

使用Springboot配置生产者、消费者RabbitMQ?
生产者服务 1、引入依赖以及配置rabbitmq 此时我们通过使用springboot来快速搭建一个生产者服务 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> applica…...

代码随想录算法训练营第46天|139.单词拆分、多重背包问题
139.单词拆分 题目链接:单词拆分 题目描述:给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 **注意:**不要求字典中出现的单词全部都使用,并且字典中的单词…...

数组与伪数组的区别
大家都知道,在js中使用 document.querySelectorAll(选择器)获取到的为该选择器能选择到的所有元素组成的伪数组,所谓伪数组,就是外表和数组一样,能够使用索引遍历,但本质是对象。 数组与伪数组之间的区别&…...