Neutron 计量系统¶
Neutron 计量服务使操作员能够统计 OpenStack 环境的进出流量。该概念非常简单,操作员可以创建计量标签,并决定这些标签是应用于所有项目(租户)还是应用于特定项目。然后,操作员需要在计量标签中创建流量规则。流量规则用于匹配进出 OpenStack 环境的流量,并将数据包和字节的统计信息发送到通知队列,由 Ceilometer(或其他消耗该队列的系统)进行进一步处理。发送到队列中的消息类型为 event。因此,需要在 Ceilometer 中添加/启用事件处理配置。
计量代理程序具有以下配置
driver:用于实现计量规则的驱动程序。默认值为neutron.services.metering.drivers.noop,这意味着我们在网络主机中不执行任何操作。目前仅实现了一个驱动程序neutron.services.metering.drivers.iptables.iptables_driver.IptablesMeteringDriver。因此,目前仅支持iptables;measure_interval:用于从网络层面收集字节和数据包信息的秒数间隔。默认值为30秒;report_interval:用于生成数据报告(消息)的秒数间隔。默认值为300秒。granular_traffic_data:定义计量代理驱动程序是否应以粒状方式呈现流量数据,而不是将所有项目的流量数据和标签分配到的所有路由器的流量数据分组在一起。默认值为False,以保持向后兼容性。
非粒状流量消息¶
非粒状(granular_traffic_data = False)流量消息(此处也称为遗留)的格式如下;请记住,如果共享标签,则计数器是应用标签的所有项目和所有路由器的总计数器。
{
"pkts": "<the number of packets that matched the rules of the labels>",
"bytes": "<the number of bytes that matched the rules of the labels>",
"time": "<seconds between the first data collection and the last one>",
"first_update": "timeutils.utcnow_ts() of the first collection",
"last_update": "timeutils.utcnow_ts() of the last collection",
"host": "<neutron metering agent host name>",
"label_id": "<the label id>",
"tenant_id": "<the tenant id>"
}
first_update 和 last_update 时间戳表示报告间隔内首次和最后一次数据收集发生的时间。另一方面,time 表示这两个时间戳之间的差值。
当标签未共享时,tenant_id 才保持一致。否则,它将包含代理程序启动时处理的最后一个路由器和最后一个项目的项目 ID。换句话说,在处理共享标签时,最好不要使用它。
以这种配置模式生成的所有消息都作为 l3.meter 事件发送到消息总线。
粒状流量消息¶
粒状(granular_traffic_data = True)流量消息允许操作员获取共享计量标签的粒状信息。因此,当配置为 shared=True 并应用于环境中的所有项目/路由器时,单个标签将以粒状方式生成数据。
它(计量代理程序)将按以下粒度计算流量计数器数据。
label– 给定标签的所有流量计数器。必须记住,一个标签可以分配给多个路由器。因此,此粒度代表应用标签的所有项目和所有路由器的所有数据的总和。router– 分配给路由器的所有标签的所有流量计数器。project– 项目拥有的所有标签的所有路由器的所有流量计数器。router-label– 路由器和给定标签的所有流量计数器。project-label– 项目的所有路由器具有给定标签的所有流量计数器。
此处呈现的每个粒度都以不同的事件类型发送到消息总线。粒度和事件类型之间的映射如下所示。
label– 事件类型l3.meter.label。router– 事件类型l3.meter.router。project– 事件类型l3.meter.project。router-label– 事件类型l3.meter.label_router。project-label– 事件类型l3.meter.label_project。
此外,我们还有附加到消息的元数据,具体取决于粒度。以下是粒度和可用元数据之间的映射。
label、router-label和project-label粒度 – 具有元数据label_id、label_name、label_shared、project_id(如果共享,此值将对label粒度显示all)和router_id(仅用于router-label粒度)。router粒度 – 具有router_id和project_id元数据。project粒度仅具有project_id元数据。
该消息还将包含一些可以在遗留模式中找到的属性,例如 bytes、pkts、time、first_update、last_update 和 host。以下是包含所有可能属性的 JSON 消息示例。
{
"resource_id": "router-f0f745d9a59c47fdbbdd187d718f9e41-label-00c714f1-49c8-462c-8f5d-f05f21e035c7",
"project_id": "f0f745d9a59c47fdbbdd187d718f9e41",
"first_update": 1591058790,
"bytes": 0,
"label_id": "00c714f1-49c8-462c-8f5d-f05f21e035c7",
"label_name": "test1",
"last_update": 1591059037,
"host": "<hostname>",
"time": 247,
"pkts": 0,
"label_shared": true
}
resource_id 是正在监视的“资源”的唯一标识符。在这里,我们将资源视为我们处理的任何粒度。
计量代理程序.ini 示例¶
以下是计量代理程序 init 文件中可以使用的所有可能的配置。
默认值¶
- ovs_use_veth¶
- 类型:
布尔值
- 默认值:
False
是否使用 veth 作为 OVS 接口。支持内核有限的命名空间支持(例如 RHEL 6.5)以及路由器网关端口上的速率限制,只要将 ovs_use_veth 设置为 True。
- interface_driver¶
- 类型:
字符串
- 默认值:
openvswitch
用于管理虚拟接口的驱动程序。
- rpc_response_max_timeout¶
- 类型:
整数
- 默认值:
600
等待 RPC 调用响应的最大秒数。
- driver¶
- 类型:
字符串
- 默认值:
neutron.services.metering.drivers.noop.noop_driver.NoopMeteringDriver
计量驱动程序
- measure_interval¶
- 类型:
整数
- 默认值:
30
两次计量测量之间的间隔
- report_interval¶
- 类型:
整数
- 默认值:
300
两次计量报告之间的间隔
- granular_traffic_data¶
- 类型:
布尔值
- 默认值:
False
定义计量代理驱动程序是否应以粒状方式呈现流量数据,而不是将所有项目的流量数据和标签分配到的所有路由器的流量数据分组在一起。默认值为 False,以保持向后兼容性。
- debug¶
- 类型:
布尔值
- 默认值:
False- 可变:
此选项可以在不重启的情况下更改。
如果设置为 true,日志级别将被设置为 DEBUG,而不是默认的 INFO 级别。
- log_config_append¶
- 类型:
字符串
- 默认值:
<None>- 可变:
此选项可以在不重启的情况下更改。
日志配置文件的名称。此文件将附加到任何现有的日志配置文件。有关日志配置文件的详细信息,请参阅 Python 日志模块文档。请注意,当使用日志配置文件时,所有日志配置都设置在配置文件中,并且其他日志配置选项将被忽略(例如,log-date-format)。
已弃用的变体¶ Group
名称
DEFAULT
log-config
DEFAULT
log_config
- log_date_format¶
- 类型:
字符串
- 默认值:
%Y-%m-%d %H:%M:%S
定义日志记录中的 %(asctime)s 的格式字符串。默认值:上述值。如果设置了 log_config_append,则此选项将被忽略。
- log_file¶
- 类型:
字符串
- 默认值:
<None>
(可选) 将日志输出发送到的日志文件名。如果没有设置默认值,日志将输出到 stderr,如 use_stderr 中定义的那样。如果设置了 log_config_append,则此选项将被忽略。
已弃用的变体¶ Group
名称
DEFAULT
logfile
- log_dir¶
- 类型:
字符串
- 默认值:
<None>
(可选) 用于相对 log_file 路径的基本目录。如果设置了 log_config_append,则此选项将被忽略。
已弃用的变体¶ Group
名称
DEFAULT
logdir
- watch_log_file¶
- 类型:
布尔值
- 默认值:
False
使用设计为监视文件系统的日志记录处理程序。当日志文件被移动或删除时,此处理程序将立即使用指定的路径打开新的日志文件。只有在指定了 log_file 选项并且使用 Linux 平台时才有意义。如果设置了 log_config_append,则此选项将被忽略。
警告
此选项已弃用,将来可能会被静默忽略。
- 原因:
已知此功能长期存在问题,并且依赖于未维护的库
- use_syslog¶
- 类型:
布尔值
- 默认值:
False
使用 syslog 进行日志记录。现有的 syslog 格式已弃用,以后将更改为符合 RFC5424。如果设置了 log_config_append,则此选项将被忽略。
- use_journal¶
- 类型:
布尔值
- 默认值:
False
启用 journald 进行日志记录。如果正在 systemd 环境中运行,您可能希望启用 journal 支持。这样做将使用 journal 本机协议,其中包括结构化元数据以及日志消息。如果设置了 log_config_append,则此选项将被忽略。
- syslog_log_facility¶
- 类型:
字符串
- 默认值:
LOG_USER
接收日志行的 syslog facility。如果设置了 log_config_append,则此选项将被忽略。
- use_json¶
- 类型:
布尔值
- 默认值:
False
使用 JSON 格式进行日志记录。如果设置了 log_config_append,则此选项将被忽略。
- use_stderr¶
- 类型:
布尔值
- 默认值:
False
将日志输出记录到标准错误。如果设置了 log_config_append,则此选项将被忽略。
- log_color¶
- 类型:
布尔值
- 默认值:
False
(可选) 根据日志级别设置“color”键。此选项仅在将日志记录到 stderr 或 stdout 时生效。如果设置了 log_config_append,则此选项将被忽略。
- log_rotate_interval¶
- 类型:
整数
- 默认值:
1
日志文件轮换前的时间量。如果未设置 log_rotation_type 为“interval”,则此选项将被忽略。
- log_rotate_interval_type¶
- 类型:
字符串
- 默认值:
days- 有效值:
秒、分钟、小时、天、星期几、午夜
轮换间隔类型。在安排下一次轮换时,使用上次文件更改时间(或服务启动时间)。
- max_logfile_count¶
- 类型:
整数
- 默认值:
30
最大轮换日志文件数。
- max_logfile_size_mb¶
- 类型:
整数
- 默认值:
200
日志文件最大大小(MB)。如果“log_rotation_type”未设置为“size”,则此选项将被忽略。
- log_rotation_type¶
- 类型:
字符串
- 默认值:
none- 有效值:
interval, size, none
日志轮换类型。
可能的值
- interval
以预定义的时间间隔轮换日志。
- size
当日志达到预定义的大小后轮换日志。
- none
不轮换日志文件。
- logging_context_format_string¶
- 类型:
字符串
- 默认值:
%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s
用于带有上下文的日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用
- logging_default_format_string¶
- 类型:
字符串
- 默认值:
%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s
当上下文未定义时,用于日志消息的格式字符串。由 oslo_log.formatters.ContextFormatter 使用
- logging_debug_format_suffix¶
- 类型:
字符串
- 默认值:
%(funcName)s %(pathname)s:%(lineno)d
当消息的日志级别为 DEBUG 时,附加到日志消息的额外数据。由 oslo_log.formatters.ContextFormatter 使用
- logging_exception_prefix¶
- 类型:
字符串
- 默认值:
%(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s
将此格式作为异常输出的每一行的前缀。由 oslo_log.formatters.ContextFormatter 使用
- logging_user_identity_format¶
- 类型:
字符串
- 默认值:
%(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s
定义 logging_context_format_string 中使用的 %(user_identity)s 的格式字符串。由 oslo_log.formatters.ContextFormatter 使用
- default_log_levels¶
- 类型:
列表
- 默认值:
['amqp=WARN', 'amqplib=WARN', 'boto=WARN', 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', 'oslo.messaging=INFO', 'oslo_messaging=INFO', 'iso8601=WARN', 'requests.packages.urllib3.connectionpool=WARN', 'urllib3.connectionpool=WARN', 'websocket=WARN', 'requests.packages.urllib3.util.retry=WARN', 'urllib3.util.retry=WARN', 'keystonemiddleware=WARN', 'routes.middleware=WARN', 'stevedore=WARN', 'taskflow=WARN', 'keystoneauth=WARN', 'oslo.cache=INFO', 'oslo_policy=INFO', 'dogpile.core.dogpile=INFO']
包日志级别列表,格式为 logger=LEVEL 对。如果设置了 log_config_append,则此选项将被忽略。
- publish_errors¶
- 类型:
布尔值
- 默认值:
False
启用或禁用错误事件的发布。
- instance_format¶
- 类型:
字符串
- 默认值:
"[instance: %(uuid)s] "
与日志消息一起传递的实例的格式。
- instance_uuid_format¶
- 类型:
字符串
- 默认值:
"[instance: %(uuid)s] "
与日志消息一起传递的实例 UUID 的格式。
- rate_limit_interval¶
- 类型:
整数
- 默认值:
0
日志速率限制的间隔,秒数。
- rate_limit_burst¶
- 类型:
整数
- 默认值:
0
每 rate_limit_interval 允许记录的最大消息数。
- rate_limit_except_level¶
- 类型:
字符串
- 默认值:
CRITICAL- 有效值:
CRITICAL, ERROR, INFO, WARNING, DEBUG, ‘’
速率限制使用的日志级别。日志级别大于或等于 rate_limit_except_level 的日志不会被过滤。空字符串表示所有级别都不会被过滤。
- fatal_deprecations¶
- 类型:
布尔值
- 默认值:
False
启用或禁用弃用信息的致命状态。
agent¶
- report_interval¶
- 类型:
浮点数
- 默认值:
30
节点向服务器报告状态的秒数;应小于 agent_down_time,最好是 agent_down_time 的一半或更少。
- log_agent_heartbeats¶
- 类型:
布尔值
- 默认值:
False
记录 agent 心跳。
ovs¶
- ovsdb_connection¶
- 类型:
字符串
- 默认值:
tcp:127.0.0.1:6640
OVSDB 后端的连接字符串。将用于所有 OVSDB 命令和 ovsdb-client 监控时使用
- ssl_key_file¶
- 类型:
字符串
- 默认值:
<None>
与 OVSDB 交互时要使用的 SSL 私钥文件。在使用 “ssl:” 前缀的 ovsdb_connection 时需要
- ssl_cert_file¶
- 类型:
字符串
- 默认值:
<None>
与 OVSDB 交互时要使用的 SSL 证书文件。在使用 “ssl:” 前缀的 ovsdb_connection 时需要
- ssl_ca_cert_file¶
- 类型:
字符串
- 默认值:
<None>
与 OVSDB 交互时要使用的证书颁发机构 (CA) 证书。在使用 “ssl:” 前缀的 ovsdb_connection 时需要
- ovsdb_debug¶
- 类型:
布尔值
- 默认值:
False
启用 OVSDB 调试日志
- ovsdb_timeout¶
- 类型:
整数
- 默认值:
10
OVSDB 命令的超时时间(秒)。如果超时到期,OVSDB 命令将因 ALARMCLOCK 错误而失败。
- bridge_mac_table_size¶
- 类型:
整数
- 默认值:
50000
Neutron OVS 代理管理的桥接上可以学习的最大 MAC 地址数。超出合理范围的值(10 到 1,000,000)可能会被 Open vSwitch 根据文档覆盖。
- igmp_snooping_enable¶
- 类型:
布尔值
- 默认值:
False
启用集成桥接的 IGMP 侦听。如果将此选项设置为 True,则将在集成桥接中启用对 Internet 组管理协议 (IGMP) 的支持。
- igmp_flood¶
- 类型:
布尔值
- 默认值:
False
多播数据包(报告除外)无条件地转发到桥接逻辑网络与物理网络之间的端口。
- igmp_flood_reports¶
- 类型:
布尔值
- 默认值:
True
多播报告无条件地转发到桥接逻辑网络与物理网络之间的端口。
- igmp_flood_unregistered¶
- 类型:
布尔值
- 默认值:
False
此选项启用或禁用将未注册的多播数据包广播到所有端口。如果为 False,则交换机仅将未注册的多播数据包发送到连接到多播路由器的端口。