mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-06-15 17:06:48 +02:00
add alerta service
This commit is contained in:
parent
ab61acab63
commit
63ddfcaf88
32 changed files with 118 additions and 3 deletions
64
server/notification-providers/alerta.js
Normal file
64
server/notification-providers/alerta.js
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
const NotificationProvider = require("./notification-provider");
|
||||||
|
const axios = require("axios");
|
||||||
|
|
||||||
|
class Alerta extends NotificationProvider {
|
||||||
|
|
||||||
|
name = "alerta";
|
||||||
|
|
||||||
|
async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
|
||||||
|
let okMsg = "Sent Successfully.";
|
||||||
|
|
||||||
|
try {
|
||||||
|
let alertaUrl = `${notification.alertaapiEndpoint}/alert`;
|
||||||
|
let config = {
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"Authorization": "Key " + notification.alertaapiKey,
|
||||||
|
"Accept": "text/json"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let data = {
|
||||||
|
environment: notification.alertaenvironment,
|
||||||
|
severity: notification.alertaalertState, // critical
|
||||||
|
status: notification.alertarecoverState, // cleared
|
||||||
|
correlate: [],
|
||||||
|
service: [ "UptimeKuma" ],
|
||||||
|
group: "UptimeKuma-" + monitorJSON["type"], // Type de Sonde
|
||||||
|
value: "Timeout",
|
||||||
|
tags: [ "uptimekuma" ],
|
||||||
|
attributes: {},
|
||||||
|
origin: "uptimekuma",
|
||||||
|
type: "browserAlert",
|
||||||
|
resource: monitorJSON["name"]
|
||||||
|
};
|
||||||
|
|
||||||
|
if (heartbeatJSON == null) {
|
||||||
|
let testdata = Object.assign( {
|
||||||
|
event: "TestAlert",
|
||||||
|
text: "Testing Successful.",
|
||||||
|
}, data );
|
||||||
|
await axios.post(alertaUrl, testdata)
|
||||||
|
} else if (heartbeatJSON["status"] == DOWN) {
|
||||||
|
let downdata = Object.assign( {
|
||||||
|
event: monitorJSON["name"],
|
||||||
|
value: "DOWN",
|
||||||
|
text: "[🔴 Down] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
||||||
|
}, data );
|
||||||
|
await axios.post(alertaUrl, downdata)
|
||||||
|
} else if (heartbeatJSON["status"] == UP) {
|
||||||
|
let updata = Object.assign( {
|
||||||
|
event: monitorJSON["name"],
|
||||||
|
value: "UP",
|
||||||
|
text: "[✅ Up] " + heartbeatJSON["msg"] + "\nTime (UTC): " + heartbeatJSON["time"],
|
||||||
|
}, data );
|
||||||
|
await axios.post(alertaUrl, updata)
|
||||||
|
}
|
||||||
|
return okMsg;
|
||||||
|
} catch (error) {
|
||||||
|
this.throwGeneralAxiosError(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Alerta;
|
|
@ -27,6 +27,7 @@ const SerwerSMS = require("./notification-providers/serwersms");
|
||||||
const Stackfield = require("./notification-providers/stackfield");
|
const Stackfield = require("./notification-providers/stackfield");
|
||||||
const WeCom = require("./notification-providers/wecom");
|
const WeCom = require("./notification-providers/wecom");
|
||||||
const GoogleChat = require("./notification-providers/google-chat");
|
const GoogleChat = require("./notification-providers/google-chat");
|
||||||
|
const Alerta = require("./notification-providers/alerta");
|
||||||
|
|
||||||
class Notification {
|
class Notification {
|
||||||
|
|
||||||
|
@ -65,7 +66,8 @@ class Notification {
|
||||||
new SerwerSMS(),
|
new SerwerSMS(),
|
||||||
new Stackfield(),
|
new Stackfield(),
|
||||||
new WeCom(),
|
new WeCom(),
|
||||||
new GoogleChat()
|
new GoogleChat(),
|
||||||
|
new Alerta()
|
||||||
];
|
];
|
||||||
|
|
||||||
for (let item of list) {
|
for (let item of list) {
|
||||||
|
|
14
src/components/notifications/Alerta.vue
Normal file
14
src/components/notifications/Alerta.vue
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<template>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label for="alerta-api-endpoint" class="form-label">{{ $t("apiEndpoint") }}</label>
|
||||||
|
<input id="alerta-api-endpoint" v-model="$parent.notification.alertaapiEndpoint" type="text" class="form-control" required>
|
||||||
|
<label for="alerta-environment" class="form-label">{{ $t("environment") }}</label>
|
||||||
|
<input id="alerta-environment" v-model="$parent.notification.alertaenvironment" type="text" class="form-control" required>
|
||||||
|
<label for="alerta-api-key" class="form-label">{{ $t("apiKey") }}</label>
|
||||||
|
<input id="alerta-api-key" v-model="$parent.notification.alertaapiKey" type="text" class="form-control" required>
|
||||||
|
<label for="alerta-alert-state" class="form-label">{{ $t("alertState") }}</label>
|
||||||
|
<input id="alerta-alert-state" v-model="$parent.notification.alertaalertState" type="text" class="form-control" required>
|
||||||
|
<label for="alerta-recover-state" class="form-label">{{ $t("recoverState") }}</label>
|
||||||
|
<input id="alerta-recover-state" v-model="$parent.notification.alertarecoverState" type="text" class="form-control" required>
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -26,6 +26,7 @@ import SerwerSMS from "./SerwerSMS.vue";
|
||||||
import Stackfield from './Stackfield.vue';
|
import Stackfield from './Stackfield.vue';
|
||||||
import WeCom from "./WeCom.vue";
|
import WeCom from "./WeCom.vue";
|
||||||
import GoogleChat from "./GoogleChat.vue";
|
import GoogleChat from "./GoogleChat.vue";
|
||||||
|
import Alerta from "./Alerta.vue";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Manage all notification form.
|
* Manage all notification form.
|
||||||
|
@ -60,7 +61,8 @@ const NotificationFormList = {
|
||||||
"serwersms": SerwerSMS,
|
"serwersms": SerwerSMS,
|
||||||
"stackfield": Stackfield,
|
"stackfield": Stackfield,
|
||||||
"WeCom": WeCom,
|
"WeCom": WeCom,
|
||||||
"GoogleChat": GoogleChat
|
"GoogleChat": GoogleChat,
|
||||||
|
"alerta": Alerta
|
||||||
};
|
};
|
||||||
|
|
||||||
export default NotificationFormList;
|
export default NotificationFormList;
|
||||||
|
|
|
@ -360,4 +360,5 @@ export default {
|
||||||
smtpDkimHashAlgo: "Хеш алгоритъм (по желание)",
|
smtpDkimHashAlgo: "Хеш алгоритъм (по желание)",
|
||||||
smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)",
|
smtpDkimheaderFieldNames: "Хедър ключове за подписване (по желание)",
|
||||||
smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)",
|
smtpDkimskipFields: "Хедър ключове, които да не се подписват (по желание)",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -352,4 +352,5 @@ export default {
|
||||||
serwersmsPhoneNumber: "Telefonnummer",
|
serwersmsPhoneNumber: "Telefonnummer",
|
||||||
serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)",
|
serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)",
|
||||||
stackfield: "Stackfield",
|
stackfield: "Stackfield",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -350,4 +350,5 @@ export default {
|
||||||
serwersmsPhoneNumber: "Telefonnummer",
|
serwersmsPhoneNumber: "Telefonnummer",
|
||||||
serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)",
|
serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)",
|
||||||
"stackfield": "Stackfield",
|
"stackfield": "Stackfield",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -361,4 +361,10 @@ export default {
|
||||||
smtpDkimHashAlgo: "Hash Algorithm (Optional)",
|
smtpDkimHashAlgo: "Hash Algorithm (Optional)",
|
||||||
smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
|
smtpDkimheaderFieldNames: "Header Keys to sign (Optional)",
|
||||||
smtpDkimskipFields: "Header Keys not to sign (Optional)",
|
smtpDkimskipFields: "Header Keys not to sign (Optional)",
|
||||||
|
alerta: "Alerta",
|
||||||
|
apiEndpoint: "API Endpoint",
|
||||||
|
environment: "Environment",
|
||||||
|
apiKey: "API Key",
|
||||||
|
alertState: "Alert State",
|
||||||
|
recoverState: "Recover State",
|
||||||
};
|
};
|
||||||
|
|
|
@ -203,4 +203,5 @@ export default {
|
||||||
records: "registros",
|
records: "registros",
|
||||||
"One record": "Un registro",
|
"One record": "Un registro",
|
||||||
steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesita una clave Steam Web-API. Puede registrar su clave API aquí: ",
|
steamApiKeyDescription: "Para monitorear un servidor de juegos de Steam, necesita una clave Steam Web-API. Puede registrar su clave API aquí: ",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -197,4 +197,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "LINE",
|
line: "LINE",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -202,4 +202,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -304,4 +304,5 @@ export default {
|
||||||
steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
|
steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ",
|
||||||
"Current User": "Utilisateur actuel",
|
"Current User": "Utilisateur actuel",
|
||||||
recent: "Récent",
|
recent: "Récent",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -347,4 +347,5 @@ export default {
|
||||||
Cancel: "Otkaži",
|
Cancel: "Otkaži",
|
||||||
"Powered by": "Pokreće",
|
"Powered by": "Pokreće",
|
||||||
Saved: "Spremljeno",
|
Saved: "Spremljeno",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -350,4 +350,5 @@ export default {
|
||||||
serwersmsAPIPassword: "API jelszó",
|
serwersmsAPIPassword: "API jelszó",
|
||||||
serwersmsPhoneNumber: "Telefonszám",
|
serwersmsPhoneNumber: "Telefonszám",
|
||||||
serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)",
|
serwersmsSenderName: "SMS feladó neve (regisztrált név az oldalon)",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -280,4 +280,5 @@ export default {
|
||||||
promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)",
|
promosmsPhoneNumber: "Nomor telepon (untuk penerima Polandia Anda dapat melewati kode area)",
|
||||||
promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS",
|
promosmsSMSSender: "Nama Pengirim SMS : Nama pra-registrasi atau salah satu bawaan: InfoSMS, Info SMS, MaxSMS, INFO, SMS",
|
||||||
"Feishu WebHookUrl": "Feishu WebHookUrl",
|
"Feishu WebHookUrl": "Feishu WebHookUrl",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -361,4 +361,5 @@ export default {
|
||||||
smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)",
|
smtpDkimheaderFieldNames: "Campi Intestazione da firmare (opzionale)",
|
||||||
smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)",
|
smtpDkimskipFields: "Campi Intestazione da non firmare (opzionale)",
|
||||||
GoogleChat: "Google Chat (solo per Google Workspace)",
|
GoogleChat: "Google Chat (solo per Google Workspace)",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -198,4 +198,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -351,4 +351,5 @@ export default {
|
||||||
serwersmsPhoneNumber: "휴대전화 번호",
|
serwersmsPhoneNumber: "휴대전화 번호",
|
||||||
serwersmsSenderName: "보내는 사람 이름 (registered via customer portal)",
|
serwersmsSenderName: "보내는 사람 이름 (registered via customer portal)",
|
||||||
stackfield: "Stackfield",
|
stackfield: "Stackfield",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -279,4 +279,5 @@ export default {
|
||||||
promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
|
promosmsTypeSpeed: "SMS SPEED - Highest priority in system. Very quick and reliable but costly (about twice of SMS FULL price).",
|
||||||
promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)",
|
promosmsPhoneNumber: "Phone number (for Polish recipient You can skip area codes)",
|
||||||
promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
promosmsSMSSender: "SMS Sender Name : Pre-registred name or one of defaults: InfoSMS, SMS Info, MaxSMS, INFO, SMS",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -204,4 +204,5 @@ export default {
|
||||||
PushUrl: "Push URL",
|
PushUrl: "Push URL",
|
||||||
HeadersInvalidFormat: "The request headers is geen geldige JSON: ",
|
HeadersInvalidFormat: "The request headers is geen geldige JSON: ",
|
||||||
BodyInvalidFormat: "De request body is geen geldige JSON: ",
|
BodyInvalidFormat: "De request body is geen geldige JSON: ",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -361,4 +361,5 @@ export default {
|
||||||
smtpDkimHashAlgo: "Algorytm Hashowania (Opcjonalne)",
|
smtpDkimHashAlgo: "Algorytm Hashowania (Opcjonalne)",
|
||||||
smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (Opcjonalne)",
|
smtpDkimheaderFieldNames: "Klucze nagłówka do podpisu (Opcjonalne)",
|
||||||
smtpDkimskipFields: "Klucze nagłówka do pominięcia (Opcjonalne)",
|
smtpDkimskipFields: "Klucze nagłówka do pominięcia (Opcjonalne)",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -197,4 +197,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -317,4 +317,5 @@ export default {
|
||||||
"Cancel": "Отмена",
|
"Cancel": "Отмена",
|
||||||
"Created:": "Создано:",
|
"Created:": "Создано:",
|
||||||
"Show Tags": "Показать тэги",
|
"Show Tags": "Показать тэги",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -352,4 +352,5 @@ export default {
|
||||||
serwersmsPhoneNumber: "Telefonska številka",
|
serwersmsPhoneNumber: "Telefonska številka",
|
||||||
serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)",
|
serwersmsSenderName: "Ime SMS pošiljatelja (registrirani prek portala za stranke)",
|
||||||
"stackfield": "Stackfield",
|
"stackfield": "Stackfield",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
|
@ -198,4 +198,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -198,4 +198,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -198,4 +198,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -197,4 +197,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -307,4 +307,5 @@ export default {
|
||||||
steamApiKeyDescription: "Để monitor các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ",
|
steamApiKeyDescription: "Để monitor các Steam Game Server bạn cần một Steam Web-API key. Bạn có thể đăng ký API key tại đây: ",
|
||||||
"Current User": "User hiện tại",
|
"Current User": "User hiện tại",
|
||||||
recent: "Gần đây",
|
recent: "Gần đây",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -291,4 +291,5 @@ export default {
|
||||||
"Internal Room Id": "Internal Room Id",
|
"Internal Room Id": "Internal Room Id",
|
||||||
matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。",
|
matrixDesc1: "你可以在 Matrix 客户端房间设置的高级选项找到 Internal Room Id。格式类似于 !QMdRCpUIfLwsfjxye6:home.server。",
|
||||||
matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}",
|
matrixDesc2: "请不要使用你自己的 Access Token,这将开放你所有的账户权限和你加入的房间权限。你可以创建一个新的用户并邀请它至你允许的的房间中。你可以运行以下命令来获取 Access Token:{0}",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -198,4 +198,5 @@ export default {
|
||||||
pushbullet: "Pushbullet",
|
pushbullet: "Pushbullet",
|
||||||
line: "Line Messenger",
|
line: "Line Messenger",
|
||||||
mattermost: "Mattermost",
|
mattermost: "Mattermost",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
|
@ -353,4 +353,5 @@ export default {
|
||||||
serwersmsPhoneNumber: "電話號碼",
|
serwersmsPhoneNumber: "電話號碼",
|
||||||
serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
|
serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)",
|
||||||
"stackfield": "Stackfield",
|
"stackfield": "Stackfield",
|
||||||
|
alerta: "Alerta",
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue