From f1ad7263a93fb0dfe3d2c7bd19b465d9ab9fc11c Mon Sep 17 00:00:00 2001 From: luzhihao Date: Thu, 7 Sep 2023 22:12:53 +0800 Subject: [PATCH] Update docs about features released in version 23.09. --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++----- gopher_tech.md | 24 +++++++++---------- 2 files changed, 71 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a10fcb8..b407786 100644 --- a/README.md +++ b/README.md @@ -512,11 +512,9 @@ Google针对云服务SLI的评估提出VALET方法,从5个维度综合评估 应用时延性能SLI:TS4 - TS1 [1] - 应用处理时延:TS3 - TS2 [2] + 应用接收方向时延:TS2 - TS1 [2] - 应用调度时延:TS2 - TS1 [2] - - 发送方向TCP时延:TS4 - TS3 [2] + 应用发送方向时延:TS4 - TS3 [2] 通过该方法,我们可以实现大部分应用时延性能SLI以及处理过程中不同阶段的时延(便于问题定界)。 @@ -525,7 +523,7 @@ Google针对云服务SLI的评估提出VALET方法,从5个维度综合评估 [^1]: openEuler 22.03 SP1版本已发布。 [^2]: openEuler 23.09版本待发布。 [^3]: 假设云服务应用在处理访问请求时,单个TCP连接内,是按照先进先出顺序处理。如果这个假设不成立,上述时延采集可能有误差. - + - TCP层采集应用吞吐量性能 吞吐量性能采集的难点在于识别短时吞吐量下降,比如有些场景TCP传输数据过程中出现20ms周期性的滑窗不移动现象,导致平常1~3s完成的数据传输,性能劣化至10s以上才能完成。 @@ -759,10 +757,65 @@ gala-ops支持使用Grafana图形界面用来帮助客户更好的理解性能Pr [精细化性能Profiling视频](https://gitee.com/openeuler/gala-docs/blob/master/demo/4.%20A-Ops%20%E6%95%B0%E6%8D%AE%E5%BA%93%E5%9C%BA%E6%99%AF%20-%20%E7%B3%BB%E7%BB%9F%E9%9A%90%E6%82%A3%E8%AF%8A%E6%96%AD%EF%BC%88%E7%81%AB%E7%84%B0%E5%9B%BE%EF%BC%89.mp4) + + +## K8S Pod全栈可观测及诊断 + +### 功能描述 + +GALA项目将全面支持K8S场景故障诊断,提供包括应用drill-down分析、微服务&DB性能可观测、云原生网络监控、云原生性能Profiling、进程性能诊断等特性。 + +- K8S环境易部署:gala-gopher提供daemonset方式部署,每个Work Node部署一个gala-gopher实例;gala-spider、gala-anteater以容器方式部署至K8S管理Node。 + +- 应用drill-down分析:提供云原生场景中亚健康问题的故障诊断能力,分钟级完成应用与云平台之间问题定界能力。 + + - 全栈监控:提供面向应用的精细化监控能力,覆盖语言运行时(JVM)、GLIBC、系统调用、内核(TCP、I/O、调度等)等跨软件栈观测能力,实时查看系统资源对应用的影响。 + - 全链路监控:提供网络流拓扑(TCP、RPC)、软件部署拓扑信息,基于这些信息构建系统3D 拓扑,精准查看应用依赖的资源范围,快速识别故障半径。 + - GALA 因果型AI:提供可视化根因推导能力,分钟级定界至资源节点。![](./png/k8s-monitor.png) + +- 微服务&DB性能可观测:提供非侵入式的微服务、DB访问性能可观测能力,包括: + + - HTTP 1.x访问性能可观测,性能包括吞吐量、时延、错误率等,支持API精细化可观测能力,以及HTTP Trace能力,便于查看异常HTTP请求过程。 + - PGSQL访问性能可观测,性能包括吞吐量、时延、错误率等,支持基于SQL访问精细化观测能力,以及慢SQL Trace能力,便于查看慢SQL的具体SQL语句。 + + ![](./png/db-monitor.png) + +- 云原生应用性能Profiling:提供非侵入、零修改的跨栈profiling分析工具,并能够对接pyroscope业界通用UI前端。技术特点包括: + + - 底噪低:benchmark测试场景,对应用干扰<2%。 + - 多语言:支持常见开发语言C/C++、Go、Rust、Java. + - 多实例:支持同时监控多个进程或容器,UI前端可以对比性分析问题原因。 + - 细粒度:支持指定profiling范围,包括进程、容器、Pod。 + - 多维度:提供OnCPU、OffCPU、MemAlloc不同维度的应用性Profiling。 + + ![](./png/Pyroscope-UI.png) + +- 云原生网络监控:针对K8S场景,提供TCP、Socket、DNS监控能力,具备更精细化网络监控能力。 + +![](./png/network-monitor.png) + +- 进程性能诊断:针对云原生场景的中间件(比如MySQL、Redis等)提供进程级性能问题诊断能力,同时监控[进程性能KPI](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech.md#%E5%9F%BA%E4%BA%8E%E6%B5%81%E7%9A%84%E8%BF%9B%E7%A8%8B%E6%80%A7%E8%83%BD)、进程相关系统层Metrics(比如[I/O](I/O)、[内存](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech.md#%E5%86%85%E5%AD%98)、[TCP](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech.md#tcp%E6%80%A7%E8%83%BD)等),完成进程性能KPI异常检测以及影响该KPI的系统层Metrics(影响进程性能的原因)。 + +![](./png/performance-diag.PNG) + +### 应用场景 + +![](./png/k8s-deploy.png) + +部署方式:gala-gopher提供daemonset方式部署,每个Work Node部署一个gala-gopher实例;gala-spider、gala-anteater以容器方式部署至K8S管理Node。 + +相关使用方式参考如下: + +[gala-gopher daemonset部署介绍](https://gitee.com/openeuler/gala-docs/blob/master/demo/k8s%E7%8E%AF%E5%A2%83daemonset%E9%85%8D%E7%BD%AE%E5%8F%8A%E9%83%A8%E7%BD%B2.wmv) + +[REST配置介绍](https://gitee.com/openeuler/gala-docs/blob/master/demo/Rest%20API%E9%85%8D%E7%BD%AE%E5%8F%8A%E4%BD%BF%E7%94%A8.wmv) + + + # 待发布特性 1. 系统隐患巡检 -2. K8S Pod全栈可观测及诊断 +2. 线程性能Profiling(解决线程死锁、I/O瓶颈等疑难问题) # Q&A diff --git a/gopher_tech.md b/gopher_tech.md index 7a5eb0d..1cfa8c3 100644 --- a/gopher_tech.md +++ b/gopher_tech.md @@ -126,20 +126,20 @@ | blk_type | block | label | | 块对象类型(比如disk, part) | | | blk_name | block | label | | 块对象名称 | | | disk_name | block | label | | 所属磁盘名称 | | -| latency_req_max | io_latency(0x01) | Gauge | us | block层I/O操作时延最大值 | | -| latency_req_last | io_latency(0x01) | Gauge | us | block层I/O操作时延最近值 | | -| latency_req_sum | io_latency(0x01) | Gauge | us | block层I/O操作时延总计值 | | -| latency_req_jitter | io_latency(0x01) | Gauge | us | block层I/O操作时延抖动 | | +| latency_req_max | io_latency(0x01) | Gauge | ns | block层I/O操作时延最大值 | | +| latency_req_last | io_latency(0x01) | Gauge | ns | block层I/O操作时延最近值 | | +| latency_req_sum | io_latency(0x01) | Gauge | ns | block层I/O操作时延总计值 | | +| latency_req_jitter | io_latency(0x01) | Gauge | ns | block层I/O操作时延抖动 | | | count_latency_req | io_latency(0x01) | Gauge | | block层I/O操作操作次数 | | -| latency_driver_max | io_latency(0x01) | Gauge | us | 驱动层时延最大值 | | -| latency_driver_last | io_latency(0x01) | Gauge | us | 驱动层时延最近值 | | -| latency_driver_sum | io_latency(0x01) | Gauge | us | 驱动层时延最总计值 | | -| latency_driver_jitter | io_latency(0x01) | Gauge | us | 驱动层时延抖动 | | +| latency_driver_max | io_latency(0x01) | Gauge | ns | 驱动层时延最大值 | | +| latency_driver_last | io_latency(0x01) | Gauge | ns | 驱动层时延最近值 | | +| latency_driver_sum | io_latency(0x01) | Gauge | ns | 驱动层时延最总计值 | | +| latency_driver_jitter | io_latency(0x01) | Gauge | ns | 驱动层时延抖动 | | | count_latency_driver | io_latency(0x01) | Gauge | | 驱动层操作次数 | | -| latency_device_max | io_latency(0x01) | Gauge | us | 设备层时延最大值 | | -| latency_device_last | io_latency(0x01) | Gauge | us | 设备层时延最近值 | | -| latency_device_sum | io_latency(0x01) | Gauge | us | 设备层时延最总计值 | | -| latency_device_jitter | io_latency(0x01) | Gauge | us | 设备层时延抖动 | | +| latency_device_max | io_latency(0x01) | Gauge | ns | 设备层时延最大值 | | +| latency_device_last | io_latency(0x01) | Gauge | ns | 设备层时延最近值 | | +| latency_device_sum | io_latency(0x01) | Gauge | ns | 设备层时延最总计值 | | +| latency_device_jitter | io_latency(0x01) | Gauge | ns | 设备层时延抖动 | | | count_latency_device | io_latency(0x01) | Gauge | | 设备层操作次数 | | | err_code | io_err(0x02) | Gauge | | block层I/O操作错误码 | | | read_bytes | io_count(0x04) | Gauge | bytes | I/O操作读字节数 | | -- Gitee