Знаете ли вы, что у большинства систем Linux есть полное решение для управления журналом на борту? Распределения на основе Systemd
содержать Journald
и JournalCtl
Анкет
Systemd-Journald — Все системные процессы Linux записывают журналы в системный журнал, который управляется Journald
Анкет Системный журнал является локальным хранилищем журнала.
JournalCtl * Является ли клиент командной строки для отображения журналов с различными параметрами фильтра, такими как время, системный блок или любое другое поле, хранящее в событии журнала. Для расширенных поисков можно подключить выход к Grep, что позволяет легко применять сложные поисковые выражения к выводу журнала. Клиент JournalCtl полезен не только для поиска журнала, но также предоставляет различные другие функции, такие как управление хранилищем системного журнала.
Systemd-Journal-Upload это услуга для пересылки событий журнала в удаленное Journald
пример. Настройка Journal-Upload
На всех ваших событиях журнала Linux пересылают центральный сервер журнала, лучший способ централизовать журналы. Тогда вы можете использовать JournalCtl
На центральном сервере журналов для поиска журнала. Несмотря на то, что консоль Linux классная, вы хотите, чтобы веб -интерфейс для поиска журналов и визуализация извлеченных данных для более простых и практических устранения неполадок.
Доставка журналов в эластичный стек — это обычная практика для централизации журналов, но как это можно сделать с помощью журнала?
В отличие от Rsyslog, Journald не имеет возможности пересылать журналы непосредственно в Elasticsearch. Поскольку нам нужны данные JSON, вывод JournalCtl -o Json
может быть полезен. Пробуждение вывода JournalCtl в Logagent может быть решением:
JournalCtl -o json -f | Logagent -i mylogs -u http://elasticsearch: 9200
Круто, это работает! Тем не менее, процессы работы не будут ловить журналы во время загрузки или изящно восстанавливаться после перезапуска — мы могли бы потерять несколько журналов — Nogo!
К счастью, Logagent получил плагин что получает журналы от Systemd-Journal-Upload
оказание услуг. Давайте начнем с нуля и настроем Logagent для получения журналов Journald и храним их в Elasticsearch или Sematext Cloud.
Настройка Logagent как локальный центр ведения журнала
Для запуска Logagent вам сначала понадобится токен приложения для журналов. Если у вас еще нет приложений для журналов Sematext, вы можете Создать приложения журналов сейчас Анкет Тогда вы можете Установите Logagent Анкет Настройка по умолчанию отдает файлы журнала от/var/log в Sematext Cloud. Чтобы запустить Logagent, вам понадобится токен приложения для журналов.
Получать журналы от Journal-Upload
Сервис, активируйте плагин в /etc/sematext/logagent.conf
Анкет
# Global options options: includeOriginalLine: true input: journal-upload: module: input-journald-upload port: 9090 worker: 0 systemdUnitFilter: include: !!js/regexp /.*/i # exclude: !!js/regexp /docker|containerd/i # add static tags to every log event tags: log_shipper: logagent # _index is special tag for log routing with elasticsearch output-plugin # Set the index name here in case journald logs should be # stored in a separate index # _index: MY_INDEX_FOR_ELASTICSEARCH_OUTPUT or # YOUR_SEMATEXT_LOGS_TOKEN_HERE # you can add any other static tag # node_role: kubernetes_worker # journald might provide many fields, # to reduce storage usage you can remove redundant fields removeFields: - __CURSOR - __REALTIME_TIMESTAMP - _SOURCE_REALTIME_TIMESTAMP - __MONOTONIC_TIMESTAMP - _TRANSPORT output: # output data for debugging on stdout in YAML format # stdout: yaml sematext-cloud: module: elasticsearch url: https://logsene-receiver.sematext.com # url: https://logsene-receiver.eu.sematext.com index: YOUR_SEMATEXT_LOGS_TOKEN_HERE
Теперь мы можем перезапустить logagent
обслуживание с
systemctl restart logagent
Идеально, наш журнальный центр для журналов журнала работает.
Давайте перейдем к настройке Systemd-Journal-Upload
На нашем сервере Linux.
Примечание. Обратите внимание, что в примере используется 127.0.0.1 в качестве IP -адреса для Logagent. Вы должны заменить 127.0.0.1 на IP -адрес фактическим IP -адресом сервера, который вы запускаете Logagent.
Используйте следующую команду для установки Systemd-Journal-Remote
sudo apt-get install systemd-journal-remote
Редактировать /etc/systemd/journal-upload.conf
и изменить свойство URL.
[Upload] URL=http://127.0.0,1:9090 # ServerKeyFile=/etc/ssl/private/journal-upload.pem # ServerCertificateFile=/etc/ssl/certs/journal-upload.pem # TrustedCertificateFile=/etc/ssl/ca/trusted.pem
Это обеспечит Journal-Upload
начинается на загрузке.
Обратите внимание, что служба загрузки может остановиться, если создание HTTP -соединения не работает. Если это произойдет, сервис хранит текущую позицию курсора в системном журнале. Поэтому вы должны установить полезные параметры перезапуска в определении службы.
Редактировать /etc/systemd/system/multi-user.target.wants/systemd-journal-upload.service
Чтобы изменить параметры перезапуска.
[Unit] Description=Journal Remote Upload Service Documentation=man:systemd-journal-upload(8) After=network.target [Service] ExecStart=/lib/systemd/systemd-journal-upload \ --save-state User=systemd-journal-upload SupplementaryGroups=systemd-journal PrivateTmp=yes PrivateDevices=yes #WatchdogSec=3min Restart=always TimeoutStartSec=1 TimeoutStopSec=1 StartLimitBurst=1000 StartLimitIntervalSec=5 # If there are many split up journal files we need a lot of fds to # access them all and combine LimitNOFILE=16384 [Install] WantedBy=multi-user.target
Применить изменения и перезапустить Journal-Upload
:
systemctl daemon-reload sudo systemctl enable systemd-journal-upload.service
Проверьте, поступают ли ваши журналы в Sematext Cloud, открыв приложение для журналов. Следующее видео показывает, как использовать пользовательский интерфейс Sematext.
Оригинал: «https://dev.to/sematext/how-to-centralize-logs-linux-system-journal-jpa»