当前位置: 首页 > news >正文

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 来存储观察数据:

  1. 在运行 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
  1. 执行命令可以查看为 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"
  1. 执行命令在 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
  1. 安装后可以查看在 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

在这里插入图片描述

  1. 成功部署“观察”后可以在 ACM 控制台的 Clusters 页面中右上方看到 Grafana 链接。
    在这里插入图片描述

监控多集群的运行状态

  1. 进入 Grafana 后可以看到被管集群的运行状态。
    在这里插入图片描述
  2. 进入上图的一个集群,可以查看该集群的运行情况。
    在这里插入图片描述
  3. 查看被管集群,确认在 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
  1. 进入 Grafana 的 Dashborads,可以看到下图显示的预制仪表盘。可进入这些仪表盘查看。
    在这里插入图片描述
  2. 在管理集群中执行以下命令,将 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}
  1. 在 metrics 中可以看到所有可用的查询指标。
  2. 在 Thanos Query 页面中查询 cluster:capacity_cpu_cores:sum 可以看到每个被管集群的 CPU 总量。
    在这里插入图片描述

监控多集群的应用运行

在被管集群监控应用运行

参照《OpenShift 4 - 用 Prometheus 和 Grafana 监视用户应用定制的观测指标(视频)》。

  1. 在被群集群中编辑 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
  1. 在被管集群部署测试用的 nginx。
$ git clone https://github.com/liuxiaoyu-git/openshift-demos.git
$ cd openshift-demos/workload-monitoring-for-user-defined-projects
$ oc create -k deploy
  1. 进入控制台的 “观察 -> 指标” 菜单,在指标页面中将 nginx_http_requests_total 填入 “表达式” 中,确认可以查出 nginx 的监控指标。
    在这里插入图片描述

在管理集群监控被管集群的应用运行

  1. 在管理集群中创建名为 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
  1. 在 ACM 管理集群的 Grafana 控制台中进入 Metrics 菜单,然后点击 New metrics exploration 按钮。
  2. 然后在 Search metrics 中查找和 nginx 相关的项目。
    在这里插入图片描述
  3. 在上图中的 nginx_http_requests_total 区域点击右侧的 Select。
  4. 可以看到图中的数据已经变为 per-second rate 显示。
    在这里插入图片描述
  5. 可在 Metrics 页面中为显示的监控图增加适当的 Lable。
    在这里插入图片描述
  6. 在 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芯片的&#xff0c;瑞芯微芯片的一大特色就是提供了NPU推理的支持。本文将对其NPU推理进行测试。 驱动移植 H01的开发板已经…...

iOS swift开发系列 -- tabbar问题总结

1.单视图如何改为tabbar&#xff0c;以便显示2个标签页 右上角➕&#xff0c;输入tabbar 找到控件&#xff0c;然后选中&#xff0c;把entrypoint移动到tabbar控件 2.改成tabbar&#xff0c;生成两个item&#xff0c;配置各自视图后&#xff0c;启动发现报错 Thread 1: “-[p…...

四、CSS3

一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本&#xff0c;他在CSS2的基础上&#xff0c;新增了很多强大的新功能&#xff0c;从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展&#xff1a;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的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…...

WPF中依赖属性的底层和普通属性的底层有什么不一样

WPF中依赖属性的底层 在 WPF 中&#xff0c;依赖属性&#xff08;Dependency Property&#xff09;是 WPF 属性系统的核心&#xff0c;它支持功能强大的特性&#xff08;如数据绑定、动画、样式等&#xff09;。其底层实现是围绕 DependencyObject 类展开的。以下是 WPF 中依赖…...

【Qt】drawText字体大小问题探究

背景 软件的一个功能是&#xff1a; 打开图片在图片上绘制序号&#xff0c;序号的样式是圆圈内包含数字将带有序号的图片打印出来 实现思路也很简单&#xff0c;在屏幕上显示时重写paintEvent函数&#xff0c;利用QPainter完成图片和序号的绘制。打印时只需要将QPainter对应…...

Mapbox-GL 的源码解读的一般步骤

Mapbox-GL 是一个非常优秀的二三维地理引擎&#xff0c;随着智能驾驶时代的到来&#xff0c;应用也会越来越广泛&#xff0c;关于mapbox-gl和其他地理引擎的详细对比&#xff08;比如CesiumJS&#xff09;&#xff0c;后续有时间会加更。地理首先理解 Mapbox-GL 的源码是一项复…...

【C++】高级分析 switch 语句的应用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;switch 语句的基本用法语法结构核心要点实例演示正确实现 期望输出错误实现错误输出 &#x1f4af;if 与 switch 语句的实现比较使用 if 语句使用 switch 语句比较分析 &am…...

活动预告 | Surface 来了#11:Windows 11 AI+ PC,释放 AI 办公设备的无限潜能

课程介绍 欢迎来到 Surface 来了第 11 期节目。 今年 5 月底&#xff0c;微软推出了专为 AI 体验而设计的全新 Windows PC 品类&#xff1a;Windows 11 AI PC。 微软通过 Windows 11 AI PC&#xff0c;进一步强调了 NPU 在运行设备端 AI 功能的重要性。并要求符合这一品类的…...

php基础:正则表达式

1.正则表达式 正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。到目前为止&#xff0c;我们前面所用过的精确&#xff08;文本&#xff09;匹配也是一种正则表达式。 在PHP中&#xff0c;正则表达式一般是由正规字…...

go语言压缩[]byte数据为zlib格式的时候,耗时较多,应该怎么修改?

在Go语言中使用compress/flate包来实现Zlib格式的压缩时&#xff0c;如果发现压缩耗时较多&#xff0c;可以考虑以下几个优化方向&#xff1a; ### 1. 压缩级别 默认情况下&#xff0c;compress/flate包中的NewWriter函数使用的是默认压缩级别&#xff08;BestSpeed和BestComp…...

[机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)

AdaBoost AdaBoost&#xff08;Adaptive Boosting&#xff09;是一种Boosting算法&#xff0c;它通过迭代地训练弱分类器并将它们组合成一个强分类器来提高分类性能。 AdaBoost算法的特点是它能够自适应地调整样本的权重&#xff0c;使那些被错误分类的样本在后续的训练中得到…...

深入了解Spring

目录 Spring基础 什么是Spring框架&#xff1f; Spring 包含的模块有哪些&#xff1f; Core Container AOP Data Access/Integration Spring Web Messaging Spring Test Spring,Spring MVC,Spring Boot 之间什么关系? Spring基础 什么是Spring框架&#xff1f; Sp…...

jar 包如何下载

maven官网&#xff1a;https://mvnrepository.com/ 点击搜索&#xff0c;找对应搜索结果点击...

ESlint代码规范,手动与自动修复

规范说明 规则参考 - ESLint - 插件化的 JavaScript 代码检查工具 规范说明 ​ ​ 可看到是main.js文件报错分别是第三行第30个字符&#xff0c;以及第七行第一个字符 后面则是规范说明&#xff0c;可以根据说明查找相应的规范 一.手动修正 ctrl f 可以搜索 二.自动修正 …...

利用编程获得money?

在当今数字化时代&#xff0c;编程技能为人们开辟了众多赚钱途径。无论你是编程新手还是经验丰富的开发者&#xff0c;都能在广阔的市场中找到适合自己的盈利方式。以下是一份详细的用编程赚钱指南。 一、自由职业平台 像 Upwork、Freelancer 和 Fiverr 等知名自由职业平台&am…...

设计规规范:【App 配色】

文章目录 引言I App 配色组成色彩象征 & 联想II 知识扩展设计流程图UI设计交互设计UI交互设计引言 设计规范,保持设计一致性,提高设计效率。宏观上对内统一,管理与合作变得容易。 按类型管理颜色、文本样式、图标、组件(symbol)。 蓝湖设计规范云 https://lanhuapp.co…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...