From ae3086633cbc3d5166a59b1ccd1dbddf1c3f1e67 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Tue, 13 Jun 2023 07:37:18 +0200 Subject: [PATCH 1/5] Add PHP Cron Monitor upserts --- src/platform-includes/crons/setup/php.mdx | 63 +++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/src/platform-includes/crons/setup/php.mdx b/src/platform-includes/crons/setup/php.mdx index b61be67b1a017..bc43671277276 100644 --- a/src/platform-includes/crons/setup/php.mdx +++ b/src/platform-includes/crons/setup/php.mdx @@ -17,9 +17,9 @@ SentrySdk::getCurrentHub()->captureEvent($event); // 🟢 Notify Sentry your job has completed successfully: $event = Event::createCheckIn(); $event->setCheckIn(new CheckIn( - id: $checkIn->getId(), monitorSlug: '', status: CheckInStatus::ok(), + id: $checkIn->getId(), )); SentrySdk::getCurrentHub()->captureEvent($event); ``` @@ -30,9 +30,9 @@ If your job execution fails, you can notify Sentry about the failure: // 🔴 Notify Sentry your job has failed: $event = Event::createCheckIn(); $event->setCheckIn(new CheckIn( - id: $checkIn->getId(), monitorSlug: '', status: CheckInStatus::error(), + id: $checkIn->getId(), )); SentrySdk::getCurrentHub()->captureEvent($event); ``` @@ -49,6 +49,9 @@ $event = Event::createCheckIn(); $checkIn = new CheckIn( monitorSlug: '', status: CheckInStatus::ok(), + release: '1.0.0', // Optional release of your application + environment: 'production', // Optional environment your cron is running on + duration: 10, // Optional duration in seconds ); $event->setCheckIn($checkIn); SentrySdk::getCurrentHub()->captureEvent($event); @@ -60,9 +63,63 @@ If your job execution fails, you can: // 🔴 Notify Sentry your job has failed: $event = Event::createCheckIn(); $event->setCheckIn(new CheckIn( - id: $checkIn->getId(), monitorSlug: '', status: CheckInStatus::error(), + id: $checkIn->getId(), + release: '1.0.0', // Optional release of your application + environment: 'production', // Optional environment your cron is running on + duration: 10, // Optional duration in seconds +)); +SentrySdk::getCurrentHub()->captureEvent($event); +``` +## Upserting Cron Monitors + +Instead of [creating and configuring](https://sentry.io/crons/create/) your Monitor upfront, +you can programmatically create and update your Monitors directly in code. + +```php +// Create a crontab schedule object (every 10 minutes) +$monitorSchedule = MonitorSchedule::crontab('*/10 * * * *'); + +// Or create an interval schedule object (every 10 minutes) +$monitorSchedule = MonitorSchedule::interval(10, MonitorScheduleUnit::minute()); +``` + +Supported units are `MonitorScheduleUnit::minute()`, `MonitorScheduleUnit::hour()`, `MonitorScheduleUnit::day()`, +`MonitorScheduleUnit::week()`, `MonitorScheduleUnit::month()` and `MonitorScheduleUnit::year()`. + +```php +// Create a config object +$monitorConfig = new MonitorConfig( + $monitorSchedule, + checkinMargin: 5, // Optional check-in margin in minutes + maxRuntime: 15, // Optional max runtime in minutes + timezone: 'Europe/Vienna', // Optional timezone +); + +// 🟡 Notify Sentry your job is running: +$event = Event::createCheckIn(); +$checkIn = new CheckIn( + monitorSlug: '', + status: CheckInStatus::inProgress(), + release: '1.0.0', // Optional release of your application + environment: 'production', // Optional environment your cron is running on + monitorConfig: $monitorConfig, +); +$event->setCheckIn($checkIn); +SentrySdk::getCurrentHub()->captureEvent($event); + +// Execute your scheduled task here... + +// 🟢 Notify Sentry your job has completed successfully: +$event = Event::createCheckIn(); +$event->setCheckIn(new CheckIn( + monitorSlug: '', + status: CheckInStatus::ok(), + id: $checkIn->getId(), + release: '1.0.0', // Optional release of your application + environment: 'production', // Optional environment your cron is running on + monitorConfig: $monitorConfig, )); SentrySdk::getCurrentHub()->captureEvent($event); ``` From aa3ab61ca45e8068afc2eefebd93bd346502a67a Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 05:40:27 +0000 Subject: [PATCH 2/5] style(lint): Auto commit lint changes --- src/platform-includes/crons/setup/php.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform-includes/crons/setup/php.mdx b/src/platform-includes/crons/setup/php.mdx index bc43671277276..46b410e7abb58 100644 --- a/src/platform-includes/crons/setup/php.mdx +++ b/src/platform-includes/crons/setup/php.mdx @@ -72,6 +72,7 @@ $event->setCheckIn(new CheckIn( )); SentrySdk::getCurrentHub()->captureEvent($event); ``` + ## Upserting Cron Monitors Instead of [creating and configuring](https://sentry.io/crons/create/) your Monitor upfront, From 6039a70995ce46ccdc273775108b8a113dc136c6 Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Wed, 14 Jun 2023 13:21:46 +0200 Subject: [PATCH 3/5] Update src/platform-includes/crons/setup/php.mdx Co-authored-by: Shana Matthews --- src/platform-includes/crons/setup/php.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform-includes/crons/setup/php.mdx b/src/platform-includes/crons/setup/php.mdx index 46b410e7abb58..11c02386310ff 100644 --- a/src/platform-includes/crons/setup/php.mdx +++ b/src/platform-includes/crons/setup/php.mdx @@ -75,8 +75,8 @@ SentrySdk::getCurrentHub()->captureEvent($event); ## Upserting Cron Monitors -Instead of [creating and configuring](https://sentry.io/crons/create/) your Monitor upfront, -you can programmatically create and update your Monitors directly in code. +You can create and update your Monitors programmatically with code +rather than [creating and configuring them in Sentry.io](https://sentry.io/crons/create/). ```php // Create a crontab schedule object (every 10 minutes) From 32834cabe5710405a24e7ef28839aaa89663fd7f Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Wed, 14 Jun 2023 13:21:58 +0200 Subject: [PATCH 4/5] Update src/platform-includes/crons/setup/php.mdx Co-authored-by: Shana Matthews --- src/platform-includes/crons/setup/php.mdx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/platform-includes/crons/setup/php.mdx b/src/platform-includes/crons/setup/php.mdx index 11c02386310ff..31bc3d20c826a 100644 --- a/src/platform-includes/crons/setup/php.mdx +++ b/src/platform-includes/crons/setup/php.mdx @@ -86,8 +86,13 @@ $monitorSchedule = MonitorSchedule::crontab('*/10 * * * *'); $monitorSchedule = MonitorSchedule::interval(10, MonitorScheduleUnit::minute()); ``` -Supported units are `MonitorScheduleUnit::minute()`, `MonitorScheduleUnit::hour()`, `MonitorScheduleUnit::day()`, -`MonitorScheduleUnit::week()`, `MonitorScheduleUnit::month()` and `MonitorScheduleUnit::year()`. +Supported units are: +- `MonitorScheduleUnit::minute()` +- `MonitorScheduleUnit::hour()` +- `MonitorScheduleUnit::day()` +- `MonitorScheduleUnit::week()` +- `MonitorScheduleUnit::month()` +- `MonitorScheduleUnit::year()` ```php // Create a config object From d6b18ea3afe2e3bd61f0c0103378298f0d3b9c53 Mon Sep 17 00:00:00 2001 From: "getsantry[bot]" <66042841+getsantry[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 11:23:56 +0000 Subject: [PATCH 5/5] style(lint): Auto commit lint changes --- src/platform-includes/crons/setup/php.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform-includes/crons/setup/php.mdx b/src/platform-includes/crons/setup/php.mdx index 31bc3d20c826a..dfe5e69525010 100644 --- a/src/platform-includes/crons/setup/php.mdx +++ b/src/platform-includes/crons/setup/php.mdx @@ -87,6 +87,7 @@ $monitorSchedule = MonitorSchedule::interval(10, MonitorScheduleUnit::minute()); ``` Supported units are: + - `MonitorScheduleUnit::minute()` - `MonitorScheduleUnit::hour()` - `MonitorScheduleUnit::day()`