Введение
Коротко о 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
Примерное содержимое:
Автозапуск скрипта
Добавим скрипт в Cron для автозапуска его, например каждый день в 8 утра:
crontab -e
0 8 * * * /bin/bash /etc/logwatch/scripts/telegram/logwatch.sh
Не забываем про отступ на новую строку после добавления задания в Cron
Вывод
В данной заметке мы разобрали установку и настройку анализатора логов Logwatch и создали простенький скрипт отправляющий журналы сформированные Logwatch в формате HTML в Telegram.
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально: