Skip to content

Releases: target/goalert

v0.35.0

Choose a tag to compare

@mastercactapus mastercactapus released this 21 Sep 15:36
db98291

GoAlert v0.35.0

It's been nearly a year since v0.34.1, and v0.35.0 brings a substantial set of improvements for both administrators and on-call users. Highlights include multi-ack escalation policy steps, private contact methods, an alerts view for escalation policies, richer webhook payloads, new webhook and Slack hardening options for admins, and continued progress on Universal Integration Keys and the job queue architecture.

⚠️ Upgrade Notes

  • Database migrations: This release includes 7 new migrations. They are applied automatically on startup (or via goalert migrate). As always, take and validate a full backup before upgrading.
    • Three migrations add database triggers that enqueue engine jobs directly for alert status, rotation, and signal changes (see Job Queue: Database-Driven Events below). These replace the in-process event bus and are transparent to operators, but you will see new trigger functions in the schema.
    • Remaining migrations add columns for labels on escalation policies/schedules/rotations, the multi_ack step setting, and the private contact method flag.
  • All new behavior is opt-in. Multi-ack, private contact methods, Webhook.BlockPrivateAddresses, and Slack.DisableBroadcastThreadReplies all default to off and preserve existing behavior unless enabled.
  • Webhook payload changes are additive. New JSON fields were added to alert-related webhook payloads; no existing fields were removed or renamed.
  • Building from source now requires Go 1.26.

🚀 New Features

Multi-Ack Escalation Policy Steps

Escalation policy steps now have an optional multi-ack setting. When enabled, acknowledging an alert no longer silences notifications for everyone else on that step. Each user activated by the step keeps getting notified until they individually acknowledge.

This is designed for teams where more than one person is expected to respond to every alert: primary/secondary pairs, onboarding shadows, or "whole team on call" policies for major outages. Previously the only workaround was telling people not to acknowledge so they wouldn't stop notifications for others.

What doesn't change:

  • Escalation to the next step still stops once the first person acknowledges
  • Closing an alert still cancels all pending notifications
  • Steps without multi-ack behave exactly as before, even when mixed with multi-ack steps in the same policy

On a multi-ack step, each user's acknowledgment is recorded in the alert log, so you can see who came online for an incident.

Multi-ack checkbox in the escalation policy step dialog Escalation policy step list showing a multi-ack step

This is an MVP intended to be safe to opt into; we'll refine it based on feedback. Known gaps: alert bundle messages count unacknowledged alerts (so a multi-ack user may see "0 unacknowledged"), and acknowledging an already-acknowledged alert from the web UI does not count as your individual acknowledgment.

API: multiAck on EscalationPolicyStep, and optional multiAck on CreateEscalationPolicyStepInput / UpdateEscalationPolicyStepInput.

1 PR by @mastercactapus

Private Contact Methods

Users can now mark a contact method as private, hiding its details (phone number, email address, etc.) from everyone except the owner. This addresses a long-standing request to avoid exposing personal contact details to all users of a GoAlert instance.

  • Private is off by default and does not retroactively change existing contact methods; users can edit an existing contact method to make it private (or public again).
  • Private contact methods show a (PRIVATE) label to the owner.
  • When another user views a profile, private contact methods are omitted, and notification rules that reference them display PRIVATE instead of the destination.
  • Note for administrators: private contact methods are hidden from all other users, including admins. Notifications are still delivered normally.
Private checkbox in the contact method dialog

Owner's view:

Owner view showing PRIVATE label

Other users' view:

Other users see PRIVATE in place of details

API: new private field on contact methods, and optional private on the create/update inputs.

1 PR by @mastercactapus

Alerts View for Escalation Policies

Escalation policy detail pages now have an Alerts quick-link that shows alerts across all services assigned to that policy. This makes it easy to see everything a given on-call team is responsible for in one place, with the same filtering and bulk actions available on the service alerts page.

Escalation policy details with Alerts quick link Alerts list filtered to an escalation policy's services
1 PR by @mastercactapus

Multiple Users per Temporary Schedule Shift

When adding a shift to a temporary schedule, you can now select multiple users at once instead of adding each one individually. Each selected user gets their own shift for the chosen time range.

Temporary schedule shift dialog with multiple users selected
1 PR by @Arunkumarlnr

Labels for Escalation Policies, Schedules, and Rotations (API Only)

Labels, previously available only on services, can now be set on escalation policies, schedules, and rotations via the GraphQL API. This enables the same ownership/team/cost-center tagging patterns across all of these resource types.

UI support and searching these types by label are planned for a future release.

API: labels field on EscalationPolicy, Schedule, and Rotation; optional labels on the corresponding create inputs; setLabel now accepts these types as targets.

1 PR by @mastercactapus
  • label: add support for escalation policy, schedule, and rotation types by @mastercactapus in #3429

Richer Webhook Payloads

Alert-related webhook notifications now carry significantly more context, making it easier to build automations and integrations without a follow-up API call:

Payload type New fields
AlertStatus Summary, Details, ServiceID, ServiceName, Meta, GoAlertURL
Alert GoAlertURL
AlertBundle GoAlertURL
AlertStatusBundle GoAlertURL

GoAlertURL is a direct link to the alert (or the service's alert list for bundles), built from the configured public URL. Meta contains the alert's key/value metadata.

Example AlertStatus payload:

{
  "AppName": "GoAlert",
  "Type": "AlertStatus",
  "AlertID": 79694,
  "Summary": "Disk usage above 90%",
  "Details": "Volume /data on db-01",
  "ServiceID": "9d1a4f7e-3a2c-4d6b-8f0e-2b7c1e5a9d34",
  "ServiceName": "Primary Database",
  "Meta": { "host": "db-01", "region": "us-east" },
  "LogEntry": "Acknowledged by Jane Doe",
  "GoAlertURL": "https://goalert.example.com/alerts/79694"
}
1 PR by @MichaelUray
  • Added more json fields to AlertStatus webhook notification by @MichaelUray in #4445

🛡️ Administration & Operations

Webhook: Block Private Network Destinations

A new Block Private Addresses toggle in the Admin → Webhook section rejects webhook deliveries to private, loopback, and link-local addresses (e.g. 10.0.0.0/8, 127.0.0.1, 169.254.169.254). The check happens at connection time against the resolved IP, so DNS names and redirects that resolve to internal addresses are covered as well. Blocked deliveries fail permanently with "destination address is not allowed by administrator" rather than retrying.

This is strictly opt-in and off by default. It w...

Read more

v0.34.1

Choose a tag to compare

@mastercactapus mastercactapus released this 06 Oct 20:39
0918387

GoAlert v0.34.1

This is a maintenance release that includes dependency updates, a memory leak fix, and a quality-of-life improvement for service monitoring.

🚀 New Features

Recent Events on Service Details

Service details pages now display an aggregated view of recent alert log entries, making it easier to quickly see what's been happening with a service without navigating to the full alerts page.

1 PR by @mastercactapus

🐛 Bug Fixes

Memory Leak Fix

Fixed a long-standing memory leak in the cycle monitor that could cause gradual memory growth over time in long-running deployments.

1 PR by @mastercactapus

🔧 Improvements

Documentation Updates

2 PRs by @mastercactapus

📦 Dependencies

This release includes comprehensive dependency updates for both Go and JavaScript packages to ensure security and compatibility.

4 PRs by @dependabot[bot]
  • build(deps): bump the go-deps group across 1 directory with 18 updates by @dependabot[bot] in #4415
  • build(deps-dev): bump vite from 6.2.7 to 6.3.6 by @dependabot[bot] in #4412
  • build(deps-dev): bump the js-deps group across 1 directory with 53 updates by @dependabot[bot] in #4410
  • build(deps): bump github.com/99designs/gqlgen from 0.17.80 to 0.17.81 in the go-deps group by @dependabot[bot] in #4417

Full Changelog: v0.34.0...v0.34.1

v0.34.0

Choose a tag to compare

@mastercactapus mastercactapus released this 28 Aug 22:22
8e5aa6b

GoAlert v0.34.0

We're excited to announce GoAlert v0.34.0! This release continues building on the foundation laid in v0.33.0, with significant improvements to messaging capabilities, administrative tools, and system reliability.

⚠️ Important: PostgreSQL Version Support

GoAlert v0.34.0 adds full support for PostgreSQL 17!

  • ✅ Fully tested with PostgreSQL 13, 14, 15, 16, and 17 (all versions pass our complete test suite)
  • 🏭 PostgreSQL 13 and 17 validated in production environments
  • 📅 PostgreSQL 13 reaches EOL in November 2025
  • ⭐ PostgreSQL 17 is now our recommended version for all deployments

For those looking to upgrade their DB without downtime (live migration from old to new), we have documentation around the Switchover feature here. As with any major DB change make sure to take, and validate, a full backup just in case.

While this isn't a new feature, it may be the first time some are hearing about it. For those interested, there is additional information about how it works here and here.

🚀 New Features

RCS Messaging Support

GoAlert now supports Rich Communication Services (RCS) through Twilio. If your Twilio messaging service is configured for RCS, GoAlert will automatically leverage the enhanced messaging capabilities including better delivery tracking and richer content support.

2 PRs by @mastercactapus

Heartbeat Monitor Muting (API Only)

You can now mute heartbeat monitors during planned maintenance or expected downtime, preventing unnecessary alerts during known service interruptions. This helps reduce alert fatigue and keeps your alert history clean during maintenance windows.

1 PR by @mastercactapus

Calendar Subscription Enhancements

Calendar subscriptions now support JSON format in addition to existing iCal formats, and you can generate direct links for creating schedule overrides, making it easier to share override creation workflows with team members.

2 PRs by @mastercactapus
  • calsub: Add JSON as a supported format for calendar subscriptions by @mastercactapus in #4196
  • schedules: add support for linking directly to creating a new schedule override by @mastercactapus in #4242

Enhanced Alert Statistics

Services now expose detailed alert statistics through the GraphQL API (alertStats field), providing administrators with better insights into service performance and alert patterns for reporting and analysis.

2 PRs by @codylewandowski, @mastercactapus

Administrative Maintenance Tools

New admin maintenance page provides tools for system maintenance tasks, including the ability to re-encrypt stored data when needed for security or compliance requirements.

1 PR by @mastercactapus

Service Search Enhancement

The service search functionality now supports an "only" filter option, allowing for more precise filtering of services.

1 PR by @weefatboi

🛠️ Universal Integration Keys Improvements

Continued enhancements to the experimental Universal Integration Keys feature (enabled with --experimental=univ-keys):

6 PRs by @ethan-haynes, @KatieMSB, @mastercactapus

🔧 System Improvements

Message Status Tracking

Enhanced notification system now records and displays complete message status history, providing administrators with full visibility into notification delivery status and helping with troubleshooting delivery issues.

1 PR by @mastercactapus
  • messages: record and display full message status history for notificaitons by @mastercactapus in #4324

Performance & Reliability

Improved shared locking enables better concurrent work processing, database indexing improvements for better performance with large message volumes, and enhanced testing capabilities for better performance validation.

3 PRs by @mastercactapus

Security Enhancements

Added comprehensive HTTP security headers and enhanced route security with proper HTTP method restrictions and response codes.

3 PRs by @mastercactapus

🐛 Bug Fixes

Critical Fixes

6 PRs by @mastercactapus

Reliability Improvements

5 PRs by @mastercactapus

🔌 Integration Improvements

Twilio Enhancements

1 PR by @mastercactapus

Slack Integration

1 PR by @mastercactapus

🏗️ Behind the Scenes

This release includes significant architectural improvements that lay the groundwork for future enhancements. Notably, v0.34.0 represents a major milestone in our migration to a job queue architecture, which will enable better multi-instance deployments and improved performance at scale in future releases.

Job Queue Migration

Continued migration of background processes to job queue architecture for better reliability and performance at scale. These improvements are largely invisible to end users but provide a foundation for better multi-instance support and performance improvements in future releases.

11 PRs by @mastercactapus
  • event: add event bus to replace manual trigger of periodic jobs by @mastercactapus in #4185
  • engine: migr...
Read more

v0.33.0

Choose a tag to compare

@mastercactapus mastercactapus released this 27 Nov 17:28
2d3f9f2

GoAlert v0.33.0

After a significant hiatus since our last release, we're thrilled to announce GoAlert v0.33.0! This release lays the groundwork for some exciting future features while also delivering numerous fixes and stability improvements to enhance your current experience.

GraphQL API Keys

GraphQL API Keys are now fully supported and out of the experimental phase! We've introduced a dedicated editor to manage your API keys more efficiently, simplifying the process of creating, editing, and organizing your keys.
image

4 PRs by @mastercactapus

Alert Metadata

Introducing Alert Metadata: You can now attach arbitrary key-value metadata to alerts, enhancing the context and flexibility of your alerting workflow. This feature allows for more detailed and informative alerts, facilitating better incident management.

To add metadata to an alert, include it in your request parameters or JSON body. For example:

Via URL parameters:

bash
Copy code

/api/v2/generic/incomming?token=<token>&meta=example_key=example_value&meta=example_key2=example_value2

Or in a JSON body:

{
  "summary": "test",
  "details": "test",
  "meta": {
    "example_key": "example_value",
    "example_key2": "example_value2"
  }
}

Refer to the documentation (/docs) on your GoAlert instance for more details.

1 PR by @shivanishendge

Miscellaneous Enhancements

We've introduced several improvements to enhance usability and reliability:

  • Custom End Time for Service Maintenance Mode: You can now specify a custom end time when putting a service into maintenance mode, giving you more control over maintenance scheduling.

  • Externally Managed Integration Keys: Integration keys can now be marked as "externally managed," allowing seamless integration with external systems that manage keys.

  • Improved SMTP Reliability: The remote monitor will now retry sending emails if the SMTP server is unavailable, increasing the robustness of email notifications.

3 PRs by @mastercactapus, @nimjor

Bug Fixes

This release includes numerous UI bug fixes and log improvements to enhance stability and user experience. We've addressed issues related to alert details, markdown links, schedule notifications, and more, reducing log noise and fixing various edge-case bugs.

20 PRs by @forfold, @allending313, @cuishuang, @mastercactapus

Admin Features

Pprof Profiling Support

Administrators can now create Go pprof profiles for performance analysis. By setting the --listen-pprof flag, you can access profiling data to help diagnose and optimize GoAlert's performance.

1 PR by @mastercactapus

Future Features

A significant portion of this release is dedicated to laying the groundwork for upcoming major features:

  • Programmable Integration Keys
  • Plugin System for Outgoing Messages
  • Job Queue System for Processing Tasks

Universal Integration Keys (Experimental)

We are excited to introduce Universal Integration Keys, currently available behind the univ-keys experimental flag. This powerful feature allows you to use Expr expressions to define custom rules for handling incoming messages, providing unprecedented flexibility in configuring alert processing.

With Universal Integration Keys, you can programmatically control how alerts are created, modified, or suppressed based on dynamic conditions. Additionally, you can send "signals" for less critical payloads and pipe a request directly to a Slack message, for example.

For more information, please refer to the Universal Integration Keys documentation.

33 PRs by @forfold, @mastercactapus
Read more

v0.32.0

Choose a tag to compare

@KatieMSB KatieMSB released this 12 Mar 19:55
33ccf5e

GoAlert v0.32.0

Welcome to the unveiling of GoAlert v0.32.0! This release is a comprehensive package, featuring a range of exciting new features, critical bug fixes, and essential developer improvements to elevate your alert management experience.

Experimental Features

API Key Support

The 'API Keys' feature is currently an experimental feature. To explore this functionality, administrators must opt in by configuring GoAlert with EXPERIMENTAL=gql-api-keys. As an experimental feature, it may change, and your feedback is appreciated. Caution is advised in production, and expect updates as we refine and enhance its capabilities.

Explore an up-and-coming new feature of GoAlert while it's still in its experimental stage! Once activated, discover the new 'API Keys' option in the admin sidebar, allowing administrators to create and tailor access using GraphQL queries or mutations for a more secure and customizable integration.

More information on implementation details and the decisions around this new feature can be found in an ADR here.

Screenshot 2023-12-07 at 11 14 33 AM Screenshot 2023-12-07 at 11 15 23 AM
17 PRs by @mastercactapus, @1ddo, @forfold

New Features

Monthly Rotations

Simplify your team's schedule with monthly handoffs! The new 'Monthly' option in Rotations enhances scheduling convenience, ensuring smooth handoffs once a month in GoAlert.

2 PRs by @allending313

Service Metrics

Elevate service monitoring with new comprehensive metrics in GoAlert. Admins can now keep an eye on service health, check for setup issues, and review notification channels—all in one place for better awareness and management.

Screenshot 2023-12-07 at 11 40 50 AM Screenshot 2023-12-07 at 11 40 58 AM
5 PRs by @KatieMSB

Full Calendar Subscription

Users can now opt into subscribe to all shifts on a schedule in GoAlert. Get a complete view of your commitments and your teammates for more comprehensive schedule management.

1 PR by @mastercactapus

User Profile Calendar

The user profile page now renders a calendar for all on-call schedule shifts (broken down by schedule)

image

2 PRs by @forfold
  • gql: add field "assignedSchedules" to type "User" by @forfold in #3231
  • ui: add user shifts calendar to profile by @forfold in #3229

Misc Improvements

We've made a number of QOL improvements including a new splash screen, fixed favicon, labels are visible on services, and improved timestamp support in markdown.

6 PRs by @forfold, @mastercactapus

Admin Options

There were a few new config options and tweaks added for admins, like requiring labels on services and closing stale alerts.

4 PRs by @mastercactapus

Bug Fixes

Temporary Schedules Improvements

A number of bug fixes for the Temporary Schedules features have been addressed and some new features!. Soft limits for start and end dates provide better control, default values are now set accurately, and temporary schedules seamlessly merge as intended.

Schedules are now broken down by a default shift length, and while custom shifts remain supported, this intends to make it easier to create and manage even handoffs amongst team members.
image

Additionally, if you need to edit a temporary schedule, you will now be prompted to confirm the changes, so you know EXACTLY what is being changed before saving!
image

6 PRs by @mastercactapus, @forfold, @KatieMSB

Misc Bug Fixes

Lots of bugs were squashed in this update to improve the overall GoAlert experience! Enhancements include improved linter and formatting, optimized search functionalities, enhanced concurrency and performance, streamlined dependency management, meticulous timestamp handling, and robust error handling.

20 PRs by @mastercactapus, @forfold, @KatieMSB
Read more

v0.31.1

Choose a tag to compare

@mastercactapus mastercactapus released this 11 Sep 16:36
ea947e1

GoAlert v0.31.1

This point release fixes some regressions present in the v0.31.0 release. Additionally, containers and binaries for this version were built with Go 1.21.1.

Bug Fixes

  • Fixed issue with SMTP server when multiple RCPT TO addresses were sent
  • Added a missing column for the alerts feature that prevented switchover from working properly
  • Fixed an issue that prevented adding webhooks to escalation policies when Slack is disabled
  • Fixed search behavior when matching multiple words
4 PRs by @andrewbenington and @mastercactapus

Misc

  • The Google Analytics feature was re-introduced and updated
  • Dependency and driver updates
  • New TypeScript conversion
6 PRs by @mastercactapus, @forfold, @leyasalazar, and @KatieMSB

Full Changelog: v0.31.0...v0.31.1

v0.31.0

Choose a tag to compare

@mastercactapus mastercactapus released this 30 Aug 20:34
d938a76

GoAlert v0.31.0

Unveiling the latest GoAlert update with enhanced alert tracking, seamless system migration, and more. Experience greater control and efficiency in your alert management.

Container image: goalert/goalert:v0.31.0

New Features

Alert Noise Tracking

Users may now mark alerts as "noisy" and see the overall counts and escalations on the Alert Metrics page.


2 PRs by @forfold
  • add option to set noise reasons for an alert by @forfold in #3133
  • view noisy alert count on service alert metrics graph by @forfold in #3161

Message Logs Frequency Graph

There is now a graph to visualize sent messages:

3 PRs by @forfold and @mastercactapus
  • ui: preflight changes for message logs graph by @forfold in #3026
  • admin/message logs: Add field for querying statistics on outgoing messages by @mastercactapus in #3059
  • ui/admin: add message logs notification count line graph by @forfold in #2481

Switchover UI

You can now migrate a live system from one DB server to another without downtime.
More information is available in the Switchover Guide.

3 PRs by @mastercactapus

Email Integration Keys via Built-In SMTP

Alerts created by email are now supported by pointing an MX record directly to GoAlert documentation available here.

1 PR by @nimjor

Set/Update User Password

Users and admins are now able to update passwords from the UI

2 PRs by @allending313
  • auth/basic: add createBasicAuth and updateBasicAuth for managing Basic credentials via GraphQL by @allending313 in #3062
  • ui/user: Allow setting/changing basic auth passwords in UI by @allending313 in #2991

Slack DM Contact Method

Users can now add Slack direct messages as a contact method on their profile when Slack is enabled.

9 PRs by @mastercactapus

Alert Auto-Close

You can now set a global auto-close time for unacknowledged alerts under Maintenance on the Admin -> Config page.

1 PR by @Lakshmi2107

Twilio Voice Customization

Configuring the Twilio voice name and language from the admin panel is now possible.

2 PRs by @AlaricWhitney

Webhook Support

Webhooks can now be set as a destination for scheduled on-call notifications and directly on an escalation policy step! Additionally, the service name is now included for alerts.

8 PRs by @allending313, @andrewbenington, and @nataliekorzh

Escalate via Voice and SMS

You can now escalate an alert by voice and SMS.

1 PR by @Lakshmi2107

Update Slack Usergroup

Slack usergroups can now automatically be updated by setting an on-call notification on a schedule!

10 PRs by @allending313, @andrewbenington, @forfold, and @mastercactapus

Generic Alert API

It is now possible to get the alert and service ID when creating an alert via a Generic API key by setting the Accept header to application/json

1 PR by @sudhabindu-apm

Backend & API

We hardened security, expanded maintenance mode, and fixed some cleanup issues.

6 PRs by @cmarquis, @mastercactapus, and @theautoroboto

Improvements

We moved the add buttons on wide-screen devices from a floating-action button to a named button at the top to reduce confusion for new users.

7 PRs by @forfold
  • ui: move profile add buttons ...
Read more

v0.30.1

Choose a tag to compare

@mastercactapus mastercactapus released this 22 Nov 16:44
f5f5313

GoAlert v0.30.1

Minor release with bug and stability fixes for peak season.

Notable Changes

  • This release is built with Go 1.19.3
  • You can now search by integration key on the Services list page (by @KatieMSB in #2587)
  • The admin Message Log is now paginated, fixing a long-standing issue where it was unusable with large numbers of recent messages (by @forfold in #2644)

Misc Fixes

Dev Improvements

New Contributors

Full Changelog: v0.30.0...v0.30.1

v0.30.0

Choose a tag to compare

@m17ch m17ch released this 20 Sep 15:23
31bdea6

GoAlert v0.30.0

This version has many improvements and features that have been in the works for a while for users, admins, and developers!

In addition to the binary release below, this release is also available in container image form: goalert/goalert:v0.30.0

Note to Admins: Public URL Configuration is Changing

First and foremost, no breaking changes. Without configuration updates, the new version should behave like the old. However, the global Public URL config is now deprecated.

We added a new --public-url flag (or GOALERT_PUBLIC_URL env var), which is now the preferred way to configure the public address for things like auth, Twilio/Slack callbacks, SMS URLs, and redirects. You should test and update your environments accordingly. Most users can simply start GoAlert with --public-url set to their current Public URL config value; additional notes are below under "Migration Notes"

Things of note:

  • GoAlert will start without the new flag set and fall back to the old behavior. Upgrading to 0.30.0 should be as safe as all other versions with no breaking/behavioral change without explicit opt-in.
  • The new flag replaces all uses of Public URL (in config under General), Referrer URLs (in config under Auth), and the --http-prefix flag. Using it will cause said deprecated settings to be ignored.

This was done to simplify fragile code that caused problems, particularly with various reverse-proxy setups and confusion around deployments behind a route prefix. Redirects and validation no longer use the host header to guess the environment and will always assume it is available at the configured URL.

Migration Notes

  • If you have multiple required Auth Referrer URLs, run separate instances connected to the same DB, one for each URL.
  • If you are using --http-prefix, just ensure the same prefix is set as the path of your --public-url value

New Paint!

A long time coming, we finally added some color to the application and dark-mode support! Changing the color for yourself from the new settings popover is now possible (can be useful for those that use multiple environments).

new-ui

  • Adds a Current User Avatar to the top app bar. (#2212)
  • Adds a button for dark-mode to the user profile. (#2174)
  • Adds a color picker to the Theme Mode (now renamed to Appearance) ButtonGroup in the Settings Popover. (#2393)

Slack Account Linking

Slack account linking is finally supported without running the goalert-slack-email-sync tool. Linking allows a user to close or acknowledge an alert from Slack that previously needed to be maintained by an admin.

When a user attempts to interact with an alert for the first time in Slack, a private message will prompt them to link their account. After confirming in GoAlert, their initial action will be taken (e.g., close or ack), and their account will remain linked for future interactions.

Note: in response to feedback, we've updated the Slack notifier to only include the summary in messages, reducing channel noise.

slack-flow

  • Updates the Slack notification sender to only include the summary in the message payload. (#2478)
  • Adds the ability to link accounts directly from Slack in response to user interaction (#2564)

Maintenance Mode

We've made it possible to put a service in a temporary maintenance mode, which will still allow alerts to be created/acknowledged/closed but prevents escalations (including the first) so your phone isn't going off while you're working to fix an issue :)

image

  • Adds maintenance mode option to snooze alert notifications (#2512)

Alert Metrics for Services

We've added a metrics page for services so you can visualize alert counts, escalations, and time to acknowledge and close. It also allows you to export up to one year of alert data (including timing information) as a CSV.

You can find Alert Metrics under Quick Links on your service details page.

image

  • Adds Alert Metrics dashboard feature accessible from a Service Details quick link. (#2085)
  • Introduces a new engine module for creating and populating a new alert_metrics table. (#2177)
  • Styles the alert metrics graph using our MUI theme and MUI Paper, Typography elements for the graph's tooltip. (#2323)
  • Adds a new chart for visualizing time to acknowledge and time to close averages for daily alerts. (#2347)
  • Moves graph and CSV processing to a web worker when supported. (#2465)
  • Adds escalated alert count to the metrics graph and the information to the table and CSV export. (#2430)
  • Adds new daily_alert_metrics table that aggregates metrics from alert_metrics. (#2272)
  • Use alerts query as the source of truth. Additionally, closedAt is added to the table and CSV export. (#2448)
  • Use autosizer for rechart graphs (#2529)
  • Adds loading status to web worker (#2542)

Grafana Integration

Grafana Alerting is now supported, along with support for images!

image

  • Adds ImageURL to alert details, when available, for Grafana-generated alerts. (#2468)
  • Adds support for Grafana 8.x webhooks. (#2087)

Admin: Message Logs

A new Message Logs page allows admins to view metadata about recently sent notifications.

image

  • Adds Outgoing Logs view from the Admin page. (#2061)
  • Adds debugMessages query that an admin can use to retrieve a list of recent messages from the outgoing_messages table. (#2052)

Admin: Alert Counts Visualization

The new Alert Counts page will help admins find "busy" services and correlate high-alert events when necessary.

image

  • Adds records to the alert_logs table when running make regendb. (#2150)
  • Updates resetdb to include randomly generated escalation logs. (#2430)
  • Adds admin Alert Counts page (#2509)

Admin: Twilio Key Rotation

It is now possible to do a smooth key rotation with Twilio:

  1. Generate secondary auth token
  2. Set secondary as auth token
  3. Set primary as alt. auth token
  4. promote secondary to primary
  5. clear alt auth token

image

  • Add alternate auth token for use during key rotation (#2588)

Developer Experience Improvements

There is now a Dev link in the main navigation menu when starting in development mode (i.e., make start), giving quick access to tools and configuration for local development. In addition, there were several process improvements and paid tech debt with this release, such as a huge speed improvement with the switch to esbuild.

Some of these tools have been available and running with make start but the new dashboard will hopefully make it a lot easier to discover and use the bundled tools!

image

  • Adds "Dev" page in dev mode (#2555)
  • Adds runproc tool, a simpler alternative to runjson. (#2080)
  • Fixes some noise issues in the make start log output. (#2172)
  • Adds the ability to manipulate time within the confines of a Postgres database. (#2438)
  • Updates build-env image to have the necessary dependencies to run Cypress tests, allowing all build steps to be run in the same container. (#2400)
  • Adds a new tool, slowproxy that can simulate network latency, jitter, and throughput constraints for testing. (#2307)
  • Replaces webpack with esbuild for building app.js. (#2314)
  • Replaces the use of webpack-dev-server and the required proxy with a method that will serve files from the local filesystem or in memory. (#2246)
  • Removes old GraphQL code that has been deprecated/unmaintained for the past few releases. (#2051)
  • Allow setting PUBLIC_URL in dev (#2553)
  • Add testing section and move smoketests to test/smoke (#2590)

Bug Fixes/Misc

  • Fixes an issue where invalid int. keys returned 400 instead of 401 (#2546)
  • Add --public-url flag and strictly validate URLs (#2421)
  • Many accessibility improvements & javascript conversions to typescript. (#2318)
  • Some deadlock issues around rotations were fixed by introducing rather aggressive locks. (#2491)
  • Fix for user deletion causing rotation advancement. (#2375)
  • Increase maximum alert summary length to 1 KiB. (#2073)
  • Adds alert summary to status update messages. (#2074)
  • Increase the calendar subscription window of calculated shifts from 1 month to 1 year. (#2388)
  • Removes unmaintained tracing code and dependencies. (#2420)
  • Replaces the use of react-router-dom with wouter. (#2415)
  • Adds support for application/json in incoming webhook. (#2161)
  • Fixes an issue preventing switchover (#2552)
  • Fix/cleanup for Go 1.19 (#2563)
  • Fix make start issue when restarting postgres (#2580)
  • Allow setting SIZE= with make regendb to test various data sizes (#2580)
  • Fixed first-startup race conditions, as well as quick shutdown ones (#2580)
  • Add speedbump as a devtool to replace slowproxy (#2580)
  • Fixed a display bug with contact method verification when using message SIDs (#2580)
  • Update voice code to use encoding/xml (#2582)
  • Update SMS country-c...
Read more

v0.29.0

Choose a tag to compare

@dctalbot dctalbot released this 06 Dec 16:44

GoAlert v0.29.0

This release includes several new features in addition to general maintenance and bug fixes.

UI/UX Enhancements

  • The Application Name (configured in GoAlert admin dashboard) now appears in notifications where applicable. (#1881)
  • Text fields now use the Material UI OutlinedInput style in anticipation of MUIv5.
  • Schedule calendars now display events for overrides. (#1901)
  • If an alert has been in a pending state for more than 15 seconds, a notice is displayed on the Alert Details page. (#1779)
  • Users can favorite other users such that they appear first in lists, much like Schedules or Services. (#1864)

Temporary Schedules

  • A general "OVERRIDE" button has replaced the "TEMP SCHED" button located in the Schedule calendar toolbar. To create a Temporary Schedule, click this and select the Temporary Schedule option. (#1857)
  • The Temporary Schedules dialog has been consolidated into a single step. (#1912)
  • An error is now rendered when trying to create a Temporary Schedule that has gaps in coverage. This error may be bypassed by checking a confirmation checkbox. (#1891)
  • Solved an issue in which coverage gap warning notices were rendered erroneously.

Twilio Integration

  • Outgoing messages can now be sent using a Messaging Service SID. To enable, set the Twilio Messaging Service SID field in the GoAlert admin dashboard. (#1899)
  • The voice menu experience has been improved to have better phrasing, slower speaking, and other minor fixes. (#1918)

Slack Integration

  • Alert messages render a colored status bar to indicate whether the alert is unacknowledged, acknowledged, or closed. (#2004)
  • Enable "Interactive Messages" from the GoAlert admin dashboard to have alert messages include a button for acknowledging, escalating, or closing the alert. (#2014)
  • The Slack App manifest has been updated to include a users:read.email permission scope. See the instructions on the Getting Started page for how to configure a Slack App using the generated manifest. (#2025)
  • Slack users and GoAlert users can now be linked by inserting records into the auth_subjects table. This allows for Slack mentions e.g. in On-Call Notifications and interactive messages.

GraphQL API

  • A new debugMessageStatus query provides the state of a message for a given provider message ID. (#1917)

Bug Fixes/Misc

  • An issue with searching for non-English characters was fixed. (#1951)
  • Message bundling is enabled by default. (#1942)
  • Fixed a UI navigation issue when using an HTTP path prefix. (#1976)

Version Updates:

  • go 1.16.4 -> 1.17.2 (#2005)
  • react-markdown 6 -> 7 (#1854)
  • graphql 15 -> 16 (#2008)