goalert
Open source on-call scheduling, automated escalations, and notifications so you never miss a critical alert
Top Related Projects
Developer-friendly incident response with brilliant Slack integration
Prometheus Alertmanager
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.
Quick Overview
GoAlert is an open-source on-call scheduling, automated escalation, and notification system. It provides a flexible platform for managing on-call rotations, escalation policies, and integrations with various alerting systems. GoAlert aims to streamline incident response and improve team communication during critical events.
Pros
- Highly customizable on-call schedules and escalation policies
- Supports multiple notification methods (SMS, voice, email, Slack)
- Integrates with popular monitoring and alerting tools
- Open-source and self-hosted, allowing for greater control and customization
Cons
- Requires some technical expertise to set up and maintain
- May have a steeper learning curve compared to some commercial alternatives
- Limited built-in reporting and analytics features
- Community support may be less robust than commercial options
Getting Started
To get started with GoAlert, follow these steps:
-
Clone the repository:
git clone https://github.com/target/goalert.git
-
Navigate to the project directory:
cd goalert
-
Build and run the application using Docker:
docker-compose up -d
-
Access the GoAlert web interface at
http://localhost:8081
-
Configure your on-call schedules, escalation policies, and integrations through the web interface.
For more detailed instructions and configuration options, refer to the official documentation in the repository's README and wiki.
Competitor Comparisons
Developer-friendly incident response with brilliant Slack integration
Pros of Oncall
- Integrated with Grafana ecosystem, offering seamless visualization and alerting
- Supports a wider range of integrations out-of-the-box
- More active development and larger community support
Cons of Oncall
- Steeper learning curve due to its integration with Grafana
- May be overkill for smaller teams or simpler use cases
- Requires more resources to run and maintain
Code Comparison
Oncall (Python):
from oncall import OncallClient
client = OncallClient(api_key='your_api_key')
schedules = client.get_schedules()
GoAlert (Go):
import "github.com/target/goalert/schedule"
s := schedule.Schedule{Name: "On-Call Rotation"}
err := s.Create(ctx, db)
Both repositories provide robust on-call management solutions, but they cater to different needs. Oncall is more suitable for organizations already using Grafana or requiring extensive integrations, while GoAlert offers a simpler, standalone solution that may be easier to set up and maintain for smaller teams or those with less complex requirements.
Prometheus Alertmanager
Pros of Alertmanager
- Deeply integrated with Prometheus ecosystem
- Supports complex routing and grouping of alerts
- Extensive documentation and community support
Cons of Alertmanager
- Steeper learning curve for configuration
- Less focus on on-call management features
- Limited built-in notification options compared to GoAlert
Code Comparison
Alertmanager configuration (YAML):
route:
receiver: 'team-X'
receivers:
- name: 'team-X'
email_configs:
- to: 'team-X@example.com'
GoAlert configuration (JSON):
{
"rotation": {
"name": "Team X On-Call",
"type": "weekly",
"participants": ["user1", "user2"]
}
}
Summary
Alertmanager excels in alert routing and integration with Prometheus, making it ideal for complex monitoring setups. GoAlert focuses more on on-call management and user-friendly interfaces, offering features like scheduling and escalation policies. Alertmanager uses YAML for configuration, while GoAlert uses a combination of UI and API interactions. Choose Alertmanager for Prometheus-centric environments and advanced alert handling, or GoAlert for streamlined on-call management and broader notification options.
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
Pros of VictoriaMetrics
- High-performance time series database with excellent scalability
- Efficient data compression, reducing storage costs
- Compatible with Prometheus and InfluxDB, allowing easy integration
Cons of VictoriaMetrics
- Steeper learning curve for users new to time series databases
- Less focus on alerting and incident management features
- May require additional tools for comprehensive monitoring solutions
Code Comparison
VictoriaMetrics query example:
sum(rate(http_requests_total{status="200"}[5m])) by (instance)
GoAlert query example (using Prometheus as a data source):
alerts{severity="critical", state="firing"}
Key Differences
VictoriaMetrics is primarily a time series database and monitoring system, while GoAlert focuses on alert management and incident response. VictoriaMetrics excels in data storage and querying, whereas GoAlert specializes in notification routing and escalation policies.
VictoriaMetrics is better suited for organizations requiring high-performance metrics storage and querying, while GoAlert is ideal for teams needing robust alert management and on-call scheduling capabilities.
For a complete monitoring and alerting stack, some organizations might choose to use both tools in conjunction, leveraging VictoriaMetrics for data storage and querying, and GoAlert for alert management and incident response workflows.
Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.
Pros of Thanos
- Highly scalable and designed for long-term storage of Prometheus metrics
- Supports global query view across multiple Prometheus instances
- Offers advanced features like downsampling and compaction for efficient data management
Cons of Thanos
- More complex setup and configuration compared to GoAlert
- Requires additional infrastructure and resources to run effectively
- Steeper learning curve for teams not familiar with Prometheus ecosystem
Code Comparison
GoAlert (Alerting configuration):
- name: High CPU Usage
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
Thanos (Query configuration):
query:
replica_label: replica
auto_downsampling: true
query_timeout: 5m
max_concurrent_queries: 20
query_concurrency: 10
While both projects serve different purposes, this comparison highlights that Thanos is more focused on scalable metric storage and querying, while GoAlert is primarily designed for alerting and incident management. The code snippets demonstrate the different configuration approaches, with GoAlert focusing on alert definitions and Thanos on query optimization.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
GoAlert
GoAlert provides on-call scheduling, automated escalations and notifications (like SMS or voice calls) to automatically engage the right person, the right way, and at the right time.
Installation
GoAlert is distributed as a single binary with release notes available from the GitHub Releases page.
Additionally, images are published on Docker Hub for each release. The latest
tag is the most recent release, and nightly
is the latest build from the master
branch.
See our Getting Started Guide for running GoAlert in a production environment.
Quick Start
# podman
podman run -it --rm -p 8081:8081 goalert/demo
# docker
docker run -it --rm -p 8081:8081 goalert/demo
GoAlert will be running at localhost:8081. You can log in with admin
/admin123
.
If you're using the demo container for integration testing:
- A non-admin user is available as
user
/user1234
. - You can specify the ENV variable
SKIP_SEED=1
to skip the initial seed data step. - You can get a session token via
curl -XPOST -H 'Referer: http://localhost:8081' -d 'username=admin&password=admin123' 'http://localhost:8081/api/v2/identity/providers/basic?noRedirect=1'
.
Contributing (Local Development)
If you'd like to contribute to GoAlert, please see our Contributing Guidelines and the Development Setup Guide.
Please also see our Code of Conduct.
For most purposes, you can use make start
from the root of this repo to start a development server.
- It will be running at
http://localhost:3030
- Default login is
admin
/admin123
- Changes you make locally, UI and backend, should be reflected in the running server within a few seconds (no need to restart the server).
Contact Us
If you need help or have a question, the #goalert
Slack channel is available on gophers.slack.com.
To access Gophers Slack and the #goalert
channel, you will need an invitation. You request one through the automated process here: https://invite.slack.golangbridge.org/
- Vote on existing Feature Requests or submit a new one
- File a bug report
- Report security issues to security@goalert.me
License
GoAlert is licensed under the Apache License, Version 2.0.
Top Related Projects
Developer-friendly incident response with brilliant Slack integration
Prometheus Alertmanager
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
Highly available Prometheus setup with long term storage capabilities. A CNCF Incubating project.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot