Почему Gnocchi медленно применяет ‘server_group’ к ресурсу?

#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:

Может быть, вы можете обратиться к следующим обсуждениям:

Автоматическое масштабирование тепла с сигнализациями aodh на основе gnocchi требует использования наивной настройки instance_discovery_method с вычислительными агентами ceilometer?

Согласно ссылке, попробуйте изменить значение по умолчанию instance_discovery_method с «libvirt_metadata» на «naive» в файле конфигурации ceilometer, например:

 [compute]
instance_discovery_method = naive
  

Переключение на «наивный» решает эту проблему, однако оно, очевидно, создает нагрузку на API Nova для извлечения метаданных.