{"id":23074946,"url":"https://github.com/invisionapp/kit-overwatch","last_synced_at":"2026-03-20T00:29:33.198Z","repository":{"id":87708267,"uuid":"73086525","full_name":"InVisionApp/kit-overwatch","owner":"InVisionApp","description":"Monitors events within a Kubernetes cluster and sends notifications when something goes wrong","archived":true,"fork":false,"pushed_at":"2023-05-12T00:51:29.000Z","size":3183,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":105,"default_branch":"master","last_synced_at":"2025-02-19T22:22:52.590Z","etag":null,"topics":["codeship","kit","opensource"],"latest_commit_sha":null,"homepage":"https://invisionapp.github.io/kit/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InVisionApp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-11-07T14:30:50.000Z","updated_at":"2024-09-11T17:28:19.000Z","dependencies_parsed_at":"2023-07-27T02:32:48.844Z","dependency_job_id":null,"html_url":"https://github.com/InVisionApp/kit-overwatch","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/InVisionApp/kit-overwatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InVisionApp%2Fkit-overwatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InVisionApp%2Fkit-overwatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InVisionApp%2Fkit-overwatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InVisionApp%2Fkit-overwatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InVisionApp","download_url":"https://codeload.github.com/InVisionApp/kit-overwatch/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InVisionApp%2Fkit-overwatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270603740,"owners_count":24614556,"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","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["codeship","kit","opensource"],"created_at":"2024-12-16T08:32:03.044Z","updated_at":"2026-03-20T00:29:33.132Z","avatar_url":"https://github.com/InVisionApp.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://invisionapp.github.io/kit/\"\u003e\n    \u003cimg src=\"https://github.com/InVisionApp/kit/raw/master/media/kit-logo-horz-sm.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# kit-overwatch\n\n[![Docker Repository on Quay](https://quay.io/repository/invision/kit-overwatch/status \"Docker Repository on Quay\")](https://quay.io/repository/invision/kit-overwatch)\n[ ![Codeship Status for InVisionApp/kit-overwatch](https://codeship.com/projects/1232c860-4089-0134-3306-1a3f66148744/status?branch=develop)](https://codeship.com/projects/167729)\n\nMonitors events within a Kubernetes cluster and sends notifications to Slack. You can adjust the events you want to be notified about and it can automatically handle @mentions based on Kubernetes labels.\n\nTo avoid flooding channels, duplicate events will be throttled back automatically by 1 minute * the number of notifications already sent.\n\n## API Usage\n\n### API Endpoints\n\n#### `GET /version`\n+ **Description**: Display version of `auth-api` service\n+ **On success**:\n  * Status: `200`\n  * Response: text string\n+ **On failure**:\n  * No failure case\n\n----------------------------------------------------\n\n#### `GET /healthcheck`\n+ **Description**: Check if service is healthy/up\n+ **On success**:\n  * Status: `200`\n  * Response: text string\n+ **On failure**:\n  * Status: `400`\n  * Response: JSON error blob\n\n----------------------------------------------------\n\n## Expected environment variables\n\nThe following environment variables are used by this service.\n\n| Variable | Description | Required | Default |\n| :--- | :--- | :--- | :--- |\n| `KIT_OVERWATCH_DEBUG` | Enables debug logging | yes | `false` |\n| `KIT_OVERWATCH_LISTEN_ADDRESS` | The port the service listens on | yes | `:80` |\n| `KIT_OVERWATCH_STATSD_ADDRESS` | The statsd address | yes | `localhost:8125` |\n| `KIT_OVERWATCH_STATSD_PREFIX` | The statsd prefix | yes | `statsd.kit-overwatch.dev` |\n| `KIT_OVERWATCH_NAMESPACE` | The namespace to watch events on | yes | `default` |\n| `KIT_OVERWATCH_IN_CLUSTER` | Enable when deployed in a Kubernetes cluster to automatically watch events in that cluster | yes | `true` |\n| `KIT_OVERWATCH_CLUSTER_NAME` | This name is displayed in all the notifications generated | false | `Kubernetes` |\n| `KIT_OVERWATCH_CLUSTER_HOST` | The address to the cluster. Only needed when using KIT_OVERWATCH_IN_CLUSTER=false | false | *empty* |\n| `KIT_OVERWATCH_NOTIFICATION_LEVEL` | Determines what level of events you want to be notified about. Goes from `DEBUG` -\u003e `INFO` -\u003e `WARN` -\u003e `ERROR` | false | `INFO` |\n| `KIT_OVERWATCH_MENTION_LABEL` | Will use this label found on a resource as a mention in the notification | false | *empty* |\n| `KIT_OVERWATCH_MENTION_DEFAULT` | If no KIT_OVERWATCH_MENTION_LABEL is found, it will default to using this as a mention in the notification | false | `here` |\n| `KIT_OVERWATCH_NOTIFY_LOG` | Enable to send a notification to stdout | true | `true` |\n| `KIT_OVERWATCH_NOTIFY_SLACK` | Enable to send a notification to slack | true | `false` |\n| `KIT_OVERWATCH_NOTIFY_SLACK_TOKEN` | The auth token for Slack. Required if KIT_OVERWATCH_NOTIFY_SLACK=true | false | *empty* |\n| `KIT_OVERWATCH_NOTIFY_SLACK_AS_USER` | Enable to send a notification to slack as the given user associated with the token | true | `false` |\n| `KIT_OVERWATCH_NOTIFY_SLACK_CHANNEL` | The Slack channel to post notifications to. Required if KIT_OVERWATCH_NOTIFY_SLACK=true | false | *empty* |\n| `KIT_OVERWATCH_NOTIFY_DATADOG` | Enable to send an event to DataDog | true | `false` |\n| `KIT_OVERWATCH_NOTIFY_DATADOG_APIKEY` | The apikey for DataDog. Required if KIT_OVERWATCH_NOTIFY_DATADOG=true | false | *empty* |\n| `KIT_OVERWATCH_NOTIFY_DATADOG_APPKEY` | The appkey for DataDog. Required if KIT_OVERWATCH_NOTIFY_DATADOG=true | false | *empty* |\n\n\n## How to run locally\n\nThis requires that you have `Go` installed locally.\n\n1. Run `make run`\n1. Test by running `curl -I -X GET localhost:8080/healthcheck` and you should get a 200 response\n\nIf you would like to change the ENV var settings from their defaults, you can copy `.env.dist` to `.env` and modify them there. Then just re-run `make run`.\n\n## How to test Codeship build\n\nInstall Codeship's `jet` tool then run:\n\n```\n$ jet steps\n```\n\n## Testing\n\n1. Install [minikube](https://github.com/kubernetes/minikube)\n1. Install [kubectl](https://github.com/kubernetes/minikube)\n1. Run `minikube start`\n1. Start a proxy `kubectl proxy`\n1. Run `make run`\n1. Now perform actions on your local kubernetes cluster that will generate events\n\n## Limitations\n\n- You cannot run more than one instance of this service within a Cluster or you'll end up with duplication notifications\n- To avoid duplicate notifications being sent, the service will only send notifications for past events that have happened 1 minute before the service was started\n\n## TODO\n\n- [x] Use Minikube for local functional testing\n- [x] Allow setting name of cluster to be included in notifications\n- [x] Get events from cluster\n- [x] Log events to stdout\n- [x] Add Slack notification of events\n- [x] Add DataDog notification of events\n- [ ] Add Unit Tests for Watcher\n- [ ] Add Unit Tests for Notifiers\n- [ ] Add Unit Tests for Slack Notifier\n- [ ] Add Unit Tests for Log Notifier\n- [ ] Use datastore so we can make this service stateless\n- [ ] Split watcher and notifiers to allow multiple instances using task queue\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvisionapp%2Fkit-overwatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvisionapp%2Fkit-overwatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvisionapp%2Fkit-overwatch/lists"}