时隔16年JeffBarr重返10.23-25 QCon上海站,带你看透AI如何重塑软件开发! 了解详情
写点什么

与 Prometheus 搭配使用 Amazon EKS 控制平面指标

  • 2019-10-04
  • 本文字数:2134 字

    阅读完需:约 7 分钟

与 Prometheus 搭配使用 Amazon EKS 控制平面指标

您可以利用 Kubernetes 核心组件中提供的一系列丰富指标来观察控制平面中正在发生的情况。您可以了解的信息包括:API 服务器的每个资源中 watchers 的数量、审核跟踪事件的数量、向 API 服务器所发送请求的延迟,以及更多信息。这些指标来自于 Kubernetes API 服务器、Kubelet、Cloud Controller Manager 和 Scheduler。这些组件会在 /metrics 处显示内容类型为 text/plain 的“指标”终端节点(通过 HTTP 响应)。这篇博文将详细向您介绍如何基于 Amazon Elastic Container Service for Kubernetes (EKS) 集群获取 API 服务器指标。

先决条件

首先,您必须设置一个 Amazon EKS 集群。在此博文中,我们将在集群配置文件机制中使用 eksctl。首先,必须下载以下工具:


  • eksctl

  • kubectl

  • helm

  • 安装所有必需的工具后,即可开始启动 EKS 集群。在本例中,我们会将集群部署在 us-east-2(即 AWS 俄亥俄区域)中,您可将 AWS_REGION 替换为支持 Amazon EKS 的任何区域。

部署集群

export AWS_REGION=us-east-2
复制代码


在导出区域后,按照如下所示创建 ClusterConfig:


cat >cluster.yaml <<EOFapiVersion: eksctl.io/v1alpha4kind: ClusterConfigmetadata:  name: control-plane-metrics  region: us-east-2
nodeGroups: - name: ng-1 desiredCapacity: 2EOF
复制代码


在创建该文件后,使用 eksctl create cluster 命令创建集群:


eksctl create cluster -f cluster.yaml
复制代码


完成此操作大约需要 10 – 15 分钟时间,之后,便可获得可供使用的 Amazon EKS 集群。

原始指标

在直观呈现指标、监视指标以及接收与指标相关的提醒之前,您可以先看一看这些指标终端节点的输出是怎样的。


kubectl get --raw /metrics
复制代码



这些指标的输出采用 Prometheus 格式。Prometheus 是云原生计算基金会 (CNCF) 的一个成熟项目。它可以扫描与抓取您的集群内的指标终端节点,甚至还能扫描其自身的终端节点。Prometheus 指标的语法为:


metric_name {[ "tag" = "value" ]*} value
复制代码


您可以设置 metric_name、为指标定义 tags(可用于查询),以及设置 value。以下是使用 apiserver_request_count 的一个指标示例:


apiserver_request_count{client="kube-apiserver/v1.11.8 (linux/amd64) kubernetes/7c34c0d",code="200",contentType="application/vnd.kubernetes.protobuf",resource="pods",scope="cluster",subresource="",verb="LIST"} 7
复制代码


这行代码的意思是,我们有 7 个发送给 pods 资源的 LIST 请求。


接下来,我们要使用 helm 设置 Prometheus。

配置 Helm

创建集群后,您可以在本地设置 helm,以免在集群中运行 tiller。按照博文 Using Helm with Amazon EKS 中的步骤操作。


在完成这些步骤之后,您便可以部署 Prometheus。

部署 Prometheus

首先,创建一个 Kubernetes 命名空间,并使用 helm 来部署 stable/prometheus 软件包:


kubectl create namespace prometheushelm install stable/prometheus \              --name prometheus \             --namespace prometheus \             --set alertmanager.persistentVolume.storageClass="gp2",server.persistentVolume.storageClass="gp2",server.service.type=LoadBalancer
复制代码


安装完毕后,您可以把服务列出来,以获取负载均衡器的地址:


kubectl get svc -o wide —namespace prometheus
复制代码



您可以在浏览器中输入此负载均衡器的地址来导航到此负载均衡器,系统会加载 Prometheus UI。您可以在这个地方前往状态 → 目标 – 此页面会向您显示控制平面节点:



如果能够看到自己的节点,您就可以继续检查某些指标。导航到图表,在下拉列表 – 插入光标处的指标 – 中选择任意以 apiserver_ 开头的指标并单击执行。系统随即会从 API 服务器加载最新同步的数据。



您现在可以在控制台视图中查看指标,并且可以切换到图表并直观呈现此数据:


清除

如果您专为运行此测试部署了一个集群,并且希望在测试完后清除此集群的话,您可以先删除 prometheus 命名空间,然后删除集群:


kubectl delete namespace prometheuseksctl delete cluster -f cluster.yaml
复制代码


您可以利用 Prometheus 查看 Kubernetes API 服务器中正在发生的情况,并且能够以图表形式呈现这些指标在一段时间内的变化。您还可以使用 Prometheus 来设置提醒规则(这会填充提醒选项卡)。另外,您可以利用此 helm 图表来部署 Alertmanager,从而根据自己定义的提醒规则来配置提醒。尝试一下修改 prometheus-server configmap 来自己设置一些规则:


kubectl get configmap -n prometheus prometheus-server -o yaml
复制代码


如果您想了解如何像在 Kubernetes API 中这样,在自己的应用程序中使用指标,请查看 Nicholas Turner 和 Nic Cope 的演讲北美 2018 KubeCon CloudNativeCon – 监控全世界:适用于容器化应用程序和集群的有意义指标


作者介绍:


Chris Hein


Chris Hein 是一位资深的开发者,倡导 Amazon Web Services 的 Kubernetes/EKS。加入 Amazon 之前,Chris 曾就职于众多规模不等的公司,如 GoPro、Sproutling 和 Mattel。有关 Chris 的更多信息,请访问 https://aws.amazon.com/blogs/opensource/author/heichris/,并通过 @christopherhein 关注他


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amazon-eks-control-plane-metrics-prometheus/


2019-10-04 20:341356
用户头像

发布了 1932 篇内容, 共 159.9 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

商品库存管理和秒杀系统设计(19/100)

hackstoic

技术方案 互联网应用技术方案

上手测试GaussDB(for Redis) 和开源 Redis,只为推荐质优价廉的Redis

华为云开发者联盟

数据库 redis 开源 GaussDB(for Redis) 开源Redis

同人于野,平常无边 | 对话 StarRocks 的三位女性工程师

StarRocks

数据工程师 38妇女节

安全实战:webshell的几种免杀方式

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

gRPC 简介实践

yuexin_tech

gRPC

超级群、群组、聊天室,IM 产品的场景化「特异功能」

融云 RongCloud

即时通讯 IM

猿桌派第 2 季回归,报名赢现场录制机会!

融云 RongCloud

程序员

AI提取图片里包含的文字信息-解决文字无法复制的痛点

DS小龙哥

3月月更

Java最最基础入门知识总结回顾

逆锋起笔

Java java面试 javase 3月月更

天翼云SD-WAN斩获首批“SD-WAN 2.0 SASE”权威认证

天翼云开发者社区

SD-WAN

Python从ECS内网拉取OSS数据

梦想橡皮擦

3月月更

基于区块链技术的超级账本(Hyperledger) - 从理论到实战

汪子熙

区块链 智能合约 云平台 Go 语言 2月月更

融云通信周边能力上新啦!一键 Get 美颜、CDN 服务

融云 RongCloud

CDN 人脸识别

模块九

撿破爛ぃ

架构训练营

我要跳槽了!

IC男奋斗史

职业规划 芯片行业思考

论CTO的作用

hongfei

项目管理 个人提升 工程管理

华云数据加入龙蜥社区,推动开源产业快速有序成长

OpenAnolis小助手

云计算 Linux 开源 操作系统 国产

诚邀参与 | OpenHarmony校园极客秀征文活动

OpenHarmony开发者

极客 OpenHarmony 征文活动

浅析人脸识别算法及其应用

得物技术

机器学习 算法 人脸识别 视觉 人脸

乘数智之风,为世界造舟筏:女性在当下如何创造?

脑极体

Discuz! ML远程代码执行(CVE-2019-13956)

喀拉峻

网络安全

好书推荐 ——《噪声:人类判断的缺陷》

天择

好书推荐 认知偏差 噪声 3月月更

工作以后流的泪,就是当初校招时脑子进的水

IC男奋斗史

职业规划 芯片行业思考

Flutter 构建常见的App页面框架

岛上码农

flutter ios 安卓 移动端开发 3月月更

Python 学习路线(2022)

AlwaysBeta

Python django 编程语言 学习路线 编程入门

Committer 蔡正昕专访:勇敢迈出第一步,做开源没有那么难

Apache Pulsar

架构 云原生 中间件 Apache Pulsar 开源社区

模块 9 作业(毕业设计)

miliving

Go语言实战之切片的内部实现和基础功能

山河已无恙

Go 语言 3月月更

VuePress 博客优化之开启 Algolia 全文搜索

冴羽

Vue 搜索 vuepress 博客搭建 Algolia

设计模式:今天你设计了吗?

SFLYQ

设计模式 服务器端开发 后端技术

使用AppleScript批量删除Mac中的信息

CRMEB

与 Prometheus 搭配使用 Amazon EKS 控制平面指标_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章