tgoop.com/srv_admin/3136
Last Update:
В systemd есть все необходимые инструменты для централизованного сбора логов. Вот они:
▪ systemd-journal-remote — служба, принимающая или забирающая записи журналов на центральном сервере
▪ systemd-journal-upload — служба, отправляющая локальные журналы на центральный сервер
Всё это позволяет без сторонних инструментов настроить централизованный сбор логов со множества серверов в одном месте. В Debian эти службы устанавливаются одним пакетом systemd-journal-remote
. # apt install systemd-journal-remote
После этого можно подготовить конфиг службы. Если нет нужды, то можно отключить работу по https, чтобы не заморачиваться с сертификатом, если сбор логов идёт по закрытым каналам связи. Для этого копируем системный unit в /etc/systemd/system
и меняем параметр ExecStart
:# cp /lib/systemd/system/systemd-journal-remote.service \
/etc/systemd/system/systemd-journal-remote.service
[Service]
ExecStart=/lib/systemd/systemd-journal-remote --listen-http=-3 --output=/var/log/journal/remote/
Заменили ключ --listen-https
на --listen-http
. Если захотите использовать https, то сертификат надо будет прописать в /etc/systemd/journal-remote.conf
. Далее достаточно создать необходимую директорию, назначить права и запустить службу:# mkdir -p /var/log/journal/remote
# chown systemd-journal-remote:systemd-journal-remote /var/log/journal/remote
# systemctl daemon-reload
# systemctl start systemd-journal-remote
Служба запустится на tcp порту 19532.
Перемещаемся на сервер, который будет отправлять логи и устанавливаем туда этот же пакет. Затем идём в конфигурационный файл /etc/systemd/journal-upload.conf
и добавляем туда путь к серверу:[Upload]
URL=http://10.20.1.36:19532
Запускаем службу и проверяем, что она успешно начала отправку логов:# systemctl start systemd-journal-upload
# systemctl status systemd-journal-upload
Если ошибок нет, то можно идти на центральный сервер и там смотреть логи от удалённого сервера. # journalctl -D /var/log/journal/remote -f
Сами логи будут лежать в отдельных файлах с ip адресом отправляющего сервера в названии. Примерно так: remote-10.20.1.56.journal
. Можно посмотреть конкретный файл:# journalctl --file=remote-10.20.1.56.journal -n 100
Для этих логов действуют те же правила фильтрации, что и для локальных. Смотрим все логи юнита ssh:# journalctl --file=remote-10.20.1.56.journal -u ssh
Или только сообщения ядра:# journalctl --file=remote-10.20.1.56.journal -k
Если я правильно понял, то ротация удалённых логов будет производиться по тем же правилам и настройкам, что и всего системного журнала journald. Я рассказывал об этом. Отдельно настраивать не нужно.
С помощью systemd-journal удобно собирать логи в одно место с множества хостов без установки на них стороннего софта. А потом уже централизованно отправить в любую другую систему хранения логов на обработку. Я ещё забыл упомянуть, что systemd-journal-remote можно настроить так, что он сам будет ходить по серверам и забирать с них логи.
#linux #logs #systemd #journal
BY ServerAdmin.ru
Share with your friend now:
tgoop.com/srv_admin/3136