Triggers

Triggers are used to trigger actions based on the status of your monitors. You can use triggers to send notifications, or call webhooks when a monitor goes down or up.

Trigger API

Name

REQUIRED

The name is used to define the name of the webhook. It is required and has to be a string.

Description

The description is used to define the description of the webhook. It is optional and has to be a string.

Kener supports the following triggers:

Webhook

Webhook triggers are used to send a HTTP POST request to a URL when a monitor goes down or up.

Trigger API

URL

REQUIRED

The URL is used to define the URL of the webhook. It is required and has to be a valid URL.

You can also pass secrets that are set in the environment variables.

Example: https://example.com/webhook?secret=$SECRET_X. Make sure $SECRET_X is set in the environment variables.

Method

Method will always be POST

Headers

The headers are used to define the headers that should be sent with the request. It is optional and has to be a valid JSON object. You can add secrets that are set in the environment variables.

Example: Authorization: Bearer $SECRET_Y. Make sure $SECRET_Y is set in the environment variables.

While sending webhook kener will add two more headers: Content-Type: application/json and User-Agent: Kener/3.0.0.

Body

Body of the webhook will be sent as below:

{
    "id": "mockoon-9",
    "alert_name": "Mockoon DOWN",
    "severity": "critical",
    "status": "TRIGGERED",
    "source": "Kener",
    "timestamp": "2024-11-27T04:55:00.369Z",
    "description": "šŸšØ **Service Alert**: Check the details below",
    "details": {
        "metric": "Mockoon",
        "current_value": 1,
        "threshold": 1
    },
    "actions": [
        {
            "text": "View Monitor",
            "url": "https://kener.ing/monitor-mockoon"
        }
    ]
}
Key Description Variable
id Unique ID of the alert ${id}
alert_name Name of the alert ${alert_name}
severity Severity of the alert. Can be critical, warn ${severity}
status Status of the alert. Can be TRIGGERED, RESOLVED ${status}
source Source of the alert. Can be Kener ${source}
timestamp Timestamp of the alert ${timestamp}
description Description of the alert. This you can customize. See below ${description}
details Details of the alert. -
details.metric Name of the monitor ${metric}
details.current_value Current value of the monitor ${current_value}
details.threshold Alert trigger threshold of the monitor ${threshold}
actions Actions to be taken. Link to view the monitor. ${action_text}, ${action_url}

Custom Body

You can customize the body of the webhook. You can use the variables mentioned above. If you are not using a json body then please make sure you are using the right content-type by setting custom headers. See examples below.

Discord

Discord triggers are used to send a message to a discord channel when a monitor goes down or up.

Trigger API

Discord URL

REQUIRED

The Discord URL is used to define the URL of the discord webhook. It is required and has to be a valid URL.

How to get the Discord URL?

  1. Go to your discord server
  2. Right-click on the channel you want to send the messages
  3. Click on Edit Channel
  4. Go to Integrations
  5. Click on Create Webhook
  6. Copy the URL

Discord Message

The discord message when alert is TRIGGERED will look like this

Discord

The discord message when alert is RESOLVED will look like this

Discord

Slack

Slack triggers are used to send a message to a slack channel when a monitor goes down or up.

Trigger API

Slack URL

REQUIRED

The Slack URL is used to define the URL of the slack webhook. It is required and has to be a valid URL.

How to get the Slack URL?

  1. Go to your slack workspace
  2. Click on Apps on the left sidebar
  3. Search for Incoming Webhooks
  4. Click on Add to Slack
  5. Select the channel you want to send the messages
  6. Click on Add Incoming Webhook Integration
  7. Copy the URL

Slack Message

The slack message when alert is TRIGGERED will look like this

Slack

The slack message when alert is RESOLVED will look like this

Slack

Email

Email triggers are used to send an email when a monitor goes down or up. Kener supports sending emails via resend or over SMTP.

Trigger API

Resend

To send emails using Resend you just need to set RESEND_API_KEY in the environment variables.

SMTP

To send emails using SMTP, please enter

  • Host: SMTP server host
  • Port: SMTP server port
  • User: SMTP server username
  • Password: SMTP server password

Since the password will be stored as plain text we encourage to use environment variables for the password. Let us say if you have an environment variable SMTP_PASSWORD then you can use it as $SMTP_PASSWORD.

If your SMTP provider does require username and password, you can set SMTP_USER and SMTP_PASS to -.

To

REQUIRED

The email addresses to which the email should be sent. It is required and has to be a valid email addresses. You can pass multiple email addresses separated by a comma.

Sender

The email address from which the email should be sent.

It should be in the format Name <email@address.com>

If you have not connected your domain with resend, then use Some Name <onboarding@resend.dev>

Subject

Subject of the email when TRIGGERED

[TRIGGERED] Mockoon DOWN at 2024-12-27T04:42:01.430Z

Subject of the email when RESOLVED

[RESOLVED] Mockoon DOWN at 2024-12-27T04:42:01.430Z

Body

The emaik message when alert is TRIGGERED will look like this

Slack

The emaik message when alert is RESOLVED will look like this

Slack


Edit Triggers

Click on the āš™ļø to edit the trigger.

Deactivate Trigger

You can deactivate the trigger by switching the toggle to off. You cannot send message to a deactivated trigger. Any monitor with this trigger will not send any notifications.


Examples

Telegram

You can use the webhook trigger to send a message to a telegram channel. Enable Use a custom webhook body.

Set the URL to https://api.telegram.org/bot[BOT_TOKEN]/sendMessage. Replace [BOT_TOKEN] with your bot token.

{
    "chat_id": "[CHAT_ID]", // Replace [CHAT_ID] with your chat id
    "text": "<b>${alert_name}</b>\n\n<b>Severity:</b> <code>${severity}</code>\n<b>Status:</b> ${status}\n<b>Source:</b> Kener\n<b>Time:</b> ${timestamp}\n\nšŸ“Œ <b>Details:</b>\n- <b>Metric:</b>${metric}\n- <b>Current Value:</b> <code>${current_value}</code>\n- <b>Threshold:</b> <code>${threshold}</code>\n\nšŸ” <a href=\"${action_url}\">${action_text}</a>",
    "parse_mode": "HTML"
}

If you want to send a message to a group, then replace [CHAT_ID] with the group id.

You can also use environment variables to store the bot token and chat id. In that case the URL will be https://api.telegram.org/bot$BOT_TOKEN/sendMessage. In the body you can use "chat_id": "$CHAT_ID". Make sure you have set the BOT_TOKEN and CHAT_ID in the environment variables.