日志记录监控和故障排除指南


Red Hat OpenStack Platform 17.0

OpenStack Logging、监控和故障排除的深入了解指南

摘要

本文档概述了 Red Hat OpenStack Platform 环境中可用的日志记录和监控功能,以及如何排除可能的问题。

前言

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。

使用直接文档反馈(DDF)功能

使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。

  1. Multi-page HTML 格式查看文档。
  2. 请确定您看到文档右上角的 反馈 按钮。
  3. 用鼠标指针高亮显示您想评论的文本部分。
  4. 添加反馈
  5. 使用您的评论 完成 Add feedback 字段。
  6. 可选:添加您的电子邮件地址,以便文档团队可以联系您的问题。
  7. Submit

第 1 章 关于本指南

警告

红帽目前正在查看本发行版本的指南中提供的信息和流程。

本文档基于 Red Hat OpenStack Platform 12 文档,请参阅 日志记录、监控和故障排除指南

如果您需要获得当前 Red Hat OpenStack Platform 版本的帮助,请联系红帽支持团队。

第 2 章 安装和配置日志服务

Red Hat OpenStack Platform(RHOSP)将信息信息写入特定的日志文件 ; 您可以使用这些消息来进行故障排除和监控系统事件。日志收集代理 Rsyslog 在客户端上收集日志,并将这些日志发送到服务器端运行的 Rsyslog 实例。服务器端 Rsyslog 实例将日志记录重定向到 Elasticsearch 以进行存储。

注意

您不需要手动将单独的日志文件附加到您的支持问题单中。sosreport 程序自动收集所需的日志。

2.1. 集中式日志系统架构和组件

监控工具使用客户端-服务器模型,并部署到 Red Hat OpenStack Platform(RHOSP)overcloud 节点上。Rsyslog 服务提供客户端集中日志记录(CL)。

所有 RHOSP 服务都会生成和更新日志文件。这些日志文件记录操作、错误、警告和其他事件。在 OpenStack 等分布式环境中,将这些日志收集到中央位置,简化了调试和管理。

通过集中日志,有一个中央位置可以在您的整个 RHOSP 环境中查看日志。这些日志来自操作系统,如 syslog 和 audit 日志文件、基础架构组件,如 RabbitMQ 和 MariaDB,以及身份、计算等 OpenStack 服务。集中式日志记录工具链由以下组件组成:

  • Log Collection Agent(Rsyslog)
  • 数据存储(弹性搜索)
  • API/Presentation Layer(Grafana)
注意

Red Hat OpenStack Platform director 不会为集中日志记录部署服务器端组件。红帽不支持服务器端组件,包括 Elasticsearch 数据库和 Grafana。

2.2. 使用 Elasticsearch 启用集中式日志

要启用集中式日志记录,您必须指定 OS::TripleO::Services::Rsyslog 可组合服务的实施。

注意

Rsyslog 服务只使用 Elasticsearch 作为集中式日志记录的数据存储。

先决条件

  • Elasticsearch 安装在服务器端。

流程

  • 使用与您环境和部署相关的任何其他环境文件,将日志记录环境文件添加到 overcloud 部署命令 中,如下例所示:

    openstack overcloud deploy \
    <existing_overcloud_environment_files> \
    -e /usr/share/openstack-tripleo-heat-templates/environments/logging-environment-rsyslog.yaml
    Copy to Clipboard Toggle word wrap

    使用现有部署一部分的环境文件列表替换。<existing_overcloud_environment_files>

2.3. 配置日志记录功能

要配置日志记录功能,请在 logging-environment-rsyslog.yaml 文件中修改 RsyslogElasticsearchSetting 参数。

流程

  1. tripleo-heat-templates/environments/logging-environment-rsyslog.yaml 文件复制到您的主目录。
  2. RsyslogElasticsearchSetting 参数中创建条目以适合您的环境。以下片段是 RsyslogElasticsearchSetting 参数配置示例:

    parameter_defaults:
        RsyslogElasticsearchSetting:
            uid: "elastic"
            pwd: "yourownpassword"
            skipverifyhost: "on"
            allowunsignedcerts: "on"
            server: "https://log-store-service-telemetry.apps.stfcloudops1.lab.upshift.rdu2.redhat.com"
            serverport: 443
    Copy to Clipboard Toggle word wrap

其他资源

2.3.1. 可配置的日志记录参数

这个表格包含了您在 Red Hat OpenStack Platform(RHOSP)中配置日志记录功能的日志参数描述。您可以在 tripleo-heat-templates/deployment/logging/rsyslog-container-puppet.yaml 文件中找到这些参数。

Expand
表 2.1. 可配置的日志记录参数
参数描述

RsyslogElasticsearchSetting

配置 rsyslog-elasticsearch 插件。如需更多信息,请参阅 https://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html

RsyslogElasticsearchTlsCACert

包含发布 Elasticsearch 服务器证书的 CA 证书的内容。

RsyslogElasticsearchTlsClientCert

包含针对 Elasticsearch 进行客户端证书授权的内容。

RsyslogElasticsearchTlsClientKey

包含与 cert RsyslogElasticsearchTlsClientCert 相对应的私钥内容。

2.4. 覆盖日志文件的默认路径

如果您修改默认容器和修改服务日志文件的路径,还必须修改默认的日志文件路径。每个可组合的服务都有一个 &lt ;service_name>LoggingSource 参数。例如,对于 nova-compute 服务,参数是 NovaComputeLoggingSource

流程

  • 要覆盖 nova-compute 服务的默认路径,请在配置文件中添加 NovaComputeLoggingSource 参数的路径:

     NovaComputeLoggingSource:
          tag: openstack.nova.compute
          file: /some/other/path/nova-compute.log
    Copy to Clipboard Toggle word wrap
    注意

    对于每个服务,定义标签文件。其他值默认是派生的。

    1. 您可以修改特定服务的格式。这会直接传递给 Rsyslog 配置。LoggingDefaultFormat 参数的默认格式为 /(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d+)(?<pid>\d+)(?<priority>\S+)(?<message>.*)$/使用下列语法:

      <service_name>LoggingSource:
          tag: <service_name>.tag
          path: <service_name>.path
          format: <service_name>.format
      Copy to Clipboard Toggle word wrap

      以下片段是一个更复杂的转换示例:

       ServiceLoggingSource:
          tag: openstack.Service
          path: /var/log/containers/service/service.log
          format: multiline
          format_firstline: '/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3} \d+ \S+ \S+ \[(req-\S+ \S+ \S+ \S+ \S+ \S+|-)\]/'
          format1: '/^(?<Timestamp>\S+ \S+) (?<Pid>\d+) (?<log_level>\S+) (?<python_module>\S+) (\[(req-(?<request_id>\S+) (?<user_id>\S+) (?<tenant_id>\S+) (?<domain_id>\S+) (?<user_domain>\S+) (?<project_domain>\S+)|-)\])? (?<Payload>.*)?$/'
      Copy to Clipboard Toggle word wrap

2.5. 修改日志记录的格式

您可以修改特定服务的日志记录启动格式。这会直接传递给 Rsyslog 配置。

Red Hat OpenStack Platform(RHOSP)日志记录的默认格式为('^[0-9]{4}-[0-9]except-[0-9]0-9 [0-9]0-9 [0-9]0-9(.[0-9]+ [0-9]+ [0-9]+ [0-9]+)?(DEBUG|INFO|WARNING|ERROR)'。

流程

  • 要添加用于解析日志记录开始的其他正则表达式,请在配置中添加 startmsg.regex

    NovaComputeLoggingSource:
           tag: openstack.nova.compute
           file: /some/other/path/nova-compute.log
           startmsg.regex: "^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]+ \\+[0-9]+)? [A-Z]+ \\([a-z]+\\)
    Copy to Clipboard Toggle word wrap

2.6. 测试 Rsyslog 和 Elasticsearch 之间的连接

在客户端中,您可以验证 Rsyslog 和 Elasticsearch 之间的通信。

流程

  • 导航到主机上的 Elasticsearch 连接日志文件 /var/log/rsyslog/omelasticsearch.log,或主机上的 /var/log/containers/rsyslog/omelasticsearch.log。如果这个日志文件不存在,或者日志文件存在但不包含日志,则不会存在连接问题。如果日志文件存在并包含日志,则 Rsyslog 没有成功连接。
注意

要从服务器端测试连接,请查看 Elasticsearch 日志中的连接问题。

2.7. 服务器端日志记录

如果有一个 Elasticsearch 集群正在运行,则必须在 logging-environment-rsyslog.yaml 文件中配置 RsyslogElasticsearchSetting 参数以连接 overcloud 节点上运行的 Rsyslog。要配置 RsyslogElasticsearchSetting 参数,请参阅 https://www.rsyslog.com/doc/v8-stable/configuration/modules/omelasticsearch.html

2.8. 追溯

当您遇到问题并开始故障排除时,您可以使用回溯日志诊断问题。在日志文件中,追溯通常包含几行信息,与同一问题相关的所有信息。

rsyslog 提供了一个正则表达式来定义日志记录的启动方式。每个日志记录通常以时间戳开头,回溯的第一行是包含此信息的唯一行。rsyslog 用第一行捆绑缩进记录,并将其作为一条日志记录发送。

为此,使用了 <Service>LoggingSource 中的 startmsg.regex。以下正则表达式是 director 中所有 <service>LoggingSource 参数的默认值:

startmsg.regex='^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}(.[0-9]+ [0-9]+)? (DEBUG|INFO|WARNING|ERROR) '
Copy to Clipboard Toggle word wrap

当此默认值与添加或修改的 LoggingSource 的日志记录不匹配时,您必须相应地更改 startmsg.regex

2.9. OpenStack 服务的日志文件位置

每个 OpenStack 组件都有单独的日志记录目录,其中包含特定于正在运行的服务的文件。

2.9.1. 裸机置备(ironic)日志文件

Expand
服务服务名称日志路径

OpenStack Ironic API

openstack-ironic-api.service

/var/log/containers/ironic/ironic-api.log

OpenStack Ironic Conductor

openstack-ironic-conductor.service

/var/log/containers/ironic/ironic-conductor.log

2.9.2. Block Storage(cinder)日志文件

Expand
服务服务名称日志路径

Block Storage API

openstack-cinder-api.service

/var/log/containers/cinder-api.log

块存储备份

openstack-cinder-backup.service

/var/log/containers/cinder/backup.log

信息信息

cinder-manage 命令

/var/log/containers/cinder/cinder-manage.log

块存储调度程序

openstack-cinder-scheduler.service

/var/log/containers/cinder/scheduler.log

块存储卷

openstack-cinder-volume.service

/var/log/containers/cinder/volume.log

2.9.3. 计算(nova)日志文件

Expand
服务服务名称日志路径

OpenStack Compute API 服务

openstack-nova-api.service

/var/log/containers/nova/nova-api.log

OpenStack Compute 证书服务器

openstack-nova-cert.service

/var/log/containers/nova/nova-cert.log

OpenStack Compute 服务

openstack-nova-compute.service

/var/log/containers/nova/nova-compute.log

OpenStack Compute Conductor 服务

openstack-nova-conductor.service

/var/log/containers/nova/nova-conductor.log

OpenStack Compute VNC 控制台身份验证服务器

openstack-nova-consoleauth.service

/var/log/containers/nova/nova-consoleauth.log

信息信息

nova-manage 命令

/var/log/containers/nova/nova-manage.log

OpenStack Compute NoVNC 代理服务

openstack-nova-novncproxy.service

/var/log/containers/nova/nova-novncproxy.log

OpenStack 计算调度程序服务

openstack-nova-scheduler.service

/var/log/containers/nova/nova-scheduler.log

2.9.4. dashboard(horizon)日志文件

Expand
服务服务名称日志路径

特定用户交互的日志

仪表板接口

/var/log/containers/horizon/horizon.log

Apache HTTP 服务器为 Dashboard Web 界面使用几个额外的日志文件,您可以使用 Web 浏览器或命令行客户端来访问该文件,如 keystone 和 nova。下表中的日志文件有助于跟踪仪表板并诊断故障:

Expand
用途日志路径

所有处理的 HTTP 请求

/var/log/containers/httpd/horizon_access.log

HTTP 错误

/var/log/containers/httpd/horizon_error.log

admin-role API 请求

/var/log/containers/httpd/keystone_wsgi_admin_access.log

admin-role API 错误

/var/log/containers/httpd/keystone_wsgi_admin_error.log

member-role API 请求

/var/log/containers/httpd/keystone_wsgi_main_access.log

member-role API 错误

/var/log/containers/httpd/keystone_wsgi_main_error.log

注意

还有一个 /var/log/containers/httpd/default_error.log,它存储了在同一主机上运行的其他 Web 服务报告的错误。

2.9.5. Identity Service(keystone)日志文件

Expand
服务服务名称日志路径

OpenStack Identity Service

openstack-keystone.service

/var/log/containers/keystone/keystone.log

2.9.6. Image Service(glance)日志文件

Expand
服务服务名称日志路径

OpenStack Image Service API 服务器

openstack-glance-api.service

/var/log/containers/glance/api.log

OpenStack Image Service Registry 服务器

openstack-glance-registry.service

/var/log/containers/glance/registry.log

2.9.7. 网络(neutron)日志文件

Expand
服务服务名称日志路径

OpenStack Neutron DHCP 代理

neutron-dhcp-agent.service

/var/log/containers/neutron/dhcp-agent.log

OpenStack 网络层 3 代理

neutron-l3-agent.service

/var/log/containers/neutron/l3-agent.log

元数据代理服务

neutron-metadata-agent.service

/var/log/containers/neutron/metadata-agent.log

元数据命名空间代理

不适用

/var/log/containers/neutron/neutron-ns-metadata-proxy-UUID.log

Open vSwitch 代理

neutron-openvswitch-agent.service

/var/log/containers/neutron/openvswitch-agent.log

OpenStack 网络服务

neutron-server.service

/var/log/containers/neutron/server.log

2.9.8. Object Storage(swift)日志文件

OpenStack Object Storage 只将日志发送到系统日志功能。

注意

默认情况下,所有对象存储日志文件都转至 /var/log/containers/swift/swift.log,使用 local0、local1 和 local2 syslog 工具。

对象存储的日志消息分为两类:由 REST API 服务以及后台守护进程中的那些类别。API 服务消息每行包含一个 API 请求,其格式类似于流行的 HTTP 服务器;前端(Proxy)和后端(Account、Container、Object)服务会发布此类消息。守护进程消息的结构较少,通常包含关于执行其定期任务的守护进程的人类可读信息。但是,无论对象存储的哪个部分都生成消息,源身份始终位于行开头。

以下是代理消息的示例:

Apr 20 15:20:34 rhev-a24c-01 proxy-server: 127.0.0.1 127.0.0.1 20/Apr/2015/19/20/34 GET /v1/AUTH_zaitcev%3Fformat%3Djson%26marker%3Dtestcont HTTP/1.0 200 - python-swiftclient-2.1.0 AUTH_tk737d6... - 2 - txc454fa8ea4844d909820a-0055355182 - 0.0162 - - 1429557634.806570053 1429557634.822791100
Copy to Clipboard Toggle word wrap

以下是来自后台守护进程的临时消息示例:

Apr 27 17:08:15 rhev-a24c-02 object-auditor: Object audit (ZBF). Since Mon Apr 27 21:08:15 2015: Locally: 1 passed, 0 quarantined, 0 errors files/sec: 4.34 , bytes/sec: 0.00, Total time: 0.23, Auditing time: 0.00, Rate: 0.00
Apr 27 17:08:16 rhev-a24c-02 object-auditor: Object audit (ZBF) "forever" mode completed: 0.56s. Total quarantined: 0, Total errors: 0, Total files/sec: 14.31, Total bytes/sec: 0.00, Auditing time: 0.02, Rate: 0.04
Apr 27 17:08:16 rhev-a24c-02 account-replicator: Beginning replication run
Apr 27 17:08:16 rhev-a24c-02 account-replicator: Replication run OVER
Apr 27 17:08:16 rhev-a24c-02 account-replicator: Attempted to replicate 5 dbs in 0.12589 seconds (39.71876/s)
Apr 27 17:08:16 rhev-a24c-02 account-replicator: Removed 0 dbs
Apr 27 17:08:16 rhev-a24c-02 account-replicator: 10 successes, 0 failures
Copy to Clipboard Toggle word wrap

2.9.9. 编配(heat)日志文件

Expand
服务服务名称日志路径

OpenStack Heat API 服务

openstack-heat-api.service

/var/log/containers/heat/heat-api.log

OpenStack Heat Engine 服务

openstack-heat-engine.service

/var/log/containers/heat/heat-engine.log

编排服务事件

不适用

/var/log/containers/heat/heat-manage.log

2.9.10. 共享文件系统服务(manila)日志文件

Expand
服务服务名称日志路径

OpenStack Manila API 服务器

openstack-manila-api.service

/var/log/containers/manila/api.log

OpenStack Manila 调度程序

openstack-manila-scheduler.service

/var/log/containers/manila/scheduler.log

OpenStack Manila 共享服务

openstack-manila-share.service

/var/log/containers/manila/share.log

注意

Manila Python 库的一些信息也可以记录在 /var/log/containers/manila/manila-manage.log 中。

2.9.11. Telemetry(ceilometer)日志文件

Expand
服务服务名称日志路径

OpenStack ceilometer 通知代理

ceilometer_agent_notification

/var/log/containers/ceilometer/agent-notification.log

OpenStack ceilometer central agent

ceilometer_agent_central

/var/log/containers/ceilometer/central.log

OpenStack ceilometer 集合

openstack-ceilometer-collector.service

/var/log/containers/ceilometer/collector.log

OpenStack ceilometer 计算代理

ceilometer_agent_compute

/var/log/containers/ceilometer/compute.log

2.9.12. 支持服务的日志文件

以下服务供 OpenStack 核心组件使用,并且有自己的日志目录和文件。

Expand
服务服务名称日志路径

消息代理(RabbitMQ)

rabbitmq-server.service

/var/log/rabbitmq/rabbit@short_hostname.log
/var/log/rabbitmq/rabbit@short_hostname-sasl.log(用于简单身份验证和安全层相关日志消息)

数据库服务器(MariaDB)

mariadb.service

/var/log/mariadb/mariadb.log

虚拟网络交换机(Open vSwitch)

openvswitch-nonetwork.service

/var/log/openvswitch/ovsdb-server.log
/var/log/openvswitch/ovs-vswitchd.log

2.9.13. Aodh(警报服务)日志文件

Expand
服务容器名称日志路径

警报 API

aodh_api

/var/log/containers/httpd/aodh-api/aodh_wsgi_access.log

警报评估器日志

aodh_evaluator

/var/log/containers/aodh/aodh-evaluator.log

警报监听器

aodh_listener

/var/log/containers/aodh/aodh-listener.log

警报通知

aodh_notifier

/var/log/containers/aodh/aodh-notifier.log

2.9.14. Gnocchi(指标存储)日志文件

Expand
服务容器名称日志路径

Gnocchi API

gnocchi_api

/var/log/containers/httpd/gnocchi-api/gnocchi_wsgi_access.log

Gnocchi 指标

gnocchi_metricd

/var/log/containers/gnocchi/gnocchi-metricd.log

Gnocchi statsd

gnocchi_statsd  

/var/log/containers/gnocchi/gnocchi-statsd.log

时间序列数据库(Gnocchi)是一个多项目、指标和资源数据库。它旨在以非常大的规模存储指标,同时为操作员和用户提供对指标和资源信息的访问。

3.1. 了解时间序列数据库

本节定义时间序列数据库(Gnocchi)features 常用术语。

聚合方法
用于聚合多个测量结果到聚合的功能。例如,min 聚合方法将不同测量结果的值聚合到时间范围中所有测量结果的最小值。
aggregate
根据归档策略从多个测量结果生成的数据点元。聚合由时间戳和值组成。
归档策略
附加至指标的总存储策略。归档策略决定了在指标中保留聚合的时长,以及聚合方法(聚合方法)。
granularity
指标聚合中两个聚合之间的时间。
测量结果
通过 API 发送到时间序列数据库的传入数据点元。测量结果由时间戳和值组成。
指标
存储由 UUID 标识的聚合的实体。指标可以使用名称附加到资源。指标存储其聚合的方式由指标关联的归档策略定义。
资源
代表您将指标与之关联的基础架构中的任何实体。资源通过唯一 ID 标识,可以包含属性。
时间序列
按时间排序的聚合列表。
timespan
指标保留聚合的时间周期。它用于归档策略的上下文。

3.2. 指标

时间序列数据库(Gnocchi)存储来自 Telemetry 的指标,这些指标指定可以测量的任何对象,例如:服务器的 CPU 使用量、空间温度或网络接口发送的字节数。

指标具有以下属性:

  • 用于标识指标的 UUID
  • 指标名称
  • 用于存储和聚合测量结果的归档策略

时间序列数据库默认存储以下指标,如 etc/ceilometer/polling.yaml 文件中定义:

[root@controller-0 ~]# podman exec -ti ceilometer_agent_central cat /etc/ceilometer/polling.yaml
---
sources:
    - name: some_pollsters
      interval: 300
      meters:
        - cpu
        - memory.usage
        - network.incoming.bytes
        - network.incoming.packets
        - network.outgoing.bytes
        - network.outgoing.packets
        - disk.read.bytes
        - disk.read.requests
        - disk.write.bytes
        - disk.write.requests
        - hardware.cpu.util
        - hardware.memory.used
        - hardware.memory.total
        - hardware.memory.buffer
        - hardware.memory.cached
        - hardware.memory.swap.avail
        - hardware.memory.swap.total
        - hardware.system_stats.io.outgoing.blocks
        - hardware.system_stats.io.incoming.blocks
        - hardware.network.ip.incoming.datagrams
        - hardware.network.ip.outgoing.datagrams
Copy to Clipboard Toggle word wrap

polling.yaml 文件还指定 300 秒的默认轮询间隔(5 分钟)。

3.3. 时间序列数据库组件

目前,Gnome 使用身份服务进行身份验证,并使用 Redis 来实现默认的测量存储。为了存储聚合的测量结果,Gnoapp 依赖于 Swift 或 Ceph(对象存储)。Gnocchi 还利用 MySQL 来存储资源和指标的索引。

时间序列数据库提供 statsd 守护进程(gnocchi-statsd),该守护进程与 statsd 协议兼容,并可侦听通过网络发送的指标。要在 Gnocchi 中启用 statsd 支持,请在配置文件中配置 [statsd] 选项。资源 ID 参数用作附加所有指标的主要通用资源、与资源和指标关联的用户和项目 ID,以及用于创建指标的归档策略名称。

所有指标都会动态创建,因为指标发送到 gnocchi-statsd,并使用提供的名称附加到您配置的资源 ID。

3.4. 运行时间序列数据库

运行 HTTP 服务器和指标守护进程来运行时间序列数据库:

# gnocchi-api
# gnocchi-metricd
Copy to Clipboard Toggle word wrap

3.5. 作为 WSGI 应用程序运行

您可以通过 WSGI 服务(如 mod_wsgi 或任何其他 WSGI 应用程序)运行 Gnocchi。您可以使用 gnocchi/rest/app.wsgi 文件(通过 Gnocchi 提供)启用 Gnocchi 作为 WSGI 应用程序。

Gnocchi API 层使用 WSGI 运行。这意味着可以使用 Apache httpdmod_wsgi 来运行,或者另一个 HTTP 守护进程(如 uwsgi )。根据您已有的 CPU 数量配置进程和线程数量,通常是大约 1.5 个 CPU 数。如果一个服务器不够,您可以生成任意数量的新 API 服务器,以便在不同的机器上扩展 Gnocchi。

3.6. metricd Workers

默认情况下,gnocchi-metricd 守护进程会跨越所有 CPU 能力,以便在计算指标聚合时最大程度提高 CPU 利用率。您可以使用 gnocchi status 命令查询 HTTP API 并获取指标数据处理状态。此命令显示要处理的指标数量,称为 gnocchi-metricd 的处理积。只要此积压没有持续增加,这表示 gnocchi-metricd 可以应对正在发送的指标数量。如果进程持续增加的测量数量,您可能需要暂时增加 gnocchi-metricd 守护进程的数量。您可以在任意数量的服务器中运行任意数量的指标守护进程。

对于基于 director 的部署,您可以调整环境文件中的特定指标处理参数:

  • MetricProcessingDelay - 调整指标处理迭代之间的延迟周期。
  • GnocchiMetricdWorkers - 配置指标的 worker 数量。

3.7. 监控时间序列数据库

HTTP API 的 /v1/status 端点返回各种信息,如进程要处理的测量结果数(方案积),您可以轻松监控。要验证总体系统的健康状态,请确保 HTTP 服务器和 gnocchi-metricd 守护进程正在运行,且不会在其日志文件中写入错误。

3.8. 备份和恢复时间序列数据库

要从一个未追踪事件中恢复,请备份索引和存储。您必须创建数据库转储(PostgreSQL 或 MySQL),并创建数据存储的快照或副本(Ceph、Swift 或您的文件系统)。恢复的步骤为:恢复索引和存储备份,如果需要,重新安装 Gnocchi,重启它。

3.9. 批处理从 Gnocchi 中删除旧资源

要删除过时的测量结果,请创建归档策略以符合您的要求。若要批量删除资源、指标和测量结果,可使用 CLI 或 REST API。例如,要删除资源及其所有相关指标,请运行以下命令:

openstack metric resource batch delete "ended_at < '-30days'"
Copy to Clipboard Toggle word wrap

3.10. 使用 Telemetry 服务进行容量 metering

OpenStack 遥测服务提供使用量指标,供您用于计费、退款和回放目的。第三方应用程序还可使用这些指标数据来计划集群上的容量,还可利用这些指标数据来自动扩展使用 OpenStack Heat 的虚拟实例。如需更多信息,请参阅实例自动扩展

您可以使用 Ceilometer 和 Gnocchi 的组合来监控和警报。它支持小大小的集群以及已知的限制。对于实时监控,Red Hat OpenStack Platform 附带了提供指标数据的代理,并可通过单独的监控基础架构和应用程序使用。如需更多信息,请参阅 监控工具配置

3.10.1. 查看测量结果

列出特定资源的所有测量结果:

# openstack metric measures show --resource-id UUID METER_NAME
Copy to Clipboard Toggle word wrap

仅列出特定资源在时间戳范围内进行的测量结果:

# openstack metric measures show --aggregation mean --start <START_TIME> --stop <STOP_TIME> --resource-id UUID METER_NAME
Copy to Clipboard Toggle word wrap

时间戳变量 <START_TIME> 和 <STOP_TIME> 使用格式 iso-dateThh:mm:ss

3.10.2. 创建新的测量结果

您可以使用测量结果将数据发送到遥测服务,它们不需要与前面定义的计量对应。例如:

# openstack metrics measures add -m 2015-01-12T17:56:23@42 --resource-id UUID METER_NAME
Copy to Clipboard Toggle word wrap

3.10.3. 示例:查看云使用措施

本例显示了每个项目所有实例的平均内存用量。

# openstack metric measures aggregation --resource-type instance --groupby project_id -m memory
Copy to Clipboard Toggle word wrap

3.10.4. 查看现有警报

若要列出现有的遥测警报,可使用 aodh 命令。例如:

# aodh alarm list
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
| alarm_id                             | type                                       | name                       | state             | severity | enabled |
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
| 922f899c-27c8-4c7d-a2cf-107be51ca90a | gnocchi_aggregation_by_resources_threshold | iops-monitor-read-requests | insufficient data | low      | True    |
+--------------------------------------+--------------------------------------------+----------------------------+-------------------+----------+---------+
Copy to Clipboard Toggle word wrap

要列出分配给某一资源的计量,请指定资源的 UUID (实例、镜像或卷等)。例如:

# gnocchi resource show 5e3fcbe2-7aab-475d-b42c-a440aa42e5ad
Copy to Clipboard Toggle word wrap

3.10.5. 创建 Alarm

您可以使用 aodh 创建在达到阈值时激活的警报。在本例中,警报会在单个实例的平均 CPU 利用率超过 80% 时激活并添加日志条目。查询用于隔离特定实例的 ID(94619081-abf5-4f1f-81c7-9cedaa872403)以进行监控:

# aodh alarm create --type gnocchi_aggregation_by_resources_threshold --name cpu_usage_high --metric cpu_util --threshold 80 --aggregation-method sum --resource-type instance --query '{"=": {"id": "94619081-abf5-4f1f-81c7-9cedaa872403"}}' --alarm-action 'log://'
+---------------------------+-------------------------------------------------------+
| Field                     | Value                                                 |
+---------------------------+-------------------------------------------------------+
| aggregation_method        | sum                                                   |
| alarm_actions             | [u'log://']                                           |
| alarm_id                  | b794adc7-ed4f-4edb-ace4-88cbe4674a94                  |
| comparison_operator       | eq                                                    |
| description               | gnocchi_aggregation_by_resources_threshold alarm rule |
| enabled                   | True                                                  |
| evaluation_periods        | 1                                                     |
| granularity               | 60                                                    |
| insufficient_data_actions | []                                                    |
| metric                    | cpu_util                                              |
| name                      | cpu_usage_high                                        |
| ok_actions                | []                                                    |
| project_id                | 13c52c41e0e543d9841a3e761f981c20                      |
| query                     | {"=": {"id": "94619081-abf5-4f1f-81c7-9cedaa872403"}} |
| repeat_actions            | False                                                 |
| resource_type             | instance                                              |
| severity                  | low                                                   |
| state                     | insufficient data                                     |
| state_timestamp           | 2016-12-09T05:18:53.326000                            |
| threshold                 | 80.0                                                  |
| time_constraints          | []                                                    |
| timestamp                 | 2016-12-09T05:18:53.326000                            |
| type                      | gnocchi_aggregation_by_resources_threshold            |
| user_id                   | 32d3f2c9a234423cb52fb69d3741dbbc                      |
+---------------------------+-------------------------------------------------------+
Copy to Clipboard Toggle word wrap

要编辑现有的阈值警报,请使用 aodh 警报更新 命令。例如,要将警报阈值增加到 75%:

# aodh alarm update --name cpu_usage_high --threshold 75
Copy to Clipboard Toggle word wrap

3.10.6. 禁用或删除 Alarm

禁用警报:

# aodh alarm update --name cpu_usage_high --enabled=false
Copy to Clipboard Toggle word wrap

删除警报:

# aodh alarm delete --name cpu_usage_high
Copy to Clipboard Toggle word wrap

3.10.7. 示例:监控实例的磁盘活动

以下示例演示了如何使用 Aodh 警报监控特定项目中包含的所有实例的累积磁盘活动。

1.检查现有的项目,然后选择您需要监控的项目的适当 UUID。本例使用 admin 项目:

$ openstack project list
+----------------------------------+----------+
| ID                               | Name     |
+----------------------------------+----------+
| 745d33000ac74d30a77539f8920555e7 | admin    |
| 983739bb834a42ddb48124a38def8538 | services |
| be9e767afd4c4b7ead1417c6dfedde2b | demo     |
+----------------------------------+----------+
Copy to Clipboard Toggle word wrap

2.使用项目的 UUID 创建警报,以分析 admin 项目中实例生成的所有读取请求的 sum() (查询可以通过 --query 参数进一步限制)。

# aodh alarm create --type gnocchi_aggregation_by_resources_threshold --name iops-monitor-read-requests --metric disk.read.requests.rate --threshold 42000 --aggregation-method sum --resource-type instance --query '{"=": {"project_id": "745d33000ac74d30a77539f8920555e7"}}'
+---------------------------+-----------------------------------------------------------+
| Field                     | Value                                                     |
+---------------------------+-----------------------------------------------------------+
| aggregation_method        | sum                                                       |
| alarm_actions             | []                                                        |
| alarm_id                  | 192aba27-d823-4ede-a404-7f6b3cc12469                      |
| comparison_operator       | eq                                                        |
| description               | gnocchi_aggregation_by_resources_threshold alarm rule     |
| enabled                   | True                                                      |
| evaluation_periods        | 1                                                         |
| granularity               | 60                                                        |
| insufficient_data_actions | []                                                        |
| metric                    | disk.read.requests.rate                                   |
| name                      | iops-monitor-read-requests                                |
| ok_actions                | []                                                        |
| project_id                | 745d33000ac74d30a77539f8920555e7                          |
| query                     | {"=": {"project_id": "745d33000ac74d30a77539f8920555e7"}} |
| repeat_actions            | False                                                     |
| resource_type             | instance                                                  |
| severity                  | low                                                       |
| state                     | insufficient data                                         |
| state_timestamp           | 2016-11-08T23:41:22.919000                                |
| threshold                 | 42000.0                                                   |
| time_constraints          | []                                                        |
| timestamp                 | 2016-11-08T23:41:22.919000                                |
| type                      | gnocchi_aggregation_by_resources_threshold                |
| user_id                   | 8c4aea738d774967b4ef388eb41fef5e                          |
+---------------------------+-----------------------------------------------------------+
Copy to Clipboard Toggle word wrap

3.10.8. 示例:监控 CPU 用量

如果要监控实例的性能,需要检查 gnocchi 数据库以识别您可以监控哪些指标,如内存或 CPU 用量。例如,针对一个实例运行 gnocchi 资源显示,以识别可以监控哪些指标:

  1. 查询特定实例 UUID 的可用指标:

    $ gnocchi resource show --type instance d71cdf9a-51dc-4bba-8170-9cd95edd3f66
    --------------------------------------------------------------------------------------------+
    | Field                 | Value                                                               |
    --------------------------------------------------------------------------------------------+
    | created_by_project_id | 44adccdc32614688ae765ed4e484f389                                    |
    | created_by_user_id    | c24fa60e46d14f8d847fca90531b43db                                    |
    | creator               | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389   |
    | display_name          | test-instance                                                       |
    | ended_at              | None                                                                |
    | flavor_id             | 14c7c918-df24-481c-b498-0d3ec57d2e51                                |
    | flavor_name           | m1.tiny                                                             |
    | host                  | overcloud-compute-0                                                 |
    | id                    | d71cdf9a-51dc-4bba-8170-9cd95edd3f66                                |
    | image_ref             | e75dff7b-3408-45c2-9a02-61fbfbf054d7                                |
    | metrics               | compute.instance.booting.time: c739a70d-2d1e-45c1-8c1b-4d28ff2403ac |
    |                       | cpu.delta: 700ceb7c-4cff-4d92-be2f-6526321548d6                     |
    |                       | cpu: 716d6128-1ea6-430d-aa9c-ceaff2a6bf32                           |
    |                       | cpu_l3_cache: 3410955e-c724-48a5-ab77-c3050b8cbe6e                  |
    |                       | cpu_util: b148c392-37d6-4c8f-8609-e15fc15a4728                      |
    |                       | disk.allocation: 9dd464a3-acf8-40fe-bd7e-3cb5fb12d7cc               |
    |                       | disk.capacity: c183d0da-e5eb-4223-a42e-855675dd1ec6                 |
    |                       | disk.ephemeral.size: 15d1d828-fbb4-4448-b0f2-2392dcfed5b6           |
    |                       | disk.iops: b8009e70-daee-403f-94ed-73853359a087                     |
    |                       | disk.latency: 1c648176-18a6-4198-ac7f-33ee628b82a9                  |
    |                       | disk.read.bytes.rate: eb35828f-312f-41ce-b0bc-cb6505e14ab7          |
    |                       | disk.read.bytes: de463be7-769b-433d-9f22-f3265e146ec8               |
    |                       | disk.read.requests.rate: 588ca440-bd73-4fa9-a00c-8af67262f4fd       |
    |                       | disk.read.requests: 53e5d599-6cad-47de-b814-5cb23e8aaf24            |
    |                       | disk.root.size: cee9d8b1-181e-4974-9427-aa7adb3b96d9                |
    |                       | disk.usage: 4d724c99-7947-4c6d-9816-abbbc166f6f3                    |
    |                       | disk.write.bytes.rate: 45b8da6e-0c89-4a6c-9cce-c95d49d9cc8b         |
    |                       | disk.write.bytes: c7734f1b-b43a-48ee-8fe4-8a31b641b565              |
    |                       | disk.write.requests.rate: 96ba2f22-8dd6-4b89-b313-1e0882c4d0d6      |
    |                       | disk.write.requests: 553b7254-be2d-481b-9d31-b04c93dbb168           |
    |                       | memory.bandwidth.local: 187f29d4-7c70-4ae2-86d1-191d11490aad        |
    |                       | memory.bandwidth.total: eb09a4fc-c202-4bc3-8c94-aa2076df7e39        |
    |                       | memory.resident: 97cfb849-2316-45a6-9545-21b1d48b0052               |
    |                       | memory.swap.in: f0378d8f-6927-4b76-8d34-a5931799a301                |
    |                       | memory.swap.out: c5fba193-1a1b-44c8-82e3-9fdc9ef21f69               |
    |                       | memory.usage: 7958d06d-7894-4ca1-8c7e-72ba572c1260                  |
    |                       | memory: a35c7eab-f714-4582-aa6f-48c92d4b79cd                        |
    |                       | perf.cache.misses: da69636d-d210-4b7b-bea5-18d4959e95c1             |
    |                       | perf.cache.references: e1955a37-d7e4-4b12-8a2a-51de4ec59efd         |
    |                       | perf.cpu.cycles: 5d325d44-b297-407a-b7db-cc9105549193               |
    |                       | perf.instructions: 973d6c6b-bbeb-4a13-96c2-390a63596bfc             |
    |                       | vcpus: 646b53d0-0168-4851-b297-05d96cc03ab2                         |
    | original_resource_id  | d71cdf9a-51dc-4bba-8170-9cd95edd3f66                                |
    | project_id            | 3cee262b907b4040b26b678d7180566b                                    |
    | revision_end          | None                                                                |
    | revision_start        | 2017-11-16T04:00:27.081865+00:00                                    |
    | server_group          | None                                                                |
    | started_at            | 2017-11-16T01:09:20.668344+00:00                                    |
    | type                  | instance                                                            |
    | user_id               | 1dbf5787b2ee46cf9fa6a1dfea9c9996                                    |
    --------------------------------------------------------------------------------------------+
    Copy to Clipboard Toggle word wrap

    因此,metrics 值列出了可以使用 Aodh 警报监控的组件,如 cpu_util

  2. 要监控 CPU 使用量,您需要 cpu_util 指标。要查看此指标的更多信息:

    $ gnocchi metric show --resource d71cdf9a-51dc-4bba-8170-9cd95edd3f66 cpu_util
    -------------------------------------------------------------------------------------------------------+
    | Field                              | Value                                                             |
    -------------------------------------------------------------------------------------------------------+
    | archive_policy/aggregation_methods | std, count, min, max, sum, mean                                   |
    | archive_policy/back_window         | 0                                                                 |
    | archive_policy/definition          | - points: 8640, granularity: 0:05:00, timespan: 30 days, 0:00:00  |
    | archive_policy/name                | low                                                               |
    | created_by_project_id              | 44adccdc32614688ae765ed4e484f389                                  |
    | created_by_user_id                 | c24fa60e46d14f8d847fca90531b43db                                  |
    | creator                            | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389 |
    | id                                 | b148c392-37d6-4c8f-8609-e15fc15a4728                              |
    | name                               | cpu_util                                                          |
    | resource/created_by_project_id     | 44adccdc32614688ae765ed4e484f389                                  |
    | resource/created_by_user_id        | c24fa60e46d14f8d847fca90531b43db                                  |
    | resource/creator                   | c24fa60e46d14f8d847fca90531b43db:44adccdc32614688ae765ed4e484f389 |
    | resource/ended_at                  | None                                                              |
    | resource/id                        | d71cdf9a-51dc-4bba-8170-9cd95edd3f66                              |
    | resource/original_resource_id      | d71cdf9a-51dc-4bba-8170-9cd95edd3f66                              |
    | resource/project_id                | 3cee262b907b4040b26b678d7180566b                                  |
    | resource/revision_end              | None                                                              |
    | resource/revision_start            | 2017-11-17T00:05:27.516421+00:00                                  |
    | resource/started_at                | 2017-11-16T01:09:20.668344+00:00                                  |
    | resource/type                      | instance                                                          |
    | resource/user_id                   | 1dbf5787b2ee46cf9fa6a1dfea9c9996                                  |
    | unit                               | None                                                              |
    -------------------------------------------------------------------------------------------------------+
    Copy to Clipboard Toggle word wrap
    • archive_policy - 定义用于计算 std、count、min、max、sum 和 mean 值的聚合间隔。
  3. 使用 Aodh 创建查询 cpu_util 的监控任务。此任务将根据您指定的设置触发事件。例如,在实例的 CPU 高峰期超过 80% 时引发日志条目:

    aodh alarm create \
      --project-id 3cee262b907b4040b26b678d7180566b \
      --name high-cpu \
      --type gnocchi_resources_threshold \
      --description 'High CPU usage' \
      --metric cpu_util \
      --threshold 80.0 \
      --comparison-operator ge \
      --aggregation-method mean \
      --granularity 300 \
      --evaluation-periods 1 \
      --alarm-action 'log://' \
      --ok-action 'log://' \
      --resource-type instance \
      --resource-id d71cdf9a-51dc-4bba-8170-9cd95edd3f66
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | aggregation_method        | mean                                 |
    | alarm_actions             | [u'log://']                          |
    | alarm_id                  | 1625015c-49b8-4e3f-9427-3c312a8615dd |
    | comparison_operator       | ge                                   |
    | description               | High CPU usage                       |
    | enabled                   | True                                 |
    | evaluation_periods        | 1                                    |
    | granularity               | 300                                  |
    | insufficient_data_actions | []                                   |
    | metric                    | cpu_util                             |
    | name                      | high-cpu                             |
    | ok_actions                | [u'log://']                          |
    | project_id                | 3cee262b907b4040b26b678d7180566b     |
    | repeat_actions            | False                                |
    | resource_id               | d71cdf9a-51dc-4bba-8170-9cd95edd3f66 |
    | resource_type             | instance                             |
    | severity                  | low                                  |
    | state                     | insufficient data                    |
    | state_reason              | Not evaluated yet                    |
    | state_timestamp           | 2017-11-16T05:20:48.891365           |
    | threshold                 | 80.0                                 |
    | time_constraints          | []                                   |
    | timestamp                 | 2017-11-16T05:20:48.891365           |
    | type                      | gnocchi_resources_threshold          |
    | user_id                   | 1dbf5787b2ee46cf9fa6a1dfea9c9996     |
    +---------------------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap
    • comparison-operator - ge operator 定义当 CPU 使用量大于(或等于) 80% 时警报将触发。
    • granularity - 指标关联有归档策略;策略可以具有各种粒度(例如,5 分钟聚合一个月 1 小时 + 1 小时聚合)。granularity 值必须与归档策略中描述的持续时间匹配。
    • 评估期间 - 在警报触发前需要经过 的粒度 周期数。例如,将此值设置为 2 将意味着,在警报触发前,CPU 用量需要超过 80% 的时间。
    • [U'log://'] - 此值将事件记录到您的 Aodh 日志文件中。

      注意

      您可以定义在警报触发时运行的不同操作(alarm_actions),以及返回正常状态(ok_actions)时运行的不同操作,如 webhook URL。

  4. 要检查您的警报是否已触发,查询警报的历史记录:

    aodh alarm-history show 1625015c-49b8-4e3f-9427-3c312a8615dd --fit-width
    +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
    | timestamp                  | type             | detail                                                                                                                                            | event_id                             |
    +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
    | 2017-11-16T05:21:47.850094 | state transition | {"transition_reason": "Transition to ok due to 1 samples inside threshold, most recent: 0.0366665763", "state": "ok"}                             | 3b51f09d-ded1-4807-b6bb-65fdc87669e4 |
    +----------------------------+------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------+
    Copy to Clipboard Toggle word wrap

3.10.9. 管理资源类型

以前硬编码的 Telemetry 资源类型现在可以由 gnocchi 客户端管理。您可以使用 gnocchi 客户端来创建、查看和删除资源类型,您可以使用 gnocchi API 更新或删除属性。

1.创建新 资源类型

$ gnocchi resource-type create testResource01 -a bla:string:True:min_length=123
+----------------+------------------------------------------------------------+
| Field          | Value                                                      |
+----------------+------------------------------------------------------------+
| attributes/bla | max_length=255, min_length=123, required=True, type=string |
| name           | testResource01                                             |
| state          | active                                                     |
+----------------+------------------------------------------------------------+
Copy to Clipboard Toggle word wrap

2.检查 资源类型的 配置:

$ gnocchi resource-type show testResource01
+----------------+------------------------------------------------------------+
| Field          | Value                                                      |
+----------------+------------------------------------------------------------+
| attributes/bla | max_length=255, min_length=123, required=True, type=string |
| name           | testResource01                                             |
| state          | active                                                     |
+----------------+------------------------------------------------------------+
Copy to Clipboard Toggle word wrap

3.删除 资源类型

$ gnocchi resource-type delete testResource01
Copy to Clipboard Toggle word wrap
注意

如果资源正在使用,则无法删除资源类型。

第 4 章 故障排除

本章包含日志记录和支持信息,以帮助对您的 Red Hat OpenStack Platform 部署进行故障排除。

4.1. 支持

如果客户端命令失败或者您遇到其他问题,请联络红帽技术支持及发生情况、完整控制台输出、控制台输出中引用的所有日志文件,以及出现问题的节点中的 sosreport。例如,如果您在计算级别遇到问题,在 Nova 节点上运行 sosreport,或者如果为联网问题,请在 Neutron 节点上运行 实用程序。对于常规部署问题,最好在云控制器中运行 sosreport

有关 sosreport 命令(sos 软件包)的详情,请参考 sosreport 是什么以及如何在 Red Hat Enterprise Linux 4.6 及之后的版本中创建它

另外,检查 /var/log/messages 文件是否有 hints。

当身份客户端(keystone)无法联系其身份服务,它会返回错误:

Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
Copy to Clipboard Toggle word wrap

要调试问题检查这些常见原因:

身份服务关闭

身份服务现在在 httpd.service 中运行。在托管 Identity 服务的系统中,检查服务状态:

# systemctl status httpd.service
Copy to Clipboard Toggle word wrap

如果服务不激活,则以 root 用户身份登录并启动该服务。

# systemctl start httpd.service
Copy to Clipboard Toggle word wrap
防火墙没有被正确配置
防火墙可能没有配置为在端口 500035357 上允许 TCP 流量。如果是这样,请参阅高级 Overcloud 自定义指南中的管理 Overcloud 防火墙,以了解有关检查防火墙设置和定义自定义规则的说明。
Service Endpoints 没有正确定义

在托管身份服务的系统上,检查端点是否已正确定义。

  1. 获取管理令牌:

    # grep admin_token /etc/keystone/keystone.conf
    admin_token = 91f0866234a64fc299db8f26f8729488
    Copy to Clipboard Toggle word wrap
  2. 确定身份服务的正确管理端点:

    http://IP:35357/VERSION
    Copy to Clipboard Toggle word wrap

    使用托管身份服务的系统的 IP 地址或主机名替换 IP。将 VERSION 替换为正在使用的 API 版本( v2.0 或 v3)。

  3. 取消设置任何预定义身份服务相关环境变量:

    # unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
    Copy to Clipboard Toggle word wrap
  4. 使用管理令牌和端点与身份服务进行身份验证。确认 Identity 服务端点正确。例如:

    # openstack endpoint list --os-token=91f0556234a64fc299db8f26f8729488 --os-url=https://osp.lab.local:35357/v3/  --os-identity-api-version 3
    Copy to Clipboard Toggle word wrap

    验证 Identity 服务中列出的 publicurl内部 url 和 adminurl 是否都正确。特别是确保每个端点中列出的 IP 地址和端口号正确,并可通过网络访问。

    如果这些值不正确,请添加正确的端点,并使用 openstack 命令的 endpoint delete 操作删除任何不正确的端点。例如:

    # openstack endpoint delete 2d32fa6feecc49aab5de538bdf7aa018  --os-token=91f0866234a64fc299db8f26f8729488 --os-url=https://osp.lab.local:35357/v3/ --os-identity-api-version 3
    Copy to Clipboard Toggle word wrap

    TOKENENDPOINT 替换为前面标识的值。将 ID 替换为要按照 endpoint-list 操作列出的端点的身份。

4.3. OpenStack 网络问题故障排除

本节讨论您可以使用的不同命令和步骤来排除 OpenStack 网络服务问题。

调试网络设备
  • 使用 ip a 命令显示所有物理和虚拟设备。
  • 使用 ovs-vsctl show 命令显示虚拟交换机中的接口和网桥。
  • 使用 ovs-dpctl show 命令显示交换机上的数据路径。
跟踪网络数据包
  • 使用 tcpdump 命令查看数据包没有通过什么位置。

    # tcpdump -n -i INTERFACE -e -w FILENAME
    Copy to Clipboard Toggle word wrap

    使用网络接口名称替换 INTERFACE,以查看数据包不会通过的位置。接口名称可以是网桥或主机以太网设备的名称。

    -e 标志确保转储链路级标头(将出现 vlan 标签)。

    -w 标志是可选的。只有在您想要将输出写入文件时才可以使用它。如果没有,输出将写入标准输出(stdout)。

    有关 tcpdump 的详情,请参考 man tcpdump

调试网络命名空间
  • 使用 ip netns list 命令列出所有已知的网络命名空间。
  • 使用 ip netns exec 命令显示特定命名空间中的路由表。

    # ip netns exec NAMESPACE_ID bash
    # route -n
    Copy to Clipboard Toggle word wrap

    在 bash shell 中启动 ip netns exec 命令,以便在没有 ip netns exec 命令的情况下调用后续命令。

只有在 环境配置为使用 OpenStack 网络时,网络和路由器选项卡才会出现在仪表板中。特别是,默认情况下,PackStack 实用程序当前部署了 Nova 网络,因此在以这种方式部署的环境中,该选项卡将不可见。

如果环境中部署了 OpenStack 网络,但标签仍然不显示在身份服务中定义服务端点,则防火墙允许访问端点,并且服务正在运行。

在使用控制面板启动实例时,如果操作失败,则会显示通用 ERROR 消息。确定故障的实际原因需要使用命令行工具。

使用 nova list 命令查找实例的唯一标识符。然后,将此标识符用作 nova show 命令的参数。返回的其中一个项目将是错误条件。最常见的值为 NoValidHost

此错误表示没有找到有足够可用资源的有效的主机,可以托管该实例。要临时解决这个问题,请考虑选择较小的实例大小或增加环境的过量使用允许。

注意

若要托管给定的实例,计算节点必须不仅可用的 CPU 和 RAM 资源,也必须有足够的磁盘空间用于与实例关联的临时存储。

django_openstack_auth 是一个可插拔 Django 身份验证后端,可与 Django 的 contrib.auth 框架一起工作,以根据 OpenStack Identity 服务 API 验证用户身份。Django_openstack_auth 使用 token 对象来封装用户和 Keystone 相关信息。控制面板使用令牌对象来重建 Django 用户对象。

令牌对象当前存储:

  • Keystone 令牌
  • 用户信息
  • 影响范围
  • 角色
  • 服务目录

控制面板使用 Django 的会话框架来处理用户会话数据。以下是可用的大量会话后端列表,这些后端通过 local_settings.py 文件中的 SESSION_ENGINE 设置进行控制:

  • 本地内存缓存
  • Memcached
  • 数据库
  • 缓存的数据库
  • cookies

在某些情况下,特别是在使用签名 Cookie 会话后端时,当有多个或所有服务同时都启用时,cookie 的大小也无法访问其限制,仪表板无法登录。Cookie 大小增长的一个原因就是服务目录。注册更多服务时,服务目录的大小会越大。

在这样的情形中,为了提高会话令牌管理,请包括以下配置设置以登录控制面板,特别是在使用 Keystone v3 身份验证时。

  1. 在 /usr/share/openstack-dashboard/openstack_dashboard/settings.py 中添加以下配置:

    DATABASES =
    {
      default:
      {
        ENGINE: django.db.backends.mysql,
        NAME: horizondb,
        USER: User Name,
        PASSWORD: Password,
        HOST: localhost,
       }
    }
    Copy to Clipboard Toggle word wrap
  2. 在同一个文件中,将 SESSION_ENGINE 改为:

    SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
    Copy to Clipboard Toggle word wrap
  3. 使用 mysql 命令连接数据库服务,用要连接的用户名替换 USER。USER 必须是 root 用户(或至少是一个拥有正确权限的用户:create db)。

    # mysql -u USER -p
    Copy to Clipboard Toggle word wrap
  4. 创建 Horizon 数据库。

    mysql > create database horizondb;
    Copy to Clipboard Toggle word wrap
  5. 退出 mysql 客户端。

    mysql > exit
    Copy to Clipboard Toggle word wrap
  6. 进入 openstack_dashboard 目录并同步数据库:

    # cd /usr/share/openstack-dashboard/openstack_dashboard
    $ ./manage.py syncdb
    Copy to Clipboard Toggle word wrap

    您不需要创建超级用户,因此回答 n 对问题。

  7. 重启 Apache http 服务器。Red Hat Enterprise Linux:

    # systemctl restart httpd
    Copy to Clipboard Toggle word wrap

4.6.1. OpenStack Dashboard - Red Hat Access Tab

Red Hat Access 选项卡(作为 OpenStack 仪表板的一部分)允许您从红帽客户门户网站搜索并阅读文章或解决方案,查看实例的日志并诊断它们,并与您的客户支持问题单一起工作。

图 4.1. Red Hat Access 选项卡.

重要

您必须在浏览器中登录到红帽客户门户网站,才能使用 Red Hat Access 选项卡提供的功能。

如果您没有登录,现在您可以:

  1. Log In
  2. 输入您的 Red Hat 登录。
  3. 输入您的红帽密码。
  4. 单击 中的 Sign in

这是表单的方式:

图 4.2. 登录红帽客户门户网站。

如果您现在没有登录,当您使用需要身份验证的某个功能时,会提示您输入 Red Hat 登录名和密码。

4.6.1.2. 日志

在这里,您可以从 OpenStack 实例读取日志:

图 4.4. Red Hat Access 选项卡上的实例日志。

在表中查找您选择的实例。如果您有多个实例,您可以根据名称、状态、镜像 ID 或类别 ID 进行过滤。在实例 的操作 列中,单击 View Log 以检查。

当显示实例日志时,您可以点击 Red Hat 诊断 以获取有关其内容的建议:

图 4.5. Red Hat Access 选项卡上的实例日志。

如果所有建议都没有有用或者已经记录了相应的问题,请点击 Open a New Support Case 向红帽支持报告问题。

4.6.1.3. 支持

Red Hat Access Tab 中的最后一个选项允许您在红帽客户门户网站中搜索您的支持问题单:

图 4.6. 搜索支持问题单。

您还可以点击适当的按钮并填写以下页面上的表单来创建一个新的支持问题单:

图 4.7. 创建新的支持问题单。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat