Page 1 of 1

Уведомления об ошибках в telegram

Posted: Wed Jan 10, 2018 3:00 pm
by fadich
Если требуется вывод ошибок или сообщений о событиях vestacp в мессенджер, почти любой, предлагаю решение на основе ntfy.

1. Ставим утилиту ntfy, написан на питоне, ставится на любую ОС, где есть питон:

Code: Select all

pip install ntfy
2. Настраиваем backends для ntfy умолчанию, я использовал telegram. Файл ~/config/ntfy/ntfy.yml

Code: Select all

backends:
    - telegram
3. Создаем бота в телеграмме, через BotFather.
4. Ставим плагин для ntfy, см. документацию на сайте:

Code: Select all

pip install ntfy[telegram]
5. Конфигурируем плагин, для telegram достаточно отправить любое сообщение:

Code: Select all

ntfy -b telegram send "Telegram configured for ntfy"
Заполняем поля, нужно указать ключ API для ранее созданого бота и пароль ответ. Готово. Проверьте, что сообщения доходят до бота.
6. Теперь магия, мне нужны были только уведомления об ошибках, поэтому изменил только одну строку, файл /usr/local/vesta/func/main.sh, строка # Log event function.

Code: Select all

# Log event function
log_event() {
    if [ -z "$time" ]; then
        LOG_TIME="$(date +'%F %T') $(basename $0)"
    else
        LOG_TIME="$date $time $(basename $0)"
    fi
    if [ "$1" -eq 0 ]; then
        echo "$LOG_TIME $2" >> $VESTA/log/system.log
    else
        echo "$LOG_TIME $2 [Error $1]" >> $VESTA/log/error.log
    fi
}
Меняем на:

Code: Select all

# Log event function
log_event() {
    if [ -z "$time" ]; then
        LOG_TIME="$(date +'%F %T') $(basename $0)"
    else
        LOG_TIME="$date $time $(basename $0)"
    fi
    if [ "$1" -eq 0 ]; then
        echo "$LOG_TIME $2" >> $VESTA/log/system.log
    else
        echo "$LOG_TIME $2 [Error $1]" >> $VESTA/log/error.log
        ntfy send "$LOG_TIME $2 [Error $1]"
    fi
}
Готово. Ошибки будут падать в вашего бота и вовремя уведомлять о проблемах. Решение на продакшен не тянет, но для своих нужд мне хватает. По аналогии ntfy send можно добавить уведомления для любого функционала vestacp или в свои скрипты. ntfy поддерживает почти все самые популярные каналы уведомлений slack, pushbullet, xmpp и прочее. Например уведомление об успехе бэкапов я делаю так, файл /usr/local/vesta/bin/v-backup-user, на строках в самом низу:

Code: Select all

# Send notification
if [ -e "$BACKUP/$user.log" ]; then
    cd $BACKUP
    subj="$user → backup has been completed"
    email=$(get_user_value '$CONTACT')
    cat $BACKUP/$user.log |$SENDMAIL -s "$subj" $email $notify

    # NTFY about creation backup for user
    tlg=$(tail -n 5 $BACKUP/$user.log)
    ntfy send "$subj"$'\n\n'"$tlg"

    rm $BACKUP/$user.log
fi
В телеграме:
Image

Не знал куда закинуть решение, в какую тему. Переводить лениво. Оставил тут.

Re: Уведомления об ошибках в telegram

Posted: Thu Jan 11, 2018 6:50 am
by ahouse
хорошая вещь!

UPD: Подтверждаю работоспособность.

Re: Уведомления об ошибках в telegram

Posted: Wed Apr 29, 2020 11:05 am
by STEENOV
Идея хорошая.
А как сделать для внутренних логов самой системы?

Re: Уведомления об ошибках в telegram

Posted: Tue May 05, 2020 10:34 am
by fadich
STEENOV wrote:
Wed Apr 29, 2020 11:05 am
Идея хорошая.
А как сделать для внутренних логов самой системы?
Тут описан функционал уведомлений. В самой панели, есть какой никакой журнал пользователя по ссылке /list/log/