对EKS(AWS云k8s)启用AMP(AWS云Prometheus)监控+AMG(AWS云 grafana)

news2025/1/16 16:20:05

问题

需要在针对已有的EKS k8s集群启用Prometheus指标监控。而且,这里使用AMP即AWS云的Prometheus托管服务。好像这个服务,只有AWS国际云才有,AWS中国云没得这个托管服务。下面,我们就来尝试在已有的EKS集群上面启用AMP监控。

步骤

下面使用页面方式创建的抓取程序有问题,创建抓取程序的安全组不能指定,如果想指定安全组,需要使用CLI工具进行抓取程序创建。
获取默认抓取程序配置命令,如下:

aws amp get-default-scraper-configuration --region us-east-1

这里会得到一个base64编码的抓取程序配置。
然后,使用下面的手动命令创建抓取程序,如下:

aws amp create-scraper --source eksConfiguration="{clusterArn='arn:aws:eks:us-east-1:xxxxxx:cluster/xxxxx', securityGroupIds=['sg-xxxxxx'],subnetIds=['subnet-xxxxxxx', 'subnet-xxxxxx', 'subnet-xxxxxxxx']}" --scrape-configuration configurationBlob="asdfaslkdgjoasdlnOQo=" --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-east-1:xxxxxx:workspace/ws-xxxx-xxxx-xxxx'}"

这里使用aws amp create-scraper命令行进行抓取程序创建,主要是为了设置安全组,这里的安全组,是EKS集群的安全组,类似如下:

eks-cluster-sg-xxxx-009384

是这样描述的:

EKS created security group applied to ENI that is attached to EKS Control Plane master nodes, as well as any managed workloads.

这个安全组基本上面没有端口和ip限制。
下面使用页面创建方式作废。

打开如下页面:
添加prometheus入口
点击“添加抓取程序”,接下来,使用创建AMP工作空间,如下图:
创建抓取程序页面
这里我们直接用默认的设置就好。等待一段时间,这里的等待时间可能有点久。

ClusterRole

创建aps-collector-user用户

创建一个集群角色和用户,内容如下:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: aps-collector-role
rules:
  - apiGroups: [""]
    resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"]
    verbs: ["describe", "get", "list", "watch"]
  - apiGroups: ["extensions", "networking.k8s.io"]
    resources: ["ingresses/status", "ingresses"]
    verbs: ["describe", "get", "list", "watch"]
  - nonResourceURLs: ["/metrics"]
    verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: aps-collector-user-role-binding
subjects:
- kind: User
  name: aps-collector-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: aps-collector-role
  apiGroup: rbac.authorization.k8s.io

保存为clusterrole-binding.yml文件。应用上述文件:

kubectl apply -f clusterrole-binding.yml

创建的集群角色aps-collector-role和用户aps-collector-user成功后,我们找到之前一步创建抓取程序时得到的roleArn,具体页面如下:
抓取程序角色
记住这个抓取程序的IAM角色,然后,将这个IAM角色映射到之前在k8s中创建的aps-collector-user用户。映射命令如下:

eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

注意:复制到的抓取程序roleArn,需要去掉aws-service-role/scraper.aps.amazonaws.com/这一段,才能用eksctl命令创建映射。
具体了例子如下:

eksctl create iamidentitymapping --cluster uat --region us-east-1 --arn arn:aws:iam::xxxxxxxxxxx:role/AWSServiceRoleForAmazonPrometheusScraper_xxxxxx --username aps-collector-user
2024-04-16 16:50:15 []  checking arn arn:aws:iam::xxxxxxxxxxx:role/AWSServiceRoleForAmazonPrometheusScraper_xxxxxx against entries in the auth ConfigMap
2024-04-16 16:50:15 []  adding identity "arn:aws:iam::xxxxxxxxxxx:role/AWSServiceRoleForAmazonPrometheusScraper_xxxxxx" to auth ConfigMap

查看ConfigMap映射,如下命令:

eksctl get iamidentitymapping --cluster uat --region=us-east-1

IAM Identity Center

因为我们使用IAM Identity Center中的用户,登录Grafana Web页面。所以,我们先要用管理账号登录aws,在IAM Identity Center中创建用户和用户组。如果用成员账号登录IAM Identity Center中创建用户和用户组,在后面的AMG(AWS云 grafana)中会看不到的,所以,我们需要使用管理账号在IAM Identity Center中创建用户和用户组。在下面界面,使用管理账号创建用户和用户组,下面是具体页面入口:
IAM Identity Center入口

AMG(AWS云 grafana)

按上述方式创建完用户和用户组之后,我们开始创建grafana工作区。开始创建grafana工作区,如下图:
grafana工作区
设置grafana工作区,如下图:
AWG主要设置
设置数据源,设置访问权限,如下图:

设置使用idp方式访问
最后审计一片,如果没问题,就直接创建工作区,如下图:
创建工作区

等待一段时间,可能这里等待时间有点长。

配置IAM Identity Center用户组访问权限

最后,在grafana工作区配置IAM Identity Center用户组访问权限,具体如下图:
点击分配新用户或组
添加admin用户组
设置admin用户组为管理员权限,如下图:
设置管理员权限
效果如下:
管理员组

打开grafana web页面

grafana页面地址
使用IAM Identity Center中admin用户组的成员登录,这个grafana页面。效果如下:
主页效果

设置grafana的数据源

在grafana控制台直接点击“在Grafana中配置”,如下图:
在Grafana中配置
使用IAM Identity Center中admin用户组的成员登录,选择AMP所在云区,就可以看到之前,我们创建的AMP工作区,如下图:
添加数据源
添加完数据源之后,就是一些常规的prometheus操作了。
到这里就差不多完成了AMP+AMG对EKS的监控了。

然后,进入仪表盘倒入页面,如下图:
导入仪表盘
导入315仪表盘。如下图:
导入315仪表盘
最终效果,如下图:
效果图

总结

AMP+AMG监控EKS这一套,在AWS云上面,在2024年4月这个时间点,感觉还是不很成熟,不过,比之前预览版本的prometheus好多了,之前预览版本的AMP,还得在EKS集群安装一个prometheus服务器。感觉有点画蛇添足。现在这个版本AMP,只需要在集群安装一个抓取程序就可以了。不过,页面新建的抓取程序在现在这个时间点,还不能设置安全组,有点小问题。得使用CLI建抓取程序才行。整体来说AWS云托管Prometheus,托管Grafana,来监控k8s集群,总比没有要好。

参考

  • Prometheus 指标
  • 配置 Amazon EKS 集群
  • Configure AWS SSO and Multi-Account Data Source Access with Amazon Managed Service for Grafana
  • Setting Up AWS IAM Identity Center (SSO) and AWS Organizations
  • 使用AWS数据源配置将适用于 Prometheus 的亚马逊托管服务添加为数据源
  • Simplified Observability for Amazon EKS with the new Amazon Managed Service for Prometheus agentless collector
  • Prometheus with Grafana
  • Kubernetes cluster monitoring (via Prometheus)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1608705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis的使用技巧8——联合查询union和union all的区别和用法

在实际项目开发中,会经常联合查询结构相似的多张数据表,使用union关键字就只需要一次sql操作,而无需执行多次查询并通过代码逻辑合并处理,减少了大量繁琐的操作,最重要的是还能通过可选的all关键字筛选重复的数据。 1…

服务器基本故障和排查方法

前言 服务器运维工作中遇到的问题形形色色,无论何种故障,都需要结合具体情况,预防为主的思想,熟悉各种工具和技术手段,养成良好的日志分析习惯,同时建立完善的应急预案和备份恢复策略,才能有效…

sprinboot+vue集成neo4j图数据库

一 、java后台 1.1 package com.admin.domain;/*** 功能描述:** author wangwei* date 2024-01-15 22:13*/ public class ConnectWeb {private String connectWebId;private String connectWebName;private String connectWebInfo;private String personWebIdAlph…

在 Node.js 中配置代理 IP 采集文章

不说废话,直接上代码: const http require(http); const https require(https);// 之后可以使用 http 或 https 模块发起请求,它们将自动使用配置的代理 // 代理ip:https://www.kuaidaili.com/?refrg3jlsko0ymg const proxy …

用Python在PDF文档中插入单图像水印和平铺图像水印

PDF文档因其跨平台兼容性和内容保真度成为信息交换的标准载体,为应对版权侵犯、内容篡改以及未经授权的传播等风险,向PDF中插入图片水印成为一种强化文档安全性、彰显所有权及实施访问控制的有效手段。图片水印不仅能以直观的方式标示文档来源、强化版权…

HWOD:合并整型数组

一、知识点 合并整型数组目前有两种方法 合并数组并不一定需要真正的合并 1、下意识的方法 对两个整型数组分别排序,然后合并 2、不排序的方法 遍历两个数组,找出最小值,输出最小值。将两个数组中与最小值相等的位置置为超大值 重复以…

uniapp Android 插件开发教程

一、下载uniapp提供的SDK Android 离线SDK - 正式版 | uni小程序SDK 二、在uniapp创建一个项目 查看包名:发行--> 原生app 云打包 三、进入dcloud官网 开发者中心 进入 应用管理 --> 我的应用 --> 点击应用名称-->各平台信息-->新增 这里需要这…

k8s之helm入门

k8s之helm入门 helm是k8s的另外一个项目,相当于linux的yum,在yum仓库中,yum不光要解决包之间的依赖关系,还要提供具体的程序包,helm仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如hub.docker.com、私有仓库. helm提供了一个应用所需要的所有清单文件.比如…

【机器学习300问】77、什么是梯度消失和梯度爆炸?

一、梯度消失(Vanishing gradients) (1)定义 在训练深度神经网络时,随着误差梯度从输出层向输入层逐层回传,梯度可能因为连乘效应逐渐减小。当使用激活函数的导数的最大值小于1时,深度网络中越…

【软考】软件设计师中级

视频课 计算机组成原理 进制转换 定点数vs浮点数 校验码 计算机体系结构 指令系统 I/O 存储系统 直接映射:简单粗暴的死板派 全相联映射:跳脱的自由发挥派 组相联映射:折中派,组间直接映射&组内全相联映射 命中率&#xf…

百度网盘超级会员2024最新白嫖30天教程

百度网盘超级会员服务是百度网盘提供的一项高级服务,它为用户提供了许多特权和功能,旨在为用户带来更加便捷、高效的文件存储和管理体验。以下是关于百度网盘超级会员服务的详细介绍: 百度网盘VIP领取入口: 关注公众号回复&#x…

为什么选择TikTok直播专线而不是节点?

TikTok直播已成为许多商家的重要营销手段,而网络质量作为营销直播效果的关键因素,使得商家们开始应用TikTok直播专线。虽然与节点相比,专线的价格稍高,但更多商家都倾向于选择TikTok直播专线。那么,为什么TikTok直播更…

Java零基础入门到精通_Day 7

1.3 什么是类? 类是对现实生活中一类具有共同属性和行为的事物的抽象。 类的特点: 类是对象的数据类型 类是具有相同属性和行为的一组对象的集合 1.4 什么是对象的属性 属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。 1.5 什么是对象的行为 行为:对…

vue快速入门(三十三)scoped解决组件样式冲突

注释很详细&#xff0c;直接上代码 上一篇 新增内容 scoped解决样式冲突的用法 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div id"myHeader"><h1>又可以愉快的学习啦</h1></div> </template><scri…

万物皆可计算|下一个风口:近内存计算-1

传统的冯诺依曼架构虽然广泛应用于各类计算系统&#xff0c;但其分离的数据存储与处理单元导致了数据传输瓶颈&#xff0c;特别是在处理内存密集型任务时&#xff0c;CPU或GPU需要频繁地从内存中读取数据进行运算&#xff0c;然后再将结果写回内存&#xff0c;这一过程涉及大量…

【idea插件】IDEA 书签Bookmarks 高效使用

当我们在查看源码时&#xff0c;由于源码调用链路很长可能涉及到非常多的类文件&#xff0c;查找起来并不容易。有时候可能还需要查找某段代码的入口函数&#xff0c;当类文件的代码量很大时&#xff0c;很难快速定位到代码段。 设置书签 要想将一行代码添加到 IDEA 的 Bookm…

创新电商模式:免单优选引领销售新潮流

免单优选&#xff0c;这一新颖的电商销售概念&#xff0c;通过独特的价格策略、奖励制度以及社交网络的融合应用&#xff0c;成功点燃了消费者的购买激情&#xff0c;引领销售迅猛增长。 一、合规经营&#xff0c;摒弃复杂奖励 免单优选坚守合法经营的原则&#xff0c;摒弃了复…

【点云语义分割】自适应一致性正则化的弱监督点云分割

Reliability-Adaptive Consistency Regularization for Weakly-Supervised Point Cloud Segmentation 摘要&#xff1a; 本文探讨了将弱监督学习中常用的一致性正则化应用于具有多种特定数据增强功能的点云学习中&#xff0c;而对这一问题的研究还不够深入。我们发现&#xff…

大数据操作第二天

文章目录 大数据命令的方式现在有三个命令的方式 启动一个计算圆周率的jar包方式什么是文件系统数据元数据传统的存储方式分布式存储方式元数据记录文件位置信息副本机制的方式 hafs 存储方式shell 操作大数据的方式创建目录查看文件目录下的方式上传文件的方式 大数据命令的方…

【若依】代码生成详细教程(单表、主从表、树形表增删改查)

若依代码生成开发接口 修改代码生成配置一、单表实现增删改查1. 新建数据库表结构2. 新建模块&#xff0c;解决项目依赖3. 启动项目&#xff0c;新建菜单4. 导入数据表&#xff0c;自动生成代码5. 将生成代码粘贴到对应的模块&#xff0c;执行生成的sql&#xff08;用于生成菜单…