{"id":13461666,"url":"https://github.com/grafana/oncall","last_synced_at":"2026-01-28T16:13:06.255Z","repository":{"id":37036428,"uuid":"498761556","full_name":"grafana/oncall","owner":"grafana","description":"Developer-friendly incident response with brilliant Slack integration","archived":false,"fork":false,"pushed_at":"2025-05-12T19:29:10.000Z","size":141909,"stargazers_count":3730,"open_issues_count":505,"forks_count":322,"subscribers_count":153,"default_branch":"dev","last_synced_at":"2025-05-12T20:39:25.923Z","etag":null,"topics":["alert","alerting","grafana","oncall","oncall-schedule","slack","telegram"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/grafana.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-06-01T14:05:22.000Z","updated_at":"2025-05-12T17:09:15.000Z","dependencies_parsed_at":"2023-10-11T17:35:21.544Z","dependency_job_id":"ca044a6a-6b8c-4201-9566-e2d448978644","html_url":"https://github.com/grafana/oncall","commit_stats":{"total_commits":3599,"total_committers":140,"mean_commits":"25.707142857142856","dds":0.8763545429285913,"last_synced_commit":"51ff0e0b9ea54fe2b6deecdca3279bbb4af632c8"},"previous_names":[],"tags_count":627,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Foncall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Foncall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Foncall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/grafana%2Foncall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/grafana","download_url":"https://codeload.github.com/grafana/oncall/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254010823,"owners_count":21999003,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alert","alerting","grafana","oncall","oncall-schedule","slack","telegram"],"created_at":"2024-07-31T11:00:51.537Z","updated_at":"2026-01-28T16:13:06.224Z","avatar_url":"https://github.com/grafana.png","language":"Python","readme":"# 🚨 Update: Grafana OnCall OSS 🚨\n\nAs of 2025-03-11, Grafana OnCall (OSS) has entered maintenance mode and will be archived on 2026-03-24.\nWhile you may continue to use OnCall OSS in its current state, no further updates or new features will be introduced.\nHowever, we will still provide fixes for critical bugs and for valid CVEs with a CVSS score of 7.0 or higher.\n\nFor users seeking a fully supported and actively maintained alternative,\n**Grafana Cloud IRM** offers a modern approach to incident response and on-call management.\n\n- [Grafana OnCall OSS updates blog](https://grafana.com/blog/2025/03/11/grafana-oncall-maintenance-mode/)\n- [Grafana Cloud IRM announcement blog post](https://grafana.com/blog/2025/03/11/oncall-management-incident-response-grafana-cloud-irm/)\n- [Migration Guide](https://grafana.com/docs/oncall/latest/set-up/migration-from-other-tools/)\n\n## Grafana OnCall\n\n\u003cimg width=\"400px\" src=\"docs/img/logo.png\"\u003e\n\n[![Latest Release](https://img.shields.io/github/v/release/grafana/oncall?display_name=tag\u0026sort=semver)](https://github.com/grafana/oncall/releases)\n[![License](https://img.shields.io/github/license/grafana/oncall)](https://github.com/grafana/oncall/blob/dev/LICENSE)\n[![Docker Pulls](https://img.shields.io/docker/pulls/grafana/oncall)](https://hub.docker.com/r/grafana/oncall/tags)\n[![Slack](https://img.shields.io/badge/join%20slack-%23grafana-%2Doncall-brightgreen.svg)](https://slack.grafana.com/)\n[![Build Status](https://github.com/grafana/oncall/actions/workflows/on-commits-to-dev.yml/badge.svg)](https://github.com/grafana/oncall/actions/workflows/on-commits-to-dev.yml)\n\nDeveloper-friendly incident response with brilliant Slack integration.\n\n\u003c!-- markdownlint-disable MD013 MD033 --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n    \u003ctd width=\"75%\"\u003e\u003cimg src=\"docs/img/screenshot.png\"\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003cdiv align=\"center\"\u003e\u003ca href=\"https://grafana.com/docs/oncall/latest/mobile-app/\"\u003eAndroid \u0026 iOS\u003c/a\u003e:\u003cbr\u003e\u003cimg src=\"docs/img/screenshot_mobile.png\"\u003e\u003c/div\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c!-- markdownlint-enable MD013 MD033 --\u003e\n\n- Collect and analyze alerts from multiple monitoring systems\n- On-call rotations based on schedules\n- Automatic escalations\n- Phone calls, SMS, Slack, Telegram notifications\n\n## Getting Started\n\n\u003e [!IMPORTANT]  \n\u003e These instructions are for using Grafana 11 or newer. You must enable the feature toggle for\n\u003e `externalServiceAccounts`. This is already done for the docker files and helm charts.  If you are running Grafana\n\u003e separately see the Grafana documentation on how to enable this.\n\nWe prepared multiple environments:\n\n- [production](https://grafana.com/docs/oncall/latest/open-source/#production-environment)\n- [developer](./dev/README.md)\n- hobby (described in the following steps)\n\n1. Download [`docker-compose.yml`](docker-compose.yml):\n\n   ```bash\n   curl -fsSL https://raw.githubusercontent.com/grafana/oncall/dev/docker-compose.yml -o docker-compose.yml\n   ```\n\n2. Set variables:\n\n   ```bash\n   echo \"DOMAIN=http://localhost:8080\n   # Remove 'with_grafana' below if you want to use existing grafana\n   # Add 'with_prometheus' below to optionally enable a local prometheus for oncall metrics\n   # e.g. COMPOSE_PROFILES=with_grafana,with_prometheus\n   COMPOSE_PROFILES=with_grafana\n   # to setup an auth token for prometheus exporter metrics:\n   # PROMETHEUS_EXPORTER_SECRET=my_random_prometheus_secret\n   # also, make sure to enable the /metrics endpoint:\n   # FEATURE_PROMETHEUS_EXPORTER_ENABLED=True\n   SECRET_KEY=my_random_secret_must_be_more_than_32_characters_long\" \u003e .env\n   ```\n\n3. (Optional) If you want to enable/setup the prometheus metrics exporter\n(besides the changes above), create a `prometheus.yml` file (replacing\n`my_random_prometheus_secret` accordingly), next to your `docker-compose.yml`:\n\n   ```bash\n   echo \"global:\n     scrape_interval:     15s\n     evaluation_interval: 15s\n\n   scrape_configs:\n     - job_name: prometheus\n       metrics_path: /metrics/\n       authorization:\n         credentials: my_random_prometheus_secret\n       static_configs:\n         - targets: [\\\"host.docker.internal:8080\\\"]\" \u003e prometheus.yml\n   ```\n\n   NOTE: you will need to setup a Prometheus datasource using `http://prometheus:9090`\n   as the URL in the Grafana UI.\n\n4. Launch services:\n\n   ```bash\n   docker-compose pull \u0026\u0026 docker-compose up -d\n   ```\n\n5. Provision the plugin (If you run Grafana outside the included docker files install the plugin before these steps):\n\n   If you are using the included docker compose file use `admin`/`admin` credentials and `localhost:3000` to\n   perform this task.  If you have configured Grafana differently adjust your credentials and hostnames accordingly.\n\n   ```bash\n   # Note: onCallApiUrl 'engine' and grafanaUrl 'grafana' use the name from the docker compose file.  If you are \n   # running your grafana or oncall engine instance with another hostname adjust accordingly. \n   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\"}}'\n   curl -X POST 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/install'\n   ```\n\n6. Start using OnCall, log in to Grafana with credentials\n   as defined above: `admin`/`admin`\n\n7. Enjoy! Check our [OSS docs](https://grafana.com/docs/oncall/latest/open-source/) if you want to set up\n   Slack, Telegram, Twilio or SMS/calls through Grafana Cloud.\n\n## Troubleshooting\n\nHere are some API calls that can be made to help if you are having difficulty connecting Grafana and OnCall.\n(Modify parameters to match your credentials and environment)\n\n   ```bash\n   # Use this to get more information about the connection between Grafana and OnCall\n   curl -X GET 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/status'\n   ```\n\n   ```bash\n   # If you added a user or changed permissions and don't see it show up in OnCall you can manually trigger sync.\n   # Note: This is called automatically when the app is loaded (page load/refresh) but there is a 5 min timeout so \n   # that it does not generate unnecessary activity.\n   curl -X POST 'http://admin:admin@localhost:3000/api/plugins/grafana-oncall-app/resources/plugin/sync'\n   ```\n\n## Update version\n\nTo update your Grafana OnCall hobby environment:\n\n```shell\n# Update Docker image\ndocker-compose pull engine\n\n# Re-deploy\ndocker-compose up -d\n```\n\nAfter updating the engine, you'll also need to click the \"Update\" button on the [plugin version page](http://localhost:3000/plugins/grafana-oncall-app?page=version-history).\nSee [Grafana docs](https://grafana.com/docs/grafana/latest/administration/plugin-management/#update-a-plugin) for more\ninfo on updating Grafana plugins.\n\n## Join community\n\n[\u003cimg width=\"200px\" src=\"docs/img/slack.png\"\u003e](https://slack.grafana.com/)\n[\u003cimg width=\"200px\" src=\"docs/img/GH_discussions.png\"\u003e](https://community.grafana.com/)\n\nHave a question, comment or feedback? Don't be afraid to [open an issue](https://github.com/grafana/oncall/issues/new/choose)!\n\n## Stargazers over time\n\n[![Stargazers over time](https://starchart.cc/grafana/oncall.svg)](https://starchart.cc/grafana/oncall)\n\n## Further Reading\n\n- _Automated migration from other on-call tools_ - [Migrator](https://github.com/grafana/oncall/tree/dev/tools/migrators)\n- _Documentation_ - [Grafana OnCall](https://grafana.com/docs/oncall/latest/)\n- _Overview Webinar_ - [YouTube](https://www.youtube.com/watch?v=7uSe1pulgs8)\n- _How To Add Integration_ - [How to Add Integration](https://github.com/grafana/oncall/tree/dev/engine/config_integrations/README.md)\n- _Blog Post_ - [Announcing Grafana OnCall, the easiest way to do on-call management](https://grafana.com/blog/2021/11/09/announcing-grafana-oncall/)\n- _Presentation_ - [Deep dive into the Grafana, Prometheus, and Alertmanager stack for alerting and on-call management](https://grafana.com/go/observabilitycon/2021/alerting/?pg=blog)\n","funding_links":[],"categories":["Python","telegram","\u003ca id=\"tag-internet\" href=\"#tag-internet\"\u003eInternet\u003c/a\u003e","Observability"],"sub_categories":["Alerting \u0026 Incident Response"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrafana%2Foncall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrafana%2Foncall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrafana%2Foncall/lists"}