2022 年 9 月 28 日,阿里云用户组(AUG)第 11 期活动在深圳举办。活动现场,阿里云技术专家李加贝向参会企业代表分享了如何把可观测需求落地为业务大盘的议题。本文根据现场分享内容整理而成。
为什么需要 Grafana?
演进
从可观测的演进上看,在单体应用架构时期,企业对于监控可视化的需求其实很简单,电脑查询日志,把所需的内容简单处理并展示出来,就能满足诉求。随着技术发展,业务规模快速扩张的同时,分布式架构、微服务架构让系统越来越复杂,行业对于监控场景 Trace、Metrics 的应用逐渐开始形成一些统一标准。在这个阶段,许多企业或者厂商尝试从数据层面打造统一监控标准,从而形成统一的解决方案给到用户。
但由于数据类型多种多样,企业或厂商直到现在依旧无法从数据层面实现标准的统一。Grafana 则另辟蹊径,统一可观测的最终展示平台,通过各种数据源插件集成方式逐步成为统一的可观测标准。
价值优势
在服务客户的过程中,大盘怎么配置、PromQL 怎么写成为最常见的问题。因为 Grafana 支持的数据源有上百种,不同数据源都有相应语法。而 Grafana 只统一可观测展示,底层数据的查询并没有统一。为了解决这一问题,Grafana 提供各种插件去适配数据源以及图表,就像桥梁一样串联起不同面板和不同数据源。海量插件覆盖了市面上绝大部分可观测解决方案。
阿里云和 Grafana 官方也开展了合作,基于开源版本 Grafana 进行托管改造,在保留原有功能基础上,进行更多拓展,详细可以查看下面链接:
https://www.aliyun.com/product/aliware/grafana
Grafana 服务的管理
组织方式
对于企业而言,使用 Grafana 过程中涉及到权限管理等问题,这就需要结合业务特征进行设计。首先,进行权限管理之前,需要定义清楚期望把管理设计成什么样子。比如测试环境的安全要求较低,全部门用户都可以申请 admin 权限及查看全部数据。线上环境,可能就需要按照实际职能情况,少数人能做编辑,部分人能查看。
隔离
Grafana 提供了些管理手段,上图从左边至右隔离性是越来越强,从右边至左是灵活性越来越高。
文件夹+团队管理:这种方式保留最基础的查看权限,即只要能登陆进去就能查看全部大盘,文件夹+团队只是对更高级别权限的约束。
组织管理:从数据源粒度进行逻辑隔离,如果对数据查看权限有严格要求,就可以考虑这种方式。
工作区:即阿里云上独立部署实例,数据库配置全是独立的,确保最好的隔离性。
大盘的配置
设计思路
在大盘配置过程中,我们根据业务流程或者应用架构进行梳理。以上图举例,这个金字塔最顶上是业务监控。针对业务监控,我们需要明确业务的特征。比如大促场景中业务方最关心几个入口流量,入口涉及 A、B、C 三个应用。所以基于这个场景,推导出需要重点关注的应用。有应用监控以后,再看底下,如果容器化了那么就重点关注涉及的集群,如果整体资源都在阿里云上的话,那么就再附带上基础资源的一些监控。而这一切的起始,源于明确需要关注的业务是什么。
业务监控
展开细讲一下业务监控。业务监控以电商场景举例,需要确认常关注指标,比如说 DAU 就是很通用的东西,还有像下单数、下单金额、支付金额、转换率、客单价这都是这个业务领域里面要关注的指标。不同行业要定义出需要关注的指标,很多是依赖于根据业务需要进行提前埋点,巧妇难为无米之炊,有些有行业特殊性的指标,如果说都没有埋点的话,那这个盘也配不出来。
上图上半部分,以页面 PV 这指标为例,通过 ARMS 应用监控接入以后,可以看到有一笔笔请求记录,通过指定一个商品页面进行汇总加和,就可以拿到这个商品页面的 PV。在这基础上,通过 ip 作为单个用户判定,按 ip 做个 by 的归类,可以得到对应的 UV 值。
前面是通过 ARMS 应用监控接入可以得到的,如果说对单个用户的判定需要按照业务里的账号明确做分类,那这里就推荐,通过一个自定义埋点的方式,比如说通过接入的 Prometheus,在代码里埋点记录用户的行为,至于账号是哪个字段由业务自己指定,如上图下半部分,uid 里存放的是单个用户的标记,对 uid 做 by 的归类就得到业务认为合理的 UV 指标。这里自定义的指标除了通过 Prometheus 存储,还可以使用 SLS,方式有很多,最终都可以通过对应类型的数据源接入到 Grafana 里做展示。
应用监控
看到应用监控,通过 ARMS 应用监控做接入,有多种接入方式,比如无代码入侵的探针,这边就不做展开讲解。接入后在阿里云上托管的 Grafana 里,点个集成,会生成出预置的大盘。
容器监控
在阿里云上购买的 ACK 容器服务的话,可以通过勾选监控,集群创建后容器监控就会有。若是自建集群的,也可以通过 Prometheus 这边做接入,在 Grafana 工作区里面,会有 Prometheus 实例列表,点了一键同步,然后就可以把相关的容器、相关的大盘就全部给你生成出来。
基础监控
基础监控主要是云产品上的监控,Prometheus 里有直接的接入配置,或者在企业云监控里做接入。有了数据接入的配置,再到 Grafana 工作区里面点一键集成,会根据接入的情况默认生成出大盘。
一个简单的需求
我们看大盘时,不可能把所有大盘都打开一个一个轮着看,所以最好是能够一眼看到问题,具体明细可以根据总盘的反馈一层一层细化下去。有了上述各种明细大盘,总盘的制作就需要根据实际需求来做,有了明细盘,其实总盘的制作会方便很多。Grafana 里有个简单的小技巧,比如我在明细盘里看到一个比较重要的指标,可以通过 panel 的下拉项里面选复制,接着在新建的大盘里面点粘贴,就可以很快把那个指标搬过来,在这个基础上稍微调整,可以很快定制一张大盘出来。
这里附上一份 demo 可供大家参考:
https://play.grafana.aliyuncs.com/d/z8jx7EiVz1/zong-lan-da-pan?orgId=1
如何把可观测需求落地为业务大盘?