Installing Red Hat OpenShift Cluster Observability Operator
安装和配置 Cluster Observability Operator。
摘要
第 1 章 安装 Cluster Observability Operator 复制链接链接已复制到粘贴板!
作为集群管理员,您可以使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装或删除 Cluster Observability Operator (COO)。OperatorHub 是一个用户界面,可与 Operator Lifecycle Manager (OLM) 结合使用,它在集群中安装和管理 Operator。
对于 OpenShift Container Platform v4.20+,您可以使用软件目录安装 Operator。
1.1. 在 web 控制台中安装 Cluster Observability Operator 复制链接链接已复制到粘贴板!
使用 OpenShift Container Platform Web 控制台从 OperatorHub 安装 Cluster Observability Operator (COO)。
先决条件
-
您可以使用具有
cluster-admin集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
流程
在 OpenShift Container Platform Web 控制台中:
- 如果您的 OpenShift Container Platform 版本为 4.19 或更早版本,点 Operators → OperatorHub。
- 如果您的 OpenShift Container Platform 版本为 4.20+,点 Ecosystem → Software Catalog。
-
在 Filter by keyword 框中键入
cluster observability operator。 - 在结果列表中点 Cluster Observability Operator。
阅读 Operator 信息并配置以下安装设置:
- Update channel → stable
- 版本 → 1.0.0 或更高版本
- Installation mode → All namespaces on the cluster (default)
- Installed Namespace → Operator recommended Namespace: openshift-cluster-observability-operator
- 选择 Enable Operator recommended cluster monitoring on this Namespace
- Update approval → Automatic
- 可选: 您可以更改安装设置以满足您的要求。例如,您可以选择订阅不同的更新频道,安装一个旧的 Operator 发行版本,或者需要手动批准对 Operator 的新版本进行更新。
- 点 Install。
验证
在 OpenShift Container Platform Web 控制台中:
- 如果您的 OpenShift Container Platform 版本为 4.19 或更早版本,则进入 Operators → Installed Operators。
- 如果您的 OpenShift Container Platform 版本为 4.20+,则进入 Ecosystem → Installed Operators。
- 验证 Cluster Observability Operator 条目是否出现在列表中。
其他资源
1.2. 使用 Web 控制台卸载 Cluster Observability Operator 复制链接链接已复制到粘贴板!
如果您使用 OperatorHub 或软件目录安装了 Cluster Observability Operator (COO),您可以在 OpenShift Container Platform Web 控制台中卸载它。
先决条件
-
您可以使用具有
cluster-admin集群角色的用户身份访问集群。 - 已登陆到 OpenShift Container Platform Web 控制台。
流程
在 OpenShift Container Platform Web 控制台中:
- 如果您的 OpenShift Container Platform 版本为 4.19 或更早版本,则进入 Operators → Installed Operators。
- 如果您的 OpenShift Container Platform 版本为 4.20+,则进入 Ecosystem → Installed Operators。
- 在列表中找到 Cluster Observability Operator 条目。
-
在这个条目中点
并选择 Uninstall Operator。
验证
在 OpenShift Container Platform Web 控制台中:
- 如果您的 OpenShift Container Platform 版本为 4.19 或更早版本,则进入 Operators → Installed Operators。
- 如果您的 OpenShift Container Platform 版本为 4.20+,则进入 Ecosystem → Installed Operators。
- 验证 Cluster Observability Operator 条目不再出现在列表中。
第 2 章 安装端到端可观察性 复制链接链接已复制到粘贴板!
端到端的可观察堆栈只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
ObservabilityInstaller 自定义资源定义(CRD)可用于安装端到端的可观察性堆栈。
2.1. 分布式追踪 复制链接链接已复制到粘贴板!
分布式追踪功能会安装 OpenTelemetry Collector、Tempo 和 distributed tracing UI 插件。
流程
使用
ObservabilityInstaller资源安装分布式追踪。apiVersion: observability.openshift.io/v1alpha1 kind: ObservabilityInstaller metadata: name: tracing namespace: observability1 spec: capabilities: tracing: enabled: true2 operators: install: true3 storage: objectStorage:4 ...配置 S3 对象存储
storage: objectStorage: s3: bucket: <bucket_name>1 endpoint: <s3_endpoint>2 accessKeyID: <access_key_id>3 accessKeySecret:4 name: s3-access-secret key: access_key_secret region: us-east-15 使用以下命令来创建包含访问密钥的 secret:
$ oc create secret generic s3-access-secret \ --from-literal=access_key_secret="secret"
2.2. 对象存储类型 复制链接链接已复制到粘贴板!
每个对象存储类型都有自己的一组必填字段,它们直接在 ObservabilityInstaller CR 中配置。
2.2.1. 带有安全令牌服务(STS)的 Amazon S3 - Short lived 复制链接链接已复制到粘贴板!
Tempo 和 Loki 支持带有 STS 的 S3。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
s3STS:
bucket: bucket-name
roleARN:
region: us-east-1
使用以下命令来创建包含访问密钥的 secret:
$ oc create secret generic storage-secret \
--from-literal=bucket="<BUCKET_NAME>" \
--from-literal=role_arn="<AWS_ROLE_ARN>" \
--from-literal=region="<AWS_REGION_YOUR_BUCKET_LIVES_IN>"
2.2.2. Amazon S3 / MinIO 复制链接链接已复制到粘贴板!
Amazon S3 / MinIO 由 Tempo 和 Loki 支持。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
s3:
bucket: bucket-name
endpoint: http://minio.minio.svc:9000
accessKeyID: tempo
accessKeySecret:
name: minio-secret
key: access_key_secret
region: us-east-1
使用以下命令来创建包含访问密钥的 secret:
$ oc create secret generic minio-secret \
--from-literal=access_key_secret="supersecret"
2.2.2.1. Tempo 和 Loki operator 支持的 secret 复制链接链接已复制到粘贴板!
$ oc create secret generic storage-secret \
--from-literal=bucket="<BUCKET_NAME>" \
--from-literal=endpoint="<AWS_BUCKET_ENDPOINT>" \
--from-literal=access_key_id="<AWS_ACCESS_KEY_ID>" \
--from-literal=access_key_secret="<AWS_ACCESS_KEY_SECRET>" \
--from-literal=region="<AWS_REGION_YOUR_BUCKET_LIVES_IN>"
-
在 Tempo 中,
region是可选的,Loki 需要。
2.2.3. Microsoft Azure Blob Storage 复制链接链接已复制到粘贴板!
Microsoft Azure Blob Storag 由 Tempo 和 Loki 支持。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
azure:
container:
accountName:
accountKeySecret:
name: azure-secret
key: account_key
使用以下命令来创建包含访问密钥的 secret:
$ oc create secret generic azure-secret \
--from-literal=account_key="<ACCOUNT_KEY>"
2.2.3.1. Tempo 和 Loki operator 支持的 secret 复制链接链接已复制到粘贴板!
$ oc create secret generic storage-secret \
--from-literal=container="<BLOB_STORAGE_CONTAINER_NAME>" \
--from-literal=account_name="<BLOB_STORAGE_ACCOUNT_NAME>" \
--from-literal=account_key="<BLOB_STORAGE_ACCOUNT_KEY>"
Loki operator 还支持以下字段:
-
environment -
endpoint_suffix- optional
2.2.4. Azure WIF - Short lived 复制链接链接已复制到粘贴板!
Azure WIF short lived 由 Tempo 支持。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
azureWIF:
container:
accountName:
audience:
clientID:
tenantID:
2.2.4.1. Tempo 和 Loki operator 支持的 secret 复制链接链接已复制到粘贴板!
$ oc create secret generic storage-secret \
--from-literal=container="<BLOB_STORAGE_CONTAINER_NAME>" \
--from-literal=account_name="<BLOB_STORAGE_ACCOUNT_NAME>" \
--from-literal=audience="<AUDIENCE>" \
--from-literal=client_id="CLIENT_ID>" \
--from-literal=tenant_id="<TENANT_ID>"
-
audience- optional,默认为api://AzureADTokenExchange
2.2.5. Google Cloud Storage 复制链接链接已复制到粘贴板!
Google Cloud Storage 由 Tempo 和 Loki 支持。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
gcs:
bucket: bucket-name
keyJSONSecret:
name: gcs-secret
key: key.json
使用以下命令来创建 secret:
$ oc -n $NAMESPACE create secret generic gcs-secret \
--from-file=key.json="$GCS_KEY_FILE_PATH"
2.2.5.1. Tempo 和 Loki operator 支持的 secret 复制链接链接已复制到粘贴板!
$ oc create secret generic storage-secret \
--from-literal=bucketname="<BUCKET_NAME>" \
--from-literal=key.json="<PATH_TO_JSON_KEY_FILE>"
2.2.5.2. Google Cloud Storage WIF - Short lived 复制链接链接已复制到粘贴板!
Tempo 支持 Google Cloud Storage WIF 短。
spec:
capabilities:
tracing:
enabled: true
storage:
objectStorage:
gcsWIF:
bucket: bucket-name
keyJSONSecret:
name: gcs-secret
key: key.json
audience: # optional
使用以下命令来创建 secret:
$ oc -n $NAMESPACE create secret generic gcs-secret \
--from-file=key.json="$GCS_KEY_FILE_PATH"
第 3 章 配置 Cluster Observability Operator 以监控服务 复制链接链接已复制到粘贴板!
您可以通过配置由 Cluster Observability Operator (COO) 管理的监控堆栈来监控服务的指标。
要测试监控服务,请按照以下步骤执行:
- 部署定义服务端点的示例服务。
-
创建一个
ServiceMonitor对象,用于指定服务如何被 COO 监控。 -
创建
MonitoringStack对象来发现ServiceMonitor对象。
3.1. 为 Cluster Observability Operator 部署示例服务 复制链接链接已复制到粘贴板!
此配置会在用户定义的 ns1-coo 项目中部署一个名为 prometheus-coo-example-app 的示例服务。该服务会公开自定义 version 指标。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有命名空间管理权限的用户身份访问集群。
流程
创建名为
prometheus-coo-example-app.yaml的 YAML 文件,其中包含命名空间、部署和服务的以下配置详情:apiVersion: v1 kind: Namespace metadata: name: ns1-coo --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: replicas: 1 selector: matchLabels: app: prometheus-coo-example-app template: metadata: labels: app: prometheus-coo-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-coo-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-coo-example-app type: ClusterIP- 保存该文件。
运行以下命令,将配置应用到集群:
$ oc apply -f prometheus-coo-example-app.yaml运行以下命令验证 pod 是否正在运行,并观察输出:
$ oc -n ns1-coo get pod输出示例
NAME READY STATUS RESTARTS AGE prometheus-coo-example-app-0927545cb7-anskj 1/1 Running 0 81m
3.2. 指定 Cluster Observability Operator 如何监控服务 复制链接链接已复制到粘贴板!
要使用您在 "Deploying a sample service for Cluster Observability Operator" 部分创建的样本服务公开的指标,您必须将监控组件配置为从 /metrics 端点中提取指标。
您可以使用一个 ServiceMonitor 对象来创建此配置,指定如何监控该服务,或指定如何监控 pod 的 PodMonitor 对象。ServiceMonitor 对象需要一个 Service 对象。PodMonitor 对象不需要,它允许 MonitoringStack 对象直接从 Pod 公开的指标端点中提取指标。
此流程演示了如何在 ns1-coo 命名空间中为名为 prometheus-coo-example-app 的示例服务创建 ServiceMonitor 对象。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
您已在
ns1-coo命名空间中部署了prometheus-coo-example-app示例服务。注意prometheus-coo-example-app示例服务不支持 TLS 身份验证。
流程
创建名为
example-coo-app-service-monitor.yaml的 YAML 文件,其中包含以下ServiceMonitor对象配置详情:apiVersion: monitoring.rhobs/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-coo-example-monitor name: prometheus-coo-example-monitor namespace: ns1-coo spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-coo-example-app此配置定义
MonitoringStack对象将引用的ServiceMonitor对象,以提取由prometheus-coo-example-app示例服务公开的指标数据。运行以下命令,将配置应用到集群:
$ oc apply -f example-coo-app-service-monitor.yaml运行以下命令并验证
ServiceMonitor资源是否已创建并观察输出:$ oc -n ns1-coo get servicemonitors.monitoring.rhobs输出示例
NAME AGE prometheus-coo-example-monitor 81m
要提取目标 prometheus-coo-example-app 服务公开的指标数据,请创建一个 MonitoringStack 对象,该对象引用您在"指定如何监控 Cluster Observability Operator"部分中创建的 ServiceMonitor 对象。然后,此 MonitoringStack 对象可以发现服务并从中提取公开的指标数据。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
-
您已在
ns1-coo命名空间中部署了prometheus-coo-example-app示例服务。 -
您已在
ns1-coo命名空间中创建一个名为prometheus-coo-example-monitor的ServiceMonitor对象。
流程
-
为
MonitoringStack对象配置创建一个 YAML 文件。在本例中,将文件命名为example-coo-monitoring-stack.yaml。 添加以下
MonitoringStack对象配置详情:MonitoringStack对象示例apiVersion: monitoring.rhobs/v1alpha1 kind: MonitoringStack metadata: name: example-coo-monitoring-stack namespace: ns1-coo spec: logLevel: debug retention: 1d resourceSelector: matchLabels: k8s-app: prometheus-coo-example-monitor运行以下命令来应用
MonitoringStack对象:$ oc apply -f example-coo-monitoring-stack.yaml运行以下命令并检查输出,验证
MonitoringStack对象是否可用:$ oc -n ns1-coo get monitoringstack输出示例
NAME AGE example-coo-monitoring-stack 81m运行以下 comand,以从 Prometheus 检索有关活动目标的信息,并过滤输出以仅列出标有
app=prometheus-coo-example-app的目标。这会验证被发现哪些目标,并由 Prometheus 使用这个特定标签主动监控。$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/targets' | jq '.data.activeTargets[].discoveredLabels | select(.__meta_kubernetes_endpoints_label_app=="prometheus-coo-example-app")'输出示例
{ "__address__": "10.129.2.25:8080", "__meta_kubernetes_endpoint_address_target_kind": "Pod", "__meta_kubernetes_endpoint_address_target_name": "prometheus-coo-example-app-5d8cd498c7-9j2gj", "__meta_kubernetes_endpoint_node_name": "ci-ln-8tt8vxb-72292-6cxjr-worker-a-wdfnz", "__meta_kubernetes_endpoint_port_name": "web", "__meta_kubernetes_endpoint_port_protocol": "TCP", "__meta_kubernetes_endpoint_ready": "true", "__meta_kubernetes_endpoints_annotation_endpoints_kubernetes_io_last_change_trigger_time": "2024-11-05T11:24:09Z", "__meta_kubernetes_endpoints_annotationpresent_endpoints_kubernetes_io_last_change_trigger_time": "true", "__meta_kubernetes_endpoints_label_app": "prometheus-coo-example-app", "__meta_kubernetes_endpoints_labelpresent_app": "true", "__meta_kubernetes_endpoints_name": "prometheus-coo-example-app", "__meta_kubernetes_namespace": "ns1-coo", "__meta_kubernetes_pod_annotation_k8s_ovn_org_pod_networks": "{\"default\":{\"ip_addresses\":[\"10.129.2.25/23\"],\"mac_address\":\"0a:58:0a:81:02:19\",\"gateway_ips\":[\"10.129.2.1\"],\"routes\":[{\"dest\":\"10.128.0.0/14\",\"nextHop\":\"10.129.2.1\"},{\"dest\":\"172.30.0.0/16\",\"nextHop\":\"10.129.2.1\"},{\"dest\":\"100.64.0.0/16\",\"nextHop\":\"10.129.2.1\"}],\"ip_address\":\"10.129.2.25/23\",\"gateway_ip\":\"10.129.2.1\",\"role\":\"primary\"}}", "__meta_kubernetes_pod_annotation_k8s_v1_cni_cncf_io_network_status": "[{\n \"name\": \"ovn-kubernetes\",\n \"interface\": \"eth0\",\n \"ips\": [\n \"10.129.2.25\"\n ],\n \"mac\": \"0a:58:0a:81:02:19\",\n \"default\": true,\n \"dns\": {}\n}]", "__meta_kubernetes_pod_annotation_openshift_io_scc": "restricted-v2", "__meta_kubernetes_pod_annotation_seccomp_security_alpha_kubernetes_io_pod": "runtime/default", "__meta_kubernetes_pod_annotationpresent_k8s_ovn_org_pod_networks": "true", "__meta_kubernetes_pod_annotationpresent_k8s_v1_cni_cncf_io_network_status": "true", "__meta_kubernetes_pod_annotationpresent_openshift_io_scc": "true", "__meta_kubernetes_pod_annotationpresent_seccomp_security_alpha_kubernetes_io_pod": "true", "__meta_kubernetes_pod_controller_kind": "ReplicaSet", "__meta_kubernetes_pod_controller_name": "prometheus-coo-example-app-5d8cd498c7", "__meta_kubernetes_pod_host_ip": "10.0.128.2", "__meta_kubernetes_pod_ip": "10.129.2.25", "__meta_kubernetes_pod_label_app": "prometheus-coo-example-app", "__meta_kubernetes_pod_label_pod_template_hash": "5d8cd498c7", "__meta_kubernetes_pod_labelpresent_app": "true", "__meta_kubernetes_pod_labelpresent_pod_template_hash": "true", "__meta_kubernetes_pod_name": "prometheus-coo-example-app-5d8cd498c7-9j2gj", "__meta_kubernetes_pod_node_name": "ci-ln-8tt8vxb-72292-6cxjr-worker-a-wdfnz", "__meta_kubernetes_pod_phase": "Running", "__meta_kubernetes_pod_ready": "true", "__meta_kubernetes_pod_uid": "054c11b6-9a76-4827-a860-47f3a4596871", "__meta_kubernetes_service_label_app": "prometheus-coo-example-app", "__meta_kubernetes_service_labelpresent_app": "true", "__meta_kubernetes_service_name": "prometheus-coo-example-app", "__metrics_path__": "/metrics", "__scheme__": "http", "__scrape_interval__": "30s", "__scrape_timeout__": "10s", "job": "serviceMonitor/ns1-coo/prometheus-coo-example-monitor/0" }注意上面的示例使用
jq命令行 JSON 处理器来格式化输出,以方便使用。
3.4. 验证监控堆栈 复制链接链接已复制到粘贴板!
要验证监控堆栈是否正常工作,请访问 example 服务,然后查看收集的指标。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
-
您已在
ns1-coo命名空间中部署了prometheus-coo-example-app示例服务。 -
您已在
ns1-coo命名空间中创建一个名为prometheus-coo-example-monitor的ServiceMonitor对象。 -
您已在
ns1-coo命名空间中创建一个名为example-coo-monitoring-stack的MonitoringStack对象。
流程
创建一个路由,以公开
prometheus-coo-example-app服务示例。在终端中运行以下命令:$ oc expose svc prometheus-coo-example-app -n ns1-coo- 从浏览器或命令行访问路由,以生成指标。
在 Prometheus pod 上执行查询,以返回总 HTTP 请求指标:
$ oc -n ns1-coo exec -c prometheus prometheus-example-coo-monitoring-stack-0 -- curl -s 'http://localhost:9090/api/v1/query?query=http_requests_total'输出示例(为方便起见使用
jq进行格式化){ "status": "success", "data": { "resultType": "vector", "result": [ { "metric": { "__name__": "http_requests_total", "code": "200", "endpoint": "web", "instance": "10.129.2.25:8080", "job": "prometheus-coo-example-app", "method": "get", "namespace": "ns1-coo", "pod": "prometheus-coo-example-app-5d8cd498c7-9j2gj", "service": "prometheus-coo-example-app" }, "value": [ 1730807483.632, "3" ] }, { "metric": { "__name__": "http_requests_total", "code": "404", "endpoint": "web", "instance": "10.129.2.25:8080", "job": "prometheus-coo-example-app", "method": "get", "namespace": "ns1-coo", "pod": "prometheus-coo-example-app-5d8cd498c7-9j2gj", "service": "prometheus-coo-example-app" }, "value": [ 1730807483.632, "0" ] } ] } }
3.5. 在多个命名空间中 Scrape 目标 复制链接链接已复制到粘贴板!
要在多个命名空间中 Scrape 目标,请在 MonitoringStack 对象中设置命名空间和资源选择器。
先决条件
-
您可以使用具有
cluster-admin集群角色或具有命名空间管理权限的用户身份访问集群。 - 已安装 Cluster Observability Operator。
流程
部署以下命名空间对象和
MonitoringStackYAML 文件:MonitoringStack示例apiVersion: v1 kind: Namespace metadata: name: ns1-coo labels: monitoring.rhobs/stack: multi-ns --- apiVersion: monitoring.rhobs/v1alpha1 kind: MonitoringStack metadata: name: example-coo-monitoring-stack namespace: ns1-coo spec: logLevel: debug retention: 1d resourceSelector: matchLabels: k8s-app: prometheus-coo-example-monitor namespaceSelector: matchLabels: monitoring.rhobs/stack: multi-ns在命名空间
ns1-coo中部署示例应用程序,其中包含始终会触发的警报:apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: replicas: 1 selector: matchLabels: app: prometheus-coo-example-app template: metadata: labels: app: prometheus-coo-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-coo-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns1-coo spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-coo-example-app type: ClusterIP --- apiVersion: monitoring.rhobs/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-coo-example-monitor name: prometheus-coo-example-monitor namespace: ns1-coo spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-coo-example-app --- apiVersion: monitoring.rhobs/v1 kind: PrometheusRule metadata: name: example-alert namespace: ns1-coo labels: k8s-app: prometheus-coo-example-monitor spec: groups: - name: example rules: - alert: VersionAlert for: 1m expr: version{job="prometheus-coo-example-app"} > 0 labels: severity: warning在标有
monitoring.rhobs/stack: multi-ns的另一个命名空间中部署相同的示例应用程序:apiVersion: v1 kind: Namespace metadata: name: ns2-coo labels: monitoring.rhobs/stack: multi-ns --- apiVersion: apps/v1 kind: Deployment metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns2-coo spec: replicas: 1 selector: matchLabels: app: prometheus-coo-example-app template: metadata: labels: app: prometheus-coo-example-app spec: containers: - image: ghcr.io/rhobs/prometheus-example-app:0.4.2 imagePullPolicy: IfNotPresent name: prometheus-coo-example-app --- apiVersion: v1 kind: Service metadata: labels: app: prometheus-coo-example-app name: prometheus-coo-example-app namespace: ns2-coo spec: ports: - port: 8080 protocol: TCP targetPort: 8080 name: web selector: app: prometheus-coo-example-app type: ClusterIP --- apiVersion: monitoring.rhobs/v1 kind: ServiceMonitor metadata: labels: k8s-app: prometheus-coo-example-monitor name: prometheus-coo-example-monitor namespace: ns2-coo spec: endpoints: - interval: 30s port: web scheme: http selector: matchLabels: app: prometheus-coo-example-app
验证
验证 Prometheus 实例是否已添加新目标,以及警报是否已触发。使用 port-forward 命令公开 Prometheus 或
Monitoringstack实例部署的 Alertmanager 用户界面。Prometheus
$ oc port-forward -n ns1-coo pod/prometheus-example-coo-monitoring-stack-0 9090Alertmanager
$ oc port-forward -n ns1-coo pod/alertmanager-example-coo-monitoring-stack-0 9093-
通过浏览
http://localhost:9090/targets或http://localhost:9093/#/alerts来验证目标是否已被 scrape。