Как разделить журналы на ежемесячные, ежедневные и почасовые папки при вводе событий системного журнала?

Использовать открытый/закрытый ключ.

Это много раз описано в Интернете, так что я не думаю, что полезно повторять это снова подробно.

Краткое описание того, что делать:

  • разрешить вход в систему root на сервере
  • на стороне клиента создать открытые/закрытые ключи ssh(ssh-keygen)
  • скопировать открытый ключ на сервер(ssh-copy-id root@your_server)
  • повторить для второго клиента
  • отключить root -вход на сервер

Теперь только эти два клиента и пользователи вышеуказанных команд имеют root-доступ к серверу, и, кроме того, пароль больше не требуется.

Возможно, это является хорошей отправной точкой для начала (шагов #1 и #2)

2
18.10.2019, 22:45
2 ответа

Это можно сделать с помощью динамического шаблона файла. Используйте заменитель свойства , чтобы выбрать части свойства %timestamp%, в частности параметры date-dayи date-hour, а также символы с 1 по 3 из date-rfc3164(, которая представляет собой строку типа «Окт 9 09 :47 :08" ). Обычно в примерах шаблон называетсяDynFile:

$template DynFile,"/var/log/mail_logs/%timestamp:1:3:date-rfc3164%/%timestamp:::date-day%/%timestamp:::date-hour%.log"

Чтобы использовать шаблон, замените ...then -/var/log/mail_logs/amp.logна...then -?DynFile

Если вы хотите заменить месяц из 3 -букв (январь, февраль,... )на месяц из 2 -цифр для упрощения работы, используйте вместо этого

$template DynFile,"/var/log/mail_logs/%timestamp:::date-month%/%timestamp:::date-day%/%timestamp:::date-hour%.log
1
27.01.2020, 22:08

Предполагая, что ваши строки журнала также -сформированы, как предполагает фрагмент, это было бы началом:

awk '{
      dir=$1 "/" $2; log_file=dir "/" substr($3, 1, 2) ".log"
      if (!exists[dir]++) {system("mkdir -p " dir)}; 
      print > log_file
}' amp.log

Вы должны выполнить это в /var/log/mail_logs/.

Вызов systemвнешней команды mkdirсоздает конкретный каталог даты -, если он не существует. Передача -pприводит к тому, что родители создаются по мере необходимости (, поэтому каталог Octсоздается, когда mkdir -p /Oct/01впервые запускает October ). Кроме того, -pгарантирует, что mkdirне сообщит об ошибке, если каталог уже существует.

Вызов printзаписывает строки журнала в файл, имя которого создается из компонентов времени журнала. Каждый новый файл журнала создается при первой записи и дополняется в течение времени существования команды.

Вы можете изменить print >на print >>, если хотите, чтобы файл журнала на основе даты и времени -из предыдущего awkзапуска был добавлен, а не перезаписан.

1
27.01.2020, 22:08

Теги

Похожие вопросы