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

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 《云原生网络数据面可观测性最佳实践》——四、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 容器 Perl
Kubernetes网络插件体系及flannel基础
文章主要介绍了Kubernetes网络插件体系,特别是flannel网络模型的工作原理、配置和测试方法。
20 3
Kubernetes网络插件体系及flannel基础
|
5天前
|
弹性计算 Kubernetes Cloud Native
云原生时代的航标:Kubernetes的灯塔作用
在数字化浪潮中,云原生技术如同海上的灯塔,指引着企业航行。本文将深入探讨Kubernetes如何成为云原生技术的领航者,揭示其在容器编排、自动化部署等方面的优势,并分享实践案例,为读者提供实用的操作建议和未来趋势的展望。
|
7天前
|
Kubernetes Cloud Native 开发者
探索云原生技术:从Docker到Kubernetes的旅程
【8月更文挑战第31天】云原生技术正在改变软件开发、部署和运维的方式。本文将带你了解云原生的核心概念,并通过实际代码示例,展示如何使用Docker容器化应用,并进一步通过Kubernetes进行集群管理。我们将一起构建一个简单的微服务架构,体验云原生带来的高效与便捷。
|
7天前
|
运维 Kubernetes 监控
自动化运维:使用Python脚本实现系统监控云原生技术实践:Kubernetes在现代应用部署中的角色
【8月更文挑战第31天】在现代IT运维管理中,自动化已成为提高效率和准确性的关键。本文将通过一个Python脚本示例,展示如何实现对服务器的自动监控,包括CPU使用率、内存占用以及磁盘空间的实时监测。这不仅帮助运维人员快速定位问题,也减轻了日常监控工作的负担。文章以通俗易懂的语言,逐步引导读者理解并实践自动化监控的设置过程。 【8月更文挑战第31天】本文旨在探索云原生技术的核心—Kubernetes,如何革新现代应用的开发与部署。通过浅显易懂的语言和实例,我们将一窥Kubernetes的强大功能及其对DevOps文化的影响。你将学会如何利用Kubernetes进行容器编排,以及它如何帮助你的
|
7天前
|
Kubernetes 监控 Cloud Native
云原生入门:Kubernetes 集群部署与管理
【8月更文挑战第31天】 在数字化浪潮中,云原生技术如同翱翔的雄鹰,引领着企业飞向灵活高效的未来。本文将带你一探究竟,从Kubernetes的基础概念到实际操作,深入浅出地介绍如何在云端构建和管理你的容器化应用。我们将一步步搭建起一个小型的Kubernetes集群,并通过代码示例和图解,让你轻松掌握云原生世界的钥匙。让我们一起开启这趟技术之旅,探索云原生的秘密花园,找到那把打开创新之门的金钥匙。
|
7天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第31天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
7天前
|
Kubernetes Cloud Native 云计算
云原生之旅:Kubernetes 集群管理与应用部署
【8月更文挑战第31天】在数字化时代的浪潮中,云原生技术如Kubernetes已经成为推动企业IT架构转型的核心力量。本文将带领读者深入了解如何通过实践操作掌握Kubernetes集群的管理和应用部署,解锁云计算的无限可能。我们将从搭建一个简单的Kubernetes集群开始,逐步探索其丰富的功能和灵活的配置选项,最后通过实际案例展示如何在集群中部署和管理一个多容器的应用。无论你是云计算新手还是希望深化对云原生理解的开发者,这篇文章都将为你提供实用的知识和技能。
|
7天前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【8月更文挑战第31天】 在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本文将引导读者理解云原生的基本概念,通过Docker和Kubernetes的实际应用示例,展示如何在云平台上部署和管理容器化应用。我们将一起探索服务编排、持续集成和微服务架构的实践之路,旨在为初学者揭开云原生技术的神秘面纱,并激发对这一前沿领域的深入探索。
|
7天前
|
运维 Kubernetes Cloud Native
拥抱云原生:Kubernetes 在现代应用部署中的实践
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为推动企业创新和效率提升的关键力量。本文将深入探讨如何利用 Kubernetes,这一强大的容器编排工具,来部署和管理现代应用。我们将从基础架构搭建开始,一步步引导您配置集群,并通过实际代码示例演示如何部署一个简单的应用。无论您是云原生新手还是希望深化理解,这篇文章都将为您提供实操经验和理论知识的融合之旅。
|
7天前
|
开发者 容器 Java
Azure云之旅:JSF应用的神秘部署指南,揭开云原生的新篇章!
【8月更文挑战第31天】本文探讨了如何在Azure上部署JavaServer Faces (JSF) 应用,充分发挥其界面构建能力和云平台优势,实现高效安全的Web应用。Azure提供的多种服务如App Service、Kubernetes Service (AKS) 和DevOps简化了部署流程,并支持应用全生命周期管理。文章详细介绍了使用Azure Spring Cloud和App Service部署JSF应用的具体步骤,帮助开发者更好地利用Azure的强大功能。无论是在微服务架构下还是传统环境中,Azure都能为JSF应用提供全面支持,助力开发者拓展技术视野与实践机会。

热门文章

最新文章

下一篇
DDNS