Установка и настройка

Установка

Важно

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

Режим суперпользователя:

sudo -i
  1. Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:

    mkdir -p /tmp/rollback/journal
    pip3 freeze > /tmp/rollback/journal/pip_before.txt
    

    После чего в каталоге /tmp/rollback/journal будет находиться файл pip_before.txt с перечнем установленных приложений.

  2. Также сохраните версии миграции:

    openstack aos db list -n journal > /tmp/rollback/journal/migrations.txt
    

    Где:

    • /tmp/rollback/journal/ - директория файла;
    • migrations.txt - наименование файла с версиями миграций.
  3. Установите пакет Journal:

    • из репозитория Python-пакетов:

      pip3 install journal
      
  4. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip3 freeze > /tmp/rollback/journal/pip_after.txt
    

Настройка

Примечание

Рассматривается настройка запуска API сервиса журналирования через WSGI- сервер, поставляемый вместе с библиотекой eventlet. Для настройки запуска сервиса через другой WSGI- сервер (Nginx + Gunicorn, Apache + mod_wsgi и др.) смотрите документацию соответствующего сервера. Путь до WSGI приложения: journal.api.journal_api.wsgi.

  1. Выполните первичную настройку модуля:

    openstack aos configure -n journal
    
  2. Создайте каталог для лог файлов с нужными правами:

    mkdir -p /var/log/aos/journal
    chown -R aos:aos /var/log/aos/journal
    
  3. Скопируйте образец конфигурационного файла. При использовании нестандартных параметров отредактируйте их (подробнее см. Файл конфигурации):

    cp /etc/aos/aos.conf.example /etc/aos/aos.conf
    cp /etc/aos/journal.conf.example /etc/aos/journal.conf
    
  4. Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте базу данных journal
    CREATE DATABASE journal;
    # Дайте права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных journal
    GRANT ALL PRIVILEGES ON journal.* TO 'aos'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON journal.* TO 'aos'@'%' IDENTIFIED BY 'password';
    # Осуществите выход из базы данных
    
  5. Отредактируйте секцию [database] конфигурационного файла etc/aos/journal.conf, например:

    [database]
    url = mysql+pymysql://aos:password@tst.stand.loc:3306/journal?charset=utf8
    
  6. Выполните миграцию базы данных:

    openstack aos db migrate -n journal
    
  7. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user aos password
    rabbitmqctl add_vhost aos
    rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*"
    rabbitmqctl set_permissions aos ".*" ".*" ".*"
    
  8. Добавьте пользователю в RabbitMQ права на виртуальные хосты служб Openstack (по умолчанию /):

    rabbitmqctl set_permissions -p / aos ".*" ".*" ".*"
    
  9. Создайте пользователя в OpenStack для API сервисов:

    openstack user create --domain default --project service --project-domain default --password password --or-show aos
    
  10. Назначьте пользователю роль service:

    openstack role add --user aos --user-domain default --project service --project-domain default service
    
  11. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable aos-journal-api.service
    systemctl start aos-journal-api.service
    systemctl enable aos-journal-listener.service
    systemctl start aos-journal-listener.service
    
  12. Создайте сервис Journal API:

    openstack service create --name journal --description "Journal Service" journal
    
  13. Создайте точки входа (endpoint):

    openstack endpoint create --region RegionOne journal internal http://controller:9360
    openstack endpoint create --region RegionOne journal admin http://controller:9360
    openstack endpoint create --region RegionOne journal public http://controller:9360
    
  14. Перезапустите службы Nova, данное действие необходимо для включения журналирования:

    # Debian
    systemctl restart nova-api.service
    

Файл конфигурации

Примечание

Файл конфигурации позволяет переопределять секции и параметры общего файла aos.conf для конкретного модуля.

Примечание

По умолчанию в файле journal.conf.example строки с уровнем логирования нет, она указывается при необходимости. Уровень логирования по умолчанию выставлен в общем конфигурационном файле. Подробнее ознакомиться с файлами конфигурации можно в соответствующем разделе.

Конфигурационный файл представлен в ini формате и состоит из следующих секций и параметров:

Секция Параметр Описание Значение по умолчанию
api host IP-адрес, на котором будет запущена служба Journal API. 0.0.0.0
api logfile Путь до лог файла службы aos-journal-api.  
api port Порт, на котором будет запущена служба Journal API. 9360
database url Настройка подключения к базе данных. mysql+pymysql://aos:p assword@localhost:330 6/journal
listener keystone_rabbit_vhost Виртуальный хост RabbitMQ службы Keystone. /
listener logfile Путь до лог файла службы aos-journal-listener.  
listener nova_rabbit_vhost Виртуальный хост RabbitMQ службы Nova. /

Настройка аудита действий над объектами OpenStack

  1. Установите и настройте драйвер Nova Journal Middleware.

  2. Для логирования действий над объектами Keystone нужно выполнить следующие действия:

    • В конфигурационном файле /etc/keystone/keystone.conf задайте формат уведомлений:

      [DEFAULT]
      notification_format = cadf
      
    • Настройте драйвер сообщений в файле /etc/keystone/keystone.conf:

      [oslo_messaging_notifications]
      driver = messagingv2
      transport_url = rabbit://username:password@hostname
      
    • После чего необходимо перезапустить веб-сервер, службы, а также службы Nova и Keystone:

      # Debian:
      systemctl restart apache2
      systemctl restart nova-api.service
      systemctl restart keystone.service
      systemctl restart aos-*