




个人介绍
1、具有8年以上的平台系统运维及管理经验;
2、具备5年云原生监控平台0-1建设开发和监控团队管理经验。
3、多语言开发能力,包括 golang,python,rust等。
4、参与 github 的知名社区项目,其中包括 Thanos和 deepflow 社区项目。
5、4个专利的主要发明人。
工作经历
2019-06-04 -2023-10-01趣丸科技资深运维开发
1.创建监控日志团队和协同追踪链团队从0-1建设可观察性平台。 2.带领监控团队,建设可观察性平台中的千亿级指标监控平台和指标流计算架构(基于 Prometheus、 Thanos 、VictoriaMetrics 部分组件二次开发)和统一告警平台。 3.以可观察性平台为基石协助 SRE 综合平台建设,包括但不限于数据库管控平台、资源管控项目等。 4.引进 eBPF 技术作为可观测能力的补充。 业绩: 1.从0-1建设跨地域分布式云原生监控平台,承接基建监控和业务监控。最高支撑60+套 kubernetes 集群的监控,每天采集干亿 级以上指标数据。 2.带领团队建设开发多云可接入的统一告警平台 3.参与 ebpf 开源社区 Github 项目开发,并引入公司建设 ebpf 能力。 4.培养 golang 实习生井带领开发混合云分布域监控任务调度系统。 5.获取个人技术突破奖,并带领团队成员获取技术突破奖 6.带领团队申请专利4项,其中一项已得到授权。
教育经历
和TA聊聊APP扫码和程序员直接沟通

该用户选择隐藏教育经历信息,如需查看详细信息,可点击右上角“和TA聊一聊”查看
资质认证
语言

1. 本方案面向谁,解决什么问题 面向对象 - 开发者与运维人员:需要扩展监控系统(如DeepFlow)以支持自定义协议解析的技术人员。 - 企业IT团队:希望增强分布式系统可观测性,尤其是对MongoDB、Kafka等协议流量进行细粒度监控的团队。 解决的问题 - 协议支持缺失:传统监控工具(如DeepFlow)缺乏对MongoDB、Kafka等协议的原生解析能力,导致无法获取关键指标(如请求类型、资源路径、响应状态等)。 - 可观测性不足:用户无法通过监控系统直接分析特定协议的流量特征,影响问题排查和性能优化。 - 扩展灵活性差:常规方案依赖硬编码或静态配置,难以快速适配新协议或协议版本变化。 2. 相比于市场常规方案,本方案有哪些特点 (1)多方式扩展协议解析 - 原生Rust扩展:通过修改DeepFlow Agent源码实现协议解析,性能高、资源占用低,但开发成本较高(需掌握Rust)。 - Wasm插件扩展:使用Go语言开发Wasm插件,可动态加载,开发门槛低、扩展性强,但功能受限于Wasm沙箱环境。 (2)动态协议识别与解析 - 基于eBPF的流量捕获:通过eBPF技术高效获取网络数据包,结合协议头分析(如MongoDB的`OP_MSG`操作码)实现协议识别。 - 灵活的匹配规则:支持根据端口、协议特征(如Kafka的`Produce`/`Fetch` API)动态路由和解析流量。 (3)协议特征深度提取 - 字段级解析:针对MongoDB的`BSON`结构、Kafka的`Topic`和API版本号等字段进行解析,输出结构化监控数据。 - 性能统计:记录QPS、延迟、错误率等指标,支持可视化分析(如Grafana展示)。 3. 方案的产品组成和技术选型 产品组成 - DeepFlow Agent:核心组件,负责流量采集与协议解析。 - 协议解析模块*: - 原生实现:通过Rust代码扩展协议解析逻辑(如MongoDB协议头解码)。 - Wasm插件:通过Go语言开发的插件实现轻量级协议扩展(如Kafka的`Topic`解析)。 - DeepFlow Server:接收并存储解析后的数据,提供查询和可视化能力。 技术选型 - 语言与框架: - Rust:用于DeepFlow Agent原生协议扩展,保证高性能和内存安全。 - Go:用于Wasm插件开发,借助`sdk`简化与DeepFlow的交互。 - 协议分析工具: - eBPF:高效捕获网络数据包,实现内核级流量监控。 - Kafka-go:用于Kafka协议解析(Wasm插件中引用)。 - 扩展机制: - YAML配置:定义协议匹配规则和插件加载策略。 - Wasm沙箱:通过`tinygo`编译插件,支持运行时动态加载。 总结 该方案通过结合原生Rust扩展和Wasm插件,为DeepFlow监控系统提供了灵活的协议解析能力,适用于需要增强特定协议可观测性的场景。其核心优势在于平衡了开发效率与性能,并通过eBPF技术实现了高效的流量采集与分析。


### 1. 本方案面向谁,解决什么问题 #### 面向对象 本方案主要面向需要对指标流进行管理和路由的场景,可能的用户包括监控系统管理员、运维人员、开发人员等。这些人员负责管理和维护监控系统,需要确保各种监控指标能够准确、高效地路由到相应的存储或处理系统。 #### 解决的问题 在复杂的监控环境中,存在大量的监控指标,这些指标需要被发送到不同的系统进行处理和存储,例如 Prometheus 服务器、Kafka 等。然而,传统的监控系统可能缺乏灵活的路由机制,无法满足多样化的指标路由需求。本方案通过提供一个灵活的路由解决方案,解决了以下问题: - **指标路由灵活性**:能够根据不同的规则将指标流路由到不同的目标系统,例如将特定前缀的指标发送到 Kafka 主题,将特定标签的指标发送到 Prometheus 服务器。 - **指标过滤和筛选**:可以根据指标的名称、标签等信息进行过滤和筛选,只将符合条件的指标发送到目标系统,减少不必要的数据传输和存储。 - **多目标系统支持**:支持将指标流同时路由到多个不同的目标系统,例如 Prometheus 服务器、Kafka 等,满足不同系统的监控需求。 ### 2. 相比于市场常规方案,本方案有哪些特点 #### 灵活性高 本方案提供了灵活的路由规则配置,用户可以根据自己的需求定义各种路由规则,包括指标名称匹配、标签匹配等。例如,可以通过配置正则表达式来匹配指标名称,将符合条件的指标路由到指定的目标系统。 #### 多格式支持 支持多种序列化格式,如 JSON 和 Avro-JSON。用户可以根据自己的需求选择合适的序列化格式,方便与不同的系统进行集成。 #### 可扩展性强 采用模块化设计,各个组件之间相互独立,易于扩展和维护。例如,可以轻松添加新的存储系统或处理逻辑,而不需要对整个系统进行大规模的修改。 #### 监控和统计功能 提供了丰富的监控和统计指标,如接收的指标批次数量、序列化成功和失败的数量、过滤的对象数量等。这些指标可以帮助用户了解系统的运行状态,及时发现和解决问题。 ### 3. 方案的产品组成和技术选型 #### 产品组成 - **接收模块**:负责接收 Prometheus 发送的指标数据,对数据进行解析和处理。相关代码位于 `stream-metrics-route/pkg/receive/receive.go`。 - **路由模块**:根据配置的路由规则,将指标数据路由到不同的目标系统。相关代码位于 `stream-metrics-route/pkg/router/router.go`。 - **Kafka 客户端**:负责与 Kafka 进行交互,将指标数据发送到 Kafka 主题。相关代码位于 `stream-metrics-route/pkg/kafkaclient` 目录下。 - **序列化模块**:支持多种序列化格式,如 JSON 和 Avro-JSON,将指标数据转换为合适的格式。相关代码位于 `stream-metrics-route/pkg/kafkaclient/serializers.go`。 - **遥测模块**:提供监控和统计功能,记录系统的运行状态和指标数据。相关代码位于 `stream-metrics-route/pkg/telemetry` 目录下。 #### 技术选型 - **Go 语言**:作为主要的开发语言,Go 语言具有高效、并发性能好等特点,适合处理大量的指标数据。 - **Gin 框架**:用于构建 HTTP 服务,处理 Prometheus 发送的指标数据。相关代码位于 `stream-metrics-route/pkg/receive/receive.go`。 - **Prometheus 相关库**:使用 Prometheus 的客户端库和模型库,处理和解析 Prometheus 发送的指标数据。相关代码中使用了 `github.com/prometheus/client_golang`、`github.com/prometheus/client_model`、`github.com/prometheus/common`、`github.com/prometheus/prometheus` 等库。 - **Kafka-go**:用于与 Kafka 进行交互,将指标数据发送到 Kafka 主题。相关代码中使用了 `github.com/segmentio/kafka-go` 库。 - **Goavro**:用于处理 Avro 格式的数据,支持 Avro-JSON 序列化。相关代码中使用了 `github.com/linkedin/goavro` 库。 - **YAML 解析库**:使用 `gopkg.in/yaml.v2` 库来解析配置文件。相关代码位于 `stream-metrics-route/pkg/setting/config_test.go`。 - **Jaeger**:用于分布式追踪,提供系统的性能监控和调试功能。相关代码位于 `stream-metrics-route/pkg/telemetry/jaeger.go`。
