Observability(可观察性)
使用可观察性功能查看 Argo CD 日志并监控 Argo CD 和应用程序资源的性能和健康状况
摘要
第 1 章 日志记录 复制链接链接已复制到粘贴板!
1.1. 查看 Argo CD 日志 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift 的 logging 子系统查看 Argo CD 日志。logging 子系统可视觉化 Kibana 仪表板上的日志。OpenShift Logging Operator 默认启用 Argo CD 的日志记录。
1.1.1. 存储和检索 Argo CD 日志 复制链接链接已复制到粘贴板!
您可以使用 Kibana 仪表板存储和检索 Argo CD 日志。
先决条件
- Red Hat OpenShift GitOps Operator 安装在 OpenShift Container Platform 集群中。
- Red Hat OpenShift 的 logging 子系统使用 OpenShift Container Platform 集群上的默认配置安装。
流程
-
在 OpenShift Container Platform web 控制台中,进入
菜单 → Observability → Logging 来查看 Kibana 仪表板。
创建索引模式。
-
要显示所有索引,请将索引模式定义为
*,然后点 Next step。 - 为 Time Filter field name 选择 @timestamp。
- 单击 Create index pattern。
-
要显示所有索引,请将索引模式定义为
- 在 Kibana 仪表板的导航面板中,点 Discover 选项卡。
创建过滤器以检索 Argo CD 的日志。以下步骤创建一个过滤器,用于检索
openshift-gitops命名空间中的所有 pod 的日志:- 点 Add a filter +。
- 选择 kubernetes.namespace_name 字段。
- 选择 is operator。
- 选择 openshift-gitops 值。
- 点击 Save。
-
可选:添加额外的过滤器来缩小搜索范围。例如,要检索特定 pod 的日志,您可以使用
kubernetes.pod_name作为字段创建另一个过滤器。 - 在 Kibana 仪表板中查看过滤的 Argo CD 日志。
第 2 章 监控 复制链接链接已复制到粘贴板!
2.1. 使用 GitOps 仪表板监控 复制链接链接已复制到粘贴板!
您可以使用 Red Hat OpenShift GitOps 监控仪表板访问 GitOps 实例的图形视图,以观察集群中每个实例的行为和使用。
有四个 GitOps 仪表板:
- GitOps 概述 :查看集群中安装的所有 GitOps 实例的概述,包括应用程序数量、健康和同步状态、应用程序和同步活动。
- GitOps 组件 :查看 application-controller、repo-server、server 和其他 GitOps 组件的详细信息,如 CPU 或内存。
- GitOps gRPC 服务 :查看与 Red Hat OpenShift GitOps 中各种组件之间 gRPC 服务活动相关的指标。
- GITOPS Rollouts :查看与总活跃 Rollouts 资源、可用、所需和不可用副本相关的指标,以及 Rollouts 控制器性能的统计信息。
2.1.1. 访问 GitOps 监控仪表板 复制链接链接已复制到粘贴板!
监控仪表板由 Operator 自动部署。您可以从 OpenShift Container Platform Web 控制台的 Administrator 视角访问 GitOps 监控仪表板。
不支持禁用或更改仪表板的内容。
先决条件
- 访问 OpenShift Container Platform web 控制台。
-
Red Hat OpenShift GitOps Operator 安装在 default 命名空间中,
openshift-gitops-operator。 -
集群监控在
openshift-gitops-operator命名空间中被启用。 -
您已在定义的命名空间中安装了 Argo CD 应用程序,如
openshift-gitops。
流程
- 在 web 控制台的 Administrator 视角中,进入 Observe → Dashboards。
- 在 Dashboard 下拉列表中,选择所需的 GitOps 仪表板: GitOps (Overview), GitOps / Components,GitOps / gRPC Services 或 GitOps / Rollouts。
- 可选:从 Namespace、Cluster 和 Interval 下拉列表中选择特定的命名空间、集群和间隔。
- 在 GitOps 仪表板中查看所需的 GitOps 指标。
2.2. 监控 Argo CD 实例 复制链接链接已复制到粘贴板!
默认情况下,Red Hat OpenShift GitOps Operator 会自动检测在定义的命名空间中安装的 Argo CD 实例,如 openshift-gitops,并将其连接到集群的监控堆栈,以便为不同步应用程序提供警报。
2.2.1. 先决条件 复制链接链接已复制到粘贴板!
-
您可以使用
cluster-admin权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 在集群中安装了 Red Hat OpenShift GitOps Operator。
-
您已在定义的命名空间中安装了 Argo CD 应用程序,如
openshift-gitops。
2.2.2. 使用 Prometheus 指标监控 Argo CD 健康状况 复制链接链接已复制到粘贴板!
您可以通过针对它运行 Prometheus metrics 查询来监控 Argo CD 应用程序的健康状况。
流程
- 在 web 控制台的 Developer 视角中,选择安装 Argo CD 应用程序的命名空间,并导航到 Observe → Metrics。
- 从 Select query 下拉列表中,选择 Custom query。
要检查 Argo CD 应用程序的健康状态,请在 Expression 字段中输入类似以下示例的 Prometheus Query Language (PromQL)查询:
Example
sum(argocd_app_info{dest_namespace=~"<your_defined_namespace>",health_status!=""}) by (health_status)sum(argocd_app_info{dest_namespace=~"<your_defined_namespace>",health_status!=""}) by (health_status)1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将 &
lt;your_defined_namespace> 变量替换为定义的命名空间的实际名称,如openshift-gitops。
2.2.3. 为 Argo CD 实例禁用自动提取指标 复制链接链接已复制到粘贴板!
默认情况下,Red Hat OpenShift GitOps Operator 会自动提取所有 Argo CD 实例的指标来测量性能。因此,Operator 会创建以下资源和标签到安装 Argo CD 实例的命名空间:
-
GITOPS-operator-argocd-alertsprometheus 规则 -
<argocd_namespace>-readrole -
<argocd_name>, <argocd_name>-repo-server, 和<argocd_name>-server服务监控器 -
<argocd_namespace>-prometheus-k8s-read-bindingrole binding -
openshift.io/cluster-monitoring=truelabel
为集群中的多个 Argo CD 实例提取指标可能会导致过量存储使用。作为一种防止度量,使用 Web 控制台的 YAML 视图并配置 ArgoCD 自定义资源(CR)来禁用 Argo CD 实例的指标自动提取。
作为集群管理员,通过为各个实例禁用指标提取,您可以为用户提供更好的控制、灵活性和稳定性,以管理其定义的命名空间。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
- 在 Web 控制台的 Administrator 视角中,点 Operators → Installed Operators。
- 从 Project 列表中,选择安装用户定义的 Argo CD 实例的项目。
- 从安装的 Operator 列表中选择 Red Hat OpenShift GitOps,再进入 Argo CD 选项卡。
- 点用户定义的 Argo CD 实例。
配置用户定义的 Argo CD 实例的
ArgoCDCR,以禁用自动提取指标:-
点 YAML 选项卡,并编辑
ArgoCDCR 的 YAML 文件。 在
ArgoCDCR 中,将spec.monitoring.disableMetrics字段设置为true:ArgoCDCR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示另外,使用以下命令在 Red Hat OpenShift GitOps
argocdCLI 中禁用自动提取指标:示例命令
oc patch argocd example -n spring-petclinic --type='json' -p='[{"op": "replace", "path": "/spec/monitoring/disableMetrics", "value": true}]'$ oc patch argocd example -n spring-petclinic --type='json' -p='[{"op": "replace", "path": "/spec/monitoring/disableMetrics", "value": true}]'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
argocd.argoproj.io/example patched
argocd.argoproj.io/example patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
点 YAML 选项卡,并编辑
验证 Operator 是否将
openshift.io/cluster-monitoring=false标签添加到定义的命名空间中:进入 Administration → Namespaces。
Namespaces 页面显示创建的命名空间。
-
点您定义的命名空间,进入 YAML 选项卡,并验证 Operator 的
metadata.labels部分下是否添加了openshift.io/cluster-monitoring=false标签。
验证 Operator 是否从定义的命名空间中删除以下资源:
- 前往 Home → Search。
从 Resources 列表中,选择 PrometheusRule,Role,RoleBinding, 和 ServiceMonitor。
Search 页面显示所选资源。
-
在 Search 页面中,验证 PrometheusRule 部分下的
gitops-operator-argocd-alertsprometheus 规则已被删除。 - 在 Roles 部分的 Filter 列表中,选择 Namespace Roles。
-
验证 <
;argocd_namespace>-read角色是否已删除。 - 在 RoleBindings 部分下,从 Filter 列表中选择 Namespace RoleBindings。
-
验证 <
;argocd_namespace>-prometheus-k8s-read-binding角色绑定已被删除。 -
验证在 ServiceMonitors 部分下,<
argocd_name> , <argocd_name>-repo-server, 和<argocd_name>-server服务监控器已被删除。
您可以通过将 spec.monitoring.disableMetrics 字段值修改为 false 来为实例启用指标。然后,Operator 会创建所需的角色、角色绑定和服务监控器,并将 openshift.io/cluster-monitoring=true 标签添加到定义的命名空间中。
2.3. 监控 GitOps Operator 性能 复制链接链接已复制到粘贴板!
Red Hat OpenShift GitOps Operator 发送有关其性能的指标。通过获取这些指标的 OpenShift 监控堆栈,您可以监控和分析 Operator 的性能。Operator 会公开以下指标,您可以使用 OpenShift Container Platform Web 控制台查看这些指标:
| 指标名称 | 类型 | 描述 |
|---|---|---|
|
| 量表 | 当前由 Operator 在给定时间管理的活跃 Argo CD 实例总数。 |
|
| 量表 | 给定阶段中活跃的 Argo CD 实例数量,如 pending 或 available。 |
|
| 计数 | 在任意给定时间为给定命名空间中的实例发生的协调总数。 |
|
| 计数 |
在实例的给定持续时间下完成的协调周期数。例如, |
|
| 计数 | 给定实例观察到的协调周期总数。 |
|
| 计数 | 给定实例的观察协调所花费的时间总量。 |
量表是可以向上或向下使用的值。counter 是一个只能上线的值。
2.3.1. 访问 GitOps Operator 指标 复制链接链接已复制到粘贴板!
您可以从 OpenShift Container Platform Web 控制台的 Administrator 视角访问 Operator 指标,以跟踪 Operator 的性能。
先决条件
- 访问 OpenShift Container Platform web 控制台。
-
Red Hat OpenShift GitOps Operator 安装在默认的
openshift-gitops-operator命名空间中。 -
集群监控在
openshift-gitops-operator命名空间中被启用。
流程
- 在 Web 控制台的 Administrator 视角中,进入 Observe → Metrics。
在 Expression 字段中输入指标。您可以从以下指标中选择:
-
active_argocd_instances_total -
active_argocd_instances_by_phase -
active_argocd_instance_reconciliation_count -
controller_runtime_reconcile_time_seconds_per_instance_bucket -
controller_runtime_reconcile_time_seconds_per_instance_count -
controller_runtime_reconcile_time_seconds_per_instance_sum
-
(可选):根据其属性过滤指标。例如,根据
Available阶段过滤active_argocd_instances_by_phase指标:Example
active_argocd_instances_by_phase{phase="Available"}active_argocd_instances_by_phase{phase="Available"}Copy to Clipboard Copied! Toggle word wrap Toggle overflow - (可选):点击 Add query 来输入多个查询。
- 点 Run query 来启用并观察 GitOps Operator 指标。
2.4. 监控应用程序资源和部署的健康状况信息 复制链接链接已复制到粘贴板!
OpenShift Container Platform Web 控制台的 Developer 视角中的 Red Hat OpenShift GitOps Environments 页面显示应用程序环境成功部署的列表,以及指向每个部署的修订版本的链接。
OpenShift Container Platform Web 控制台的 Developer 视角中的 Application environments 页面显示应用程序资源的健康状况,如路由、同步状态、部署配置和部署历史记录。
2.4.1. 环境标签和注解设置 复制链接链接已复制到粘贴板!
本节在 OpenShift Container Platform Web 控制台的 Developer 视角中,提供在 Environments 页面中显示环境应用程序所需的环境标签和注解。
环境标签
环境应用程序清单必须包含 labels.openshift.gitops/environment 和 destination.namespace 字段。您必须为 < environment_name> 变量和环境应用程序清单设置相同的值。
环境应用程序清单的规格
环境应用程序清单示例
- 1
- 环境应用清单的名称。set 的值与 <
environment_name> 变量的值相同。
环境注解
环境命名空间清单必须包含 annotations.app.openshift.io/vcs-uri 和 annotations.app.openshift.io/vcs-ref 字段,以指定应用程序的 version 控制器代码源。您必须为 < environment_name> 变量和环境命名空间清单设置相同的值。
环境命名空间清单的规格
- 1
- 环境命名空间清单的名称。set 的值与 <
environment_name> 变量的值相同。
环境命名空间清单示例
2.4.2. 检查健康信息 复制链接链接已复制到粘贴板!
Red Hat OpenShift GitOps Operator 将在 openshift-gitops 命名空间中安装 GitOps 后端服务。
先决条件
- Red Hat OpenShift GitOps Operator 从 OperatorHub 安装。
- 确保您的应用程序由 Argo CD 同步。
流程
- 点 Developer 视角下的 Environments。Environments 页面中显示应用程序列表及其 环境状态。
- 将鼠标悬停在 Environment status 列下的图标上,以查看所有环境的同步状态。
- 点击列表中的应用程序名称查看特定应用程序的详情。
在 Application environments 页面中,如果 Overview 选项卡下的 Resources 部分显示图标,将鼠标悬停在图标上来获取状态详情。
- 一个分离开的心型图标表示资源问题已降低应用程序的性能。
- 一个黄色的符号表示资源问题中带有应用程序的健康状态的延迟数据。
- 要查看应用程序的部署历史记录,请点 Deployment History 选项卡。该页面包括 Last deployment、Description (提交消息)、Environment、Author 和 Revision 等详情。
2.5. 监控 Argo CD 自定义资源工作负载 复制链接链接已复制到粘贴板!
使用 Red Hat OpenShift GitOps,您可以监控特定 Argo CD 实例的 Argo CD 自定义资源工作负载的可用性。通过监控 Argo CD 自定义资源工作负载,您可以通过为它们启用警报来获取有关 Argo CD 实例状态的最新信息。当相应 Argo CD 实例的组件工作负载 pod (如 application-controller、repo-server 或服务器)无法正常分配,且就绪副本数和所需副本数之间有偏差时,Operator 会触发警报。
您可以启用和禁用用于监控 Argo CD 自定义资源工作负载的设置。
2.5.1. 先决条件 复制链接链接已复制到粘贴板!
-
您可以使用具有
cluster-admin角色的用户访问集群。 - 在集群中安装了 Red Hat OpenShift GitOps。
-
监控堆栈在
openshift-monitoring项目中配置。另外,Argo CD 实例位于您可以通过 Prometheus 监控的命名空间中。 -
kube-state-metrics服务在集群中运行。 可选: 如果要为用户定义的项目中已存在 Argo CD 实例的监控,请确保 为集群中的用户定义的项目启用了 监控。
注意如果要为默认
openshift-monitoring堆栈监视的命名空间中的 Argo CD 实例启用监控,例如,任何不是以openshiftbang开头的命名空间,您必须在集群中启用用户工作负载监控。此操作可让监控堆栈获取创建的 PrometheusRule。
2.5.2. 为 Argo CD 自定义资源工作负载启用监控 复制链接链接已复制到粘贴板!
默认情况下,Argo CD 自定义资源工作负载的监控配置被设置为 false。
在 Red Hat OpenShift GitOps 中,您可以为特定的 Argo CD 实例启用工作负载监控。因此,Operator 会创建一个 PrometheusRule 对象,其中包含由特定 Argo CD 实例管理的所有工作负载的警报规则。当相应组件的副本数从特定时间达到所需状态时,这些警报规则会触发警报。Operator 不会覆盖用户对 PrometheusRule 对象所做的更改。
流程
在给定的 Argo CD 实例中,将
.spec.monitoring.enabled字段值设置为true:Argo CD 自定义资源示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 Operator 创建的 PrometheusRule 中是否包含警报规则:
警报规则示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- PrometheusRule 中的警报规则,用于检查 Argo CD 实例创建的工作负载是否如预期运行。
2.5.3. 禁用 Argo CD 自定义资源工作负载的监控 复制链接链接已复制到粘贴板!
您可以为特定的 Argo CD 实例禁用工作负载监控。禁用工作负载监控会删除创建的 PrometheusRule。
流程
在给定的 Argo CD 实例中,将
.spec.monitoring.enabled字段值设置为false:Argo CD 自定义资源示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow