# Integrations

Alerts are sent to **channels**.

{% hint style="warning" %}
See [provisioning](https://github.com/lensesio-dev/docs/blob/release/6.0/deployment/installation/automation/README.md) for integration into your CI/CD pipelines.
{% endhint %}

## AWS Cloud Watch

To send alerts to AWS Cloud Watch, you first need an AWS connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection->AWS.** Enter your **AWS Credentials**.

{% hint style="info" %}
Rather than enter your AWS credentials you can use the [AWS credentials chain](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-chain.html#credentials-default).
{% endhint %}

Next, go to **Environments->\[Your Environment]->Admin->Alerts->Channels->New Channel->AWS Cloud Watch**.

Select an AWS connection.

## Datadog

To send alerts to Datadog, you first need a Datadog connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection->DataDog**. Enter your **API, Application Key** and **Site**.

Next, go to **Environments->\[Your Environment]->Admin->Alerts->Channels->New Channel->Data Dog**.

Select a DataDog connection.

## Pager Duty

To send alerts to Pager Duty, you first need a Pager Duty connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection->PagerDuty**. Enter your **`S`ervice Integration Key**.

Next, go to **Environments->\[Your Environment]->Admin->Alerts->Channels->New Channel->Pager Duty**.

Select the pager duty connection.

## Prometheus Alert Manager

To send alerts to Pager Duty, you first need a Pager Duty connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection->Prometheus**.

1. Select your Prometheus connection
2. Set the **Source**
3. Set the **GeneratorURL** for your Alert Manager instance

## Slack

To send alerts to Slack, you first need a Slack connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection->Slack**. Enter your Slack webhook URL.

Next, go to **Environments->\[Your Environment]->Admin->Alerts->Channels->New Channel->Slack**.

Enter the Slack channel you want to send alerts to.

## Webhook

Webhooks allow you to send alerts to any service implementing them, they are very flexible.

First, you need a Webhook connection. Go to **Environments->\[Your Environment]->Admin->Connections->New Connection**

Enter the URL, port and credentials.

Create a Channel to use the connection. Go to **Environments->\[Your Environment]->Admin->Alerts->Channels->New Channel**.

1. Choose a name for your Channel instance.
2. Select your connection.
3. Set the HTTP method to use.
4. Set the Request pathA URI0 encoded request path, which may include a query string. Supports alert-variable interpolation.
5. Set the HTTP Headers
6. Set the Body payload

### Template variables <a href="#template-variables" id="template-variables"></a>

In `Request path`, `HTTP Headers` and `Body payload` there is a possibility of using template variables, which will be translated to alert specific fields. To use template variables, you have to use this format: `{{VARIABLE}}`, i.e. `{{LEVEL}}`.

Supported template variables:

* LEVEL - alert level (`INFO`, `LOW`, `MEDIUM`, `HIGH`, `CRITICAL`).
* CATEGORY - alert category (`Infrastructure`, `Consumers`, `Kafka Connect`, `Topics`, `Producers`).
* INSTANCE - (broker url / topic name etc.).
* SUMMARY - alert summary - same content in the Alert Events tab.
* TIMESTAMP
* ID - alert global id (i.e. `1000` for BrokerStatus alert).
* CREDS - `CREDS[0]` etc. - variables specified in connections `Credentials` as a list of values separated by a comma.

## Webhook Email

To configure real-time email alerts you can leverage Webhooks, for example with the following service:

* Twilio and SendGrid
* Zapier

### SendGrid Example

1. Create a webhook connection, for SendGrid with **api.sendgrid.com** as the **host** and enable **HTTPS**
2. Configure a channel to use the connect you just created
3. Set the method to Post
4. Set the request path to the webhook URL from your Zapier account
5. Set the Headers to

| HTTP Headers                                   |
| ---------------------------------------------- |
| Authorization: Bearer \[your-Sendgrid-API-Key] |
| Content-Type: application/json                 |

6. Set the payload to be

```json
{
  "personalizations":[{
    "to":[{
      "email":"devops@mycompany.com",
      "name":"DevOps & SRE team | MyCompany"
    }],
    "subject":"PRODUCTION | Streaming Data Platform Alert"
  }],
  "content":[{
    "type":"text/html",
    "value":"<html><body><p>Priority Level:{{LEVEL}}</br></br>Category: {{CATEGORY}}</br><br>Description: {{SUMMARY}}</br><small>Alert ID: {{ID}}</small></p></body></html>"
  }],
  "from":{
    "email":"sender-email-address",
    "name":"sender name ie. PRODUCTION | Streaming Data"
  },
  "reply_to":{
    "email":"reply-to-email-address",
    "name":"reply to name"
  }
}
```

Change the above payload according to your requirements, and remember that the **\[sender-email-address]** needs to be the same email address you registered during the **Sender Authentication** Sendgrid setup process.

### Zapier Example

1. Create a webhook connection, for SendGrid with **hooks.zapier.com** as the **host** and enable **HTTPS**
2. Configure a channel to use the connect you just created
3. Set the method to Post
4. Set the request path tp **/v3/mail/send**
5. Set the request path to the webhook URL from your Zapier account
6. Set the Headers to:

```
X-Api-Token: {{CREDS[0]}
```

7. Set the payload to be

```html
<html>
  <body>
    <h2>Streaming data platform - alert</h2>
    <p>Environment: <a href="http://enjoy.lenses.io"><b>PRODUCTION</b></a></p>
    <p>Priority Level: <b>{{LEVEL}}</b></p>
    <p>Category: <b>{{CATEGORY}}</b></p>
    <p>Summary: {{SUMMARY}}</p>
    <p>Alert ID: {{ID}}</p>
    <p><small>Lenses.io</small></p>
  </body>
</html>
```

## Webhook MS Teams

To create a webhook in your MS Teams workspace you can use [this guide](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook).

At the end of the process you get a url of the format:\
[https://YOUR\_URL.webhook.office.com](https://your_url.webhook.office.com/)`/webhook2/<secret-token-by-ms>/IncomingWebhook/<secret-token-by-ms>`

You’ll need the second part

`/webhook2/<secret-token-by-ms>/IncomingWebhook/<secret-token-by-ms>`

1. Create a new Webhook Connection, set the host to **outlook.office.com** and enable **HTTPS**
2. Configure an new channel, using this connection
3. Set the Method to **POST**
4. The Request Path to the second part of the URL you recieved from MS Teams

`/webhook2/<secret-token-by-ms>/IncomingWebhook/<secret-token-by-ms>`

5. In the body set

```json
{"text": "{{CATEGORY}} {{LEVEL}} {{ID}}"}
```

## Webhook SMS

See Zapier and follow blog post [SMS alerts with Zapier](https://lenses.io/blog/2020/06/sms-kafka-alerts/).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lenses.io/latest/devx/6.0/user-guide/monitoring-and-alerting/integrations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
