Metadata-Version: 2.1
Name: keephq
Version: 0.1.0
Summary: Alerting. for developers, by developers.
Author: Paladin Data inc.
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: astunparse (>=1.6.3,<2.0.0)
Requires-Dist: boto3 (>=1.26.72,<2.0.0)
Requires-Dist: chevron (>=0.14.0,<0.15.0)
Requires-Dist: click (>=8.1.3,<9.0.0)
Requires-Dist: datefinder (>=0.7.3,<0.8.0)
Requires-Dist: elasticsearch (>=8.6.1,<9.0.0)
Requires-Dist: logmine (>=0.4.1,<0.5.0)
Requires-Dist: mysql-connector-python (>=8.0.32,<9.0.0)
Requires-Dist: paramiko (>=3.0.0,<4.0.0)
Requires-Dist: pydantic (>=1.10.4,<2.0.0)
Requires-Dist: pygithub (>=1.57,<2.0)
Requires-Dist: python-dotenv (>=0.21.1,<0.22.0)
Requires-Dist: python-json-logger (>=2.0.6,<3.0.0)
Requires-Dist: pyyaml (>=6.0,<7.0)
Requires-Dist: requests (>=2.28.2,<3.0.0)
Requires-Dist: sentry-sdk (>=1.15.0,<2.0.0)
Requires-Dist: snowflake-connector-python (>=3.0.0,<4.0.0)
Requires-Dist: validators (>=0.20.0,<0.21.0)
Requires-Dist: zenduty-api (>=0.2,<0.3)
Description-Content-Type: text/markdown

```diff
+ Missing a specific use case? no worries, hit us up and we will implement it for you! just open an issue.
```
<br />
<div align="center">
    <img src="/docs/static/img/keep.png?raw=true">
</div>

<h1 align="center">Alerting. By developers, for developers.</h1>
<br />
<div align="center">
    <a href="https://github.com/keephq/keep/blob/main/LICENSE">
        <img src="https://img.shields.io/github/license/keephq/keep" />
    </a>
    <a href="https://keephq.dev/slack">
        <img src="https://img.shields.io/badge/Chat-on%20Slack-blueviolet" alt="Slack community channel" />
    </a>
</div>

<h4 align="center">
Simple alerting tool, builtin providers (e.g. sentry/datadog or slack/pagerduty), 100% open sourced, free forever.
</h4>
<div align="center">

- Simple and intuitive (GitHub actions-like) syntax.
- Declarative alerting that can be easily managed and versioned in your version control and service repository.
- Alerts from multiple data sources for added context and insights.
- Freedom from vendor lock-in, making it easier to switch to a different observability tool if and when needed.

</div>

<p align="center">
    <br />
    <a href="https://keephq.wiki/" rel="dofollow"><strong>Get started »</strong></a>
    <br />
    <br />
    <a href="https://github.com/orgs/keephq/projects/1">Roadmap</a>
    ·
    <a href="https://github.com/keephq/keep/tree/main/examples">Examples</a>
    ·
    <a href="https://github.com/keephq/keep/tree/main/keep/providers">Providers</a>
    ·
    <a href="https://keephq.wiki/">Docs</a>
    ·
    <a href="https://keephq.dev">Website</a>
    ·
    <a href="https://keephq.wiki/providers/new-provider">Add Providers</a>
    ·
    <a href="https://github.com/keephq/keep/issues/new?assignees=&labels=bug&template=bug_report.md&title=">Report Bug</a>
    ·
    <a href="https://keephq.dev/slack">Slack Community</a>
</p>

## 🗼 A glance of Keep

Keep is a simple CLI tool that contains everything you need to start creating Alerts.

- 10s of providers ready to use with your own data
- Simple CLI tool to configure, trigger and test your alerts
- Easily deployable via docker, vercel, github actions, etc.
- Alerts are managed by simple yaml files that are human-readable

Brought to you by developers, EASY to use and managable by code.

## 🚨 Providers

[Providers](https://keephq.wiki/providers/what-is-a-provider) are Keep's way of interacting with 3rd party products; Keep uses them either to query data or to send notifications.

We tried our best to cover all common providers, [missing any?](https://github.com/keephq/keep/issues/new?assignees=&labels=feature,provider&template=feature_request.md&title=Missing%20PROVIDER_NAME), providers include:

- **Cloud**: AWS, GCP, Azure, etc.
- **Monitoring**: Sentry, New Relic, Datadog, etc.
- **Incident Management**: PagerDuty, OpsGenie, etc.
- **Communication**: Email, Slack, Console, etc.
- [and more...](https://github.com/keephq/keep/tree/main/keep/providers)

## 🚀 Quickstart

### Run locally

Try our first mock alert and get it up and running in <5 minutes - Ready? Let's Go! ⏰

<h5>First, clone Keep repository:</h5>

```shell
git clone https://github.com/keephq/keep.git && cd keep
```

<h5>Install Keep CLI</h5>

```shell
pip install .
```

or

```shell
poetry shell
poetry install
```

<h5>From now on, Keep should be installed locally and accessible from your CLI, test it by executing:</h5>

```
keep version
```

Get a Slack incoming webhook using [this tutorial](https://api.slack.com/messaging/webhooks) and use Keep to configure it:

```
keep config provider --provider-type slack --provider-id slack-demo
```

Paste the Slack Incoming Webhook URL (e.g. <https://hooks.slack.com/services/...>) and you're good to go 👌

<h5>Let's now execute our example "Paper DB has insufficient disk space" alert</h5>

```bash
keep run --alerts-file examples/alerts/db_disk_space.yml
```

<div align="center">
    Voilà 🥳
    <br />
    <img src="/docs/static/img/alert-example.png">
    <br />
    You should have received your first "Dunder Mifflin Paper Company" alert in Slack by now.
    <br />
</div>


### Docker

Configure the Slack provider (See "[Run locally](https://github.com/keephq/keep#from-now-on-keep-should-be-installed-locally-and-accessible-from-your-cli-test-it-by-executing)" on how to obtain the webhook URL)

```bash
docker run -v ${PWD}:/app -it keephq/cli config provider --provider-type slack --provider-id slack-demo
```

You should now have a providers.yaml file created locally

Run Keep and execute our example "Paper DB has insufficient disk space" alert

```bash
docker run -v ${PWD}:/app -it keephq/cli -j run --alert-url https://raw.githubusercontent.com/keephq/keep/main/examples/alerts/db_disk_space.yml
```

### Render
Click the Deploy to Render button to deploy Keep as a background worker running in [Render](https://www.render.com)

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy)

To run Keep and execute our example "Paper DB has insufficient disk space" alert, you will need to configure you Slack provider.
<br />
When clicking the Deploy to Render button, you will be asked to provide the `KEEP_PROVIDER_SLACK_DEMO` environment variable, this is the expected format:

```json
{"authentication": {"webhook_url": "https://hooks.slack.com/services/..."}}
```

\* Refer to [Run locally](https://github.com/keephq/keep#from-now-on-keep-should-be-installed-locally-and-accessible-from-your-cli-test-it-by-executing) on how to obtain the webhook URL

##### Wanna have your alerts up and running in production? Go through our more detailed [Deployment Guide](https://keephq.wiki/deployment)

## 🔍 Learn more

- Share feedback/ask questions via our [Slack](https://keephq.dev/slack)
- Explore [the full list of supported providers](https://github.com/keephq/keep/tree/main/keep/providers)
- Explore the [documentation](https://keephq.wiki)
- [Adding a new provider](https://keephq.wiki/providers/new-provider)
- Check out our [website](https://www.keephq.dev)

## 🫵 Keepers

Thank you for contributing and continuously making <b>Keep</b> better, <b>you're awesome</b> 🫶

<a href="https://github.com/keephq/keep/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=keephq/keep" />
</a>

