Категории

Как просто следить за логами сервера и не пропустить ошибки

21.08.2025 14:49 | коды из категории: Linux

скрипт для оповещение проблем в логах по ключевой фразе. и еще пару полезных советов

про Как просто следить за логами сервера и не пропустить ошибки

Когда у тебя свой сервер — будь то почтовый, веб-сервер или VPS — ты несёшь ответственность за его стабильность. И один из главных инструментов администратора — логи. Но читать их вручную каждый день — нереально. А пропустить важную ошибку — легко.

В этой статье я покажу, как просто и бесплатно настроить отслеживание ошибок в логах и получать уведомления, как только что-то пойдёт не так — без сложных систем вроде ELK или Graylog.

Зачем следить за логами?

Логи — это «чёрный ящик» твоего сервера. В них фиксируются:

Например, так выглядит реальная ошибка из лога Dovecot:

Aug 21 14:18:11 pochta.example.com dovecot[1043]: imap(user@domain.com): Error: Mailbox INBOX: UID=13156: read failed: Cached message size larger than expected
    

Если такая ошибка появится у десятка пользователей — почта станет «глючить». Но если ты не в логах — ты об этом узнаешь только по жалобам.

Решение: простой мониторинг без лишней сложности

Тебе не нужен огромный стек из Kibana, Elasticsearch и Logstash. Достаточно:

Шаг 1: Создаём скрипт проверки логов

Создай файл, например /usr/local/bin/check-errors.sh:

#!/bin/bash

# Путь к лог-файлу (может быть /var/log/mail.log, /var/log/syslog и др.)
LOG_FILE="/var/log/dovecot.log"

# Ключевые слова для поиска
KEYWORDS="Error: Mailbox INBOX|Cached message size|read failed|Disconnected for"

# Файл для хранения времени последней проверки
STATE_FILE="/tmp/last_check_ts"
TMP_ALERTS="/tmp/alerts.log"

# Получаем последнее время проверки
if [ -f "$STATE_FILE" ]; then
    LAST_TS=$(cat "$STATE_FILE")
else
    LAST_TS=$(date -d '10 minutes ago' '+%s')
fi

NOW_TS=$(date '+%s')

# Ищем ошибки за период
grep -E "$KEYWORDS" "$LOG_FILE" | grep "$(date -d @$LAST_TS '+%b %d')" > "$TMP_ALERTS"

# Если найдены совпадения — отправляем уведомление
if [ -s "$TMP_ALERTS" ]; then
    MESSAGE="⚠️ Найдены ошибки в логах:\n\n$(cat $TMP_ALERTS)"
    
    # Вариант 1: отправка на email
    # echo -e "$MESSAGE" | mail -s "Алерт: Ошибки в логах" admin@yoursite.com

    # Вариант 2: отправка в Telegram
    TOKEN="ВАШ_ТОКЕН_БОТА"
    CHAT_ID="ВАШ_CHAT_ID"
    URL="https://api.telegram.org/bot$TOKEN/sendMessage"
    curl -s -X POST $URL -d chat_id=$CHAT_ID -d text="$MESSAGE" > /dev/null
fi

# Обновляем время последней проверки
echo "$NOW_TS" > "$STATE_FILE"

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

sudo chmod +x /usr/local/bin/check-errors.sh

Шаг 3: Добавляем в cron

Открой crontab:

crontab -e

Добавь строку для проверки каждые 5 минут:

*/5 * * * * /usr/local/bin/check-errors.sh

Как получать уведомления?

📧 На email

Установи mailutils (Debian/Ubuntu):

sudo apt install mailutils

Настрой SMTP через ssmtp или msmtp, чтобы письма уходили на твой Gmail, Yandex и т.п.

🤖 В Telegram (рекомендую!)

Это удобнее: уведомления приходят мгновенно, не зависят от почтовых фильтров.

  1. Напиши @BotFather, создай бота
  2. Получи токен
  3. Напиши боту, чтобы узнать свой CHAT_ID (можно через @get_id_bot)
  4. Вставь в скрипт

Идеи для расширения

Что делать, если ошибок много?

Не просто читай алерты — действуй:

Заключение

Сложные системы мониторинга — это здорово, но часто избыточно. Даже на одном сервере можно настроить надёжную и простую систему оповещений за 20 минут.

Главное — не ждать, пока пользователи начнут жаловаться. Настраивай алерты сейчас, пока всё работает. Потому что когда что-то сломается — ты будешь первым, кто об этом узнает.

Маленький скрипт сегодня — спокойствие завтра.

Теги: #linux #Безопасность #сервер #системное администрирование #администрирование #VPS #dovecot #мониторинг #логи #bash #cron #уведомления #telegram #email #postfix #ошибки #скрипт #автоматизация #log #alert

Комментарии

Пока нет комментариев. Будьте первым!

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

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA