journald
Централизованный логгинг через Journald с помощью Ansible
Эта роль предоставляет возможность собирать системные журналы на центральной системе через systemd-journald.
Все логи сохраняются на системе, обозначенной как journald_server в переменных. Когда роль запускается на этом хосте, она настраивает сборщик журналов.
Использование
- Установите роль (либо из Galaxy, либо напрямую с GitHub)
- Скопируйте файл по умолчанию в ваш инвентарь (или куда вы их сохраняете) и заполните недостающую информацию
- Добавьте роль в ваш главный плейбук
- Запустите Ansible
- ???
- Прибыль!
Анализ логов
Поиск или чтение собранных логов можно выполнить с помощью той же утилиты journalctl, которую вы используете для чтения локальных журналов. Ниже приведены некоторые примеры:
- Просмотр всех поступающих журналов
journalctl -f -D /log
- Просмотр всех журналов из конкретного юнита (на любой машине)
journalctl -f -D /log -u my-thing.service
SSL
При запуске этой роли с включенным SSL убедитесь, что у вас есть следующее:
- Сертификат CA (самоподписанный или другой), доступный для пользователя systemd-journal-upload
- Сертификат сервера для системы loghost, подписанный этим CA, доступный для пользователя systemd-journal-remote
Самоподписанный 'одиночный' сертификат не будет работать!
Обратите внимание, что если вы хотите запустить эту роль на системах с версией Systemd выше 234, вы должны организовать клиентский сертификат для аутентификации клиентов перед сервером journald. Этот сертификат можно использовать для всех клиентов.
Пример скрипта для установки (предоставьте сертификат сами) сертификата:
- name: 'Убедитесь, что группа клиентских сертификатов journald'
group:
name: 'journald-cert'
system: true
state: 'present'
- name: 'Убедитесь, что директория клиентских сертификатов journald'
file:
path: '/etc/ssl/journald'
state: 'directory'
owner: 'root'
group: 'journald-cert'
mode: 0770
- name: 'Убедитесь, что файлы сертификатов'
copy:
src: "{{ cert.src }}"
dest: "{{ cert.dest }}"
owner: 'root'
group: 'journald-cert'
mode: 0440
loop:
- src: "{{ journald_certificate_source }}"
dest: '/etc/ssl/journald/client.crt'
- src: "{{ journald_key_source }}"
dest: '/etc/ssl/journald/client.key'
loop_control:
loop_var: 'cert'
Этот подход был протестирован на CentOS7 и CentOS8 в одной и той же среде.
ОШИБКА: CentOS7 (или другие системы с systemd 219)
Версия systemd-journal-remote в этой версии systemd содержит ошибку, из-за которой журналы сохраняются в файле, названном в честь приемной стороны транзакции. В случае с пассивными источниками, которые настраивает эта роль, это означает, что все журналы собираются в один файл.
ansible-galaxy install Thulium-Drake/ansible-role-journald