Рубрики
Uncategorized

Как централизовать журналы: Linux System Journal

Знаете ли вы, что у большинства систем Linux есть полное решение для управления журналом на борту? Распределения B … Tagged с Linux, DevOps, ElasticStack.

Знаете ли вы, что у большинства систем 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»