![Можно ли автоматизировать отправку по электронной почте критических ошибок с помощью журнала systemd?](https://rvso.com/image/623633/%D0%9C%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%BB%D0%B8%20%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D1%83%20%D0%BF%D0%BE%20%D1%8D%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%BE%D0%B9%20%D0%BF%D0%BE%D1%87%D1%82%D0%B5%20%D0%BA%D1%80%D0%B8%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85%20%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D0%B0%20systemd%3F.png)
Fedora OS представляет journalctl
новый способ регистрации сообщений об ошибках. Я узнал об этом недавно, когда выполнил обновление. var/log/messages
и многие другие файлы журналов теперь объединены в .journal
файл в var/log/journal
каталоге.
У меня есть специальный журнал, созданный специально для регистрации критических ошибок с использованием старого rsyslog
:
*.crit /var/log/critical/log
Этот файл будет отправлен мне по электронной почте и будет ротироваться каждый час с помощью задания cron, пока есть ошибка. Теперь, как это будет сделано с помощью journalctl
? Параметры в journald.conf
кажутся довольноограниченное. Мне все еще нужно rsyslog
это делать?
решение1
Эта команда выдает похожий вывод
journalctl --since="$(date '+%Y-%m-%d %H:%M:%S' -d '1 hour ago')" --priority=crit --quiet
решение2
Кстати, я написал небольшую программу journal-brief, которая выводит сводку сообщений журнала с момента ее последнего запуска.
https://github.com/twaugh/journal-brief
Если вы запустите его из cron (например, journal-brief -p err), вы получите его вывод по почте.
Он сохраняет закладки, где он был, запоминая курсор журнала, поэтому не будет отправлять дублирующие записи журнала.