微软开源Retina云原生k8s网络可观察性平台安装与使用
最近,微软开源了一款名为Retina的Kubernetes网络可观察性平台,它为应用健康、网络健康以及安全监控带来了新的解决方案。Retina支持多云环境,能收集定制化的遥测数据,还能把这些数据导出到多种存储选项,并且适配多种可视化工具,像是Prometheus、Azure Monitor、Grafana和Azure Log Analytics等。下面就来深入了解一下Retina。
一、Retina的关键知识点
(一)eBPF技术助力
Retina借助eBPF(extended Berkeley Packet Filter)技术实现网络可观察性。eBPF技术就像是一个高效的数据“侦察兵”,它能在不影响系统正常运行速度的前提下,对数据包进行捕获和分析,从而获取详细的网络流量信息。有了它,Retina就能够精准地了解网络中数据的流动情况。
(二)可定制遥测功能
Retina的一大特色是支持用户定制遥测数据的收集和导出。这意味着用户可以根据自己的实际需求,决定监控哪些指标,然后把这些数据发送到不同的存储系统里。比如,用户可以只关注网络连接数、数据传输量等特定指标,并将相关数据存储到Prometheus中,方便后续分析。
(三)广泛的云环境支持
Retina的适用性很强,它支持多种云环境以及操作系统,像Linux、Windows、Azure Linux等都不在话下。无论你是在公有云、私有云还是混合云环境中部署系统,Retina都能正常发挥作用,为你的网络监控提供有力支持。
二、Retina的主要功能
(一)精准的指标监控
Retina能提供符合行业标准的Prometheus指标,这些指标就像是网络和应用的“健康检测仪”。通过这些指标,用户可以实时了解网络和应用的运行状态,一旦出现异常,能及时发现并处理。
(二)高效的数据包捕获
Retina具备流线化的数据包捕获功能。当网络出现问题时,用户可以利用这个功能深入分析网络流量,就像拿着放大镜仔细检查网络中的数据传输过程,从而更准确地诊断问题所在。
三、Retina的安装与使用方法
(一)使用Helm安装Retina
- 获取最新版本:
VERSION=$(curl -sL https://api.github.com/repos/microsoft/retina/releases/latest | jq -r .name)
这条命令通过访问GitHub的API,获取Retina的最新版本号,并将其存储在
VERSION
变量中。curl
用于从指定的URL获取数据,jq
则是用来解析JSON数据,提取出版本号。 - 执行安装:
helm upgrade --install retina oci://ghcr.io/microsoft/retina/charts/retina --version $VERSION --set image.tag=$VERSION --set operator.tag=$VERSION --set logLevel=info --set enabledPlugin_linux="[dropreason,packetforward,linuxutil,dns]"
该命令使用Helm工具来安装Retina。
helm upgrade --install
表示如果Retina已安装则升级,未安装则进行安装。oci://ghcr.io/microsoft/retina/charts/retina
指定了Retina的安装源。后面的参数用于设置版本号、日志级别以及启用的Linux插件等。
(二)安装Retina CLI
- 使用Krew安装:
kubectl krew install retina
Krew是Kubernetes的插件管理器,使用这条命令可以轻松安装Retina CLI,方便后续通过命令行对Retina进行操作。
- 验证安装:
kubectl retina
执行该命令,如果能正常显示相关信息,就说明Retina CLI安装成功。
(三)创建数据包捕获
使用CLI创建数据包捕获:
kubectl retina capture create --pod-selectors app=my-app
这条命令用于创建数据包捕获任务,通过--pod-selectors app=my-app
指定了要捕获数据包的目标Pod,这里以标签为app=my-app
的Pod为例。
四、示例代码
(一)Prometheus配置示例
安装完Retina后,需要配置Prometheus来收集指标,下面是一个基本的Prometheus配置示例:
# prometheus.yml global: scrape_interval: 15s scrape_configs: - job_name: 'retina' static_configs: - targets: ['retina-prometheus:9090']
在这个配置文件中,global
部分设置了数据抓取的时间间隔为15秒。scrape_configs
部分定义了一个名为retina
的任务,指定了要抓取数据的目标为retina-prometheus:9090
。
(二)Grafana可视化
在Grafana中进行可视化操作时,首先要添加一个Prometheus数据源,将Prometheus与Grafana连接起来。然后创建一个新面板,在面板中选择需要展示的指标,这样就能直观地看到网络和应用的各项数据变化了。
五、为何选择Retina?
Retina提供了灵活的网络可观察性解决方案。当网络出现问题时,用户可以按需利用它深入调查问题;同时,还能持续监控集群的运行状态。而且,它对多种云环境和操作系统的广泛支持,使其适用于各种不同的部署场景。