Logwatch – анализ логов в Linux с отправкой отчетов в Telegram

Введение

Коротко о Logwatch – это анализатор логов, результаты анализа группируются и помещаются в отчёт, есть возможность регулировки уровня детализации отчёта и настройка формирования отчета с последующей отправкой по почте или выводом в консоли.

В данной заметке разберем как установить, настроить Logwatch и сделаем отправку журналов в Telegram по расписанию.


Установка Logwatch в Debian/Ubuntu

Для установки Logwatch в Debian/Ubuntu воспользуемся командой (все команды я выполняю от root):

apt install logwatch

Скопируем конфигурационные файлы в /etc директорию из директории /usr:

cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/

Создаем директории которые нам потребуются в дальнейшем:

mkdir /var/cache/logwatch
mkdir /root/logwatch

Переходим к настройке Logwatch, откроем конфигурационный файл и поправим там несколько строк:

nano /etc/logwatch/conf/logwatch.conf
TmpDir = /var/cache/logwatch
Format = html
Range = yesterday
Detail = Med
  • Detail используется для уровня детализации отчета, можно использовать от 0 (минимум) до 10 (максимум) или Low, Med, High (0, 5,10)
  • Format отчет в просто текст либо html
  • Range за период времени отбирать анализируемые сообщения (all, today, yesterday)
  • TmpDir расположение временной директории

Кастомизируем наш html отчет Logwatch, открываем наш html шаблон:

nano /usr/share/logwatch/default.conf/html/header.html

И заменяем его содержимым:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>Logwatch  $Version  ( $VDate )</title>
<meta name="generator" content="Logwatch  $Version ( $VDate )">
<style type="text/css">
  h1 {color: gray; border-bottom: 3px double silver; font-family: sans-serif; }
  h2 {color: white; border-bottom: 1px solid silver; font-family: sans-serif; }
  h3 {color: white; border-bottom: 1px solid silver; font-family: sans-serif; }
  th {background: #6D88AD; text-align: left; font-family: sans-serif; }
  td {background: #EFEFEF; text-align: left; font-family: monospace; font-size: 10px; }
  li { font-family: sans-serif; }
  .ref {padding-left: 1%; }
  .service {padding-left: 1%; }
  .return_link {border-top: 1px; border-bottom: 1px;
  padding: 1%; margin-top: 1%; margin-bottom: 1%; font-family: sans-serif; }
  .copyright {color: black; border-top: 1px solid grey;
  border-bottom: 1px solid grey;
  padding: 1%; margin-top: 1%; margin-bottom: 1%;}
</style>
</head>
<body style="width:90%; margin-left: 5%; margin-right: 5%" bgcolor="#FFFFFF" >
<hr>
<!-- End header.html -->

Скрипт для отправки отчетов в Telegram

Создаем директорию для нашего скрипта:

mkdir /etc/logwatch/scripts/telegram

Создаем наш скрипт и наполняем его содержимым ниже:

nano /etc/logwatch/scripts/telegram/logwatch.sh
#!/bin/bash

_filename=/var/cache/logwatch/$(date +'%Y-%m-%d')_logwatch.html
_token=ЗАМЕНИТЬ_НА_ТОКЕН_ВАШЕГО_БОТА
_chatid=ЗАМЕНИТЬ_НА_ID_ВАШЕГО_ЧАТА_ИЛИ_ГРУППЫ

test -x /usr/share/logwatch/scripts/logwatch.pl || exit 0

/usr/sbin/logwatch --output file --filename $_filename

chmod 644 $_filename
mv $_filename /root/logwatch/

curl -F chat_id="$_chatid" -F document=@"/root/logwatch/$(date +'%Y-%m-%d')_logwatch.html" https://api.telegram.org/bot$_token/sendDocument >/dev/null 2>&1

Как создать бота, узнать его токен и ваш id можно посмотреть в статье про Uptime-Kuma

Делаем скрипт исполняемым:

chmod u+x /etc/logwatch/scripts/telegram/logwatch.sh

Ну и пробуем запустить, если все хорошо, то в Telegram должен придти html файл

/etc/logwatch/scripts/telegram/logwatch.sh
Logwatch — анализ логов в Linux с отправкой отчетов в Telegram

Примерное содержимое:

Logwatch — анализ логов в Linux с отправкой отчетов в Telegram

Автозапуск скрипта

Добавим скрипт в Cron для автозапуска его, например каждый день в 8 утра:

crontab -e
0 8 * * * /bin/bash /etc/logwatch/scripts/telegram/logwatch.sh

Не забываем про отступ на новую строку после добавления задания в Cron


Вывод

В данной заметке мы разобрали установку и настройку анализатора логов Logwatch и создали простенький скрипт отправляющий журналы сформированные Logwatch в формате HTML в Telegram.

Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)

Так же вы можете отблагодарить автора материально:

Оставьте комментарий