- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
浅谈可观测性生态的优化和丰富
展开查看详情
1 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 插件开发实践 网 杉 络 网 D 络 pF ee lo pF w l ow 云 云 杉 周振宇/云杉网络 前端技术专家 网 杉 络 网 D 络 D DeepFlow Grafana ee p Fl ee pF ow l ow 云 云 杉 可观测性技术实践系列 第13期直播·2022-12-08 网 杉 络 网 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
2 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF 目录 ow lo w 云 云 杉 杉 网 网 络 络 D 4、后续迭代计划 ee D p Fl ee pF ow l 3、Panel Plugin 开发 ow 云 云 杉 杉 网 网 络 2、DataSource Plugin 开发 D 络 pF ee lo pF w l ow 云 1、DeepFlow 搭配的 Grafana 插件 杉 云 网 杉 络 网 D 络 ee D p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
3 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 1、DeepFlow 搭配的 Grafana 插件 杉 云 网 杉 络 网 D 络 ee D p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
4 . 络 网 网 杉 DeepFlow Grafana 杉 云 云 ow o metric ow l pF l • Why Grafana pF l ee pF ee D ee log D 络 D • 场景丰富,覆盖可观测性主要数据类型 络 网 络 网 杉 网 杉 profile 云 • 生态成熟,插件众多 杉 云 云 tracing ow • 开发简单 ow w l pF l lo pF ee pF ee D ee D 络 D 络 网 络 网 杉 网 • Empower Grafana 杉 云 杉 云 云 • 快速,一键点亮 ow ow ow Fl Fl p Fl ee p • 全栈,全链路,高性能 ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
5 . 络 网 网 杉 DeepFlow 杉 云 云 ow o ow l pF l pF • 丰富的观测数据 l ee pF ee D ee D • Metrics 络 D 络 网 络 网 • AutoMetrics, Prometheus/Telegraf/ 杉 网 杉 云 杉 云 • Tracing 云 ow • AutoTracing, OpenTelemetry/Skywalking/ ow w l pF l lo pF • Logging ee pF ee D ee D • AutoLogging 络 D 络 网 络 网 杉 网 杉 云 杉 云 • 支持上千种指标算子组合的自由查询 云 ow ow ow Fl Fl p • 解决运维场景最头疼的问题: Fl ee p ee p D ee D 络 • 异常事件追踪 D 络 网 络 网 • 故障定位定界 杉 网 杉 云 杉 • 云 量化服务可用性 云 • w 零侵扰部署 ow lo 原力释放 云原生可观测性分享会 pF Fl
6 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 应用监控- K8s Pod 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D DeepFlow Grafana模板 pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
7 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D 应用监控- K8s Pod Map ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D DeepFlow Grafana模板 pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
8 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo 应用调用链追踪 w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D DeepFlow Grafana模板 pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
9 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee DeepFlow Grafana模板 lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
10 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 2、DataSource Plugin 开发 D 络 pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
11 . 络 网 网 杉 DeepFlow Grafana Plugin 杉 云 云 ow o ow l pF l • DataSource Plugin pF l ee pF ee D ee D • 构建搜索条件 络 D 络 网 络 • 向后端发起请求获取数据,并转换为Grafana panel认识的数据格式 网 杉 网 杉 云 杉 云 云 ow • Panel Plugin ow w l pF l lo pF • 内置/自定义的绘图模块 ee pF ee D ee D 络 D 络 网 络 网 • 使用过程 杉 网 杉 云 杉 云 • 在Grafana中加入data source,同时完成相关配置 云 ow • 查询时选择data source,通过UI完成查询条件构造 ow ow Fl Fl p • 通过data source请求后端数据,并进行格式转换 Fl ee p ee p D ee D • 络 数据由Grafana发送给panel渲染 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
12 . 络 网 网 杉 DeepFlow DataSource Plugin 杉 云 云 ow o ow l pF l pF 文件结构 l ee pF ee D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 DataSource包含了: 云 云 • QueryEditor,DataSource的查询界面 ow ow w l • ConfigEditor,加入DataSource时的配置 pF l lo pF ee pF ee 编辑页面 D ee D 络 D • Variables,Grafana中创建的变量 络 网 络 网 杉 网 • datasource,插件的执行逻辑核心 杉 云 杉 云 • plugin.json,相关配置,包proxy配置项 云 ow ow ow Fl Fl p Fl ee p ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
13 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 ConfigEditor 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
14 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 QueryEditor 杉 云 网 杉 络 网 D 络 ee D p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
15 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D Variables ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
16 . 络 网 网 杉 Datasource.ts 杉 云 云 ow o ow l pF l pF 执行流程 l ee pF ee D ee D 络 D 络 网 DataSource执行逻辑: 络 网 杉 网 杉 • 查询条件构造页面 云 杉 云 云 • 将条件通过DeepFlow Querier SDK ow ow 生成一个有效的查询语句 w l pF l lo pF ee • 将语句封装为API请求 pF ee D ee D 络 • 通过plugin的plugin.json中设置的 D 络 网 络 网 proxy转发至DeepFlow Querier 杉 网 杉 云 杉 • 将DeepFlow Querier返回的数据转 云 云 ow 换为符合Panel需要的数据 ow ow Fl • 在Panel中可视化呈现 Fl p Fl ee p ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
17 . 络 网 网 杉 杉 数据查询 云 云 ow o ow l pF l pF l ee pF 2种数据查询模式 ee D 数据查询逻辑 ee D 络 D 络 网 络 网 杉 • 网 直接查询全部数据,一般用于 杉 云 杉 云 查询原始日志,用于一些精细 云 ow 的排查 ow w l pF l lo • pF 进行分组查询,这是最常见的 ee pF ee D ee 方式。分组的数据可以使用多 D 络 D 络 网 络 种函数进行聚合 网 杉 网 杉 云 杉 云 云 • Select Avg(`byte`) from table ow ow group by interval(time, 60) ow Fl Fl p Fl • Select Avg(`byte`) from table ee p ee p D ee D group by ip, interval(time, 60) 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
18 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 单、双端数据 杉 杉 网 网 络 络 D D ee p Fl ee pF 单端:以资源节点为统计对象 ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF l 目前有l4_flow_log和l7_flow_log两张表 w ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF 双端:以访问路径作为统计对象,有源端、目的端的概念 ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 lo
19 . 络 网 网 杉 杉 转换查询条件 云 云 ow o ow l pF l pF l ee pF • 资源分组转换为资源ID的分组, ee D ee D 络 D 络 避免重名 网 络 网 杉 网 杉 • 自动增加node_type、icon_id 云 杉 云 云 等算子,例如在拓扑图中正确 ow ow w l 显示资源 pF l lo pF ee pF ee D • 对枚举类型的自动转换,实现 ee D 络 D 络 网 自动翻译。如protocol -> 络 网 杉 网 杉 Enum(protocol) 云 杉 云 云 ow ow • 自动进行别名替换 ow Fl Fl p Fl ee p • ... ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
20 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 转换查询条件 杉 为 SQL 或其他格式 网 杉 络 网 D 络 ee D p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 对于构造好的查询结构化数据,通过DeepFlow Querier SDK 统一转换 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
21 . 络 网 网 杉 Result Formatter 杉 云 云 ow o ow l pF l pF l ee pF ee D 对返回的数据进行重整,使之能适配各种panel进行绘图 ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 返回的原始结构 云 ow • 一个二维的dataframe结构 Record<string, number | string>[] ow w l pF l lo pF • 列表可以直接展示 ee pF ee D ee D 络 • 折线图 D 络 网 络 网 杉 网 • 需要构造series(线) 杉 云 杉 云 云 • 拓扑图 ow • 需要构造nodes和links ow ow Fl Fl p Fl ee p • ... ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
22 . 云 杉 网 络 D ee p Fl ow 云 杉 的形式 网 络 D ee Fl pF 折线图 ow lo w 云 云 杉 杉 网 网 络 络 D D ee p ee Result Formatter Fl pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 需要将转换为 data: [{time: timestamp, 组1: number}, {time: timestamp, 组2: number}, ...}] 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
23 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 数据二次分组 络 络 D D ee p Fl ee pF l Result Formatter ow ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF l 分出单独的每条线。 ow ow 云 云 杉 杉 网 网 络 D ee pF l ow • 按照所有group by字段可能的取值, • 线的名称支持自定义,方便实际使用。 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
24 . 络 网 网 杉 Result Formatter 杉 云 云 ow o ow l pF l pF l ee pF 拓扑图 ee D ee D 络 D 络 网 • 需要构造出{nodes: {name: string, id: string, metrics: any[]}[], links: {from: 络 网 杉 网 杉 any, to: any}[]}的结构 云 杉 云 云 • 源、目的相同的节点,比如{chost_0: 1}和 {chost_1: 1,} 需要合并为一个有 ow ow 效的节点 chost: 1 w l pF l lo pF ee pF ee D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 ow ow ow Fl Fl p Fl ee p ee p D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
25 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee Fl pF ow lo w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l 3、Panel Plugin 开发 ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
26 . 络 网 网 杉 Panel 杉 云 云 ow o ow l pF l pF l ee pF • 在 DataSource Plugin 中,会按照各种场景生成对应的数据,在Panel中进行显 ee D ee D 络 示 D 络 网 络 网 杉 网 • 除了 Grafana 自带的一系列 Panel 外,DeepFlow 提供了两个 Panel plugin 杉 云 杉 云 云 ow ow w l pF l lo pF ee pF ee D ee D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 ow ow ow Fl Fl p Topo Panel: 普通拓 Topo Panel: 瀑布拓 AppTracing Panel Fl ee p ee p D ee 扑 扑 D 络 D 络 网 络 网 杉 网 杉 云 杉 云 云 w ow lo 原力释放 云原生可观测性分享会 pF Fl
27 . 云 杉 网 络 D ee p • • • • Fl ow 云 杉 网 络 D ee 拓扑Panel 可设置根节点 采用树形方式 Fl pF ow lo 支持多棵独立树 w 云 云 杉 普通拓扑的布局方式 网 杉 络 网 D 络 ee D p Fl ee pF ow low 云 云 杉 杉 网 网 源端优先,按照访问顺序绘制层级关系 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
28 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee 拓扑Panel Fl pF 瀑布的布局方式 ow lo w • 采用紧凑树形方式 云 云 杉 杉 网 网 络 络 D D ee • 通过简单拓扑计算相对位置 p Fl ee pF ow low 分组,达到空间相对利用率最高 云 • 分组模式下,使用网格系统来堆叠 杉 云 网 杉 络 网 D 络 pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o
29 . 云 杉 网 络 D ee p Fl ow 云 杉 网 络 D ee 拓扑Panel Fl pF ow lo 瀑布拓扑 w 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 络 D pF ee lo pF w l ow 云 云 杉 杉 网 网 络 络 D D ee p Fl ee pF ow l ow 云 云 杉 杉 网 网 络 D 瀑布拓扑-分组 ee pF l ow 云 杉 网 络 D ee pF 原力释放 云原生可观测性分享会 l o