Skip to content

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-Signaturesha256=<hex> қолтаңбасы (төменнен қараңыз)

Қолтаңбаны тексеру ​

Сұраудың Elerio-дан келгеніне және бұрмаланбағанына көз жеткізу үшін қолтаңбаны тексеріңіз. Elerio сұрау денесінен сіздің құпияңызбен HMAC-SHA256 есептейді және нәтижені X-Elerio-Signature тақырыбына sha256=<hex> форматында салады.

Өз жағыңызда шикі денеден (JSON парсингке дейін) сол құпиямен HMAC есептеп, мәндерді салыстырыңыз — міндетті түрде constant-time-салыстырумен.

js
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);
}
python
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 саны шектелмеген. Қараңыз: Тарифтер мен лимиттер.