为什么 Gnocchi 将 'server_group' 缓慢地应用于资源?
Why Gnocchi apply 'server_group' to resource slowly?
我在创建实例时将元数据 "metering.server_group":"corey-group"
添加到实例中,并使用 nova show
检查它是否已应用,然后我使用 gnocchi resource show --type instance ${instance-id}
检查 Gnocchi 资源,属性server_group
一开始是 None
,但过了一会儿,它会被应用(总是在整点,例如:07:00、08:00...),我有不知道会发生什么,我认为这个问题会导致 Gnocchi 在进行聚合时得到不正确的数据集,所以我花了一些时间来解决它。
首先,数据库中存储的Gnocchi资源的属性:
MariaDB [(none)]> use gnocchi
MariaDB [gnocchi]> select * from resource_type where name='instance';
# check its tablename, ex: rt_xxxxxx
MariaDB [gnocchi]> select * from rt_xxxxxx where display_name='corey-vm';
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
| display_name | host | image_ref | flavor_id | server_group | id | flavor_name |
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
| corey-vm | corey-test-com-001 | NULL | 26e46b4c-23bd-4224-a609-29bd3094a18e | NULL | xxxxxx | corey-flavor |
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
如您所见,列server_group
应该是corey-group
,但在刚创建实例时它总是NULL
,似乎ceilometer每小时更新一次资源整点.
我在文件 ceilometer/publisher/gnocchi.py 中添加了一些日志,发现它每分钟更新一次资源,但是变量 resource_extra
仅在 整点获取 server_group
,这就是为什么 None 是开始。
这是部分日志
2020-11-09 11:59:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_id': u'xxx', 'flavor_name': u'xxx'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
2020-11-09 12:00:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_name': u'xxx', 'server_group': 'corey-group'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
2020-11-09 12:01:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_id': u'xxx', 'flavor_name': u'xxx'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
但是卡在了这里,不明白为什么变量resource_extra
每次都取不到server_group
。究竟是什么原因导致这种情况发生? (运行 在皇后区)
如果有任何想法,我将不胜感激。
2020 年 9 月 11 日更新
经过几天的故障排除,我仍然找不到根本原因。
但我找到了一个手动应用 'server_group' 的命令行,它可以帮助我避免 Gnocchi 获取不正确的数据集进行聚合。
这里是:
gnocchi resource update --type instance -a server_group:corey-group ${resource_id}
2020 年 11 月 11 日更新
我试过grep
整数3600修改为300,但没有任何改变,下面是我试过的。
/etc/ceilometer/ceilometer.conf
[compute]
resource_cache_expiry = 300
ceilometer/compute/discovery.py
cfg.IntOpt('resource_cache_expiry',
default=300,
ceilometer/publisher/zaqar.py
DEFAULT_TTL = 300
2020 年 12 月 11 日更新
我无法在 Pike 上重现此问题。
或许可以参考以下讨论:
根据参考资料,尝试在 ceilometer 配置文件中将默认 instance_discovery_method
从“libvirt_metadata”更改为 “naive”,如下所示:
[compute]
instance_discovery_method = naive
切换到“naive”解决了这个问题,但是它显然会在 Nova API 上产生用于元数据检索的负载。
我在创建实例时将元数据 "metering.server_group":"corey-group"
添加到实例中,并使用 nova show
检查它是否已应用,然后我使用 gnocchi resource show --type instance ${instance-id}
检查 Gnocchi 资源,属性server_group
一开始是 None
,但过了一会儿,它会被应用(总是在整点,例如:07:00、08:00...),我有不知道会发生什么,我认为这个问题会导致 Gnocchi 在进行聚合时得到不正确的数据集,所以我花了一些时间来解决它。
首先,数据库中存储的Gnocchi资源的属性:
MariaDB [(none)]> use gnocchi
MariaDB [gnocchi]> select * from resource_type where name='instance';
# check its tablename, ex: rt_xxxxxx
MariaDB [gnocchi]> select * from rt_xxxxxx where display_name='corey-vm';
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
| display_name | host | image_ref | flavor_id | server_group | id | flavor_name |
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
| corey-vm | corey-test-com-001 | NULL | 26e46b4c-23bd-4224-a609-29bd3094a18e | NULL | xxxxxx | corey-flavor |
+----------------+---------------------+-----------+--------------------------------------+-------------------------+------------------+---+
如您所见,列server_group
应该是corey-group
,但在刚创建实例时它总是NULL
,似乎ceilometer每小时更新一次资源整点.
我在文件 ceilometer/publisher/gnocchi.py 中添加了一些日志,发现它每分钟更新一次资源,但是变量 resource_extra
仅在 整点获取 server_group
,这就是为什么 None 是开始。
这是部分日志
2020-11-09 11:59:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_id': u'xxx', 'flavor_name': u'xxx'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
2020-11-09 12:00:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_name': u'xxx', 'server_group': 'corey-group'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
2020-11-09 12:01:15 DEBUG ceilometer.publisher.gnocchi Resource {'host': u'test-com-002', 'display_name': u'vm-001', 'flavor_id': u'xxx', 'flavor_name': u'xxx'} publish_samples /usr/lib/python2.7/site-packages/ceilometer/publisher/gnocchi.py:345
但是卡在了这里,不明白为什么变量resource_extra
每次都取不到server_group
。究竟是什么原因导致这种情况发生? (运行 在皇后区)
如果有任何想法,我将不胜感激。
2020 年 9 月 11 日更新
经过几天的故障排除,我仍然找不到根本原因。
但我找到了一个手动应用 'server_group' 的命令行,它可以帮助我避免 Gnocchi 获取不正确的数据集进行聚合。
这里是:
gnocchi resource update --type instance -a server_group:corey-group ${resource_id}
2020 年 11 月 11 日更新
我试过grep
整数3600修改为300,但没有任何改变,下面是我试过的。
/etc/ceilometer/ceilometer.conf
[compute]
resource_cache_expiry = 300
ceilometer/compute/discovery.py
cfg.IntOpt('resource_cache_expiry',
default=300,
ceilometer/publisher/zaqar.py
DEFAULT_TTL = 300
2020 年 12 月 11 日更新
我无法在 Pike 上重现此问题。
或许可以参考以下讨论:
根据参考资料,尝试在 ceilometer 配置文件中将默认 instance_discovery_method
从“libvirt_metadata”更改为 “naive”,如下所示:
[compute]
instance_discovery_method = naive
切换到“naive”解决了这个问题,但是它显然会在 Nova API 上产生用于元数据检索的负载。