OpenShift 4 - 多云管理(2) - 配置多集群观察功能
《OpenShift / RHEL / DevSecOps 汇总目录》
本文在 OpenShift 4.17 + RHACM 2.12 环境中进行验证。
文章目录
- 多集群观察技术架构
- 安装多集群观察功能
- 监控多集群的运行状态
- 监控多集群的应用运行
- 在被管集群监控应用运行
- 在管理集群监控被管集群的应用运行
- 参考
多集群观察技术架构
RHACM 可以集中监控被管 OpenShift 集群的运行情况,这是主要通过运行在 RHACM Hub 上的 Multicluster Observability Operator 实现的。如下图,RHACM Hub 通过 Observatorium API Gateway 从被管集群的 Metrics-Collector 获取观察数据后再通过 Thanos 保存到 S3 对象存储中,并通过 Grafana 进行数据展示。

安装多集群观察功能
以下示例将使用 minio 来存储观察数据:
- 在运行 ACM 的集群执行命令安装 minio 环境。注意:在 multicluster-observability-operator/examples/minio/minio-pvc.yaml 中使用了名为 gp2 的 StorageClass 创建文件类型 PVC,可以更换当前集群中可用的 StorageClass。
$ oc new-project open-cluster-management-observability
$ git clone https://github.com/liuxiaoyu-git/multicluster-observability-operator.git
$ oc apply -k multicluster-observability-operator/examples/minio/ -n open-cluster-management-observability
- 执行命令可以查看为 thanos 提供的 S3 存储访问方式。
$ oc extract secret/thanos-object-storage --to=- -n open-cluster-management-observability
# thanos.yaml
type: s3
config:bucket: "thanos"endpoint: "minio:9000"insecure: trueaccess_key: "minio"secret_key: "minio123"
- 执行命令在 RHACM Hub 中安装“观察”功能。注意:在 multiclusterobservability.yaml 中使用了名为 gp2 的 StorageClass 创建文件类型 PVC,可以更换当前集群中可用的 StorageClass。
$ oc apply -f https://raw.githubusercontent.com/liuxiaoyu-git/rhacm-workshop/master/03.Observability/exercise/multiclusterobservability.yaml -n open-cluster-management-observability
- 安装后可以查看在 open-cluster-management-observability 中运行的的 Pod 和部署的资源。
$ oc get pod -n open-cluster-management-observability
NAME READY STATUS RESTARTS AGE
endpoint-observability-operator-6678757f7b-ptv9s 1/1 Running 0 8m26s
metrics-collector-deployment-5d77dc68cc-dw55m 1/1 Running 0 8m22s
minio-7cfdffb54b-6knmt 1/1 Running 0 33m
observability-alertmanager-0 4/4 Running 0 8m27s
observability-alertmanager-1 4/4 Running 0 7m55s
observability-alertmanager-2 4/4 Running 0 7m23s
observability-grafana-68b8d97758-kvvl5 3/3 Running 0 8m28s
observability-grafana-68b8d97758-l2m5m 3/3 Running 0 8m28s
observability-observatorium-api-7d58fc44d9-lqww5 1/1 Running 0 7m50s
observability-observatorium-api-7d58fc44d9-qqshk 1/1 Running 0 7m53s
observability-observatorium-operator-6fc6567b69-7lzd2 1/1 Running 0 8m29s
observability-rbac-query-proxy-64464bcf75-g6tpv 2/2 Running 0 8m27s
observability-rbac-query-proxy-64464bcf75-m2gcb 2/2 Running 0 8m27s
observability-thanos-compact-0 1/1 Running 0 8m18s
observability-thanos-query-d88f57fb5-5x8q6 1/1 Running 0 8m18s
observability-thanos-query-d88f57fb5-b947p 1/1 Running 0 8m18s
observability-thanos-query-frontend-8c97b5775-4st2v 1/1 Running 0 8m18s
observability-thanos-query-frontend-8c97b5775-hgx9b 1/1 Running 0 8m18s
observability-thanos-query-frontend-memcached-0 2/2 Running 0 8m18s
observability-thanos-query-frontend-memcached-1 2/2 Running 0 8m15s
observability-thanos-query-frontend-memcached-2 2/2 Running 0 8m12s
observability-thanos-receive-controller-7d48bcbc66-ndgjx 1/1 Running 0 8m18s
observability-thanos-receive-default-0 1/1 Running 0 8m18s
observability-thanos-receive-default-1 1/1 Running 0 7m59s
observability-thanos-receive-default-2 1/1 Running 0 7m51s
observability-thanos-rule-0 2/2 Running 0 8m18s
observability-thanos-rule-1 2/2 Running 0 8m
observability-thanos-rule-2 2/2 Running 0 7m39s
observability-thanos-store-memcached-0 2/2 Running 0 8m18s
observability-thanos-store-memcached-1 2/2 Running 0 8m15s
observability-thanos-store-memcached-2 2/2 Running 0 8m12s
observability-thanos-store-shard-0-0 1/1 Running 0 8m18s
observability-thanos-store-shard-1-0 1/1 Running 0 8m18s
observability-thanos-store-shard-2-0 1/1 Running 0 8m18s
uwl-metrics-collector-deployment-74f6dbcbdb-4zhxn 1/1 Running 0 8m22s

- 成功部署“观察”后可以在 ACM 控制台的 Clusters 页面中右上方看到 Grafana 链接。

监控多集群的运行状态
- 进入 Grafana 后可以看到被管集群的运行状态。

- 进入上图的一个集群,可以查看该集群的运行情况。

- 查看被管集群,确认在 open-cluster-management-addon-observability 项目中有以下 Pod 运行。
$ oc get pod -n open-cluster-management-addon-observability
NAME READY STATUS RESTARTS AGE
endpoint-observability-operator-795464bd6c-8qrr8 1/1 Running 0 75m
metrics-collector-deployment-dfc647-lsgqt 1/1 Running 0 75m
- 进入 Grafana 的 Dashborads,可以看到下图显示的预制仪表盘。可进入这些仪表盘查看。

- 在管理集群中执行以下命令,将 observability-thanos-query-frontend 服务暴露为 Route,然后用浏览器打开 Route 地址。
$ oc expose svc observability-thanos-query-frontend --name=query-frontend -n open-cluster-management-observability
$ oc get route query-frontend -n open-cluster-management-observability -ojsonpath={.spec.host}
- 在 metrics 中可以看到所有可用的查询指标。
- 在 Thanos Query 页面中查询 cluster:capacity_cpu_cores:sum 可以看到每个被管集群的 CPU 总量。

监控多集群的应用运行
在被管集群监控应用运行
参照《OpenShift 4 - 用 Prometheus 和 Grafana 监视用户应用定制的观测指标(视频)》。
- 在被群集群中编辑 cluster-monitoring-config 对象,将 enableUserWorkload 设为 true,主要就可对对用户负载进行监控。
$ oc edit ConfigMap cluster-monitoring-config -n openshift-monitoringapiVersion: v1
kind: ConfigMap
metadata:name: cluster-monitoring-confignamespace: openshift-monitoring
data:config.yaml: |enableUserWorkload: true
- 在被管集群部署测试用的 nginx。
$ git clone https://github.com/liuxiaoyu-git/openshift-demos.git
$ cd openshift-demos/workload-monitoring-for-user-defined-projects
$ oc create -k deploy
- 进入控制台的 “观察 -> 指标” 菜单,在指标页面中将
nginx_http_requests_total填入 “表达式” 中,确认可以查出 nginx 的监控指标。

在管理集群监控被管集群的应用运行
- 在管理集群中创建名为 observability-metrics-custom-allowlist 的 ConfigMap,其中定义了可以从被管集群中访问的 Metrics。
$ oc apply -n open-cluster-management-observability -f - << EOF
kind: ConfigMap
apiVersion: v1
metadata:name: observability-metrics-custom-allowlist
data:metrics_list.yaml: |names:- nginx_http_requests_total- nginx_up- nginx_connections_active- nginx_exporter_build_info- nginx_connections_handled- nginx_connections_reading- nginx_connections_waiting- nginx_connections_writing- nginx_connections_accepted
EOF
- 在 ACM 管理集群的 Grafana 控制台中进入 Metrics 菜单,然后点击 New metrics exploration 按钮。
- 然后在 Search metrics 中查找和 nginx 相关的项目。

- 在上图中的 nginx_http_requests_total 区域点击右侧的 Select。
- 可以看到图中的数据已经变为 per-second rate 显示。

- 可在 Metrics 页面中为显示的监控图增加适当的 Lable。

- 在 Grafana 控制台中进入 Explore 菜单,在 A 区域的 Metric 中填入 nginx_http_requests_total,然后点击页面右侧的 Run query 按钮。此时会显示 nginx_http_requests_total 的监控图。

参考
https://github.com/michaelkotelnikov/rhacm-workshop
https://github.com/wael2000/rh-rhacm-workshop
https://github.com/stolostron/multicluster-observability-operato
https://medium.com/@dlakshma/multi-cluster-observability-with-red-hat-acm-39f6b3cdbbe4
https://docs.google.com/document/d/1mdY6J6Jimsw7A2n7sv9vFjzM2IHD8-Ku9ZNy2iKfgb8/edit?tab=t.0
https://www.redhat.com/en/blog/observability-for-istio-multicluster-service-mesh-in-red-hat-advanced-cluster-management-for-kubernetes
https://www.redhat.com/en/blog/leveraging-netobserv-metrics-red-hat-advanced-cluster-management-kubernetes
https://www.redhat.com/en/blog/observability-across-openshift-cluster-boundaries-with-distributed-data-collection
https://www.redhat.com/en/blog/custom-queries-for-observability-using-grafana-and-apis
https://www.redhat.com/en/blog/your-guide-to-openshift-observability-part-1
https://github.com/liuxiaoyu-git/openshift-demos/blob/master/workload-monitoring-for-user-defined-projects/README.md
相关文章:
OpenShift 4 - 多云管理(2) - 配置多集群观察功能
《OpenShift / RHEL / DevSecOps 汇总目录》 本文在 OpenShift 4.17 RHACM 2.12 环境中进行验证。 文章目录 多集群观察技术架构安装多集群观察功能监控多集群的运行状态监控多集群的应用运行在被管集群监控应用运行在管理集群监控被管集群的应用运行 参考 多集群观察技术架构…...
【鸿睿创智开发板试用】RK3568 NPU的人工智能推理测试
目录 引言 驱动移植 例程编译 修改build.sh 执行编译 运行测试 部署libc的库文件 执行测试程序 结语 引言 鸿睿创智的H01开发板是基于RK3568芯片的,瑞芯微芯片的一大特色就是提供了NPU推理的支持。本文将对其NPU推理进行测试。 驱动移植 H01的开发板已经…...
iOS swift开发系列 -- tabbar问题总结
1.单视图如何改为tabbar,以便显示2个标签页 右上角➕,输入tabbar 找到控件,然后选中,把entrypoint移动到tabbar控件 2.改成tabbar,生成两个item,配置各自视图后,启动发现报错 Thread 1: “-[p…...
四、CSS3
一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本,他在CSS2的基础上,新增了很多强大的新功能,从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展:https://www.w3.org/Style/CSS/current-work.html …...
Three使用WebGPU的关键TSL
Three.js 使用 WebGPU 的关键 TSL TSL: three.js shader language 介绍 three.js 材质转为webgpu的关键流程, 从而引出 TSL. 1、关键类关系 WebGPURenderer|-- library: StandardNodeLibrary|-- _nodes: Nodes|-- _objects: RenderObjects|-- createRenderObject()StandardN…...
ESP32-S3模组上跑通ES8388(30)
接前一篇文章:ESP32-S3模组上跑通ES8388(29) 二、利用ESP-ADF操作ES8388 2. 详细解析 上一回终于解析完了es8388_init函数的所有代码。本回回到调用它的地方,继续往下讲解。 我们是从ESP32-S3模组上跑通ES8388(7)-CSDN博客开始进入es8388_init函数,展开对于它的解析的…...
概率论得学习和整理24:EXCEL的各种图形,统计图形
目录 0 EXCEL的各种图形,统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图,一般是只选中1列数据(1个数组) 1.3 如何修改频度图的宽度 1.4 hist图的一个特…...
WPF中依赖属性的底层和普通属性的底层有什么不一样
WPF中依赖属性的底层 在 WPF 中,依赖属性(Dependency Property)是 WPF 属性系统的核心,它支持功能强大的特性(如数据绑定、动画、样式等)。其底层实现是围绕 DependencyObject 类展开的。以下是 WPF 中依赖…...
【Qt】drawText字体大小问题探究
背景 软件的一个功能是: 打开图片在图片上绘制序号,序号的样式是圆圈内包含数字将带有序号的图片打印出来 实现思路也很简单,在屏幕上显示时重写paintEvent函数,利用QPainter完成图片和序号的绘制。打印时只需要将QPainter对应…...
Mapbox-GL 的源码解读的一般步骤
Mapbox-GL 是一个非常优秀的二三维地理引擎,随着智能驾驶时代的到来,应用也会越来越广泛,关于mapbox-gl和其他地理引擎的详细对比(比如CesiumJS),后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…...
【C++】高级分析 switch 语句的应用
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯switch 语句的基本用法语法结构核心要点实例演示正确实现 期望输出错误实现错误输出 💯if 与 switch 语句的实现比较使用 if 语句使用 switch 语句比较分析 &am…...
活动预告 | Surface 来了#11:Windows 11 AI+ PC,释放 AI 办公设备的无限潜能
课程介绍 欢迎来到 Surface 来了第 11 期节目。 今年 5 月底,微软推出了专为 AI 体验而设计的全新 Windows PC 品类:Windows 11 AI PC。 微软通过 Windows 11 AI PC,进一步强调了 NPU 在运行设备端 AI 功能的重要性。并要求符合这一品类的…...
php基础:正则表达式
1.正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。到目前为止,我们前面所用过的精确(文本)匹配也是一种正则表达式。 在PHP中,正则表达式一般是由正规字…...
go语言压缩[]byte数据为zlib格式的时候,耗时较多,应该怎么修改?
在Go语言中使用compress/flate包来实现Zlib格式的压缩时,如果发现压缩耗时较多,可以考虑以下几个优化方向: ### 1. 压缩级别 默认情况下,compress/flate包中的NewWriter函数使用的是默认压缩级别(BestSpeed和BestComp…...
[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)
AdaBoost AdaBoost(Adaptive Boosting)是一种Boosting算法,它通过迭代地训练弱分类器并将它们组合成一个强分类器来提高分类性能。 AdaBoost算法的特点是它能够自适应地调整样本的权重,使那些被错误分类的样本在后续的训练中得到…...
深入了解Spring
目录 Spring基础 什么是Spring框架? Spring 包含的模块有哪些? Core Container AOP Data Access/Integration Spring Web Messaging Spring Test Spring,Spring MVC,Spring Boot 之间什么关系? Spring基础 什么是Spring框架? Sp…...
jar 包如何下载
maven官网:https://mvnrepository.com/ 点击搜索,找对应搜索结果点击...
ESlint代码规范,手动与自动修复
规范说明 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具 规范说明 可看到是main.js文件报错分别是第三行第30个字符,以及第七行第一个字符 后面则是规范说明,可以根据说明查找相应的规范 一.手动修正 ctrl f 可以搜索 二.自动修正 …...
利用编程获得money?
在当今数字化时代,编程技能为人们开辟了众多赚钱途径。无论你是编程新手还是经验丰富的开发者,都能在广阔的市场中找到适合自己的盈利方式。以下是一份详细的用编程赚钱指南。 一、自由职业平台 像 Upwork、Freelancer 和 Fiverr 等知名自由职业平台&am…...
设计规规范:【App 配色】
文章目录 引言I App 配色组成色彩象征 & 联想II 知识扩展设计流程图UI设计交互设计UI交互设计引言 设计规范,保持设计一致性,提高设计效率。宏观上对内统一,管理与合作变得容易。 按类型管理颜色、文本样式、图标、组件(symbol)。 蓝湖设计规范云 https://lanhuapp.co…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
