3.2. 在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry 对象
在 Red Hat OpenShift Container Platform 中创建 ServiceTelemetry
对象,以便 Service Telemetry Operator 为 Service Telemetry Framework (STF)部署创建支持组件。更多信息请参阅 第 3.2.1 节 “ServiceTelemetry 对象的主要参数”。
先决条件
- 您已部署了 STF 和支持的 operator。如需更多信息,请参阅 第 3.1 节 “在 Red Hat OpenShift Container Platform 环境中部署 Service Telemetry Framework”。
- 已安装 Cluster Observability Operator 以允许存储指标。如需更多信息,请参阅 第 3.1.1 节 “部署 Cluster Observability Operator”。
- 您已安装了 Red Hat OpenShift 的 cert-manager 以允许证书管理。如需更多信息,请参阅 第 3.1.2 节 “为 Red Hat OpenShift 部署 cert-manager”。
流程
- 登录到托管 STF 的 Red Hat OpenShift Container Platform 环境。
要部署 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
参数中。在 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
对象。
流程
编辑
ServiceTelemetry
对象:$ oc edit stf default
将 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)。
流程
列出可用的存储类:
$ 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
编辑
ServiceTelemetry
对象:$ oc edit stf default
将
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
对象。
流程
编辑
ServiceTelemetry
对象:$ oc edit stf default
将
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
在
userSecretName
参数中创建名为 的 secret,以存储基本身份验证
凭证$ oc create secret generic elasticsearch-es-elastic-user --from-literal=elastic='<PASSWORD>'
将 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
创建智能网关。
您可以创建一个云对象列表来控制为定义的云创建哪个智能网关。每个云都由数据类型和收集器组成。数据类型是 指标
或 事件
。每种数据类型由一个收集器列表、消息总线订阅地址和一个参数组成,以启用调试。可用的指标收集器有 collectd
、ceilometer
和 sensubility
。适用于事件的可用收集器是 collectd
和 ceilometer
。确保每个收集器的订阅地址对于每个云、数据类型和收集器组合都是唯一的。
默认 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
参数的每个项目代表一个云实例。云实例包含三个顶级参数: 名称
、指标
和事件
。metrics
和 events
参数代表该数据类型存储的对应后端。collectors
参数指定由两个所需参数( collectorType
和 subscriptionAddress
)组成的对象列表,它们代表智能网关的实例。collectorType
参数指定 collectd、Ceilometer 或 Sensubility 收集的数据。subscriptionAddress
参数提供智能网关订阅的 AMQ Interconnect 地址。
您可以使用 collectors
参数中的一个可选布尔值参数 debugEnabled
在运行的 Smart Gateway pod 中启用额外的控制台调试功能。
其他资源
- 有关删除默认智能网关的详情,请参考 第 4.3.3 节 “删除默认智能网关”。
- 有关如何配置多个云的详情,请参考 第 4.3 节 “配置多个云”。
警报参数
设置 警报
参数,以创建 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
传输。