bml / sentry-symfony-cron-monitor
Symfony cron monitoring integration for Sentry (http://getsentry.com)
Installs: 3 071
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.2||^8.0
- nyholm/psr7: ^1.8
- sentry/sentry-symfony: 4.*
- symfony/dependency-injection: ^4.4.20||^5.0.11||^6.0
- symfony/http-client: ^5.4
- symfony/http-kernel: ^4.4.20||^5.0.11||^6.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.19||<=3.16.0
- phpunit/phpunit: ^8.5.14||^9.3.9
- symfony/framework-bundle: ^4.4.20||^5.0.11||^6.0
- symfony/phpunit-bridge: ^5.2.6||^6.0
- symfony/yaml: ^4.4.20||^5.0.11||^6.0
README
About
This extension allows to configure sentry cron monitoring with pretty much any scheduled jobs provider.
Setup
- Make sure you setup base sentry-symfony extension https://github.com/getsentry/sentry-symfony
composer require bml/sentry-symfony-cron-monitor
- Enable
SentryCronMonitorBundle
in yourbundles.php
orKernel
(it may be automatically added by SF flex)
Usage
Add cron monitoring slug and schedule to your command parameters. ref.
--cron-monitor-slug=CRON-MONITOR-SLUG if command should be monitored then pass cron monitor slug --cron-monitor-schedule=CRON-MONITOR-SCHEDULE if command should be monitored then pass cron monitor schedule --cron-monitor-max-time=CRON-MONITOR-MAX-TIME if command should be monitored then pass cron monitor max execution time --cron-monitor-check-margin=CRON-MONITOR-CHECK-MARGIN if command should be monitored then pass cron monitor check margin
example usage in crontab
0 0 * * * user /app/bin/console app:statistics:update --cron-monitor-slug=statistics_update_midnight --cron-monitor-schedule "0 0 * * *"
Optionally you can also set max run time and check margin (see https://docs.sentry.io/platforms/php/crons/for ref.)
0 0 * * * user /app/bin/console app:statistics:update --cron-monitor-slug=statistics_update_midnight --cron-monitor-schedule "0 0 * * *" --cron-monitor-max-time=5 --cron-monitor-check-margin=2
Crontab helper command
The bml:sentry-symfony-cron-monitor:add-schedule-argument-to-crontab
command will take crontab file path and will add the
--cron-monitor-schedule=THE_SCHEDULE
to lines containing --cron-monitor-slug
.
This way the crontab file can be more DRY because you don't need to keep the --cron-monitor-schedule=THE_SCHEDULE.
Instead it's auto added during deploy/build. Just use this command in your ci/cd.
Development
Setup
Run .docker/bin/setup-dev.sh {PHP_VERSION}
eg. .docker/bin/setup-dev.sh 8.1
Default php version is 7.2 .docker/bin/setup-dev.sh
Tests
Run .docker/bin/run-tests.sh
For xdebug experience .docker/bin/run-tests-xdebug.sh
To run tests against specific php version use
.docker/bin/setup-dev.sh 7.4
.docker/bin/run-tests.sh
php-cs-fixer
Run .docker/bin/run-php-cs-fixer.sh
Beware this command internally runs .docker/bin/setup-dev.sh 8.1
(changes container php-version)