《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——2.ACK Net-Exporter 部署(下)

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——2.ACK Net-Exporter 部署(下)

更多精彩内容,欢迎观看:

《云原生网络数据面可观测性最佳实践》——四、ACK Net-Exporter 快速上手——2.ACK Net-Exporter 部署(上):https://developer.aliyun.com/article/1221319?groupCode=supportservice


2) 数据采集

使用自建或第三方Prometheus或Grafana收集监控数据并可视化

ACK Net Exporter支持输出到Prometheus Server实例,如果您使用自行搭建的Prometheus Server,您可以通过添加一组scrape_config的方式来使您的Prometheus Server实例主动抓取ACK Net Exporter的数据,类似如下配置:

# 只包含一个要抓取的端点的抓取配置。
scrape_configs:
# "net-exporter_sample"将作为“job=<job_name>”标签添加到从此配置中抓取的任何时间序列中。
- job_name: "net-exporter_sample"
static_configs:
  - targets: ["{kubernetesPod ip}:9102"]


如果您的Prometheus Server实例运行在ACK集群中,您也可以通过Prometheus服务发现功能自动获取到所有正常提供服务的ACK Net Exporter实例,您可以通过在Prometheus Server的配置中添加以下内容:

apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf
  labels:
    name: prometheus-server-conf
  namespace: kube-system
data:
  prometheus.yml: |-
          # 将以下内容添加到Promethes Server配置中。
      - job_name: 'net-exporter'
        kubernetes_sd_configs:
          - role: endpoints
        relabel_configs:
        - source_labels: [__meta_kubernetes_endpoints_name]
          regex: 'net-exporter'
          action: keep
      - job_name: 'kubernetes-pods'
        kubernetes_sd_configs:
        - role:Pod
        relabel_configs:
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
          action: keep
          regex: true
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
          action: replace
          target_label: __metrics_path__
          regex: (.+)
        - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
          action: replace
          regex: ([^:]+)(?::\d+)?;(\d+)
          replacement: $1:$2
          target_label: __address__
        - action: labelmap
          regex: __meta_kubernetes_pod_label_(.+)
        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: kubernetes_namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: kubernetes_pod_name

添加完成后,可以在Prometheus Server的Status > Targets界面看到已经生效的ACK Net Exporter实例,或者在Prometheus Server的Graph界面的搜索栏中输入inspector,即可看到自动补全的ACK Net Exporter指标。image.png

image.png

 

您可以通过配置Grafana将Prometheus采集到数据进行可视化操作:

打开Grafana页面,在左侧导航栏中选择+> Dashboard

在New dashboard页面单击Add an empty panel

进入Edit Panel页面,在下方Data source中输入Prometheus,然后选择已经完成Prometheus Server接口地址

单击Metric browser然后输入inspector,Grafana会自动补全ACK Net Exporter所有就绪Metric,单击右上角Save,在弹出框中单击Save,然后会出现可视化数据,效果如下:

image.png

对于使用Grafana进行可视化图形显示配置,可以参照上述指标格式,对指标显示格式进行调整,例如inspector_pod_tcppassiveopens指标,表征系统自开机或者Pod所属容器创建后,归属于这个网络命名空间内所有TCP连接由于接受客户端握手请求创建Socket总数变化,通常可以认为是表征TCP总连接数量增长,为了更加直观反应增长速率变化,可以参考以下配置:

// 使用PromQL提供的rate()方法配置Metrics。
rate(inspector_pod_tcppassiveopens[1m])
// 使用net-exporter提供的标签来配置Legend,直观显示Metrics。
{{namespace}}/{{pod}}/{{node}}

 

使用应用实时监控服务ARMS收集监控数据并可视化

ACK Net Exporter支持通过应用实时监控服务ARMS进行数据可视化操作,步骤如下:

开启阿里云Prometheus监控

配置ACK Net Exporter自定义指标

登录ARMS控制台,在左侧导航栏中选择Prometheus监控 > Prometheus实例列表

Prometheus监控页面左上角选择容器服务ACK集群所在的地域,然后单击目标实例名称(一般是集群名称)进入对应实例页面。

在左侧导航栏中单击服务发现,然后单击Targets页签,在页面下方的kubernetes-pods选项页可以看到ACK Net Exporter的指标已经配置成功。

 

如果没有找到相关的Pod,则需要您在配置页签下手动开启默认服务发现的选项。

image.png

 

在左侧导航栏中单击大盘列表,单击目标大盘进入Grafana,然后单击添加Panel,选择Graph类型,在Data source中选择开启ACK Net Exporter集群相关数据源

单击Metric browser然后输入inspector,Grafana会自动补全ACK Net Exporter所有就绪Metric,单击右上角Save,在弹出框中单击Save,然后会出现可视化数据,效果如下:

image.png

 

使用Grafana Loki收集监控事件并可视化

ACK Net Exporter采集的异常事件类型的数据,支持通过预先配置的Grafana Loki服务,由ACK Net Exporter向Loki进行实时推送,从而达到将分布式的异常事件进行集中式的串型查看分析,使用ACK Net Exporter配合Grafana Loki的服务步骤如下:

 

搭建Grafana Loki服务

说明服务需要位于ACK Net Exporter的Pod可以访问的网络中,ACK Net Exporter会主动向已经配置并就绪的Grafana Loki服务推送事件日志信息。

 

在安装ACK Net Exporter的配置页面中,将enableEventServer配置为true,将lokiServerAddress配置为Grafana Loki服务的地址。您可以配置Grafana Loki服务的IP地址,也可以配置Grafana Loki 服务的域名。

image.png

 

执行以下命令,访问Grafana Loki的服务地址来检验Grafana Loki服务是否已就绪。

curl http://[Grafana Loki实例的地址]:3100/ready

待Grafana Loki服务就绪后,添加Grafana Loki作为Grafana的数据源。打开Grafana页面,在左侧导航栏中选择Data source > Loki,输入Grafana Loki的接口地址,单击Save&test

image.png

 

在左侧导航栏单击Explore,在页面顶部设置数据源为Loki,查看输出到Grafana Loki的事件信息。

 

您可以在Label filters下拉框中选择过滤某个Node的事件,也可以在Line containers中输入事件相关的信息来查看具体的事件。

image.png

 

您可以单击页面顶部的Add to dashboard,将配置好的事件Panel添加到大盘中。

ACK Net Exporter提供的事件根据事件的类型携带了不同的信息,单击事件的详情后,可以查看到详细的事件发生时的信息。

image.png

 

Grafana Loki服务支持通过LogQL语法查询信息,详细介绍,请参见LogQL

 

使用ACK Net Exporter Cli工具收集监控事件

ACK Net Exporter Cli(以下简称inspector-cli)是ACK容器网络团队基于ACK Net Exporter既有的能力,提供场景化的问题排查辅助分析,获取即时内核异常事件日志的工具,针对云原生场景设计,帮助用户快速定位常见问题的深层次原因。

您可以通过在本地启动容器的方式运行inspector-cli。

# 启动临时容器用于使用incpector-cli,您可以更换镜像的版本来使用更新版本的特性。
docker run -it --name=inspector-cli --network=host registry.cn-hangzhou.aliyuncs.com/acs/inspector:v0.0.1-12-gff0558c-aliyun
which inspector
# /bin/inspector 是inspector-cli的执行路径,您可以直接在容器中使用inspector-cli.

 例如,您可以通过以下方式使用inspector-cli获取到某个节点的ACK Net Exporter捕获的事件。

# 通过‘-e’指定需要获取事件的远端ACK Net Exporter事件服务地址。
inspector watch -e 10.1.16.255
# 以下为结果示例。
 INFO  TCP_RCV_RST_ESTAB Namespace=kube-systemPod=kube-proxy-worker-tbv5s Node=iZbp1jesgumdx66l8ym8j8Z Netns=4026531993 10.1.16.255:43186 -> 100.100.27.15:3128
...

 您也可以选择登录到ACK Net Exporter的inspector容器中排查问题。

# 执行命令时,需要将-n参数指定为net-exporter安装的命名空间,同时执行需要登入的节点上的net-exporter实例。
kubectl exec -it -n kube-system -c inspector net-exporter-2rvfh -- sh
# 通过以下命令可以查看到当前节点上的网络数据面分布情况。
inspector list entity
# 通过以下命令可以监听本地的网络异常事件日志及其信息。
inspector watch -d -v
#{"time":"2023-02-03T09:01:03.402118044Z","level":"INFO","source":"/go/src/net-exporter/cmd/watch.go:63","msg":"TCPRESET_PROCESS","meta":"hostNetwork/hostNetwork node=izbp1dnsn1bwv9oyu2gaupz netns=ns0 ","event":"protocol=TCP saddr=10.1.17.113 sport=6443 daddr=10.1.17.113 dport=44226  state:TCP_OTHER "}
# 通过指定多个远端的ACK Net Exporter实例,也可以观察到不同节点上发生的时间。
inspector watch -s 10.1.17.113 -s 10.1.18.14 -d -v




           

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
550 0
|
6月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
8月前
|
存储 Kubernetes 异构计算
Qwen3 大模型在阿里云容器服务上的极简部署教程
通义千问 Qwen3 是 Qwen 系列最新推出的首个混合推理模型,其在代码、数学、通用能力等基准测试中,与 DeepSeek-R1、o1、o3-mini、Grok-3 和 Gemini-2.5-Pro 等顶级模型相比,表现出极具竞争力的结果。
|
9月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
858 33
|
9月前
|
Kubernetes 开发者 Docker
集群部署:使用Rancher部署Kubernetes集群。
以上就是使用 Rancher 部署 Kubernetes 集群的流程。使用 Rancher 和 Kubernetes,开发者可以受益于灵活性和可扩展性,允许他们在多种环境中运行多种应用,同时利用自动化工具使工作负载更加高效。
496 19
|
9月前
|
存储 测试技术 对象存储
使用容器服务ACK快速部署QwQ-32B模型并实现推理智能路由
阿里云最新发布的QwQ-32B模型,通过强化学习大幅度提升了模型推理能力。QwQ-32B模型拥有320亿参数,其性能可以与DeepSeek-R1 671B媲美。
|
9月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
335 12
|
10月前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
552 12
|
10月前
|
Cloud Native Serverless 数据中心
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
阿里云ACK One:注册集群支持ACS算力——云原生时代的计算新引擎
312 10
|
10月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
564 5

热门文章

最新文章

推荐镜像

更多