搜索

3.2. 在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry 对象

download PDF

在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry 对象,以便 Service Telemetry Operator 为 Service Telemetry Framework (STF)部署创建支持组件。更多信息请参阅 第 3.2.1 节 “ServiceTelemetry 对象的主要参数”

先决条件

流程

  1. 登录到托管 STF 的 Red Hat OpenShift Container Platform 环境。
  2. 要部署 STF 会导致要配置指标交付的核心组件,请创建一个 ServiceTelemetry 对象:

    $ oc apply -f - <<EOF
    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    metadata:
      name: default
      namespace: service-telemetry
    spec:
      alerting:
        alertmanager:
          storage:
            persistent:
              pvcStorageRequest: 20G
            strategy: persistent
        enabled: true
      backends:
        metrics:
          prometheus:
            enabled: true
            scrapeInterval: 30s
            storage:
              persistent:
                pvcStorageRequest: 20G
              retention: 24h
              strategy: persistent
      clouds:
      - metrics:
          collectors:
          - bridge:
              ringBufferCount: 15000
              ringBufferSize: 16384
              verbose: false
            collectorType: collectd
            debugEnabled: false
            subscriptionAddress: collectd/cloud1-telemetry
          - bridge:
              ringBufferCount: 15000
              ringBufferSize: 16384
              verbose: false
            collectorType: ceilometer
            debugEnabled: false
            subscriptionAddress: anycast/ceilometer/cloud1-metering.sample
          - bridge:
              ringBufferCount: 15000
              ringBufferSize: 65535
              verbose: false
            collectorType: sensubility
            debugEnabled: false
            subscriptionAddress: sensubility/cloud1-telemetry
        name: cloud1
      observabilityStrategy: use_redhat
      transports:
        qdr:
          auth: basic
          certificates:
            caCertDuration: 70080h
            endpointCertDuration: 70080h
          enabled: true
          web:
            enabled: false
    EOF

    要覆盖这些默认值,请将配置添加到 spec 参数中。

  3. 在 Service Telemetry Operator 中查看 STF 部署日志:

    $ oc logs --selector name=service-telemetry-operator
    
    ...
    --------------------------- Ansible Task Status Event StdOut  -----------------
    
    PLAY RECAP *********************************************************************
    localhost                  : ok=90   changed=0    unreachable=0    failed=0    skipped=26   rescued=0    ignored=0

验证

  • 要确定所有工作负载是否都正常运行,请查看 pod 和每个 pod 的状态。

    $ oc get pods
    
    NAME                                                        READY   STATUS    RESTARTS   AGE
    alertmanager-default-0                                      3/3     Running   0          123m
    default-cloud1-ceil-meter-smartgateway-7dfb95fcb6-bs6jl     3/3     Running   0          122m
    default-cloud1-coll-meter-smartgateway-674d88d8fc-858jk     3/3     Running   0          122m
    default-cloud1-sens-meter-smartgateway-9b869695d-xcssf      3/3     Running   0          122m
    default-interconnect-6cbf65d797-hk7l6                       1/1     Running   0          123m
    interconnect-operator-7bb99c5ff4-l6xc2                      1/1     Running   0          138m
    prometheus-default-0                                        3/3     Running   0          122m
    service-telemetry-operator-7966cf57f-g4tx4                  1/1     Running   0          138m
    smart-gateway-operator-7d557cb7b7-9ppls                     1/1     Running   0          138m

3.2.1. ServiceTelemetry 对象的主要参数

您可以设置 ServiceTelemetry 对象的以下主要配置参数来配置 STF 部署:

  • 警报
  • 后端
  • 图表
  • HighAvailability
  • 传输
backend 参数

设置 backend 参数的值,为指标和事件分配存储后端,并启用 clouds 参数定义的智能网关。如需更多信息,请参阅 “clouds 参数”一节

您可以使用 Prometheus 作为指标存储后端,Elasticsearch 作为事件存储后端。Service Telemetry Operator 可以创建 Prometheus Operator 监视的自定义资源对象来创建 Prometheus 工作负载。您需要外部部署 Elasticsearch 来存储事件。

将 Prometheus 启用为指标的存储后端

要将 Prometheus 启用为指标的存储后端,您必须配置 ServiceTelemetry 对象。

流程

  1. 编辑 ServiceTelemetry 对象:

    $ oc edit stf default
  2. 将 backends.metrics.prometheus.enabled 参数的值设置为 true

    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    metadata:
      name: default
      namespace: service-telemetry
    spec:
      [...]
      backends:
        metrics:
          prometheus:
            enabled: true
为 Prometheus 配置持久性存储

在 backend. metrics.prometheus.storage.persistent 中设置附加参数,以配置 Prometheus 的持久性存储选项,如存储类和卷大小。

使用 storageClass 参数定义后端存储类。如果没有设置此参数,Service Telemetry Operator 将使用 Red Hat OpenShift Container Platform 集群的默认存储类。

使用 pvcStorageRequest 参数定义存储请求所需的最小卷大小。默认情况下,Service Telemetry Operator 请求大小为 20G (20 Gigabytes)。

流程

  1. 列出可用的存储类:

    $ oc get storageclasses
    NAME                 PROVISIONER                RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
    csi-manila-ceph      manila.csi.openstack.org   Delete          Immediate              false                  20h
    standard (default)   kubernetes.io/cinder       Delete          WaitForFirstConsumer   true                   20h
    standard-csi         cinder.csi.openstack.org   Delete          WaitForFirstConsumer   true                   20h
  2. 编辑 ServiceTelemetry 对象:

    $ oc edit stf default
  3. backends.metrics.prometheus.enabled 参数的值设置为 true,将 backends.metrics.prometheus.storage.strategy 的值设置为 persistent

    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    metadata:
      name: default
      namespace: service-telemetry
    spec:
      [...]
      backends:
        metrics:
          prometheus:
            enabled: true
            storage:
              strategy: persistent
              persistent:
                storageClass: standard-csi
                pvcStorageRequest: 50G
为事件启用 Elasticsearch 作为存储后端
注意

STF 的早期版本在 Kubernetes Operator (ECK)上支持社区支持的 Elastic Cloud。在 STF 1.5.3 中弃用了 Elasticsearch 管理功能。您仍然可以转发到使用 ECK 部署和管理的现有 Elasticsearch 实例,但您无法管理 Elasticsearch 对象的创建。当您升级 STF 部署时,现有的 Elasticsearch 对象和部署会保留,但不再由 STF 管理。

有关在 STF 中使用 Elasticsearch 的更多信息,请参阅 在 Elasticsearch 中使用 Service Telemetry Framework 的 红帽知识库文章。

要启用转发到 Elasticsearch 作为存储后端的事件,您必须配置 ServiceTelemetry 对象。

流程

  1. 编辑 ServiceTelemetry 对象:

    $ oc edit stf default
  2. backends.events.elasticsearch.enabled 参数的值设置为 true,并使用相关的 Elasticsearch 实例配置 hostUrl

    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    metadata:
      name: default
      namespace: service-telemetry
    spec:
      [...]
      backends:
        events:
          elasticsearch:
            enabled: true
            forwarding:
              hostUrl: https://external-elastic-http.domain:9200
              tlsServerName: ""
              tlsSecretName: elasticsearch-es-cert
              userSecretName: elasticsearch-es-elastic-user
              useBasicAuth: true
              useTls: true
  3. userSecretName 参数中创建名为 的 secret,以存储 基本身份验证 凭证

    $ oc create secret generic elasticsearch-es-elastic-user --from-literal=elastic='<PASSWORD>'
  4. 将 CA 证书复制到名为 EXTERNAL-ES-CA.pem 的文件中,然后在 tlsSecretName 参数中创建名为 的 secret,使其可供 STF 使用

    $ cat EXTERNAL-ES-CA.pem
    -----BEGIN CERTIFICATE-----
    [...]
    -----END CERTIFICATE-----
    
    $ oc create secret generic elasticsearch-es-cert --from-file=ca.crt=EXTERNAL-ES-CA.pem
clouds 参数

配置 clouds 参数,以定义哪些智能网关对象部署并提供监控云环境的接口,以连接到 STF 实例。如果支持后端可用,则会为默认云配置创建指标和事件智能网关。默认情况下,Service Telemetry Operator 为 cloud1 创建智能网关。

您可以创建一个云对象列表来控制为定义的云创建哪个智能网关。每个云都由数据类型和收集器组成。数据类型是 指标事件。每种数据类型由一个收集器列表、消息总线订阅地址和一个参数组成,以启用调试。可用的指标收集器有 collectdceilometersensubility。适用于事件的可用收集器是 collectdceilometer。确保每个收集器的订阅地址对于每个云、数据类型和收集器组合都是唯一的。

默认 cloud1 配置由以下 ServiceTelemetry 对象表示,它为特定云实例提供 collectd、Ceilometer 和 Sensubility 数据收集器的指标和数据存储:

apiVersion: infra.watch/v1beta1
kind: ServiceTelemetry
metadata:
  name: default
  namespace: service-telemetry
spec:
  clouds:
    - name: cloud1
      metrics:
        collectors:
          - collectorType: collectd
            subscriptionAddress: collectd/cloud1-telemetry
          - collectorType: ceilometer
            subscriptionAddress: anycast/ceilometer/cloud1-metering.sample
          - collectorType: sensubility
            subscriptionAddress: sensubility/cloud1-telemetry
            debugEnabled: false
      events:
        collectors:
          - collectorType: collectd
            subscriptionAddress: collectd/cloud1-notify
          - collectorType: ceilometer
            subscriptionAddress: anycast/ceilometer/cloud1-event.sample

clouds 参数的每个项目代表一个云实例。云实例包含三个顶级参数: 名称指标 和事件metricsevents 参数代表该数据类型存储的对应后端。collectors 参数指定由两个所需参数( collectorTypesubscriptionAddress )组成的对象列表,它们代表智能网关的实例。collectorType 参数指定 collectd、Ceilometer 或 Sensubility 收集的数据。subscriptionAddress 参数提供智能网关订阅的 AMQ Interconnect 地址。

您可以使用 collectors 参数中的一个可选布尔值参数 debugEnabled 在运行的 Smart Gateway pod 中启用额外的控制台调试功能。

其他资源

警报参数

设置 警报 参数,以创建 Alertmanager 实例和存储后端。默认情况下启用 警报。更多信息请参阅 第 6.3 节 “Service Telemetry Framework 中的警报”

graphing 参数

设置 graphing 参数来创建 Grafana 实例。默认情况下禁用 图形。更多信息请参阅 第 6.1 节 “Service Telemetry Framework 中的仪表板”

highAvailability 参数
警告

STF 高可用性(HA)模式已弃用,在生产环境中不被支持。Red Hat OpenShift Container Platform 是一个高可用性平台,如果启用了 HA 模式,您可以在 STF 中造成问题和复杂调试。

设置 highAvailability 参数,以实例化 STF 组件的多个副本,以减少失败或被重新调度的组件恢复时间。默认情况下禁用 highAvailability。更多信息请参阅 第 6.6 节 “高可用性”

transports 参数

设置 transports 参数,为 STF 部署启用消息总线。目前唯一支持的传输是 AMQ Interconnect。默认情况下启用 qdr 传输。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.