16.4. 配置 Cluster Observability Operator 以监控服务


重要

Cluster Observability Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

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

您可以通过配置由 Cluster Observability Operator (COO) 管理的监控堆栈来监控服务的指标。

要测试监控服务,请按照以下步骤执行:

  • 部署定义服务端点的示例服务。
  • 创建一个 ServiceMonitor 对象,用于指定服务如何被 COO 监控。
  • 创建 MonitoringStack 对象来发现 ServiceMonitor 对象。

16.4.1. 为 Cluster Observability Operator 部署示例服务

此配置会在用户定义的 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

16.4.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 身份验证。

流程

  1. 创建名为 example-coo-app-service-monitor.yaml 的 YAML 文件,其中包含以下 ServiceMonitor 对象配置详情:

    apiVersion: monitoring.rhobs/v1alpha1
    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 示例服务公开的指标数据。

  2. 运行以下命令,将配置应用到集群:

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

    $ oc -n ns1-coo get servicemonitor

    输出示例

    NAME                         AGE
    prometheus-coo-example-monitor   81m

16.4.3. 为 Cluster Observability Operator 创建 MonitoringStack 对象

要提取目标 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-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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.