Latest version: 4.3.x
Webhooks (Kafka)
Setup Webhooks to receive notifications and alerts and store them in Kafka topic.
This page describes how to setup a webhook channel to send alert events into a Kafka topic via the Lenses API.
Set up
1. Create a topic (alerts-topic
in examples) for alert events. We will setup the webhook channel to call back into the Lenses API to insert alert events into this topic. Remember to set the desired types for the topic’s key and value within Lenses, so that it knows the format to insert the data.```
2. Create a Group with at least Insert Data permission (Data Namespaces permissions) for that topic and kafka connection.
3. Create a Service account, assigning it to the previously created group, and save the Service Account Token for the next step.
Add connection
1. Visit Admin → Connections and click New connection
2. Select Webhook
3. Provide a name and configuration
Host should be Lenses host, same goes for Port. Enable Use HTTPS if Lenses uses SSL.
In Credentials paste Service Account Token.
Add channel
Next add one or multiple target Webhook channels.
1. Visit Admin → Channels and click Webhook
2. Setup the configuration options
.. note::
From Lenses 4.3 /api/jdbc/insert/prepared/$topicName
is deprecated and will be removed in 5.0.
Please use api/v1/kafka/topics/$topicName/data
HTTP method - POST
.
Request path - /api/v1/kafka/topics/alerts-topic/data
(assuming alerts-topic
is the name of the topic created in Set up Point 1 - if not replace with correct name).
HTTP Headers - X-Kafka-Lenses-Token: {{CREDS[0]}}
({{CREDS[0]}}
will be parsed to Service Account Token from connection’s Credentials).
Body payload
Body payload has to have format accepted by Lenses API:
[
{
"key": ... ,
"value": ""
}
]
The key
and value
fields represent topic’s key and value. The format of those fields corresponds to the type that was defined upon topic creation (STRING, JSON, AVRO, etc.).
Body payload example For topic with STRING key and JSON value:
[
{
"key": "{{ID}}",
"value": {
"level": "{{LEVEL}}",
"category": "{{CATEGORY}}",
"instance": "{{INSTANCE}}",
"summary": "{{SUMMARY}}",
"timestamp": "{{TIMESTAMP}}",
"id": "{{ID}}"
}
}
]
Additional info
About webhooks in general - contains description of Template variables.