Skip to content

Failed job monitor which sends Telegram notifications on job failure

License

Notifications You must be signed in to change notification settings

etsvThor/telegram-failed-job-monitor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Failed job monitor with Telegram notifications and rate-limiter

Latest Version on Packagist

Extension to spatie/laravel-failed-job-monitor to add support for Telegram notifications and add a rate-limiter to not get spammed in case certain jobs run regularly.

See spatie/laravel-failed-job-monitor and laravel-notification-channels/telegram for more information.

Installation

You can install the package via composer:

composer require etsvthor/telegram-failed-job-monitor

You must publish the config file:

php artisan vendor:publish --tag=telegram-failed-job-monitor

This is the contents of the published config file. This overwrites the config of spatie/laravel-failed-job-monitor. By default, the notificationFilter is used to create the rate-limit:

return [

    /*
     * The notification that will be sent when a job fails.
     */
    'notification' => EtsvThor\TelegramFailedJobMonitor\Notification::class,

    /*
     * The notifiable to which the notification will be sent. The default
     * notifiable will use the mail and slack configuration specified
     * in this config file.
     */
    'notifiable' => EtsvThor\TelegramFailedJobMonitor\Notifiable::class,

    /*
     * By default notifications are sent for all failures. You can pass a callable to filter
     * out certain notifications. The given callable will receive the notification. If the callable
     * return false, the notification will not be sent.
     */
    'notificationFilter' => [EtsvThor\TelegramFailedJobMonitor\Notification::class, 'notificationFilter'],

    /*
     * The channels to which the notification will be sent.
     */
    'channels' => ['telegram'],

    /**
     * How many seconds each failed job will trigger a notification. By default, it does not rate-limit.
     */
    'default-rate-limit' => env('FAILED_JOB_DEFAULT_RATELIMIT'),

    /**
     * How many seconds at minimum between notifications for this job. If nothing is specified, the default-rate-limit
     * will be used.
     */
    'rate-limit' => [
        // App\Jobs\MyJob:class => '3600',
    ],

    'mail' => [
        'to' => ['email@example.com'],
    ],

    'slack' => [
        'webhook_url' => env('FAILED_JOB_SLACK_WEBHOOK_URL'),
    ],
];

Telegram bot

Talk to @BotFather and generate a Bot API Token.

Then add your newly created bot to the Telegram chat where you want notifications to be send.

Get your chat_id by running curl https://api.telegram.org/bot<your_token>/getUpdates and retrieving the chat_id from the output.

Then, configure your Telegram Bot API Token:

# config/services.php

'telegram-bot-api' => [
    'token' => env('TELEGRAM_BOT_TOKEN'),
    'chat_id' => env('TELEGRAM_CHAT_ID'),
],

License

The MIT License (MIT). Please see License File for more information.

About

Failed job monitor which sends Telegram notifications on job failure

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages