日志记录监控和故障排除指南
OpenStack Logging、监控和故障排除的深入了解指南
摘要
前言 复制链接链接已复制到粘贴板!
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对文档提供反馈信息。与我们分享您的成功秘诀。
使用直接文档反馈(DDF)功能
使用 添加反馈 DDF 功能,用于特定句子、段落或代码块上的直接注释。
- 以 Multi-page HTML 格式查看文档。
- 请确定您看到文档右上角的 反馈 按钮。
- 用鼠标指针高亮显示您想评论的文本部分。
- 点 添加反馈。
- 使用您的评论 完成 Add feedback 字段。
- 可选:添加您的电子邮件地址,以便文档团队可以联系您的问题。
- 点 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
openstack overcloud deploy \ <existing_overcloud_environment_files> \ -e /usr/share/openstack-tripleo-heat-templates/environments/logging-environment-rsyslog.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用现有部署一部分的环境文件列表替换。
<existing_overcloud_environment_files>
2.3. 配置日志记录功能 复制链接链接已复制到粘贴板!
要配置日志记录功能,请在 logging-environment-rsyslog.yaml 文件中修改 RsyslogElasticsearchSetting 参数。
流程
-
将
tripleo-heat-templates/environments/logging-environment-rsyslog.yaml文件复制到您的主目录。 在
RsyslogElasticsearchSetting参数中创建条目以适合您的环境。以下片段是RsyslogElasticsearchSetting参数配置示例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
- 有关可配置参数的详情,请参考 第 2.3.1 节 “可配置的日志记录参数”。
2.3.1. 可配置的日志记录参数 复制链接链接已复制到粘贴板!
这个表格包含了您在 Red Hat OpenStack Platform(RHOSP)中配置日志记录功能的日志参数描述。您可以在 tripleo-heat-templates/deployment/logging/rsyslog-container-puppet.yaml 文件中找到这些参数。
| 参数 | 描述 |
|---|---|
|
|
配置 |
|
| 包含发布 Elasticsearch 服务器证书的 CA 证书的内容。 |
|
| 包含针对 Elasticsearch 进行客户端证书授权的内容。 |
|
|
包含与 cert |
2.4. 覆盖日志文件的默认路径 复制链接链接已复制到粘贴板!
如果您修改默认容器和修改服务日志文件的路径,还必须修改默认的日志文件路径。每个可组合的服务都有一个 < ;service_name>LoggingSource 参数。例如,对于 nova-compute 服务,参数是 NovaComputeLoggingSource。
流程
要覆盖 nova-compute 服务的默认路径,请在配置文件中添加
NovaComputeLoggingSource参数的路径:NovaComputeLoggingSource: tag: openstack.nova.compute file: /some/other/path/nova-compute.logNovaComputeLoggingSource: tag: openstack.nova.compute file: /some/other/path/nova-compute.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于每个服务,
定义标签和文件。其他值默认是派生的。您可以修改特定服务的格式。这会直接传递给 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<service_name>LoggingSource: tag: <service_name>.tag path: <service_name>.path format: <service_name>.formatCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下片段是一个更复杂的转换示例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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]+\\)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 Copied! Toggle word wrap Toggle overflow
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) '
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) '
当此默认值与添加或修改的 LoggingSource 的日志记录不匹配时,您必须相应地更改 startmsg.regex。
2.9. OpenStack 服务的日志文件位置 复制链接链接已复制到粘贴板!
每个 OpenStack 组件都有单独的日志记录目录,其中包含特定于正在运行的服务的文件。
2.9.1. 裸机置备(ironic)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 特定用户交互的日志 | 仪表板接口 | /var/log/containers/horizon/horizon.log |
Apache HTTP 服务器为 Dashboard Web 界面使用几个额外的日志文件,您可以使用 Web 浏览器或命令行客户端来访问该文件,如 keystone 和 nova。下表中的日志文件有助于跟踪仪表板并诊断故障:
| 用途 | 日志路径 |
|---|---|
| 所有处理的 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)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| OpenStack Identity Service | openstack-keystone.service | /var/log/containers/keystone/keystone.log |
2.9.6. Image Service(glance)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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
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
以下是来自后台守护进程的临时消息示例:
2.9.9. 编配(heat)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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.11. Telemetry(ceilometer)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 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 核心组件使用,并且有自己的日志目录和文件。
| 服务 | 服务名称 | 日志路径 |
|---|---|---|
| 消息代理(RabbitMQ) | rabbitmq-server.service |
/var/log/rabbitmq/rabbit@short_hostname.log |
| 数据库服务器(MariaDB) | mariadb.service | /var/log/mariadb/mariadb.log |
| 虚拟网络交换机(Open vSwitch) | openvswitch-nonetwork.service |
/var/log/openvswitch/ovsdb-server.log |
2.9.13. Aodh(警报服务)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 容器名称 | 日志路径 |
|---|---|---|
| 警报 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(指标存储)日志文件 复制链接链接已复制到粘贴板!
| 服务 | 容器名称 | 日志路径 |
|---|---|---|
| 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 |
第 3 章 为 Telemetry 配置时间序列数据库(Gnocchi) 复制链接链接已复制到粘贴板!
时间序列数据库(Gnocchi)是一个多项目、指标和资源数据库。它旨在以非常大的规模存储指标,同时为操作员和用户提供对指标和资源信息的访问。
3.1. 了解时间序列数据库 复制链接链接已复制到粘贴板!
本节定义时间序列数据库(Gnocchi)features 常用术语。
- 聚合方法
-
用于聚合多个测量结果到聚合的功能。例如,
min聚合方法将不同测量结果的值聚合到时间范围中所有测量结果的最小值。 - aggregate
- 根据归档策略从多个测量结果生成的数据点元。聚合由时间戳和值组成。
- 归档策略
- 附加至指标的总存储策略。归档策略决定了在指标中保留聚合的时长,以及聚合方法(聚合方法)。
- granularity
- 指标聚合中两个聚合之间的时间。
- 测量结果
- 通过 API 发送到时间序列数据库的传入数据点元。测量结果由时间戳和值组成。
- 指标
- 存储由 UUID 标识的聚合的实体。指标可以使用名称附加到资源。指标存储其聚合的方式由指标关联的归档策略定义。
- 资源
- 代表您将指标与之关联的基础架构中的任何实体。资源通过唯一 ID 标识,可以包含属性。
- 时间序列
- 按时间排序的聚合列表。
- timespan
- 指标保留聚合的时间周期。它用于归档策略的上下文。
3.2. 指标 复制链接链接已复制到粘贴板!
时间序列数据库(Gnocchi)存储来自 Telemetry 的指标,这些指标指定可以测量的任何对象,例如:服务器的 CPU 使用量、空间温度或网络接口发送的字节数。
指标具有以下属性:
- 用于标识指标的 UUID
- 指标名称
- 用于存储和聚合测量结果的归档策略
时间序列数据库默认存储以下指标,如 etc/ceilometer/polling.yaml 文件中定义:
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
# gnocchi-api
# gnocchi-metricd
3.5. 作为 WSGI 应用程序运行 复制链接链接已复制到粘贴板!
您可以通过 WSGI 服务(如 mod_wsgi 或任何其他 WSGI 应用程序)运行 Gnocchi。您可以使用 gnocchi/rest/app.wsgi 文件(通过 Gnocchi 提供)启用 Gnocchi 作为 WSGI 应用程序。
Gnocchi API 层使用 WSGI 运行。这意味着可以使用 Apache httpd 和 mod_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'"
openstack metric resource batch delete "ended_at < '-30days'"
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
# openstack metric measures show --resource-id UUID METER_NAME
仅列出特定资源在时间戳范围内进行的测量结果:
openstack metric measures show --aggregation mean --start <START_TIME> --stop <STOP_TIME> --resource-id UUID METER_NAME
# openstack metric measures show --aggregation mean --start <START_TIME> --stop <STOP_TIME> --resource-id UUID METER_NAME
时间戳变量 <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
# openstack metrics measures add -m 2015-01-12T17:56:23@42 --resource-id UUID METER_NAME
3.10.3. 示例:查看云使用措施 复制链接链接已复制到粘贴板!
本例显示了每个项目所有实例的平均内存用量。
openstack metric measures aggregation --resource-type instance --groupby project_id -m memory
# openstack metric measures aggregation --resource-type instance --groupby project_id -m memory
3.10.4. 查看现有警报 复制链接链接已复制到粘贴板!
若要列出现有的遥测警报,可使用 aodh 命令。例如:
要列出分配给某一资源的计量,请指定资源的 UUID (实例、镜像或卷等)。例如:
gnocchi resource show 5e3fcbe2-7aab-475d-b42c-a440aa42e5ad
# gnocchi resource show 5e3fcbe2-7aab-475d-b42c-a440aa42e5ad
3.10.5. 创建 Alarm 复制链接链接已复制到粘贴板!
您可以使用 aodh 创建在达到阈值时激活的警报。在本例中,警报会在单个实例的平均 CPU 利用率超过 80% 时激活并添加日志条目。查询用于隔离特定实例的 ID(94619081-abf5-4f1f-81c7-9cedaa872403)以进行监控:
要编辑现有的阈值警报,请使用 aodh 警报更新 命令。例如,要将警报阈值增加到 75%:
aodh alarm update --name cpu_usage_high --threshold 75
# aodh alarm update --name cpu_usage_high --threshold 75
3.10.6. 禁用或删除 Alarm 复制链接链接已复制到粘贴板!
禁用警报:
aodh alarm update --name cpu_usage_high --enabled=false
# aodh alarm update --name cpu_usage_high --enabled=false
删除警报:
aodh alarm delete --name cpu_usage_high
# aodh alarm delete --name cpu_usage_high
3.10.7. 示例:监控实例的磁盘活动 复制链接链接已复制到粘贴板!
以下示例演示了如何使用 Aodh 警报监控特定项目中包含的所有实例的累积磁盘活动。
1.检查现有的项目,然后选择您需要监控的项目的适当 UUID。本例使用 admin 项目:
2.使用项目的 UUID 创建警报,以分析 admin 项目中实例生成的所有读取请求的 sum() (查询可以通过 --query 参数进一步限制)。
3.10.8. 示例:监控 CPU 用量 复制链接链接已复制到粘贴板!
如果要监控实例的性能,需要检查 gnocchi 数据库以识别您可以监控哪些指标,如内存或 CPU 用量。例如,针对一个实例运行 gnocchi 资源显示,以识别可以监控哪些指标:
查询特定实例 UUID 的可用指标:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 因此,
metrics值列出了可以使用 Aodh 警报监控的组件,如cpu_util。要监控 CPU 使用量,您需要
cpu_util指标。要查看此指标的更多信息:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
archive_policy- 定义用于计算std、count、min、max、sum 和 mean值的聚合间隔。
-
使用 Aodh 创建查询
cpu_util的监控任务。此任务将根据您指定的设置触发事件。例如,在实例的 CPU 高峰期超过 80% 时引发日志条目:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
comparison-operator-geoperator 定义当 CPU 使用量大于(或等于) 80% 时警报将触发。 -
granularity- 指标关联有归档策略;策略可以具有各种粒度(例如,5 分钟聚合一个月 1 小时 + 1 小时聚合)。granularity值必须与归档策略中描述的持续时间匹配。 -
评估期间 -在警报触发前需要经过的粒度周期数。例如,将此值设置为2将意味着,在警报触发前,CPU 用量需要超过 80% 的时间。 [U'log://']- 此值将事件记录到您的 Aodh 日志文件中。注意您可以定义在警报触发时运行的不同操作(
alarm_actions),以及返回正常状态(ok_actions)时运行的不同操作,如 webhook URL。
-
要检查您的警报是否已触发,查询警报的历史记录:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.10.9. 管理资源类型 复制链接链接已复制到粘贴板!
以前硬编码的 Telemetry 资源类型现在可以由 gnocchi 客户端管理。您可以使用 gnocchi 客户端来创建、查看和删除资源类型,您可以使用 gnocchi API 更新或删除属性。
1.创建新 资源类型 :
2.检查 资源类型的 配置:
3.删除 资源类型 :
gnocchi resource-type delete testResource01
$ gnocchi resource-type delete testResource01
如果资源正在使用,则无法删除资源类型。
第 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。
4.2. 对 Identity Client(keystone)连接问题进行故障排除 复制链接链接已复制到粘贴板!
当身份客户端(keystone)无法联系其身份服务,它会返回错误:
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
Unable to communicate with identity service: [Errno 113] No route to host. (HTTP 400)
要调试问题检查这些常见原因:
- 身份服务关闭
身份服务现在在 httpd.service 中运行。在托管 Identity 服务的系统中,检查服务状态:
systemctl status httpd.service
# systemctl status httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果服务不激活,则以 root 用户身份登录并启动该服务。
systemctl start httpd.service
# systemctl start httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 防火墙没有被正确配置
-
防火墙可能没有配置为在端口
5000和35357上允许 TCP 流量。如果是这样,请参阅高级 Overcloud 自定义指南中的管理 Overcloud 防火墙,以了解有关检查防火墙设置和定义自定义规则的说明。 - Service Endpoints 没有正确定义
在托管身份服务的系统上,检查端点是否已正确定义。
获取管理令牌:
grep admin_token /etc/keystone/keystone.conf
# grep admin_token /etc/keystone/keystone.conf admin_token = 91f0866234a64fc299db8f26f8729488Copy to Clipboard Copied! Toggle word wrap Toggle overflow 确定身份服务的正确管理端点:
http://IP:35357/VERSION
http://IP:35357/VERSIONCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用托管身份服务的系统的 IP 地址或主机名替换 IP。将 VERSION 替换为正在使用的 API 版本(
v2.0或 v3)。取消设置任何预定义身份服务相关环境变量:
unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URL
# unset OS_USERNAME OS_TENANT_NAME OS_PASSWORD OS_AUTH_URLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用管理令牌和端点与身份服务进行身份验证。确认 Identity 服务端点正确。例如:
openstack endpoint list --os-token=91f0556234a64fc299db8f26f8729488 --os-url=https://osp.lab.local:35357/v3/ --os-identity-api-version 3
# openstack endpoint list --os-token=91f0556234a64fc299db8f26f8729488 --os-url=https://osp.lab.local:35357/v3/ --os-identity-api-version 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 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
# openstack endpoint delete 2d32fa6feecc49aab5de538bdf7aa018 --os-token=91f0866234a64fc299db8f26f8729488 --os-url=https://osp.lab.local:35357/v3/ --os-identity-api-version 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 TOKEN 和 ENDPOINT 替换为前面标识的值。将 ID 替换为要按照
endpoint-list操作列出的端点的身份。
4.3. OpenStack 网络问题故障排除 复制链接链接已复制到粘贴板!
本节讨论您可以使用的不同命令和步骤来排除 OpenStack 网络服务问题。
- 调试网络设备
-
使用
ip a命令显示所有物理和虚拟设备。 -
使用
ovs-vsctl show命令显示虚拟交换机中的接口和网桥。 -
使用
ovs-dpctl show命令显示交换机上的数据路径。
-
使用
- 跟踪网络数据包
使用
tcpdump命令查看数据包没有通过什么位置。tcpdump -n -i INTERFACE -e -w FILENAME
# tcpdump -n -i INTERFACE -e -w FILENAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用网络接口名称替换 INTERFACE,以查看数据包不会通过的位置。接口名称可以是网桥或主机以太网设备的名称。
-e标志确保转储链路级标头(将出现vlan标签)。-w标志是可选的。只有在您想要将输出写入文件时才可以使用它。如果没有,输出将写入标准输出(stdout)。有关
tcpdump的详情,请参考man tcpdump。
- 调试网络命名空间
-
使用
ip netns list命令列出所有已知的网络命名空间。 使用
ip netns exec命令显示特定命名空间中的路由表。ip netns exec NAMESPACE_ID bash route -n
# ip netns exec NAMESPACE_ID bash # route -nCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 bash shell 中启动
ip netns exec命令,以便在没有ip netns exec命令的情况下调用后续命令。
-
使用
4.4. 对 Dashboard 中的网络和路由标签显示问题进行故障排除 复制链接链接已复制到粘贴板!
只有在 环境配置为使用 OpenStack 网络时,网络和路由器选项卡才会出现在仪表板中。特别是,默认情况下,PackStack 实用程序当前部署了 Nova 网络,因此在以这种方式部署的环境中,该选项卡将不可见。
如果环境中部署了 OpenStack 网络,但标签仍然不显示在身份服务中定义服务端点,则防火墙允许访问端点,并且服务正在运行。
4.5. 在控制面板中启动错误对实例启动错误进行故障排除 复制链接链接已复制到粘贴板!
在使用控制面板启动实例时,如果操作失败,则会显示通用 ERROR 消息。确定故障的实际原因需要使用命令行工具。
使用 nova list 命令查找实例的唯一标识符。然后,将此标识符用作 nova show 命令的参数。返回的其中一个项目将是错误条件。最常见的值为 NoValidHost。
此错误表示没有找到有足够可用资源的有效的主机,可以托管该实例。要临时解决这个问题,请考虑选择较小的实例大小或增加环境的过量使用允许。
若要托管给定的实例,计算节点必须不仅可用的 CPU 和 RAM 资源,也必须有足够的磁盘空间用于与实例关联的临时存储。
4.6. 对 Keystone v3 Dashboard 身份验证进行故障排除 复制链接链接已复制到粘贴板!
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 身份验证时。
在 /usr/share/openstack-dashboard/openstack_dashboard/settings.py 中添加以下配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在同一个文件中,将 SESSION_ENGINE 改为:
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 mysql 命令连接数据库服务,用要连接的用户名替换 USER。USER 必须是 root 用户(或至少是一个拥有正确权限的用户:create db)。
mysql -u USER -p
# mysql -u USER -pCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Horizon 数据库。
mysql > create database horizondb;
mysql > create database horizondb;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 退出 mysql 客户端。
mysql > exit
mysql > exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进入 openstack_dashboard 目录并同步数据库:
cd /usr/share/openstack-dashboard/openstack_dashboard ./manage.py syncdb
# cd /usr/share/openstack-dashboard/openstack_dashboard $ ./manage.py syncdbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您不需要创建超级用户,因此回答 n 对问题。
重启 Apache http 服务器。Red Hat Enterprise Linux:
systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6.1. OpenStack Dashboard - Red Hat Access Tab 复制链接链接已复制到粘贴板!
Red Hat Access 选项卡(作为 OpenStack 仪表板的一部分)允许您从红帽客户门户网站搜索并阅读文章或解决方案,查看实例的日志并诊断它们,并与您的客户支持问题单一起工作。
图 4.1. Red Hat Access 选项卡.
您必须在浏览器中登录到红帽客户门户网站,才能使用 Red Hat Access 选项卡提供的功能。
如果您没有登录,现在您可以:
- 点 Log In。
- 输入您的 Red Hat 登录。
- 输入您的红帽密码。
- 单击 中的 Sign in。
这是表单的方式:
图 4.2. 登录红帽客户门户网站。
如果您现在没有登录,当您使用需要身份验证的某个功能时,会提示您输入 Red Hat 登录名和密码。
4.6.1.1. 搜索 复制链接链接已复制到粘贴板!
您可以通过输入一个或多个搜索关键字从红帽客户门户网站搜索文章和解决方案。然后会显示相关文章和解决方案的标题。点击标题查看给定的文章或解决方案:
图 4.3. Red Hat Access Tab 上的搜索结果示例。
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. 创建新的支持问题单。