删库跑路现场还原

news2024/9/23 17:14:40

数据库是公司重要资产,在此类重要资产平台上,尤其是重要操作,应该保持敬畏心。

数据库被删了?可怎么证明是某某某删了数据库?或者根本都不知道谁删除了数据库,又没抓现行,该怎么办?

正文

第一步 证据先行,有录屏有真相


删库动作的录制回放

录制回放让团队能清楚了解和学习用户路径和行为,其中对于关键页面诸如删除等高价值的动作,可以开启录制回放功能,比如下图,就是某一用户某一行为的屏幕录制情况。

删库成功的页面截图


针对录制回放的内容,可以看到用户点击删除按钮这一高风险行为。

第二步 录屏背后是详细的用户访问数据


在rum中查看用户会话

在用户使用产品的那一刻,用户体验就开始了。用户体验数据洞见很多,加购物车、下单、视频播放等高价值按钮背后的性能等相关数据和业务息息相关:比如下图展示了成功删除数据库的提示弹窗。

发现用户登录并浏览数据库平台的详细信息

每一次用户会话中,记录着用户的来源、访问时长,以及用户行为,这里面就包含对页面的加载(切换)和按钮点击。下图便是一个用户登录数据库管理平台后,0-20分钟以内的用户旅程:

发现用户点击删除库的按钮的详细信息

链接或者按钮背后隐藏着逻辑和用户动机,充分利用能转化良好化学反应。反之,在用户旅程中,也能看到用户点击删除数据库的按钮的行为,如下图所示:

点击按钮成功触发删除数据库的接口请求

为了明白请求或行为在系统中的'前世今生',链路追踪已经成了必备,在下图中,用户行为触发的请求的完整上下文就被“追踪”到了:

后台处理接口请求

在产品使用流畅度中,丝滑不一定是卖点,但“慢”肯定是用户卡点,通过全链路链路追踪综合分析,可以得到请求耗时占比,进一步定位卡在哪里(前端、后端、网络),详情见下图:

第三步 成功删库的链路详情


前后端加上数据库形成可视化闭环,构成的业务链路,能够高效定位业务情况,下图能完整看出一次删库的效率:

第四步 自动关联删库日志


让全链路追踪能锦上添花的要数自动关联日志的功能了,下图能清晰看到链路所产生的日志:

以上我们便通过用户删库的录屏,用户行为、链路信息、操作日志等,还原了删库现场。当然,其中涉及了很多技术内容,下面整理了其中一些常见问题

相关技术点的FAQ :

1. 如何针对关键步骤开启录制回放功能


以 删除按钮 为例 ,用户点击删除按钮后 可以开启 录制回放功能

  function deleteDB(){
        showConfirm(deleteDB).then((yes,no)=>{
            if(yes)=>[             datafluxRum.startSessionReplayRecording();]
        })
       
    }

2. 录制回放是否涉及密码等用户私密信息


出于数据安全考虑,任何情况下,以下元素都会被屏蔽:

  • password、email 和 tel 类型的输入

  • 具有 autocomplete 属性的元素,例如信用卡号、到期日期和安全代码

3 . 如何将 用户行为与 后端 进行关联


前后端关联通过http请求头的traceID进行关联,开启rum和apm简单设置即可实现关联。 在rum中仅仅需要在启动时注明后端地址。以本文的后台管理系统为例,需要在启动rum时开启allowTracingOrigin这个字段,配置见下图

可以参照如下代码

 window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
        applicationId: "node_mongo_admin_express",
        datakitOrigin: "http://mongodb_admin:9529", // 协议(包括://),域名(或IP地址)[和端口号]
        env: "production",
        service:"node_mongo_admin_express",
        version: "1.0.0",
        trackInteractions: true,
        allowedTracingOrigins: ["http://mongodb_admin:1234"], // 非必填,允许注入trace采集器所需header头部的所有请求列表。可以是请求的origin,也可以是是正则
        sessionSampleRate: 100,
        sessionReplaySampleRate: 100,
        defaultPrivacyLevel:  'allow',      
      });
      window.DATAFLUX_RUM && window.DATAFLUX_RUM.startSessionReplayRecording()

4. 如何自动将采集的日志和链路信息进行关联


需要将traceID注入日志,进行切分,就可以实现链路和日志的关联。本文仅用一行进行了关联,代码见下图。

5. 如何从后端下钻到数据库


仅需要接入追踪工具即可实现下图全链路追踪,本文后端使用node的express框架,链路追踪展示图如下:

其中服务调用拓扑关系如下,也就是web端访问后端(node技术栈)的,后端调用数据库(mongo)

6. 后端支持java吗?


支持java、python、go以及.net等,接入的学习成本是有的,整体对于开发而言,接入配置问题不大。

7. 前端的技术架构或技术栈有兼容性吗?


目前不论是mpa还是spa,不论是ssr、还是csr,亦或是vue、react、jQuery等,都支持,但针对不同架构,需要选择接入的场景。

8. 还支持哪些场景?


支持的场景很多,比如:

  • 线上告警的故障定位

  • 开发、测试环境的bug调试

  • 用户行为的追踪与回放

  • 性能瓶颈的查找与性能提升

9.有关请求耗时占比,能更详细的举个例子吗?


我们以后端为例,看到db_create这个接口:

这些数据是如何统计得出的呢?感兴趣的同学可以查看下图:

其中每个部分的计算原理如下:

Queueing(队列)耗时 = Duration - First Byte - Download  
First Byte(首包)耗时 = responseStart - domainLookupStart  
Download(下载)耗时 =  responseEnd - responseStart

更深入的技术内容,我将在今后的文章继续为大家整理。

综上所述

可观测性切入点很多,聪明的团队会观测;可观测性是研发质量的试金石,是企业城墙的基石,用好可观测性,能更多的了解系统,扩宽业务。

本文由观测云高级产品技术专家刘刚和交付工程师 苏桐桐共同撰写,其中所有截图及数据,均来自模拟数据,此外也欢迎一起探讨技术和业务。

参考词汇

  • adminMongo:mongo数据库管理平台

  • rum: 真实用户体验

  • apm: 应用性能管理

  • metrics:指标

  • logs:日志

  • trace:链路

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

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

相关文章

品牌直播人气高达80w+,如何在B站打造品牌营销阵地?

2月9日,手机品牌REALME真我(以下简称“真我”),在B站开启一场「发布会」盛宴。这场发布会正是为新机“真我GT Neo5”发布进行全面宣传,在当日,真我品牌官方号在B站开启了一场线上新机发布会。来源-B站官方号…

云和虚拟化有什么区别?

云和虚拟化概念容易被混淆,特别是因为它们都围绕着用抽象资源创建有用的环境。但是,虚拟化是一项允许您从单个物理硬件系统创建多个模拟环境或专用资源的技术,而云是可在整个网络中抽象,汇总和共享可伸缩资源的IT环境。简而言之&a…

优化UnRaid容器的WebUI端口设置实现应用快捷访问的方法

文章目录前言详细流程前言 自从入了UnRaid的坑,发现Docker真是个好东西,各种各样的应用工具层出不穷,可以大大提高生产效率。然而在安装Docker应用后,对于如何方便的访问该应用,各个应用服务提供者给出的解决方案不是…

ip-guard如何通过准入网关对指定的服务器进行通讯加密保护?

1、准入网关在高级配置设置受保护服务器; WEB管理界面【系统工具】,点击【配置管理】,点击参数设置,进入高级配置界面,输入配置内容即可。 [ControlServer]

最受欢迎的大数据可视化

大数据可视化是进行各种大数据分析的最重要组成部分之一。 一旦原始数据流被以图像形式表示时,以此做决策就变得容易多了。 为了满足并超越客户的期望,大数据可视化工具应该具备这些特征:能够处理不同种类型的传入数据能够应用不同种类的过滤…

【华为机试真题 Python实现】2023年1、2月高频机试题

文章目录2023年1季度最新机试题机考注意事项1. 建议提前刷题2. 关于考试设备3. 关于语言环境3.1. 编译器信息3.2. ACM 模式使用sys使用input(推荐)3. 关于题目分值及得分计算方式4. 关于做题流程5. 关于作弊2023年1季度最新机试题 两个专栏现在有200博文…

银河麒麟V10SP1高级服务器版本离线RPM方式升级openssl openssh 自动化升级系统补丁实战实例全网唯一

银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和实时性等需求,依据CMMI5级标准研制的提供内生本质安全、云原生支…

主成分分析(PCA)原理

主成分分析(PCA)原理 在高维数据处理中,为了简化计算量以及储存空间,需要对这些高维数据进行一定程度上的降维,并尽量保证数据的不失真。PCA和ICA是两种常用的降维方法。 PCA:principal component analysi…

[思考进阶]06 养成“记笔记”的习惯,能够改变你的思考方式

目录前言一、10000张纸法则二、康奈尔笔记法三、东京大学笔记法四、养成“记笔记”的习惯除了要提升自己的技术能力,思维的学习和成长也非常非常重要,特推出此[思考进阶]系列,进行刻意练习,从而提升自己的认知。 前言 经常看到一…

BCELoss

1:单标签二分类:N是样本数,Yn是标签。范围在**[0,1]**。 公式: 举个例子: input torch.Tensor([[0.8, 0.9, 0.3]])#, [0.8, 0.9, 0.3], [0.8, 0.9, 0.3], [0.8, 0.9, 0.3]]) target torch.Tensor([[1, 1, 0]])#, […

weblogic-文件读取漏洞

weblogic-文件读取漏洞 0x00 前言 Weblogic存在管理后台,通过账号密码登录,由于管理员的疏忽,经常会使用弱口令,或者默认的账户名密码。因此存在弱口令爆破的风险。在本环境下模拟了一个真实的weblogic环境,其后台存…

Java:SpringBoot整合Spring Security实现认证与授权学习笔记

本文通过逐步学习Spring Security,由浅入深,SpringBoot整合Spring Security 分别实现自定义的HTTP Basic认证 和 Form表单认证。 本文是学习笔记,网上的教程五花八门,由于时间久远,很难拿来就用。 在此特别感谢IT老齐…

雪花算法(SnowFlake)

简介现在的服务基本是分布式、微服务形式的,而且大数据量也导致分库分表的产生,对于水平分表就需要保证表中 id 的全局唯一性。对于 MySQL 而言,一个表中的主键 id 一般使用自增的方式,但是如果进行水平分表之后,多个表…

使用三种方式创建servlet并配置访问成功

Servlet创建的方式 一、实现Servlet 接口 package com.openlab;import java.io.IOException;import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.Servl…

NPT、PT、G 、ZG、RC、M几种螺纹的区别

NPT、PT、G 、ZG、RC、M几种螺纹的区别一、NPT、PT、G 、ZG、RC、M几种螺纹的区别BSPT和BSP——英国规格的锥度螺纹NPT——美国规格的锥度螺纹PT ——日本的旧JIS规格锥度螺纹,相当于ISO规格的R,RcDIN2999——欧洲主要是德国的管道用螺纹NPT就是一般用途的美国标准锥…

利用Postman的简单运用解决小问题的过程

这几天在修改一个前后端分离的商城项目。项目前端向后端发出数据请求之后,收到的却是504网关超时错误。 但是控制台却不止报错了网关超时,还有跨域请求的问题: 根本搞不清是哪个问题导致了另外一个问题还是独立的两个问题。 直接点击网址访…

每天学一点之类的加载和反射

类加载 类在内存中的生命周期:加载–>使用–>卸载 类的加载又分为三个阶段: (1)加载:load 指将类型的clas字节码数据读入内存。 通过类的全名,获取类的二进制数据流。解析类的二进制数据流为方法…

【Go自学第二节】Go中的数组与切片

在Golang中,数组属于聚合类型,而切片属于引用类型。其实切片的底层逻辑就是用数组实现的,所以我们首先需要了解数组。 一、数组 Array 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例…

Unity 3D GUI教程||OnGUI TextArea 控件||OnGUI ScrollView 控件

OnGUI TextArea 控件 Unity 3D TextArea 控件用于创建一个多行的文本编辑区。用户可以在多行文本编辑区编辑文本内容。 该控件可以对超出控件宽度的文本内容实现换行操作。 TextArea 控件同样会将当前文本编辑区中的文本内容以字符串形式返回。 开发人员可以通过创建 Strin…

Astra pro相机使用说明

奥比中光的Astra pro这款相机,目前官网已经搜不到相关信息,应该是停产了。但是很多机器人设备上或者淘宝上还能买到。使用起来经常会出现不同的问题。问题1: 这款相机据网友描述,就是乐视相机LeTMC-520,换了外壳&#…