Convert Figma logo to code with AI

grafana logooncall

Developer-friendly incident response with brilliant Slack integration

3,474
285
3,474
469

Top Related Projects

5,489

Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts

2,210

Open source on-call scheduling, automated escalations, and notifications so you never miss a critical alert

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:

  1. Clone the repository:

    git clone https://github.com/grafana/oncall.git
    
  2. Navigate to the project directory:

    cd oncall
    
  3. Run the setup script:

    make dev
    
  4. Access the OnCall UI at http://localhost:8080

  5. Configure your alert sources and team schedules in the OnCall UI

  6. 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

5,489

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.

2,210

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Grafana OnCall

Latest Release License Docker Pulls Slack Build Status

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 for externalServiceAccounts. 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:

  1. Download docker-compose.yml:

    curl -fsSL https://raw.githubusercontent.com/grafana/oncall/dev/docker-compose.yml -o docker-compose.yml
    
  2. 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
    
  3. (Optional) If you want to enable/setup the prometheus metrics exporter (besides the changes above), create a prometheus.yml file (replacing my_random_prometheus_secret accordingly), next to your docker-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.

  4. Launch services:

    docker-compose pull && docker-compose up -d
    
  5. 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 and localhost: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'
    
  6. Start using OnCall, log in to Grafana with credentials as defined above: admin/admin

  7. 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

Stargazers over time

Further Reading