#openstack
#openstack
Вопрос:
Я добавляю метаданные "metering.server_group":"corey-group"
в экземпляр при создании и проверяю его с помощью nova show
, он применяется, затем я проверяю ресурс Gnocchi с помощью gnocchi resource show --type instance ${instance-id}
, атрибут 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 ОТЛАДОЧНЫЙ ресурс ceilometer.publisher.gnocchi {‘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 ОТЛАДОЧНЫЙ ресурс ceilometer.publisher.gnocchi {‘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 ОТЛАДОЧНЫЙ ресурс ceilometer.publisher.gnocchi {‘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
каждый раз. Что именно вызывает это событие? (Работает на Queens)
Я был бы признателен за любые идеи.
Обновление 09/11/2020
После нескольких дней устранения неполадок я все еще не могу найти основную причину.
Но я нашел командную строку для применения ‘server_group’ вручную, что может помочь мне избежать того, что Gnocchi собирает неправильные наборы данных для агрегирования.
Вот оно:
gnocchi resource update --type instance -a server_group:corey-group ${resource_id}
Обновление 11/11/2020
Я попытался 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
Обновление 12/11/2020
Я не могу воспроизвести эту проблему на Pike.
Комментарии:
1. Ceilometer может иметь разные интервалы для разных показателей. Они определены в
polling.yaml
иpipeline.yaml
вашего ceilometer. Вы уже проверили эти файлы? Возможно, вам нужноserver_group
явно указать там, чтобы иметь тот же интервал обновления, что и для других показателей.2. Спасибо за совместное использование, но я понятия не имею, как явно определить
server_group
в этих файлах конфигурации, кажется, это не показатель.3. Я попытался обновить значение
resource_cache_expiry
с 3600 до 300 дюймовceilometer.conf
, но ничего не изменилось.
Ответ №1:
Может быть, вы можете обратиться к следующим обсуждениям:
Согласно ссылке, попробуйте изменить значение по умолчанию instance_discovery_method
с «libvirt_metadata» на «naive» в файле конфигурации ceilometer, например:
[compute]
instance_discovery_method = naive
Переключение на «наивный» решает эту проблему, однако оно, очевидно, создает нагрузку на API Nova для извлечения метаданных.