Webhook-интеграциялар
Webhook — бұл монитордың күйі өзгергенде Elerio сіздің URL-ге жіберетін шығыс HTTP-сұрау. Оның көмегімен инциденттер PagerDuty, Slack, Mattermost немесе кез келген өз қабылдағышыңызға түседі.
Көптеген сервистерден басты айырмашылығы: байланыстыру бүкіл аккаунтқа емес, нақты мониторға жүреді. Продакшнді PagerDuty-ге, ал стейджингті Slack-арнасы #noise-қа бағыттауға болады.
Endpoint құру
Хабарламалар → Webhook бөлімінде endpoint қосыңыз:
- Аты — өзіңіз үшін, тізімде ажырату үшін.
- URL — сұрауларды қайда жіберу керек.
- Құпия — автоматты түрде генерацияланады (өзіңіздікін көрсетуге болады). Қол қою үшін қолданылады — төменнен қараңыз.
Құрғаннан кейін endpoint-ті монитор формасындағы арналарды таңдау арқылы керекті мониторларға байланыстырыңыз. Бір endpoint-ті бірнеше мониторға және керісінше байланыстыруға болады.
«Тест» түймесі қабылдағышты тексеру үшін сынақ сұрауын дереу жібереді.
Сұрау форматы
Elerio денесі JSON форматында және келесі тақырыптары бар POST жібереді:
| Тақырып | Мәні |
|---|---|
X-Elerio-Event | оқиға түрі (мысалы, инциденттің ашылуы/жабылуы) |
X-Elerio-Webhook-Id | жеткізу идентификаторы |
X-Elerio-Delivery-Attempt | әрекет нөмірі (1-ден бастап) |
X-Elerio-Signature | sha256=<hex> қолтаңбасы (төменнен қараңыз) |
Қолтаңбаны тексеру
Сұраудың Elerio-дан келгеніне және бұрмаланбағанына көз жеткізу үшін қолтаңбаны тексеріңіз. Elerio сұрау денесінен сіздің құпияңызбен HMAC-SHA256 есептейді және нәтижені X-Elerio-Signature тақырыбына sha256=<hex> форматында салады.
Өз жағыңызда шикі денеден (JSON парсингке дейін) сол құпиямен HMAC есептеп, мәндерді салыстырыңыз — міндетті түрде constant-time-салыстырумен.
import crypto from 'node:crypto';
function verify(rawBody, signatureHeader, secret) {
const expected =
'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(signatureHeader);
const b = Buffer.from(expected);
return a.length === b.length && crypto.timingSafeEqual(a, b);
}import hmac, hashlib
def verify(raw_body: bytes, signature_header: str, secret: str) -> bool:
expected = "sha256=" + hmac.new(
secret.encode(), raw_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(signature_header, expected)Егер қолтаңба сәйкес келмесе — сұрауды қабылдамаңыз.
Қайталау әрекеттері
Егер сіздің қабылдағышыңыз қолжетімсіз болса немесе қате қайтарса, Elerio жеткізуді өсіп бара жатқан үзіліспен қайталайды: шамамен 5 секунд, 30 секунд және 5 минут өткен соң. Әрекеттер таусылғаннан кейін жеткізу «өлі кезекке» (dead-letter queue) ауыстырылады және енді қайталанбайды. Сондықтан қабылдағышты идемпотентті ету керек — X-Elerio-Webhook-Id бойынша бағдарланыңыз.
Қауіпсіздік
Endpoint-тің URL-і құру кезінде тексеріледі: Elerio webhook-тарды жеке және ішкі мекенжайларға бағыттауға рұқсат бермейді. Құпияны кез келген сәтте қайта шығаруға болады — ескісі дереу жарамсыз болады.
Қолжетімділік
Webhook-арнасы Supporter тарифінен бастап қолжетімді (5 endpoint-қа дейін); Business және Enterprise тарифтерінде endpoint саны шектелмеген. Қараңыз: Тарифтер мен лимиттер.