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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 《云原生网络数据面可观测性最佳实践》——四、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




           

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
23 2
|
7天前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
31 5
|
5天前
|
Kubernetes 监控 负载均衡
深入云原生:Kubernetes 集群部署与管理实践
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其弹性、可扩展性成为企业IT架构的首选。本文将引导你了解如何部署和管理一个Kubernetes集群,包括环境准备、安装步骤和日常维护技巧。我们将通过实际代码示例,探索云原生世界的秘密,并分享如何高效运用这一技术以适应快速变化的业务需求。
24 1
|
9天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
11天前
|
存储 运维 Kubernetes
云原生之旅:Kubernetes的弹性与可扩展性探索
【10月更文挑战第32天】在云计算的浪潮中,云原生技术以其独特的魅力成为开发者的新宠。本文将深入探讨Kubernetes如何通过其弹性和可扩展性,助力应用在复杂环境中稳健运行。我们将从基础架构出发,逐步揭示Kubernetes集群管理、服务发现、存储机制及自动扩缩容等核心功能,旨在为读者呈现一个全景式的云原生平台视图。
23 1
|
15天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
16天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
48 3
|
16天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
20天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
31 3
|
19天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!

热门文章

最新文章