×

集群可观测性操作器仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让客户提前访问即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

您可以通过配置由集群可观测性操作器 (COO) 管理的监控堆栈来监控服务的指标。

要测试监控服务,请按照以下步骤操作

  • 部署定义服务端点的示例服务。

  • 创建一个ServiceMonitor对象,该对象指定 COO 如何监控该服务。

  • 创建一个MonitoringStack对象来发现ServiceMonitor对象。

为集群可观测性操作器部署示例服务

此配置在用户定义的ns1-coo项目中部署名为prometheus-coo-example-app的示例服务。该服务公开自定义version指标。

先决条件
  • 您可以作为具有cluster-admin集群角色的用户或作为具有命名空间管理权限的用户访问集群。

步骤
  1. 创建一个名为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
  2. 保存文件。

  3. 通过运行以下命令将配置应用于集群

    $ oc apply -f prometheus-coo-example-app.yaml
  4. 通过运行以下命令并观察输出,验证 Pod 是否正在运行

    $ oc -n ns1-coo get pod
    示例输出
    NAME                                      READY     STATUS    RESTARTS   AGE
    prometheus-coo-example-app-0927545cb7-anskj   1/1       Running   0          81m

指定集群可观测性操作器如何监控服务

要使用您在“为集群可观测性操作器部署示例服务”部分中创建的示例服务公开的指标,您必须配置监控组件以从/metrics端点抓取指标。

您可以使用ServiceMonitor对象(指定如何监控服务)或PodMonitor对象(指定如何监控 Pod)来创建此配置。ServiceMonitor对象需要一个Service对象。PodMonitor对象不需要,这使得MonitoringStack对象可以直接从 Pod 公开的指标端点抓取指标。

此过程演示如何为ns1-coo命名空间中的名为prometheus-coo-example-app的示例服务创建一个ServiceMonitor对象。

先决条件
  • 您可以作为具有cluster-admin集群角色的用户或作为具有命名空间管理权限的用户访问集群。

  • 您已安装集群可观测性操作器。

  • 您已在ns1-coo命名空间中部署了prometheus-coo-example-app示例服务。

    prometheus-coo-example-app示例服务不支持 TLS 身份验证。

步骤
  1. 创建一个名为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

    此配置定义了一个ServiceMonitor对象,MonitoringStack对象将引用该对象来抓取prometheus-coo-example-app示例服务公开的指标数据。

  2. 通过运行以下命令将配置应用于集群

    $ oc apply -f example-coo-app-service-monitor.yaml
  3. 运行以下命令并观察输出,验证ServiceMonitor资源是否已创建。

    $ oc -n ns1-coo get servicemonitors.monitoring.rhobs
    示例输出
    NAME                         AGE
    prometheus-coo-example-monitor   81m

为集群可观测性操作员创建MonitoringStack对象

要抓取目标prometheus-coo-example-app服务公开的指标数据,请创建一个引用你在“为集群可观测性操作员指定服务的监控方式”部分中创建的ServiceMonitor对象的MonitoringStack对象。然后,此MonitoringStack对象可以发现该服务并从中抓取公开的指标数据。

先决条件
  • 您可以作为具有cluster-admin集群角色的用户或作为具有命名空间管理权限的用户访问集群。

  • 您已安装集群可观测性操作器。

  • 您已在ns1-coo命名空间中部署了prometheus-coo-example-app示例服务。

  • 您已在ns1-coo命名空间中创建了一个名为prometheus-coo-example-monitorServiceMonitor对象。

步骤
  1. MonitoringStack对象配置创建一个YAML文件。在此示例中,将文件命名为example-coo-monitoring-stack.yaml

  2. 添加以下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
  3. 运行以下命令应用MonitoringStack对象。

    $ oc apply -f example-coo-monitoring-stack.yaml
  4. 运行以下命令并检查输出,验证MonitoringStack对象是否可用。

    $ oc -n ns1-coo get monitoringstack
    示例输出
    NAME                         AGE
    example-coo-monitoring-stack   81m