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 # ...