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

http://www.lryc.cn/news/505602.html

相关文章:

  • 【鸿睿创智开发板试用】RK3568 NPU的人工智能推理测试
  • iOS swift开发系列 -- tabbar问题总结
  • 四、CSS3
  • Three使用WebGPU的关键TSL
  • ESP32-S3模组上跑通ES8388(30)
  • 概率论得学习和整理24:EXCEL的各种图形,统计图形
  • WPF中依赖属性的底层和普通属性的底层有什么不一样
  • 【Qt】drawText字体大小问题探究
  • Mapbox-GL 的源码解读的一般步骤
  • 【C++】高级分析 switch 语句的应用
  • 活动预告 | Surface 来了#11:Windows 11 AI+ PC,释放 AI 办公设备的无限潜能
  • php基础:正则表达式
  • go语言压缩[]byte数据为zlib格式的时候,耗时较多,应该怎么修改?
  • [机器学习]AdaBoost(数学原理 + 例子解释 + 代码实战)
  • 深入了解Spring
  • jar 包如何下载
  • ESlint代码规范,手动与自动修复
  • 利用编程获得money?
  • 设计规规范:【App 配色】
  • react 使用 PersistGate 白屏解决方案
  • F5中获取客户端ip地址(client ip)
  • Maven(生命周期、POM、模块化、聚合、依赖管理)详解
  • 电力场景绝缘子缺陷识别分割数据集labelme格式1099张3类别
  • 【k8s集群应用】Kubernetes 容器编排系统
  • Unity3D仿星露谷物语开发2之工程初始化
  • Kafka篇之参数优化进而提高kafka集群性能
  • 关于SAP Router连接不稳定的改良
  • 使用pygame做游戏(2):2048游戏的进一步改造,以失败告终
  • 【CSS in Depth 2 精译_078】12.6 调整字间距,提升可读性 + 12.7 本章小结
  • 泷羽sec学习打卡-brupsuite7搭建IP炮台