Top Related Projects
Quick Overview
Grafana OnCall is an open-source incident response management system designed to integrate with monitoring tools and streamline on-call processes. It provides features for alert grouping, escalation policies, and team scheduling, helping organizations manage and respond to incidents more effectively.
Pros
- Seamless integration with popular monitoring tools like Grafana, Prometheus, and Zabbix
- Flexible escalation policies and scheduling options for on-call teams
- Open-source and customizable to fit specific organizational needs
- User-friendly interface for managing alerts and incidents
Cons
- Requires setup and configuration, which may be complex for some users
- Limited built-in integrations compared to some commercial alternatives
- May require additional resources for self-hosting and maintenance
- Learning curve for teams transitioning from other incident management systems
Getting Started
To get started with Grafana OnCall:
-
Clone the repository:
git clone https://github.com/grafana/oncall.git
-
Navigate to the project directory:
cd oncall
-
Run the setup script:
make dev
-
Access the OnCall UI at
http://localhost:8080
-
Configure your alert sources and team schedules in the OnCall UI
-
Integrate with your existing monitoring tools using the provided documentation
For more detailed instructions and configuration options, refer to the project's documentation in the repository.
Competitor Comparisons
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
Pros of Rundeck
- More comprehensive workflow automation and job scheduling capabilities
- Supports a wider range of integrations and plugins
- Offers both open-source and enterprise editions for scalability
Cons of Rundeck
- Steeper learning curve due to more complex features
- Requires more resources to set up and maintain
- May be overkill for simple alerting and on-call management needs
Code Comparison
Rundeck (Job definition in YAML):
- name: Hello World
nodeStep: true
description: A simple hello world job
executionEnabled: true
sequence:
commands:
- exec: echo "Hello, World!"
Oncall (Alert group configuration in YAML):
- name: Critical Alerts
slack_channel: "#critical-alerts"
notify_to_users:
- user1@example.com
- user2@example.com
escalation_chain:
- step1:
user: user3@example.com
delay: 5m
While both projects use YAML for configuration, Rundeck focuses on defining complex workflows and jobs, whereas Oncall emphasizes alert routing and on-call management. Rundeck offers more flexibility in job execution, while Oncall provides streamlined alert handling and escalation processes.
Open source on-call scheduling, automated escalations, and notifications so you never miss a critical alert
Pros of GoAlert
- More lightweight and focused solely on alerting and on-call management
- Simpler setup and configuration process
- Better integration with SMS providers for notifications
Cons of GoAlert
- Less extensive feature set compared to OnCall's broader incident management capabilities
- Smaller community and fewer third-party integrations
- Limited customization options for alert routing and escalation policies
Code Comparison
GoAlert (Go):
func (s *Service) CreateAlert(ctx context.Context, a *Alert) error {
err := validate.Struct(a)
if err != nil {
return err
}
return s.db.CreateAlert(ctx, a)
}
OnCall (Python):
def create_alert(self, alert_data):
serializer = AlertSerializer(data=alert_data)
if serializer.is_valid():
alert = serializer.save()
self.trigger_alert_actions(alert)
return alert
raise ValidationError(serializer.errors)
Both repositories provide on-call management and alerting solutions, but they differ in their approach and feature set. GoAlert focuses on simplicity and core alerting functionality, while OnCall offers a more comprehensive incident management platform with additional features. The code comparison shows GoAlert's use of Go for backend operations, emphasizing type safety and concurrency, while OnCall utilizes Python, providing more flexibility and easier integration with various services.
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
Grafana OnCall
Developer-friendly incident response with brilliant Slack integration.
- Collect and analyze alerts from multiple monitoring systems
- On-call rotations based on schedules
- Automatic escalations
- Phone calls, SMS, Slack, Telegram notifications
Getting Started
[!IMPORTANT]
These instructions are for using Grafana 11 or newer. You must enable the feature toggle forexternalServiceAccounts
. This is already done for the docker files and helm charts. If you are running Grafana separately see the Grafana documentation on how to enable this.
We prepared multiple environments:
- production
- developer
- hobby (described in the following steps)
-
Download
docker-compose.yml
:curl -fsSL https://raw.githubusercontent.com/grafana/oncall/dev/docker-compose.yml -o docker-compose.yml
-
Set variables:
echo "DOMAIN=http://localhost:8080 # Remove 'with_grafana' below if you want to use existing grafana # Add 'with_prometheus' below to optionally enable a local prometheus for oncall metrics # e.g. COMPOSE_PROFILES=with_grafana,with_prometheus COMPOSE_PROFILES=with_grafana # to setup an auth token for prometheus exporter metrics: # PROMETHEUS_EXPORTER_SECRET=my_random_prometheus_secret # also, make sure to enable the /metrics endpoint: # FEATURE_PROMETHEUS_EXPORTER_ENABLED=True SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long" > .env
-
(Optional) If you want to enable/setup the prometheus metrics exporter (besides the changes above), create a
prometheus.yml
file (replacingmy_random_prometheus_secret
accordingly), next to yourdocker-compose.yml
:echo "global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: prometheus metrics_path: /metrics/ authorization: credentials: my_random_prometheus_secret static_configs: - targets: [\"host.docker.internal:8080\"]" > prometheus.yml
NOTE: you will need to setup a Prometheus datasource using
http://prometheus:9090
as the URL in the Grafana UI. -
Launch services:
docker-compose pull && docker-compose up -d
-
Provision the plugin (If you run Grafana outside the included docker files install the plugin before these steps):
If you are using the included docker compose file use
admin
/admin
credentials andlocalhost:3000
to perform this task. If you have configured Grafana differently adjust your credentials and hostnames accordingly.# Note: onCallApiUrl 'engine' and grafanaUrl 'grafana' use the name from the docker compose file. If you are # running your grafana or oncall engine instance with another hostname adjust accordingly. curl -X POST 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/settings' -H "Content-Type: application/json" -d '{"enabled":true, "jsonData":{"stackId":5, "orgId":100, "onCallApiUrl":"http://engine:8080", "grafanaUrl":"http://grafana:3000"}}' curl -X POST 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/install'
-
Start using OnCall, log in to Grafana with credentials as defined above:
admin
/admin
-
Enjoy! Check our OSS docs if you want to set up Slack, Telegram, Twilio or SMS/calls through Grafana Cloud.
Troubleshooting
Here are some API calls that can be made to help if you are having difficulty connecting Grafana and OnCall. (Modify parameters to match your credentials and environment)
# Use this to get more information about the connection between Grafana and OnCall
curl -X GET 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/status'
# If you added a user or changed permissions and don't see it show up in OnCall you can manually trigger sync.
# Note: This is called automatically when the app is loaded (page load/refresh) but there is a 5 min timeout so
# that it does not generate unnecessary activity.
curl -X POST 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/sync'
Update version
To update your Grafana OnCall hobby environment:
# Update Docker image
docker-compose pull engine
# Re-deploy
docker-compose up -d
After updating the engine, you'll also need to click the "Update" button on the plugin version page. See Grafana docs for more info on updating Grafana plugins.
Join community
Have a question, comment or feedback? Don't be afraid to open an issue!
Stargazers over time
Further Reading
- Automated migration from other on-call tools - Migrator
- Documentation - Grafana OnCall
- Overview Webinar - YouTube
- How To Add Integration - How to Add Integration
- Blog Post - Announcing Grafana OnCall, the easiest way to do on-call management
- Presentation - Deep dive into the Grafana, Prometheus, and Alertmanager stack for alerting and on-call management
Top Related Projects
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