[ English | русский | Indonesia ]

Логирование служб в OpenStack-Ansible

Начиная с релиза Train, службы OpenStack-Ansible настроены на сохранение логов в systemd-journald вместо традиционных файлов лога. Логи Journald из контейнеров передаются на физический хост, поэтому вы можете читать и изменять все журналы служб непосредственно с выделенных хостов, используя такие инструменты, как journalctl.

systemd-journald хорошо интегрируется с широким спектром сборщиков и пересылателей логов, включая rsyslog. Однако, в то время как rsyslog хранит данные в виде обычного текста (что затрудняет индексацию и эффективный поиск), journald использует структурированный формат, позволяющий гораздо эффективнее запрашивать и обрабатывать журналы с помощью современных инструментов анализа журналов.

Расположение логов

Все логи контейнеров доступны на хосте в:

/var/log/journal/

Это позволяет получать доступ ко всем журналам служб и фильтровать их непосредственно на хосте с помощью таких инструментов, как journalctl. Это также позволяет сборщикам логов, работающим на хосте, более эффективно собирать и обрабатывать потоки логов journald, поступающие из всех контейнеров служб.

Примечание

В связи с принятием systemd-journald в качестве основного бэкенда для ведения логов, традиционное расположение /openstack/log/ с /var/log/$SERVICE внутри контейнера больше не применяется. Доступ к логам следует осуществлять напрямую через инструменты journald, такие как journalctl, или путем просмотра каталогов /var/log/journal/ на хосте.

Конфигурирование journald

Роль openstack_hosts позволяет управлять поведением systemd-journald на хосте. Для настройки параметров journald используются следующие переменные:

  1. Постоянное хранение логов

    По умолчанию логи systemd хранятся в памяти и удаляются после перезагрузки. OpenStack-Ansible по умолчанию устанавливает переменную openstack_host_keep_journals: true, которая сохраняет логи после перезагрузки. При необходимости вы можете явно настроить её в файле user_variables.yml:

    openstack_host_keep_journals: true
    

    Это гарантирует, что логи останутся доступными для устранения неполадок даже после перезапуска хоста.

  2. Своя конфигурация journald

    Вы можете указать произвольные параметры конфигурации journald, определив соответствие в openstack_hosts_journald_config в файле user_variables.yml. Например:

    openstack_hosts_journald_config:
      SystemMaxUse: 20G
      MaxRetentionSec: 7day
    

    В этом примере максимальный размер используемого дискового пространства для journald ограничивается 20 ГБ, а журналы сохраняются в течение 7 дней.

После настройки всех переменных, связанных с journald, вы можете применить изменения, повторно запустив роль openstack_hosts_setup:

openstack-ansible openstack.osa.openstack_hosts_setup

Вы также можете ознакомиться с нашей ролью ELK из репозитория OPS для готового к использованию развертывания стека ELK и сбора метрик.