[ 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 используются следующие переменные:
Постоянное хранение логов
По умолчанию логи systemd хранятся в памяти и удаляются после перезагрузки. OpenStack-Ansible по умолчанию устанавливает переменную
openstack_host_keep_journals: true
, которая сохраняет логи после перезагрузки. При необходимости вы можете явно настроить её в файлеuser_variables.yml
:openstack_host_keep_journals: true
Это гарантирует, что логи останутся доступными для устранения неполадок даже после перезапуска хоста.
Своя конфигурация 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 и сбора метрик.