华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力
本文分享自华为云社区《华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力》,作者: 云容器大未来。
基于eBPF的容器监控的兴起
基本的容器网络监控,和虚机的监控类似,只能监控每个pod的网络流量、丢包等基本信息,监控的方式就是通过pod内网卡上的统计信息获取监控结果。这种监控看到的信息有限,无法满足对容器网络深入观测的目标。
eBPF是一种能够在内核运行沙箱程序的技术,可以通过在内核的不同位置注入监控代码,灵活的实现各种监控能力,安全、高性能,并且对内核和用户业务没有任何修改侵入,非常适合在容器监控领域使用。
当前已经有丰富的eBPF监控软件,比如BCC、DeepFlow、Pixie等,可以给用户提供多种维度的监控能力。
华为云云容器引擎CCE Turbo容器服务,提供了基于eBPF技术的dolphin插件(即"CCE容器网络扩展指标"插件),实现多维度、多粒度的容器监控能力,大大增强了容器网络的可观测能力。
dolphin基于eBPF的监控能力构建
dolphin支持运行在CCE Turbo集群,通过daemonset部署在K8s node上,使用CRD管理监控任务,监控结果为telemetry exporter格式,支持普罗主动拉取监控结果。
apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: example-task #监控任务名 namespace: kube-system #必填,namespace必须为kube-system spec: selector: #选填,配置dolphin插件监控的后端,形如labelSelector格式,默认将监控本节点所有容器 matchLabels: app: nginx matchExpressions: - key: app operator: In values: - nginx podLabel: [app] #选填,用户标签 healthCheck: #选填,本地节点 Pod 健康检查任务中最近一次健康检查是否健康、健康检查总健康&不健康次数这三个指标开关,默认不开 enable: true # true false failureThreshold: 3 #选填,健康检查不健康判定失败次数,默认1次健康检查失败即判定不健康 periodSeconds: 5 #选填,健康检查任务检查间隔时间,单位秒,默认60 command: "" #选填,健康检查任务检查命令,支持:ping、arping、curl,默认 ping ipFamilies: [""] #选填,健康检查IP地址族,支持:ipv4,默认ipv4 port: 80 #选填,使用curl时必选,端口号 path: "" #选填,使用curl时必选,http api 路径 monitor: ip: ipReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 ipSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcp: tcpReceive: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpSend: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRetrans: aggregateType: flow #选填,支持填写"pod"或"flow",分别表示pod粒度监控或流粒度监控 tcpRtt: aggregateType: flow #选填,支持填写"flow",表示流粒度监控,单位:微秒 tcpNewConnection: aggregateType: pod #选填,支持填写"pod",表示pod粒度监控
- 用户自定义监控项。用户通过CR自选监控项,dolphin根据用户选择的监控项动态注入eBPF程序,不需要的内容不监控,最大程度减少对CPU、memory等资源的消耗。
- 用户自定义监控粒度。用户根据不同的监控诉求,可以选择pod或flow的监控粒度,dolphin根据不同的监控粒度注入不同的eBPF程序,既满足了用户的监控诉求,也尽量降低资源的销毁。pod粒度监控会按pod粒度聚合监控数据,用户通过pod粒度监控可以观测容器层面的网络运行情况。flow粒度监控会按pod内不同流聚合监控数据,用户通过flow粒度监控可以观测容器内不同流的网络运行情况,进一步感知不同pod之间的通信情况。
- 多任务并发。每个CR对应一个监控任务,可以多个任务并发监控,互不影响。用户可以根据需要定义多个监控任务进行不同层次、不同服务的监控。
- selector选择监控范围。CR中的selector为标准的K8s pod label selector,用户可以通过selector选择需要监控的一组pod,灵活的定义监控范围。dolphin会根据用户定义的监控范围只监控选中的pod,大大降低资源消耗和监控结果输出。监控结果携带用户指定pod label。用户通过监控结果进行数据分析时,常常会用到pod上的label信息进行数据筛选、数据聚合、数据关联等动作,用户可以通过podLabel字段指定监控结果携带哪些pod上的label,dolphin输出监控结果时,会根据用户指定的label key获取pod的上的label value,并将label KV随监控结果输出,满足用户数据处理的诉求。
- 丰富的IP层和TCP层监控能力 ,vpc网络的健康检查能力。
具体的监控能力和使用方式,请参考华为云CCE容器网络扩展指标:
示 例
某应用是用户的重点应用,此应用通过deployment app1部署在华为云CCE Turbo上,用户想知道这个应用的qps情况,网络质量有没有问题,都有哪些client在访问这个服务,整体网络流量情况是怎样的?这时候用户可以安装dolphin插件来实现了。
在CCE集群console界面,点击"插件中心",搜索“CCE 容器网络扩展指标”找到dolphin插件,点击“安装”,就完成了插件安装。
编写如下配置,并保存成app1.yaml
apiVersion: crd.dolphin.io/v1 kind: MonitorPolicy metadata: name: app1 namespace: kube-system spec: selector: matchLabels: app: app1 monitor: ip: ipReceive: aggregateType: pod ipSend: aggregateType: pod tcp: tcpRetrans: aggregateType: flow tcpRtt: aggregateType: flow tcpNewConnection: aggregateType: pod
然后通过“kubectl apply -f app1.yaml”将配置使能,监控配置就完成了。通过prometheus可以轻松查看监控结果。
通过新建连接的统计信息轻松计算qps值。
通过流粒度的RTT和重传监控,感知应用的网络时延和丢包情况,还可以感知具体哪些client的访问网络质量较差。
除了使用Prometheus直接查看dolphin的监控结果外,还可以基于dolphin监控进行二次开发。华为终端云和CCE云原生观测服务利用dolphin flow粒度的网络监控能力,正在构建容器流量拓扑功能,可以一目了然的看到容器间的网络运行情况,敬请期待。
后续演进
dolphin崭露头角,还在快速的成长过程中,后续会在如下几个方面继续演进增强。
- 更丰富的监控指标,比如支持错包计数、建链失败统计、丢包统计、udp报文统计等指标。
- 更强的用户自定义能力,用户可以定义监控的IP范围、端口范围、聚合方式等。
- K8s service监控能力,让用户能感知client->service->endpoint全链路的网络运行情况。
- 更智能的诊断能力,帮助用户对网络问题的快速定位、定界。
云容器引擎CCE服务体验请访问

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
支撑核心系统分布式改造,GaussDB为江南农商银行筑稳根基
本文分享自华为云社区《支撑核心系统分布式改造,GaussDB为江南农商银行筑稳根基》,作者:华为云头条。 在移动互联网快速普及的当下,金融机构能否提供便捷、智能、个性化的金融服务,成为关乎业务开展和企业成长的重要命题。高性能、高可用、高安全的数据库,则是金融服务背后的重要支撑。并且,在中国银保监会发布的《关于银行业保险业数字化转型的指导意见》中明确提出,要推进传统架构向分布式架构转型。各级金融机构在近年来纷纷将核心系统的分布式转型提上日程。作为全国农村商业银行中的佼佼者,江南农村商业银行(文章后续简称为“江南农商银行”)基于GaussDB分布式数据库,依托华为分布式新核心解决方案,对传统集中式架构的信贷核算系统进行了“全栈自主创新+分布式”改造,打造新一代信贷核算系统,满足了对性能和容量的要求,还做到了易迁移、易运维。同时,也为江南农商银行下一阶段全面核心系统升级改造改造积累了实践经验。 从集中式到分布式,以信贷核算系统切入推进核心系统升级 江南农商银行成立于2009年,是全国首家地市级股份制农村商业银行,在中国银行业协会发布的“2023年中国银行业100强榜单”中位列第52位。银行业...
- 下一篇
Katalyst v0.4.0 发布:潮汐混部与资源超分
Katalyst 是字节跳动开源的成本优化实践系统,致力于解决云原生场景下的资源不合理利用问题,为资源管理和成本优化提供解决方案。 来源| KubeWharf 社区 项目 |github.com/kubewharf/katalyst-core 近日,Katalyst 社区完成了 0.4.0 版本发布。除了持续优化 QoS 能力之外,我们还在新版本中提供了可以独立在原生 Kubernetes 上使用的潮汐混部和资源超售能力。 和在离线常态混部一样,这些能力是字节跳动在不同业务场景中实现降本增效的技术手段,我们在抽象出标准化能力之后也进行了开源,期望这些能力可以帮助用户以更低的落地成本完成资源效能提升。 潮汐混部 背景 通过给应用分配差异化的 QoS 等级,Katalyst 可以基于资源隔离和动态调控能力实现在单机维度的在离线业务混部,即常态混部。这种混部模式虽然可以实现极致的资源效能提升,但是也增加了基础设施的复杂度。同时因为引入了例如 Reclaimed 资源这样的概念,要落地常态混部往往还需要做一些业务侧的适配。 为了让用户可以以更低的成本落地混部能力,在 v0.4.0 中,Kata...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS8安装Docker,最新的服务器搭配容器使用