Реклама АО ТаймВэб
Реклама АО ТаймВэб

Как настроить уведомления об ошибках nginx в Telegram: простое решение, которое вам никто не показывал

Обсудить
Как настроить уведомления об ошибках nginx в Telegram
Реклама. АО «ТаймВэб». erid: 2W5zFHrfJ88

Простой скрипт, который будет периодически проверять файл логов Nginx на наличие новых ошибок и отправлять их в Telegram. Вот как это можно сделать.

Шаг 1: Создание бота в Telegram

Создайте бота в Telegram, чтобы сделать нового бота и получить токен API. Используйте: @BotFather

Обязательно: после создания бота напишите ему или нажмите на команду /start. Это необходимо для того, чтобы бот вас запомнил и смог отправлять вам сообщения.

Получите Chat ID. Используйте: @myidbot

Шаг 2: Скрипт для отправки уведомлений

Создайте Bash-скрипт. Этот скрипт будет проверять логи Nginx и отправлять ошибки в Telegram. Скрипт написан с уведомлениями об ошибках.

#!/bin/bash

# Конфигурация
BOT_TOKEN="ваш_токен_бота"
CHAT_ID="ваш_chat_id"
LOG_FILE="/var/log/nginx/error.log"
LAST_POSITION_FILE="/var/tmp/nginx_log_position"

# Проверка существования файла позиции
if [ ! -f "$LAST_POSITION_FILE" ]; then
    echo "Файл позиции не найден. Создаю новый файл: $LAST_POSITION_FILE"
    echo "0" > "$LAST_POSITION_FILE"
fi

# Получение последней позиции в лог-файле
LAST_POSITION=$(cat $LAST_POSITION_FILE 2>/dev/null || echo "0")

# Проверка новых строк в лог-файле
NEW_LINES=$(tail -n +$((LAST_POSITION + 1)) $LOG_FILE 2>/dev/null)

# Если есть новые строки, отправляем их в Telegram
if [ ! -z "$NEW_LINES" ]; then
    echo "$NEW_LINES" | while read -r LINE; do
        curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d chat_id=$CHAT_ID -d text="$LINE"
    done

    # Обновляем позицию
    wc -l < $LOG_FILE > $LAST_POSITION_FILE
else
    echo "Новых ошибок не найдено или лог-файл недоступен."
fi

 Сделайте скрипт исполняемым:

chmod +x check_nginx_errors.sh

Шаг 3: Автоматизация проверки

Настройте cron. Чтобы скрипт проверял логи регулярно, добавьте его в cron.

crontab -e

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

*/5 * * * * /путь/к/вашему/check_nginx_errors.sh

Заключение

Теперь ваш скрипт будет каждые 5 минут проверять файл логов Nginx на наличие новых ошибок и отправлять их в Telegram. Это простой и эффективный способ оперативно получать уведомления о проблемах на вашем сервере. Не забудьте протестировать скрипт, чтобы убедиться, что он работает корректно, и при необходимости адаптируйте его под ваши нужды.

Тестирование:

Добавьте принудительно ошибку в файл логов.

echo "$(date) [error] 12345#0: *1 open() \"/path/to/nonexistent/file\" failed (2: No such file or directory)" >> /var/log/nginx/error.log

Это добавит строку с текущей датой и временем, с ошибкой, похожей на ту, которую Nginx генерирует, когда не может найти файл.

Если данные конфигурации введены правильно, вы получите уведомления от своего бота.

Что еще можно добавить в данный скрипт

  1. Фильтрация ошибок по уровню
  2. Логирование отправленных уведомлений
  3. Настройка частоты уведомлений
  4. Конфигурационный файл
  5. Алерты по ключевым словам
  6. Поддержка нескольких логов
  7. Интеграция с другими мессенджерами
  8. Web-интерфейс для управления
  9. Оптимизация производительности
  10. Работа без cron


Программирую в тишине, пока баги не заговорят.

echo -e "Все про серверы, сети, хостинг и еще раз серверы" >/dev/pts/0

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте