Автомасштабирование с использованием Ceilometer/Aodh не привело к срабатыванию сигнализации в openstack rocky.

Вот документ, на который я ссылаюсь

1.sample_server.yaml

type: os.nova.server
version: 1.0
properties:
  name: cirros_server
  flavor: m1.small
  image: b86fb462-c5c2-4a08-9fe4-c9f86d05763d
  networks:
    - network: external-net

2.Выполните следующую командную строку

# openstack cluster create --profile pserver --desired-capacity 2 mycluster
# openstack cluster receiver create --type webhook --cluster mycluster --action CLUSTER_SCALE_OUT --params count=2 r_01
# export ALRM_URL01='http://vip:8777/v1/webhooks/aac3433a-40de-4d7d-830c-e0035f2a4d13/trigger?V=1&count=2'
# aodh alarm create --type gnocchi_resources_threshold --aggregation-method mean --name cpu-high --metric cpu_util --threshold 70 --comparison-operator gt --granularity 300 --evaluation-periods 1 --alarm-action $ALRM_URL01 --repeat-actions False --query metadata.user_metadata.cluster_id=$MYCLUSTER_ID --resource-type instance --resource-id f7e0e8a6-51a3-422d-b631-7ddaf65b3dfb

3. Войдите в каждый узел кластера и запустите там несколько рабочих нагрузок по сжиганию ЦП, чтобы повысить загрузку ЦП.

Я добавил вывод журнала в /usr/lib/python2.7/site-packages/aodh/notifier/rest.py при запуске запроса оповещения.

class RestAlarmNotifier(notifier.AlarmNotifier):
    def notify(self, action, alarm_id, alarm_name, severity, previous,
           current, reason, reason_data, headers=None):
    body = {'alarm_name': alarm_name, 'alarm_id': alarm_id,
            'severity': severity, 'previous': previous,
            'current': current, 'reason': reason,
            'reason_data': reason_data}
    headers['content-type'] = 'application/json'
    kwargs = {'data': json.dumps(body),
              'headers': headers}
    max_retries = self.conf.rest_notifier_max_retries
    session = requests.Session()
    LOG.info('#########################')
    LOG.info(session)
    LOG.info(kwargs)
    LOG.info(action.geturl())
    LOG.info('#########################')
    session.mount(action.geturl(),
                  requests.adapters.HTTPAdapter(max_retries=max_retries))
    resp = session.post(action.geturl(), **kwargs)
    LOG.info('$$$$$$$$$$$$$$$$$$$$$$$')
    LOG.info(resp.content)
    LOG.info('$$$$$$$$$$$$$$$$$$$$$$$')

Некоторые сообщения об ошибках выводятся в журнал /var/log/aodh/notifier.log следующим образом: введите здесь описание изображения

Причина в ошибке, вызванной добавлением параметра body запроса, прямой почтовый запрос может быть успешным, например, используя запрос curl без параметра body

curl -g -i -X POST 'http://vip:8777/v1/webhooks/34e91386-7176-4b30-bc17-5c3503712696/trigger?V=1'

Пакеты версий, связанные с Aodh, следующие:

python2-aodhclient-1.1.1-1.el7.noarch
openstack-aodh-api-7.0.0-1.el7.noarch
openstack-aodh-common-7.0.0-1.el7.noarch
openstack-aodh-listener-7.0.0-1.el7.noarch
python-aodh-7.0.0-1.el7.noarch
openstack-aodh-notifier-7.0.0-1.el7.noarch
openstack-aodh-evaluator-7.0.0-1.el7.noarch
openstack-aodh-expirer-7.0.0-1.el7.noarch

Может кто-то указать мне верное направление? Спасибо.


person Jobin    schedule 22.09.2020    source источник


Ответы (1)


Проблема решена. Вот документ, на который я ссылаюсь

  1. Измените aodh rest.py(aodh/notifier/rest.py) https://github.com/openstack/aodh/blob/master/aodh/notifier/rest.py#L79 Под заголовками['content-type'] добавьте следующую строку: headers['openstack -api-version'] = 'кластеризация 1.10'

  2. Перезапустите службу aodh

person Jobin    schedule 23.09.2020