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 日志。
1.1.2. 其他资源
第 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) 1
- 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-alerts
prometheus 规则 -
<argocd_namespace>-read
role -
<argocd_name>
;, <argocd_name>-repo-server
, 和<argocd_name>-server
服务监控器 -
<argocd_namespace>-prometheus-k8s-read-binding
role binding -
openshift.io/cluster-monitoring=true
label
为集群中的多个 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 实例的
ArgoCD
CR,以禁用自动提取指标:-
点 YAML 选项卡,并编辑
ArgoCD
CR 的 YAML 文件。 在
ArgoCD
CR 中,将spec.monitoring.disableMetrics
字段设置为true
:ArgoCD
CR 示例apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example 1 namespace: spring-petclinic 2 spec: monitoring: disableMetrics: true
提示另外,使用以下命令在 Red Hat OpenShift GitOps
argocd
CLI 中禁用自动提取指标:示例命令
$ oc patch argocd example -n spring-petclinic --type='json' -p='[{"op": "replace", "path": "/spec/monitoring/disableMetrics", "value": true}]'
输出示例
argocd.argoproj.io/example patched
-
点 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-alerts
prometheus 规则已被删除。 - 在 Roles 部分的 Filter 列表中,选择 Namespace Roles。
-
验证 <
;argocd_namespace>-read
角色是否已删除。 - 在 RoleBindings 部分下,从 Filter 列表中选择 Namespace RoleBindings。
-
验证 <
;argocd_namespace>-prometheus-k8s-read-binding
角色绑定已被删除。 -
验证在 ServiceMonitors 部分下,<
argocd_name> , &
lt;argocd_name>-repo-server
, 和<argocd_name>-server
服务监控器已被删除。
您可以通过将 spec.monitoring.disableMetrics
字段值修改为 false
来为实例启用指标。然后,Operator 会创建所需的角色、角色绑定和服务监控器,并将 openshift.io/cluster-monitoring=true
标签添加到定义的命名空间中。
2.2.4. 其他资源
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"}
- (可选):点击 Add query 来输入多个查询。
- 点 Run query 来启用并观察 GitOps Operator 指标。
2.3.2. 其他资源
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>
; 变量和环境应用程序清单设置相同的值。
环境应用程序清单的规格
spec: labels: openshift.gitops/environment: <environment_name> destination: namespace: <environment_name> # ...
环境应用程序清单示例
apiVersion: argoproj.io/v1beta1
kind: Application
metadata:
name: dev-env 1
namespace: openshift-gitops
spec:
labels:
openshift.gitops/environment: dev-env
destination:
namespace: dev-env
# ...
- 1
- 环境应用清单的名称。set 的值与 <
environment_name&
gt; 变量的值相同。
环境注解
环境命名空间清单必须包含 annotations.app.openshift.io/vcs-uri
和 annotations.app.openshift.io/vcs-ref
字段,以指定应用程序的 version 控制器代码源。您必须为 < environment_name>
; 变量和环境命名空间清单设置相同的值。
环境命名空间清单的规格
apiVersion: v1
kind: Namespace
metadata:
annotations:
app.openshift.io/vcs-uri: <application_source_url>
app.openshift.io/vcs-ref: <branch_reference>
name: <environment_name> 1
# ...
- 1
- 环境命名空间清单的名称。set 的值与 <
environment_name&
gt; 变量的值相同。
环境命名空间清单示例
apiVersion: v1 kind: Namespace metadata: annotations: app.openshift.io/vcs-uri: https://example.com/<your_domain>/<your_gitops.git> app.openshift.io/vcs-ref: main labels: argocd.argoproj.io/managed-by: openshift-gitops name: dev-env # ...
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 自定义资源示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd labels: example: repo spec: # ... monitoring: enabled: true # ...
验证 Operator 创建的 PrometheusRule 中是否包含警报规则:
警报规则示例
apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: argocd-component-status-alert namespace: openshift-gitops spec: groups: - name: ArgoCDComponentStatus rules: # ... - alert: ApplicationSetControllerNotReady 1 annotations: message: >- applicationSet controller deployment for Argo CD instance in namespace "default" is not running expr: >- kube_statefulset_status_replicas{statefulset="openshift-gitops-application-controller statefulset", namespace="openshift-gitops"} != kube_statefulset_status_replicas_ready{statefulset="openshift-gitops-application-controller statefulset", namespace="openshift-gitops"} for: 1m labels: severity: critical
- 1
- PrometheusRule 中的警报规则,用于检查 Argo CD 实例创建的工作负载是否如预期运行。
2.5.3. 禁用 Argo CD 自定义资源工作负载的监控
您可以为特定的 Argo CD 实例禁用工作负载监控。禁用工作负载监控会删除创建的 PrometheusRule。
流程
在给定的 Argo CD 实例中,将
.spec.monitoring.enabled
字段值设置为false
:Argo CD 自定义资源示例
apiVersion: argoproj.io/v1beta1 kind: ArgoCD metadata: name: example-argocd labels: example: repo spec: # ... monitoring: enabled: false # ...