基于Grafana搭建的 在线教育业务看板 于2020年初创建并随着疫情慢慢发展壮大起来,覆盖腾讯课堂、企鹅辅导、ABCmouse三大产品线,提供对 业务服务、 业务数据、网站、调用链、公共组件等多种对象进行监控视图查看和指标告警的能力。本文分为整体说明、基本概念、数据源篇、视图篇、告警篇、插件篇和运维篇,适合对看板系统部署运维、功能使用、系统设计和集成开发有兴趣的读者。
一. 整体说明
1. 系统部署
2. 看板核心功能
3. 仪表板划分
以课堂为例:
-
核心功能
-
接入层:http/https、wns、websocket、sso
-
C端、后台上课链路
-
消息、音视频、资料系统
-
全链路服务可用性
-
订单支付
-
订单类:下单、关单、订单一致性
-
支付类:付款、退款、结算
-
营销工具
-
优惠券
-
拼团
-
分销
-
砍价
-
运营活动
-
老带新
-
奖学金
-
机构学员大会
-
机构排位赛
-
基础与中台服务
-
统一push
-
运营中台
-
告警网关
-
现金红包服务
-
公共组件与设施
-
自建组件:nginx、 mysql 、es、redis
-
云组件:kafka、es、cdb、cvm、tdsql
-
CMDB
-
其他
-
压测分析
-
全链路告警记录
-
定时器任务
二. 基本概念
Organization
:组织,Org是一个很大的概念,不同的Org之间资源完全隔离,包括数据源、仪表盘、图标、用户、告警等都是独立的。创建一个Org就相当于开了一个全新的空间,所有的资源都要重新开始创建。每个用户可以拥有多个Org,Grafana有一个默认的Main Org。用户登录后可以在不同的Org之间切换,前提是该用户拥有多个Org。
User
:用户,每个账号登录后即是一个独立用户。Grafana里面用户有三种角色admin、editor、viewer。admin权限最高,可以执行任何操作,包括创建用户,新增Datasource,创建DashBoard。editor角色不可以创建用户,不可以新增Datasource,可以创建DashBoard。viewer角色仅可以查看DashBoard。
Team
:团队,管理User,可把一个或多个User组成团队,一个User也可以划分在不同团队,然后基于团队授予不同的权限。
Datasource
:数据源,Grafana丰富的图表展示离不开最核心的数据存储源和数据查询功能。Grafana支持许多不同的数据源,每个数据源都有与其查询语法适配的查询编辑器。官方支持以下TSDB数据源:Graphite、Elasticsearch、InfluxDB、Prometheus,Cloudwatch、MySQL和OpenTSDB等。
Dashboard
:仪表盘,就像汽车仪表盘一样可以展示很多不同类别信息,比如一直累加的行驶里程、时快时慢的车速、高低变化的水箱温度等。Grafana的DashBoard就是以各种图形的方式来展示从Datasource拿到的数据。
Panel
:面板,组成Dashboard最基本的单元,支持表格(table),列表(alert list),热图(Heatmap)等多种方式。
QueryEditor
:查询编辑器,用来指定获取哪一部分数据。类似于 sql 查询语句,比如你要在某个row里面展示test这张表的数据,那么Query Editor里面就可以写成select * from test。这只是一种比方,实际上每个DataSource获取数据的方式都不一样,所以写法也不一样(http://docs.grafana.Org/features/datasources/),比如像zabbix,数据是以指定某个监控项的方式来获取的。
Row
:行,在DashBoard之内,Panel基础之上,把Panel以一行或多行的形式收拢在一起。
Folder
:文件夹,跟操作系统文件夹概念类似,可把多个Dashboard放到一个Folder中便于分类管理。
Alerting
:告警,Grafana提供了告警通道管理和告警策略管理,前者支持将告警内容发送到不同的消息平台,后者支持基于不同的数据源和图表上配置灵活的策略以触发满足不同场景的告警。了解更多。
Plugin
:插件,除了用户角色管理、视图、数据源支持、告警功能外,Grafana还提供了Panels/Datasources/Apps三类插件,使用者可自行开发或者前往Plugins社区寻找更多丰富的功能插件以满足个性化需求。
Explore
:探索,不需要创建Dashboard和Panel便可快速地查询指定数据源的数据。如果用过Kibana:Explore之于Grafana犹如Discover之于Kibana, Panel之于Grafana由于Visualize之于Kibana,Dashboard之于Grafana犹如Dashboard之于Kibana。
Playlist
:播放单,用于在大屏幕实时展示,可配置多个Dashboard轮流播放。
三. 数据源篇
在线教育看板的数据主要来源有六类:monitor监控属性、全链路日志、普通业务数据、业务自定义指标、CMDB监控数据、云产品监控数据。
1. Monitor监控属性
Monitor是为服务器CPU、内存、硬盘、网卡以及业务自定义监控而提供的实时监控与统计告警管理系统,可以方便的管理告警属性以及查看统计视图。
-
数据源类型:Influxdb
-
数据源配置:
-
业务服务接入:
业务服务接入Monitor前需要创建监控属性监控属性id(attrid)和视图id(viewid),然后在代码中埋点上报监控指标值。
几分钟后就可以在Grafana-monitor数据源中查询到相应视图id和属性id的实时数据了。
2. 全链路日志
-
数据源类型:ElasticSearch
-
全链路日志平台
-
数据源配置:
注意:要明确ES是单集群部署还是多集群部署,课堂ES是多集群部署,所以索引名前面包含了集群名匹配: [*:ke]-YYYY-MM-DD
,这样就能查到每个集群的数据了:
3. 常规业务数据
在线教育的业务数据主要存储于MySql和TDSql,以MySql为例:
-
数据源类型:Mysql
-
数据源配置
注意:这里配置的mysql账号强烈建议只配只读权限,因为Grafana无法保证用户是否会执行删除和更新等操作。
4. 业务自定义指标
-
数据源类型:Prometheus
-
数据源配置:
业务自定义指标可按照Prometheus Metrics协议进行埋点,然后由Promtheus server拉取。
5. CMDB监控数据
基于CMDB模块的CPU、内存、硬盘、网卡等机器指标,内部通过调用 Monitor API 3.0 接口来获取监控数据。
6. 云产品监控数据
-
支持云服务器监控指标数据源
-
支持云数据库MySQL、PostgreSQL监控指标数据源
-
支持私有网络NateGateway、对等连接监控指标数据源
-
提供了云服务器、云数据库 MySQL 的具有代表性的 Dashboard 模板
四. 视图篇
1. Moniter属性监控
前提工作:
在monitor系统中已经配置了属性和视图,并且上报了属性数据。 配置了monitor数据采集, 接下来就可以根据viewid和attrid来配置Panel了。
2. 全链路服务监控
全链路服务主要关注于非0状态码分布和时延分布,其中时延分布应做分段个数统计。
-
状态码
-
时延
查询编辑器支持更多Lucene语法
-
Terms词语查询
-
Field字段查询
-
通配符
-
正则表达式
-
模糊搜索
-
临近搜索
-
范围搜索
-
优先级
-
布尔操作符
-
分组
-
保留字符
3. 业务自定义指标
此类指标以 Prometheus Metrics协议 为数据上报格式,具有指标类型、键、值丰富,统计方式多样等特点。
对应原始指标数据如下:
4. 常规业务数据
此类数据往往存储于Mysql、PostgreSql等关系型数据库,有必须的数据创建或者数据更新时间字段,且有一个或多个重点字段需要关注。
此类数据源的Panel配起来相对麻烦一点,查看 具体说明 。
五. 告警篇
1. 告警通道配置
Grafana原生支持近20种告警通道,如Email、钉钉、Kafka、Slack、Webhook等,查看更多通道。基于Webhook我们可以开发个性化的适合我们自己业务场景的通知方式。
以Webhook通道为例:
2. 告警策略配置
Grafana告警功能很强大,规则配置、状态切换、异常处理、告警触发、通知发送等方面都能应付大部分场景。
3. Webhook开发
Webhook通道是一种通过HTTP POST请求将告警状态变更和告警元数据的信息发送到指定服务端的通知方式。使用此通道,您可以将Grafana告警集成到自己的系统中,定制个性化告警通知方式。
示例json主体:
4. 告警相关术语
-
告警过滤
对某些可预知的告警进行过滤,不进入告警统计的数据,如少量爬虫访问导致的http响应500错误,业务系统自定义异常信息等。
-
告警去重
当一个告警通知负责人后,在这个告警恢复之前,不会继续收到相同的告警。
-
告警抑制
为了减少由于系统抖动带来的干扰,还需要实现抑制,例如服务器瞬间高负载,可能是正常的,只有持续一段时间的高负载才需要得到重视。
-
告警恢复
开发/运维人员不仅需要收到告警通知,还需要收到故障消除告警恢复正常的通知。
-
告警合并
对同一时刻或者一小段时间内产生的多条相同告警进行合并,如某个微服务集群同一时刻出现多个子服务负载过高的告警,需要合并成为一条告警。
-
告警收敛
有时某个告警产生时,往往会伴随着其它告警。这时可以只对根本原因产生告警,其它告警收敛为子告警一并发送通知。如云服务器出现CPU负载告警时往往伴随其搭载的所有系统的可用性告警。
六. 插件篇
1. Plugins介绍
Grafana 支持丰富的插件,主要包括数据源插件(Data Source Plugin),面板插件(Panel Plugin)以及应用插件(App Plugin)这三大类型。Grafana 拥有了一个强大的插件社区 Grafana Plugins ,这使得开发和安装插件变得更加容易。
开发者社区提供了三种类型的插件:
-
Panel Plugin: 针对图形展示的面板插件;
-
Datasource Plugin: 针对数据源的插件;
-
App Plugin: 针对完整应用的插件,通常由 Panel Plugin,Datasource Plugin 以及 Dashboards 模板组成。
安装方法
-
命令安装
grafana-cli plugins install<plugin_name>
-
手动安装
-
下载所需插件的安装包,下载 地址: Grafana Plugins
-
解压插件安装包并复制到Grafana源码的
data/plugins
目录下,然后重启 Grafana Server; -
在Grafana的
Configuration/Plugins
页面可以看到安装的插件。
2. Plugins开发
参考: Grafana插件开发文档
3. 腾讯云监控应用插件
腾讯云监控 为用户提供云服务器CVM、云数据库CDB等多个云产品的负载和性能监控指标,用户可以使用云监控控制台、云监控 API 等方式获取相关监控数据。腾讯云监控应用插件 Tencent Cloud Monitor App,是一款适配开源软件 Grafana 的应用插件,通过调用 腾讯云监控 API 3.0 的方式获取监控数据,并对数据进行自定义 Dashboard 展示。
七. 附录
参考资料:
-
Grafana官方文档:https://grafana.com/docs/grafana/latest/
-
Prometheus官方文档:https://prometheus.io/docs/introduction/overview/
以上所述就是小编给大家介绍的《在线教育业务看板全面解析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 在线教育前端团队构建秘籍
- 基于视频流传输:在线教育白板技术
- 挖洞经验 | 知名在线教育平台的IDOR漏洞
- MeEdu v2.8 版本上线,在线教育点播系统
- MeEdu v2.9 版本上线,在线教育点播系统
- MeEdu v3.0 版本上线,在线教育点播系统
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
趣学Python编程
Jason Briggs / 尹哲 / 人民邮电出版社 / 2014-3 / 45.00元
python是一款解释型、面向对象、动态数据类型的高级程序设计语言。python语法简捷而清晰,具有丰富和强大的类库,因而在各种行业中得到广泛的应用。对于初学者来讲,python是一款既容易学又相当有用的编程语言,国内外很多大学开设这款语言课程,将python作为一门编程语言学习。 《趣学python编程》是一本轻松、快速掌握python编程的入门读物。全书分为3部分,共18章。第1部分是第......一起来看看 《趣学Python编程》 这本书的介绍吧!