《【向阳】 使用eBPF实现应用可观测性的实践与思考.pdf》由会员分享,可在线阅读,更多相关《【向阳】 使用eBPF实现应用可观测性的实践与思考.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、使使用用 e eB BP PF F 实实现现应应用用可可观观测测性性的的实实践践与与思思考考向向阳阳云杉网络研发 VP清华大学博士、云杉网络研发 VP云原生可观测性产品 DEEPFLOW 开发者网络通信国际顶会 ACM SIGCOMM 2023 论文作者网络测量国际顶会 ACM IMC 2012 论文作者IMC 1ST COMMUNITY CONTRIBUTION AWARD向向阳阳云云原原生生应应用用实实现现可可观观测测性性面面临临的的挑挑战战插插桩桩难难盲盲点点多多关关联联差差REDCPUBPS使使用用 e eB BP PF F 实实现现应应用用可可观观测测性性的的实实践践与与思思考考使使
2、用用 e eB BP PF F 的的最最佳佳场场景景对生产业务的性能影响DeepFlow 的社区案例什什么么是是 e eB BP PF F(e ex xt te en nd de ed d B Be er rk ke el le ey y P Pa ac ck ke et t F Fi il lt te er r)Dynamically program the kernel for efficientnetworking,observability,tracing,and securityS Si in ne e 1 19 99 92 T To op p O Op pe en nS So ou
3、 ur rc ce e e eB BP PF F b ba as se ed d O Ob be er rs se er rv va ab bi il li it ty y P Pr ro oj je ec ct ts 关关于于 e eB BP PF F 能能力力的的常常见见认认知知擅擅长长不不擅擅长长Metrics应用 RED 指标业务指标端点网络性能指标逐跳网络性能指标Tracing单个函数调用分布式追踪内核态函数调用用户态函数调用Logging调用日志业务日志Profiling编译型语言解释型语言Event函数调用事件业务事件关关于于 e eB BP PF F 能能力力的的常常见见认认知
4、知,是是这这样样吗吗?擅擅长长不不擅擅长长Metrics应用 RED 指标业业务务指指标标?端点网络性能指标逐逐跳跳网网络络性性能能指指标标?Tracing单个函数调用分分布布式式追追踪踪?内核态函数调用用用户户态态函函数数调调用用?Logging调用日志业务日志Profiling编译型语言解释型语言Event函数调用事件业务事件D De ee ep pF Fl lo oww 对对 e eB BP PF F 能能力力的的使使用用MMe et tr ri ic cs s指标T Tr ra ac ci in ng g追踪L Lo og gg gi in ng g日志 插插桩桩难难、盲盲点点多多、关
5、关联联差差 零零插插桩桩(Z Ze er ro o C Co od de e)、全全覆覆盖盖(F Fu ul ll l S St ta ac ck k)、全全关关联联(U Un ni iv ve er rs sa al l T Ta ag gg gi in ng g)基基于于 e eB BP PF F 的的零零插插桩桩、全全覆覆盖盖、全全关关联联可可观观测测性性Fuction Data/Socket Data/Packet DataL7 Flow(Request)TraceappappPODiptables、ipvsVMvSwitch、vRouterHOSTL4、L7GatewayApplic
6、ationHTTP2/HTTPSHTTP1/SQL/.SSL/TLSKernel SyscallSocketTCPIPDrivereBPFuprobeUSDTeBPFkprobetracepointeBPFkprobetracepointBPFAF_PACKETlibpcapFLOW e eB BP PF F 实实现现共共享享服服务务的的可可观观测测性性 -N Ng gi in nx x、MMy yS SQ QL L .集中式的、MySQL Instance 粒度指标通常用于回答 MySQL 自身是否存在问题用于 MySQL 自身的监控告警分布式的、业务 Request 粒度指标回答对 MyS
7、QL 的请求哪里存在问题用于应用的可观测性将数据采集代价分摊到客户端侧典型问题一:哪个客户端、哪些 SQL 语句返回的数据量过大?SQL 语句需要优化?哪个客户端开启的 DB 连接池过大?哪个客户端的访问速率最高,SQL 语句要修改为批量?零零插插桩桩、全全覆覆盖盖Request/Error/DelaySQL StatementResponse SizeError CodeServicesServicesS e eB BP PF F 实实现现托托管管服服务务的的可可观观测测性性 -R RD DS S、A AL LB B .典型问题二:客户端查询 DB 偶尔要 1.1 秒,RDS 是不是有问题,
8、是否要开工单?给谁开工单?当 APP 请求 RDS 慢时,如何定界问题出在哪里?业务代码/K8s 网络/RDS 服务?全全覆覆盖盖、全全关关联联Process-Pod NIC-Node NIC-.APPPodNodeAPPHost1s900ms 100ms1 1.1 1s s?SQL RequestAWS RDS云服务仅有 Instace 粒度指标通常用于回答托管服务自身是否存在问题 e eB BP PF F 实实现现零零插插桩桩、全全覆覆盖盖、全全关关联联的的分分布布式式追追踪踪典型问题三:分布式追踪一定要插桩吗?一定要重启进程吗?I Is st ti io o B Bo oo ok ki
9、in nf fo o D De emmo e eB BP PF F 与与 A AP PMM 在在分分布布式式追追踪踪方方面面的的绝绝佳佳搭搭配配T Tr ra ac ci in ng g wwi it th ho ou ut t b bl li in nd d s sp po ot ts s+业业务务代代码码 S Sp pa an n 盲盲点点基础设施服务:APIGW、NLB/ALB、KVM/K8s、DB、DNS、Log、插桩不完全:新语言、新框架、不同团队方案不一系系统统和和网网络络 S Sp pa an n 盲盲点点应用内部:进程函数之间的调用链业务逻辑:部分跨线程请求场景、异步 IO 场
10、景“火控雷达”:手动插桩“预警雷达”:自动追踪gatewayNLBsidecarK8sALBnew rpcnon-critical pathdatabaseKVMdifferenttracerinnerfunctionaio典型问题四:eBPF 的分布式追踪,和 APM 的分布式追踪,到底是什么关系? e eB BP PF F 发发现现并并关关联联从从业业务务代代码码无无法法感感知知的的问问题题以以 R Re eq qu ue es st t 为为核核心心关关联联所所有有观观测测信信号号典型问题五:为什么客户端 Span 是 3s,但服务端 Span 是 30ms,时间花在哪里了?K8s DN
11、S Lookupiptables/ipvs 客户端:HTTP GET/v1/api/query?id=12345 10SDNS 查询#1DNS 查询#2TCP 建连客户端等待 服务端:HTTP GET/v1/api/query?id=12345 5S文件读写#1文件读写#2文件读写#3TCP 建连失败、TCP 异常断开、TCP 吞吐、TCP 重传、TCP 零窗biz/ e eB BP PF F +WWa as smm,从从应应用用走走向向业业务务D De ee ep pF Fl lo oww 控控制制器器WasmLua热热插插拔拔应应用用协协议议解解析析模模块块内置解析器WASM 插件LUA
12、插件内置解析器应用协议字段提取业务属性标签提取D De ee ep pF Fl lo oww 采采集集器器Function DataPacket Data自定义协议私有协议数据库消息队列基础设施常见协议RPC 协议ProtobufThrift交易HTTPHTTPSgRPCDubboSOFARPCMySQLPostgreSQLRedisKafkaMQTTDNSNTP拓拓扑扑、指指标标、追追踪踪、日日志志云云原原生生应应用用全全栈栈可可观观测测性性业业务务属属性性标标签签用户唯一标识、交易唯一标识、.业务开发人员商用软件供应商典型问题六:我有私有协议怎么办?我的业务字段怎么办?登录次数多少,登录时
13、延多大,一笔交易的分布式链路追踪.soSDK使使用用 e eB BP PF F 实实现现应应用用可可观观测测性性的的实实践践与与思思考考使用 eBPF 的最佳场景对对生生产产业业务务的的性性能能影影响响DeepFlow 的社区案例以以 D De ee ep pF Fl lo oww A Ag ge en nt t 为为例例,评评估估资资源源投投入入的的方方法法论论APPsyscallpacketuser-spacekernel-spacefunc data(uprobe)sock data(kprobe/tp)pkt data(af_packet)Agent 对业务性能的影响 TPS 降低了多
14、少?RT 升高了多少?CPU/MEM 升高了多少?Agent 自身的处理性能 CPU/MEM 消耗了多少?应用数据采集能力 RPS?网络数据采集能力 CPS/BPS/PPS?AgentFlow 聚合、Protocol 识别trace,metric,评评估估 e eB BP PF F A Ag ge en nt t 对对业业务务性性能能的的影影响响覆盖 Agent 处理流程的所有环节:AF_PACKET、tracepoint、kprobe、uprobewrkwrkwrk场景 A典型云原生微服务场景 B极高性能极简业务场景 C用 uprobe 追踪 Golang 协程评评估估 e eB BP PF
15、 F A Ag ge en nt t 对对业业务务性性能能的的影影响响 -数数据据注入 52%CPU 高负载37 Spans/Trasaction,11100 Spans/s对业务 TPS 无影响P50 RT 增加 10.30ms(+14.76%)业务 CPU 增长 0.24%(+0.46%)Agent 仅消耗 3.4%CPU、47 MB 内存注入 56%CPU 高负载2 Spans/Transaction,80000 Spans/s对业务 TPS 无影响P50 RT 增加 0.13ms(+12.75%)Agent 处理性能高于 Nginx注入 35%CPU 负载15 Spans/Trasac
16、tion,2100 Spans/s对业务 TPS 无影响P50 RT 增加 0.62ms(+17.42%)业务 CPU 增长 9.58%(+27.20%)DeepFlow 性能为 Pixie 方案的 2.5 倍wrkDNSwrkwrk场景 A典型云原生微服务场景 B极高性能极简业务场景 C用 uprobe 追踪 Golang 协程 评评估估 e eB BP PF F A Ag ge en nt t 自自身身处处理理性性能能wrk场景 B压测 RPS场景 D压测 CPS场景 E压测 BPS场景 F压测 PPStcp_clienttcp_serveriperf3-ciperf3-sudp_floo
17、dlo nic减少变量,一次测试一个指标评评估估 e eB BP PF F A Ag ge en nt t 自自身身处处理理性性能能 -数数据据wrk场景 B压测 RPS场景 D压测 CPS场景 E压测 BPS场景 F压测 PPStcp_clienttcp_serveriperf3-ciperf3-sudp_floodlo nic98%CPU90K RPS1GB 内存122K 活跃 CPS10%CPU、124MB20+Gbps96%CPU1.28MD De ee ep pF Fl lo oww 中中的的一一些些优优化化手手段段kerneluserBatch Processing+27%Shal
18、low Decoder+22%runtime.execute(DeepFlow)runtime.casgstatus(Pixie)Goroutine Tracking+250%GGGPMsk datask datask datask datask datask datask datask datask blocksk blockapplication logicmicro-service frameworkRPC frameworksyscallpod networknode 使使用用 e eB BP PF F 实实现现应应用用可可观观测测性性的的实实践践与与思思考考使用 eBPF 的最佳场景
19、对生产业务的性能影响D De ee ep pF Fl lo oww的的社社区区案案例例D De ee ep pF Fl lo oww 在在腾腾讯讯蓝蓝鲸鲸观观测测平平台台中中的的探探索索与与实实践践腾讯蓝鲸 x DeepFlow 基于 eBPF 的可观测性实践D De ee ep pF Fl lo oww 在在小小米米落落地地现现状状以以及及挑挑战战DeepFlow 在小米落地现状以及挑战如何在低版本内核下充分利用cBPF能力如何在主机业务混布场景下零插桩计算服务拓扑如何处理 LVS NAT 造成的服务拓扑断链D De ee ep pF Fl lo oww x x K Ku ub be e-O
20、 OV VN N:容容器器网网络络的的可可观观测测性性一个毫无头绪的 K8s DNS 故障排查之旅D De ee ep pF Fl lo oww x x K Kn na at ti iv ve e:复复杂杂基基础础设设施施下下的的应应用用可可观观测测性性D De ee ep pF Fl lo oww x x P Pr ro omme et th he eu us s:标标准准化化告告警警策策略略Request/Error/Delay业务/应用/系统/网络PromQLHPAAlertdeepflow-serverdeepflow-agent零零插插桩桩、全全覆覆盖盖、全全关关联联为所有微服务实现
21、自动化的 HPA而无需要求开发主动暴露指标为所有微服务实现标准化的 HPA而无需要求开发主动暴露指标https:/deepflow.io/docs/zh/server-integration/query/promql/D De ee ep pF Fl lo oww x x S Sk ky yWWa al lk ki in ng g:T Tr ra ac ce e C Co ommp pl le et ti io on n A AP PI IP Pr ro ommp pt t b by y S Sk ky yWWa al lk ki in ng g:请请告告诉诉我我这这三三个个 A Ap pp
22、p S Sp pa an n 的的上上下下游游C Co ommp pl le et ti io on n f fr ro omm D De ee ep pF Fl lo oww:这这里里是是所所有有 S Sp pa an n 及及其其父父子子关关系系D De ee ep pF Fl lo owwS Sk ky yWWa al lk ki in ng gP Pr ro ommp pt tC Co ommp pl le et ti io on n无无插插桩桩的的网网关关服服务务N NL LB BA AL LB BI In ng gr re es ss s无无插插桩桩的的基基础础服服务务D DN N
23、S SMMy yS SQ QL LR Re ed di is s无无插插桩桩的的网网络络路路径径S Sy ys sc ca al ll lB Br ri id dg ge eI IP PV VS SD De ee ep pF Fl lo oww x x S Sk ky yWWa al lk ki in ng g:T Tr ra ac ce e C Co ommp pl le et ti io on n A AP PI I期待 SkyWalking Contributor 开启 Trace Completion API 的能力!点点击击SQL APIe eB BP PF F 让让可可观观测测性性更更简简单单欢迎关注 De ee ep pF Fl lo oww社社区区微微信信群群T TH HA AN NK KS S