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 部署的
ServiceTelemetry对象,创建一个带有空spec参数的ServiceTelemetry对象:$ oc apply -f - <<EOF apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: name: default namespace: service-telemetry spec: {} EOF使用空
spec参数创建ServiceTelemetry对象会导致带有以下默认设置的 STF 部署:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: name: default namespace: service-telemetry spec: alerting: alertmanager: receivers: snmpTraps: alertOidLabel: oid community: public enabled: false port: 162 retries: 5 target: 192.168.24.254 timeout: 1 trapDefaultOid: 1.3.6.1.4.1.50495.15.1.2.1 trapDefaultSeverity: '' trapOidPrefix: 1.3.6.1.4.1.50495.15 storage: persistent: pvcStorageRequest: 20G strategy: persistent enabled: true backends: events: elasticsearch: certificates: caCertDuration: 70080h endpointCertDuration: 70080h storage: persistent: pvcStorageRequest: 20Gi strategy: persistent enabled: false version: 7.16.1 logs: loki: storage: objectStorageSecret: test storageClass: standard enabled: false flavor: 1x.extra-small replicationFactor: 1 metrics: prometheus: storage: persistent: pvcStorageRequest: 20G retention: 24h strategy: persistent enabled: true scrapeInterval: 10s clouds: - events: collectors: - bridge: ringBufferCount: 15000 ringBufferSize: 16384 verbose: false collectorType: collectd debugEnabled: false subscriptionAddress: collectd/cloud1-notify - bridge: ringBufferCount: 15000 ringBufferSize: 16384 verbose: false collectorType: ceilometer debugEnabled: false subscriptionAddress: anycast/ceilometer/cloud1-event.sample 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: 16384 verbose: false collectorType: sensubility debugEnabled: false subscriptionAddress: sensubility/cloud1-telemetry name: cloud1 graphing: grafana: adminPassword: secret adminUser: root disableSignoutMenu: false ingressEnabled: false enabled: false highAvailability: enabled: false transports: qdr: certificates: caCertDuration: 70080h endpointCertDuration: 70080h web: enabled: false enabled: true observabilityStrategy: use_community要覆盖这些默认值,请将配置添加到
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 的状态。
注意如果将 backend.
events.elasticsearch.enabled参数设置为true,则通知 Smart Gateways 会在 Elasticsearch 启动前报告Error和CrashLoopBackOff错误消息。$ oc get pods NAME READY STATUS RESTARTS AGE alertmanager-default-0 3/3 Running 0 4m7s default-cloud1-ceil-meter-smartgateway-669c6cdcf9-xvdvx 3/3 Running 0 3m46s default-cloud1-coll-meter-smartgateway-585855c59d-858rf 3/3 Running 0 3m46s default-cloud1-sens-meter-smartgateway-6f8dffb645-hhgkw 3/3 Running 0 3m46s default-interconnect-6994ff546-fx7jn 1/1 Running 0 4m18s elastic-operator-9f44cdf6c-csvjq 1/1 Running 0 19m interconnect-operator-646bfc886c-gx55n 1/1 Running 0 25m prometheus-default-0 3/3 Running 0 3m33s prometheus-operator-54d644d8d7-wzdlh 1/1 Running 0 20m service-telemetry-operator-54f6f7b6d-nfhwx 1/1 Running 0 18m smart-gateway-operator-9bbd7c56c-76w67 1/1 Running 0 18m
3.2.1. ServiceTelemetry 对象的主要参数
ServiceTelemetry 对象由以下主要配置参数组成:
-
警报 -
后端 -
云 -
图表 -
highAvailability -
transports
您可以配置每个配置参数,以在 STF 部署中提供不同的功能。
backend 参数
使用 backend 参数控制可用于指标和事件的存储后端,并控制 clouds 参数定义的智能网关的启用。如需更多信息,请参阅 “clouds 参数”一节。
您可以使用 Prometheus 作为指标存储后端,Elasticsearch 作为事件存储后端。您可以使用 Service Telemetry Operator 创建 Prometheus Operator 和 Kubernetes Operator 上的 Elastic Cloud 的其他自定义资源对象,以创建 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 作为存储后端
要将 Elasticsearch 作为事件的存储后端启用,您必须配置 ServiceTelemetry 对象。
流程
编辑
ServiceTelemetry对象:$ oc edit stf default
将 backends.events.elasticsearch.enabled 参数的值设置为
true:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: name: default namespace: service-telemetry spec: [...] backends: events: elasticsearch: enabled: true
为 Elasticsearch 配置持久性存储
使用 backend. events.elasticsearch.storage.persistent 中定义的附加参数为 Elasticsearch 配置持久性存储选项,如存储类和卷大小。
使用 storageClass 定义后端存储类。如果没有设置此参数,Service Telemetry Operator 将使用 Red Hat OpenShift Container Platform 集群的默认存储类。
使用 pvcStorageRequest 参数定义满足存储请求的最低要求大小。如果静态定义了卷,则使用大于请求的卷大小。默认情况下,Service Telemetry Operator 请求大小为 20Gi (20 Gibibytes)。
流程
列出可用的存储类:
$ 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.events.elasticsearch.enabled 参数的值设置为
true,将 backends.events.elasticsearch.storage.strategy 的值设置为persistent:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry metadata: name: default namespace: service-telemetry spec: [...] backends: events: elasticsearch: enabled: true version: 7.16.1 storage: strategy: persistent persistent: storageClass: standard-csi pvcStorageRequest: 50G
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 节 “配置多个云”。
警报参数
使用 alert 参数来控制 Alertmanager 实例的创建以及存储后端的配置。默认情况下启用 警报。更多信息请参阅 第 5.3 节 “Service Telemetry Framework 中的警报”。
graphing 参数
使用 graphing 参数来控制 Grafana 实例的创建。默认情况下禁用 图形。更多信息请参阅 第 5.1 节 “Service Telemetry Framework 中的仪表板”。
highAvailability 参数
使用 highAvailability 参数控制 STF 组件的多个副本的实例化,以减少失败或被重新调度的组件恢复时间。默认情况下禁用 highAvailability。更多信息请参阅 第 5.6 节 “高可用性”。
transports 参数
使用 transports 参数来控制为 STF 部署启用消息总线。目前唯一支持的传输是 AMQ Interconnect。默认情况下启用 qdr 传输。