腾讯业务监控的修炼之路

《腾讯业务监控的修炼之路》要点:
本文介绍了腾讯业务监控的修炼之路,希望对您有用。如果有疑问,可以联系我们。

腾讯

作者介绍

李光:现任职于腾讯社交网络运营部/织云产品团队,负责织云监控告警平台规划与运维新产品开发工作,多年业务运维、运营规划经验.

概述

这是监控告警产品专题系列第一篇文章,涉及的主要内容为监控产品设计的一些相关基础知识,算是这个系列文章的一个索引.该篇会主要涉及到以下主要内容

  • 后续三篇文章讲述的核心内容(这个系列会比较长,先暂定了后面三篇的内容).
  • 关于监控告警一些需要提前交代的概念.
  • 立体化监控体系的阐述.

我现在是织云监控告警产品线的产品经理,而且这部分的产品也在分版本的持续建设中.所以后续主要的产品规划、设计、实现的讲述都是基于织云这个载体上实现.

寻觅初心

以前做QQ业务运维的时候,有一类平台是自己天天会用,那这类平台是什么呢?就是监控告警平台,每天在上面查大量的业务视图、查异常、确认告警、处理告警等等.

对于运维同学来说,如果从使用频率这个维度看,监控告警类平台的使用频率要大于自动化类平台,毕竟自动化类平台多数都是由例行变更触发,而监控告警平台是我们7X24小时都要使用的.当时自己名下有较多的业务和几千台机器,那时有过一天收1000多条告警的记录,相当崩溃.

其实告警如果一天超过几十条就基本是无效的,即关注不过来,也处理不过来.在业务运维这个角色中,我更多的是从使用者这个视角去看监控的.

去年下半年我从业务运维转型为产品经理,现在负责腾讯织云(企业级运维管理平台)监控告警产品线的规划与落地.在产品经理这个阶段我更多的是从建设者这个视角去看监控的.

使用者和建设者这两个视角去看待同一个事物监控告警这个产品,最大的差异点是什么呢?

  • 使用者是点,建设者是面,使用者只关注能服务到自己的功能点,而建设者尽量要更全面的抽象多数使用者所具化的场景,在抽象的基础上在去构建功能,力争满足大部分的使用者场景,解决实际的问题.

监控

“出了任何故障,其他环节都是可能有问题,唯独监控是一定有问题!”
—— 乔治·背黑锅

基于这两种不同的视角与在实际建设途中遇到的各种实际问题,我萌发了写一个监控专题系列的想法,哈哈,脸皮蛮厚的的.自己以前都是写单篇的文章,这次也算是一个挑战了.希望通过这个专题能与大家交流下关于一款企业级监控产品是怎么样规划、设计与落地的.

可能是当产品经理习惯了用户场景与角色的分析,如果把这个主题的文章当做一个产品来看,那么其中的角色与场景是什么呢?
梳理一下自己在建设织云监控告警产品线的一些经验和思考.

  • 对于刚入行对监控告警这个产品还不太熟悉的新业务运维同学.
  • 想自己建设监控告警的运维同学或者运营建设同学.
  • 正在建设监控告警平台的运维同学或者产品经理.
  • 对监控告警产品天天使用的业务运维同学.

万丈高楼平地起

本章主要介绍一些关于监控的通用方法论,我们先理清一些基本概念.

  • 监控的定义是什么?
  • 监控的方式是什么?
  • 监控的类型有哪些?
  • 监控的目标是什么?
  • 监控的本质是什么?
  • 监控的目的是层面?
  • 监控的产品属性如何理解?

监控的定义

通过技术手段发现服务异常,持续优化业务可用性与用户体验.这句话的关键词是 发现  持续优化 可用性与体验.

监控的方式

主动:程序内部埋点,服务主动上报自身的运行情况,一般都是具化为业务的各个属性或者指标,这种方式准、快,灵活性好,指标丰富.但是在非标准框架下会有一定的代码改造成本.

被动:无需埋点,从外部探测或获取服务的运行情况,例如ping探测、日志采集分析等等.

旁路:与程序逻辑无关,对服务质量与口碑的监控,例如舆情分析.

那么这三类有优劣之分吗?其实没有,这里的方式都是针对于不同场景的,例如对域名的监控,就可以通过该域名的外部拨测来达到监控的目标,域名的访问耗时也可以通过不同的拨测点来监控.在我们腾讯内部QQ和Qzone两个海量业务对这三类监控都应用到了.

监控

监控的类型

从大的对象范畴与层级关系来说,监控一般分为五种类型

  • 基础监控:这里的基础监控囊括范围比较广主要指IAAS层(服务器、系统、网络等)
  • 服务端监控:一般指后台服务,例如QQ的后台消息服务
  • 客户端监控:一般指app,手Q的客户端与微信的客户端.
  • WEB监控:一般指网站,例如对网站域名的拨测.
  • 用户端监控:一般指用户舆情监控,例如某个APP的口碑好坏

腾讯业务监控的修炼之路

监控的目标

一个好的监控体系应该要达到以下三点目标

  • :监控对象的广度,监控点的覆盖率,例如上文提到的5种对象类型是否都能覆盖到
  • :监控的性能,数据流的处理能力
  • :智能分析与收敛、监控对象收拢

腾讯业务监控的修炼之路

监控的本质

在DevOps中,运维、开发、测试这三个角色应该视角统一,这里为什么说要视角统一,就是大家在监控这个层面关注的点应该是一致的,而不是你关注你的点,我关注我的点.例如所有的业务监控都可以抽象出三个核心指标:请求量成功率耗时.这三个关键指标来判断我们服务的可靠性,通过可靠性可以推算出可用性,并且可以间接反映用户使用我们产品的的体验.例如如果服务的可靠性不好,那么用户的产品体验肯定不会好.

DevOps

监控的目的

通过对上文的一些概念介绍,其实我们已经可以推导出应用监控告警的目的,就是持续优化业务服务质量,并建设质量体系.同样织云监控也是为了打造质量体系的闭环路径.

腾讯业务监控的修炼之路

腾讯业务监控的修炼之路

监控告警的产品属性

监控告警是一款数据类属性的产品,既然是数据类产品,那么在产品设计的时候一定要注意这样的路径闭环 数据生产数据增值数据消费,围绕着这样的路径我们就可以勾勒出很多的用户故事,用户故事就是针对具体的角色,会有什么具体的活动,这个活动所产生的价值.

腾讯业务监控的修炼之路

这里举个简单的例子,来说明数据生产与数据消费.随着后面详细的讲述产品建设过程中会更加详细的阐述这个闭环的路径.
数据生产:例如一台服务器上报的各种基本的 OS 指标数据,如 CPU 使用率,内存使用量等.这就产生了若干待消费的原始数据,那么我们能用这些数据干什么呢?

数据消费:对这些上报的原始数据整理可以用作视图展示,例如图形化展示该服务在最近一个小时的 CPU 使用率. 又或者对这些原始数据设定阈值,当超过某个阈值的时候,就产生告警通知.这些都是最直接的消费的场景.

我们再延伸一步对于这些消费场景产生的告警数据,是否可以再进一步消费呢?答案是可以的,例如对若干承载 CPU 计算型业务的服务器所产生的cup使用率告警(生产)时间进行分析统计(消费),是不是可以基本推导出该业务的服务高峰期是大概在那个时间范围呢?
这里想说明的是多数原子数据并无单一的消费或者生产的属性,而是要取决于在具体的场景与所处的数据链条中的角色.

并且监控告警的数据加上特定的流程(ITSM)也可以驱动监控告警+自动化的大的业务逻辑交互闭环,这个场景容我先卖个关子,后面的叙述会再次提及到这部分.

监控体系

体系,泛指一定范围内或同类的事物按照一定的秩序和内部联系组合而成的整体,是不同系统组成的系统.其实这个描述是有些抽象的,咱们用大白话套用监控体系来解读下.

对于一个有一定体量的公司,需要一些不同的监控系统,通过系统与系统间的内部交互来组成一个大的整体,从而完成对不同场景下的监控需求即监控体系.用我们内部来举例说,我们内部在现网上跑的监控系统也有快10套了,同样在构建体系时关键的部分也是要用动态的视角去看待这些系统所产生的数据,而不是每个系统都是一个孤立的数据孤岛.下图是织云整体的监控体系.

监控体系

在织云监控告警产品建设过程中,我们融入了很多关于海量运维的监控思考与经验沉淀.

腾讯业务监控的修炼之路

这里的监控体系是和公司体量大小有直接关系的,但是一般来说在这个体系中,应该有三类监控系统是必备的.

腾讯业务监控的修炼之路

总结

通过上文的简单介绍,相信大家对监控告警会有个初步的宏观认识,随着后续文章的铺开,大家会逐步了解到一个企业级的监控产品是怎样从0到1演化而来的.同时下篇文文章就会进入到实战阶段.建设监控告警是一条持续且漫长的路也是蛮复杂的,坑也很多,但还是有一些基本的方法论和规律可以遵循的.

原文来自微信公众号:高效运维

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


起步 处理器架构,参考 x86是指intel的开发的一种32位指令集 intel和amd早期的cpu都支持这种指令集 AMD比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64 Intel选择了设计一种不兼容x86的全新64为指令集,称之为IA-64,后来支持AMD64的指令集,
pscp pscp -P 22 C:\work\test.txt root@192.168.1.5:/home/data pscp -P 22 root@192.168.1.5:/home/data/test.txt C://work// 检索 find / -name default.config
文件处理 ls -a # 显示所有文件 ls -l # 显示详细信息 ls -d # 显示路径 mkdir /目录名称 # 创建目录 cd /目录名称 # 切换目录 pwd # 显示当前路径 rmdir /目录名称 # 删除目录 cp -rp [目录名称] [目标目录] # 复制目录到目标目录 cp
准备一台电脑(我就用联想拯救者r7000演示) 参考博客制作启动盘 插上U盘,启动电脑,一直按F2 进入如下页面后,将U盘设置为第一启动项,点击exit,保存并退出 之后进入如下页面,选择第三项 进入如下页面,选择第四项 进入如下页面,选择第一项,选中后,先不要点Enter 按e键,将inst.st
认识 Linux系统是参考了UNIX系统作为模板开发的,但没有使用UNIX的代码;是UNIX的一种,但不是衍生版 在Linux内核的基础上开发是发行版 分区 逻辑分区永远从5开始 步骤 挂载:可理解为分配盘符,挂载点即是盘符名;不同之处:Linux中是以空目录名称作为盘符 Hda 第一块硬盘 Hda
文件处理命令 以 . 开头的文件是隐藏文件 以 - 开头表示这是一个文件 以 d 开头表示是一个目录 以 l 开头表示是一个软链接 第一个root是所有者,第二个root是所属组 ls -h 以文件默认大小后缀 显示 ls -i 查看i节点(唯一标识) 所有者:只能有一个,可变更 所属组:只能有一个
参考 01 02 03 前提环境 本地安装VirtualBox,并安装CentOS8,配置网络后,window系统上putty能连接到CentOS8服务器 配置步骤 右键服务器复制 启动复制后的服务器,查看ip和hostname发现和原来的服务器一样,需要修改 hostname # 查看主机名 vi
文件搜索命令 星号匹配任意字符,问号匹配任意单个字符 -iname 根据文件名查找且不区分大小写 -ok 命名会有一个询问的步骤 如果没有找到指定文件,可输入命令:updatedb 更新文件资料库;除tmp目录不在文件资料库收录范围之内 locate -i 文件名 # 检索时不区分大小写 which
安装环境 安装最新版的Virtual Box,点击安装 下载centos8镜像 创建虚拟机,可参考 选择下载到本地的镜像 设置启动顺序 点击启动 启动过程中报错:“FATAL:No bootable medium found!” 1.没有选择iso镜像 2.光驱没有排在第一位置 3.镜像只能选择x8
Linux严格区分大小写 所有内容文件形式保存,包括硬件 Linux不靠扩展名区分文件类型 挂载:将设备文件名和挂载点(盘符)连接的过程 Linux各个目录的作用 bin表示二进制 服务器注意事项 远程服务器不允许关机,只能重启 重启时应该关闭服务 不要在服务器访问高峰运行高负载命令 远程配置防火墙
IDE连接Linux,上传下载文件 参考1 参考2 连接Linux 上传下载文件 本地项目打包后上传 查看是否上传成功,右键下载 补充 后端项目开发完成后,需clean掉临时文件target文件夹,且只推送修改过的文件 前端项目开发的过程中,需要在每个子组件中使用scoped,确保每个子组件中的编码
起步 LTS与普通版本的区别 LTS版本的发布周期更长,更加稳定 安装jdk sudo mkdir /usr/lib/jvm # 在Ubuntu中创建目录 pscp D:\安装包\linux源码包\jdk-8u291-linux-x64.tar.gz chnq@192.168.0.102:/tmp
前言 最近在b站上看了兄弟连老师的Linux教程,非常适合入门:https://www.bilibili.com/video/BV1mW411i7Qf 看完后就自己来试着玩下,正好手上有台空闲的电脑就尝试不使用虚拟机的方式安装Linux系统 安装步骤 制作启动盘 下载ISO镜像,我这里下载的是Cen
新建虚拟电脑 设置内存和处理器 设置硬盘大小 完成 设置 查看光驱 设置启动顺序 点击启动 选择第1项 进入图形安装界面 选择安装位置,开始安装 设置root密码 重启 登录 查看本地文件夹 配置网络,点击设置 查看宿主机ip C:\Users\ychen λ ipconfig 无线局域网适配器 W
源码包安装需手动下载后安装 二进制包则在package目录下 rpm命令管理rpm包 若某个rpm包依赖于某个模块,需要到网站www.rpmfind.net查询该模块依赖的包,安装这个包后自动安装模块,之后就能安装rpm包了 安装升级时使用包全名 查询卸载时使用包名 虚拟机中的Linux系统安装rp
首先进入命令模式,再输入以下命令 命令模式用于输入命令 插入模式可对文件编写操作 编辑模式下的命令是在冒号后输入 :12, 15d # 删除指定范围的行,这里是删除12到15行 :n1,n2s/old/new/g ## 表示从n1行到n2行,old表示旧的字符串 vim使用小技巧:自定义快捷键,如快
使用源码包安装,需要自己指定安装位置,通常是 /usr/local/软件名/ linux中要想启动执行文件,应使用绝对路径 /绝对路径/rpm包名 start ## 执行方式一 service rpm包名 start ## 执行方式二 使用源码包安装后,由于自定义安装路径,就不能使用service命
网络命令 在收邮件的用户中,输入 mail 可查看邮件信息,输入序列号查看详细信息 在mail命令下,输入h 查看所有邮件的列表 输入:d 序列号 # 删除邮件 last # 统计所有用户登录或重启时间,用于日志查询 lastlog # 显示包括未登录用户的登录时间 lastlog -u 用户id
若要使用yum管理,必须能连接网络,首先配置网络IP 进入yum源文件中启动容器 使用yum源头安装rpm包不需要进入package路径,同时也不需要使用包全名,会有yum自动管理 安装软件组
简介 client即是本机安装的docker,相当于git Docker_host相当于centos系统 registry则是docker仓库,相当于GitHub 镜像用于创建docker容器,一个镜像可以创建多个docker容器 容器是由镜像创建的运行实例,(镜像相当于类,容器相当于类创建的对象)