当前位置: 首页 > 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…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

系统设计 --- 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…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...