第 4 章 为 Service Telemetry Framework 配置 Red Hat OpenStack Platform director
要收集指标、事件或两者,并将它们发送到 Service Telemetry Framework (STF)存储域,您必须配置 Red Hat OpenStack Platform (RHOSP) overcloud 以启用数据收集和传输。
STF 可以同时支持单云和多个云。为单个云安装设置 RHOSP 和 STF 中的默认配置。
- 有关使用默认配置的单个 RHOSP overcloud 部署,请参阅 第 4.1 节 “使用 director 为 Service Telemetry Framework 部署 Red Hat OpenStack Platform overcloud”。
- 要为多个云规划您的 RHOSP 安装和配置 STF,请参阅 第 4.3 节 “配置多个云”。
作为 RHOSP overcloud 部署的一部分,您可能需要在环境中配置额外的功能:
作为使用 director 的 Red Hat OpenStack Platform (RHOSP) overcloud 部署的一部分,您必须配置数据收集器和数据传输到 Service Telemetry Framework (STF)。
流程
其他资源
- 有关使用 director 部署 OpenStack 云的更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform。
- 要通过 AMQ Interconnect 收集数据,请查看 amqp1 插件。
要将 Red Hat OpenStack Platform (RHOSP) overcloud 连接到 Service Telemetry Framework (STF),检索在 STF 中运行的 AMQ Interconnect 的 CA 证书,并在 RHOSP 配置中使用证书。
流程
查看 STF 中的可用证书列表:
$ oc get secrets检索并记录
default-interconnect-selfsignedSecret 的内容:$ oc get secret/default-interconnect-selfsigned -o jsonpath='{.data.ca\.crt}' | base64 -d
4.1.2. 检索 AMQ Interconnect 密码 复制链接链接已复制到粘贴板!
当您为 Service Telemetry Framework (STF)配置 Red Hat OpenStack Platform (RHOSP) overcloud 时,您必须在 STF 连接文件中提供 AMQ Interconnect 密码。
您可以通过将 ServiceTelemetry spec 的 transports.qdr.auth 参数的值设置为 none,在 AMQ Interconnect 连接中禁用基本身份验证。在 STF 的 1.5.3 之前的版本中没有 transports.qdr.auth 参数,因此默认行为是禁用基本身份验证。在 STF 1.5.3 或更高版本的新安装中,transports.qdr.auth 的默认值是 basic,但如果您升级到 STF 1.5.3,则 transports.qdr.auth 的默认值为 none。
流程
- 登录到托管 STF 的 Red Hat OpenShift Container Platform 环境。
进入
service-telemetry项目:$ oc project service-telemetry检索 AMQ Interconnect 密码:
$ oc get secret default-interconnect-users -o json | jq -r .data.guest | base64 -d
4.1.3. 检索 AMQ Interconnect 路由地址 复制链接链接已复制到粘贴板!
当您为 Service Telemetry Framework (STF)配置 Red Hat OpenStack Platform (RHOSP) overcloud 时,您必须在 STF 连接文件中提供 AMQ Interconnect 路由地址。
流程
- 登录到托管 STF 的 Red Hat OpenShift Container Platform 环境。
进入
service-telemetry项目:$ oc project service-telemetry检索 AMQ Interconnect 路由地址:
$ oc get routes -ogo-template='{{ range .items }}{{printf "%s\n" .spec.host }}{{ end }}' | grep "\-5671" default-interconnect-5671-service-telemetry.apps.infra.watch
4.1.4. 为 STF 创建基本配置 复制链接链接已复制到粘贴板!
要配置基本参数,以便为 Service Telemetry Framework (STF)提供兼容数据收集和传输,您必须创建一个定义默认数据收集值的文件。
流程
-
以
stack用户身份登录 undercloud 主机。 在
/home/stack目录中创建一个名为enable-stf.yaml的配置文件。重要将
PipelinePublishers设置为空列表会导致没有指标数据传递给 RHOSP 遥测组件,如 Gnocchi 或 Panko。如果您需要将数据发送到其他管道,Ceilometer 轮询间隔为30秒,您在ExtraConfig中指定,可能会认为 RHOSP 遥测组件。您必须将间隔增加到较大的值,如300,这会减少 STF 中的遥测解析。
enable-stf.yaml
parameter_defaults:
# only send to STF, not other publishers
PipelinePublishers: []
# manage the polling and pipeline configuration files for Ceilometer agents
ManagePolling: true
ManagePipeline: true
ManageEventPipeline: false
# enable Ceilometer metrics
CeilometerQdrPublishMetrics: true
# enable collection of API status
CollectdEnableSensubility: true
CollectdSensubilityTransport: amqp1
# enable collection of containerized service metrics
CollectdEnableLibpodstats: true
# set collectd overrides for higher telemetry resolution and extra plugins
# to load
CollectdConnectionType: amqp1
CollectdAmqpInterval: 30
CollectdDefaultPollingInterval: 30
# to collect information about the virtual memory subsystem of the kernel
# CollectdExtraPlugins:
# - vmem
# set standard prefixes for where metrics are published to QDR
MetricsQdrAddresses:
- prefix: 'collectd'
distribution: multicast
- prefix: 'anycast/ceilometer'
distribution: multicast
ExtraConfig:
ceilometer::agent::polling::polling_interval: 30
ceilometer::agent::polling::polling_meters:
- cpu
- memory.usage
# to avoid filling the memory buffers if disconnected from the message bus
# note: this may need an adjustment if there are many metrics to be sent.
collectd::plugin::amqp1::send_queue_limit: 5000
# to receive extra information about virtual memory, you must enable vmem plugin in CollectdExtraPlugins
# collectd::plugin::vmem::verbose: true
# provide name and uuid in addition to hostname for better correlation
# to ceilometer data
collectd::plugin::virt::hostname_format: "name uuid hostname"
# to capture all extra_stats metrics, comment out below config
collectd::plugin::virt::extra_stats: cpu_util vcpu disk
# provide the human-friendly name of the virtual instance
collectd::plugin::virt::plugin_instance_format: metadata
# set memcached collectd plugin to report its metrics by hostname
# rather than host IP, ensuring metrics in the dashboard remain uniform
collectd::plugin::memcached::instances:
local:
host: "%{hiera('fqdn_canonical')}"
port: 11211
# report root filesystem storage metrics
collectd::plugin::df::ignoreselected: false
4.1.5. 为 overcloud 配置 STF 连接 复制链接链接已复制到粘贴板!
要配置 Service Telemetry Framework (STF)连接,您必须创建一个文件,其中包含 overcloud 到 STF 部署的 AMQ Interconnect 的连接配置。启用 STF 中指标和存储的指标集合,并部署 overcloud。默认配置是用于具有默认消息总线主题的单个云实例。有关多个云部署的配置,请参阅 第 4.3 节 “配置多个云”。
先决条件
- 从由 STF 部署的 AMQ Interconnect 检索 CA 证书。更多信息请参阅 第 4.1.1 节 “从 Service Telemetry Framework 获取用于 overcloud 配置的 CA 证书”。
- 检索 AMQ Interconnect 密码。如需更多信息,请参阅 第 4.1.2 节 “检索 AMQ Interconnect 密码”。
- 检索 AMQ Interconnect 路由地址。更多信息请参阅 第 4.1.3 节 “检索 AMQ Interconnect 路由地址”。
流程
-
以
stack用户身份登录 undercloud 主机。 -
在
/home/stack目录中创建一个名为stf-connectors.yaml的配置文件。 在
stf-connectors.yaml文件中,配置MetricsQdrConnectors地址,以将 overcloud 上的 AMQ Interconnect 连接到 STF 部署。您可以在此文件中配置 Sensubility、Ceilometer 和 collectd 的主题地址,以匹配 STF 中的默认值。有关自定义主题和云配置的详情,请参考 第 4.3 节 “配置多个云”。stf-connectors.yaml
resource_registry: OS::TripleO::Services::Collectd: /usr/share/openstack-tripleo-heat-templates/deployment/metrics/collectd-container-puppet.yaml parameter_defaults: ExtraConfig: qdr::router_id: "%{::hostname}.cloud1" MetricsQdrConnectors: - host: default-interconnect-5671-service-telemetry.apps.infra.watch port: 443 role: edge verifyHostname: false sslProfile: sslProfile saslUsername: guest@default-interconnect saslPassword: <password_from_stf> MetricsQdrSSLProfiles: - name: sslProfile caCertFileContent: | -----BEGIN CERTIFICATE----- <snip> -----END CERTIFICATE----- CeilometerQdrMetricsConfig: driver: amqp topic: cloud1-metering CollectdAmqpInstances: cloud1-telemetry: format: JSON presettle: false CollectdSensubilityResultsChannel: sensubility/cloud1-telemetry-
qdr::router_id配置是覆盖使用主机的完全限定域名(FQDN)的默认值。在某些情况下,FQDN 可能会导致路由器 ID 长度大于 61 个字符,这会导致 QDR 连接失败。对于带有较短的 FQDN 值的部署,这不是必要条件。 -
resource_registry配置直接加载 collectd 服务,因为您没有为多个云部署包含collectd-write-qdr.yaml环境文件。 -
将
MetricsQdrConnectors的主机子参数替换为您在 第 4.1.3 节 “检索 AMQ Interconnect 路由地址” 中检索的值。 -
将
MetricsQdrConnector> 部分替换为您在 第 4.1.2 节 “检索 AMQ Interconnect 密码” 中检索的值。s的saslPassword子参数中的 <password_from_stf -
将
caCertFileContent参数替换为 第 4.1.1 节 “从 Service Telemetry Framework 获取用于 overcloud 配置的 CA 证书” 中检索的内容。 -
设置
CeilometerQdrMetricsConfig.topic的topic值,以定义 Ceilometer 指标的主题。该值是云的唯一标识符,如cloud1-metering。 -
设置
CollectdAmqpInstances子参数,以定义 collectd 指标的主题。部分名称是云的唯一标识符,如cloud1-telemetry。 -
设置
CollectdSensubilityResultsChannel,以定义 collectd-sensubility 事件的主题。该值是云的唯一主题标识符,如sensubility/cloud1-telemetry。
-
当您为 collectd 和 Ceilometer 定义主题时,您提供的值将转换为智能网关客户端用于侦听消息的完整主题。
Ceilometer 主题值被转换为主题地址 anycast/ceilometer/<TOPIC>.sample,collectd 主题值被转换为主题地址 collectd/<TOPIC>。sensubility 的值是完整主题路径,且没有从主题值转换为主题地址。
有关 ServiceTelemetry 对象中的云配置示例,请参阅 “clouds 参数”一节。
4.1.6. 部署 overcloud 复制链接链接已复制到粘贴板!
使用所需的环境文件部署或更新 overcloud,以便收集数据并传输到 Service Telemetry Framework (STF)。
流程
-
以
stack用户身份登录 undercloud 主机。 查找
stackrcundercloud 凭证文件:$ source ~/stackrc使用其他环境文件将数据收集和 AMQ Interconnect 环境文件添加到堆栈中,并部署 overcloud:
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /usr/share/openstack-tripleo-heat-templates/environments/metrics/ceilometer-write-qdr.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/metrics/qdr-edge-only.yaml \ -e /home/stack/enable-stf.yaml \ -e /home/stack/stf-connectors.yaml-
包含
ceilometer-write-qdr.yaml文件,以确保将 Ceilometer 遥测发送到 STF。 -
包含
qdr-edge-only.yaml文件,以确保消息总线已启用并连接到 STF 消息总线路由器。 -
包含
enable-stf.yaml环境文件,以确保正确配置了默认值。 -
包含
stf-connectors.yaml环境文件以定义与 STF 的连接。
-
包含
4.1.7. 验证客户端安装 复制链接链接已复制到粘贴板!
要验证来自 Service Telemetry Framework (STF)存储域的数据收集,请查询数据源以获取交付数据。要验证 Red Hat OpenStack Platform (RHOSP)部署中的单个节点,请使用 SSH 连接到控制台。
只有在 RHOSP 有活跃工作负载时,一些遥测数据才可用。
流程
- 登录 overcloud 节点,如 controller-0。
确保
metrics_qdr和集合代理容器在节点上运行:$ sudo podman container inspect --format '{{.State.Status}}' metrics_qdr collectd ceilometer_agent_notification ceilometer_agent_central running running running running注意在计算节点上使用此命令:
$ sudo podman container inspect --format '{{.State.Status}}' metrics_qdr collectd ceilometer_agent_compute返回运行 AMQ Interconnect 的内部网络地址,例如
172.17.1.44侦听端口5666:$ sudo podman exec -it metrics_qdr cat /etc/qpid-dispatch/qdrouterd.conf listener { host: 172.17.1.44 port: 5666 authenticatePeer: no saslMechanisms: ANONYMOUS }返回到本地 AMQ Interconnect 的连接列表:
$ sudo podman exec -it metrics_qdr qdstat --bus=172.17.1.44:5666 --connections Connections id host container role dir security authentication tenant ============================================================================================================================================================================================================================================================================================ 1 default-interconnect-5671-service-telemetry.apps.infra.watch:443 default-interconnect-7458fd4d69-bgzfb edge out TLSv1.2(DHE-RSA-AES256-GCM-SHA384) anonymous-user 12 172.17.1.44:60290 openstack.org/om/container/controller-0/ceilometer-agent-notification/25/5c02cee550f143ec9ea030db5cccba14 normal in no-security no-auth 16 172.17.1.44:36408 metrics normal in no-security anonymous-user 899 172.17.1.44:39500 10a2e99d-1b8a-4329-b48c-4335e5f75c84 normal in no-security no-auth有四个连接:
- 到 STF 的出站连接
- 来自 ceilometer 的入站连接
- 来自 collectd 的入站连接
来自
qdstat客户端的入站连接出站 STF 连接提供给
MetricsQdrConnectors主机参数,是 STF 存储域的路由。其他主机是连接到这个 AMQ Interconnect 的客户端连接的内部网络地址。
要确保传递消息,列出链接,并查看
deliv列中用于传递消息的_edge地址:$ sudo podman exec -it metrics_qdr qdstat --bus=172.17.1.44:5666 --links Router Links type dir conn id id peer class addr phs cap pri undel unsett deliv presett psdrop acc rej rel mod delay rate =========================================================================================================================================================== endpoint out 1 5 local _edge 250 0 0 0 2979926 0 0 0 0 2979926 0 0 0 endpoint in 1 6 250 0 0 0 0 0 0 0 0 0 0 0 0 endpoint in 1 7 250 0 0 0 0 0 0 0 0 0 0 0 0 endpoint out 1 8 250 0 0 0 0 0 0 0 0 0 0 0 0 endpoint in 1 9 250 0 0 0 0 0 0 0 0 0 0 0 0 endpoint out 1 10 250 0 0 0 911 911 0 0 0 0 0 911 0 endpoint in 1 11 250 0 0 0 0 911 0 0 0 0 0 0 0 endpoint out 12 32 local temp.lSY6Mcicol4J2Kp 250 0 0 0 0 0 0 0 0 0 0 0 0 endpoint in 16 41 250 0 0 0 2979924 0 0 0 0 2979924 0 0 0 endpoint in 912 1834 mobile $management 0 250 0 0 0 1 0 0 1 0 0 0 0 0 endpoint out 912 1835 local temp.9Ok2resI9tmt+CT 250 0 0 0 0 0 0 0 0 0 0 0 0要列出 RHOSP 节点到 STF 的地址,连接到 Red Hat OpenShift Container Platform 以检索 AMQ Interconnect pod 名称并列出连接。列出可用的 AMQ Interconnect pod:
$ oc get pods -l application=default-interconnect NAME READY STATUS RESTARTS AGE default-interconnect-7458fd4d69-bgzfb 1/1 Running 0 6d21h连接到 pod 并列出已知的连接。在本例中,有来自 RHOSP 节点的三个
边缘连接,其连接id为 22, 23, 和 24。$ oc exec -it deploy/default-interconnect -- qdstat --connections 2020-04-21 18:25:47.243852 UTC default-interconnect-7458fd4d69-bgzfb Connections id host container role dir security authentication tenant last dlv uptime =============================================================================================================================================================================================== 5 10.129.0.110:48498 bridge-3f5 edge in no-security anonymous-user 000:00:00:02 000:17:36:29 6 10.129.0.111:43254 rcv[default-cloud1-ceil-meter-smartgateway-58f885c76d-xmxwn] edge in no-security anonymous-user 000:00:00:02 000:17:36:20 7 10.130.0.109:50518 rcv[default-cloud1-coll-event-smartgateway-58fbbd4485-rl9bd] normal in no-security anonymous-user - 000:17:36:11 8 10.130.0.110:33802 rcv[default-cloud1-ceil-event-smartgateway-6cfb65478c-g5q82] normal in no-security anonymous-user 000:01:26:18 000:17:36:05 22 10.128.0.1:51948 Router.ceph-0.redhat.local edge in TLSv1/SSLv3(DHE-RSA-AES256-GCM-SHA384) anonymous-user 000:00:00:03 000:22:08:43 23 10.128.0.1:51950 Router.compute-0.redhat.local edge in TLSv1/SSLv3(DHE-RSA-AES256-GCM-SHA384) anonymous-user 000:00:00:03 000:22:08:43 24 10.128.0.1:52082 Router.controller-0.redhat.local edge in TLSv1/SSLv3(DHE-RSA-AES256-GCM-SHA384) anonymous-user 000:00:00:00 000:22:08:34 27 127.0.0.1:42202 c2f541c1-4c97-4b37-a189-a396c08fb079 normal in no-security no-auth 000:00:00:00 000:00:00:00要查看网络发送的消息数量,请使用每个地址与
oc exec命令:$ oc exec -it deploy/default-interconnect -- qdstat --address 2020-04-21 18:20:10.293258 UTC default-interconnect-7458fd4d69-bgzfb Router Addresses class addr phs distrib pri local remote in out thru fallback ========================================================================================================================== mobile anycast/ceilometer/event.sample 0 balanced - 1 0 970 970 0 0 mobile anycast/ceilometer/metering.sample 0 balanced - 1 0 2,344,833 2,344,833 0 0 mobile collectd/notify 0 multicast - 1 0 70 70 0 0 mobile collectd/telemetry 0 multicast - 1 0 216,128,890 216,128,890 0 0