Webhooki przychodzące
Webhooki przychodzące odbierają zdarzenia z innych narzędzi i przekształcają je w zgłoszenia lub aktualizacje. Istnieją trzy punkty wejścia:
| Źródło | Adres | Konfiguracja w Core |
|---|---|---|
| Narzędzia monitorowania, DevOps i bezpieczeństwa | /api/connectors/{vendor}/{tenant} |
Integrations, konektor dostawcy |
| Inne systemy ITSM i ogólne źródła REST | /api/integration/webhook/{integration_id} |
Integration Center |
| Lokalne bramy SNMP (on-premise) | /api/snmp-gateway/trap/{tenant} |
Integrations → SNMP gateway |
Wszystkie adresy znajdują się w domenie https://exocortex-api.ai-exo-cortex.com.
Konektory dla narzędzi monitorowania, DevOps i bezpieczeństwa
Dział zatytułowany „Konektory dla narzędzi monitorowania, DevOps i bezpieczeństwa”Konektor konfiguruje się w exoCortex Core, a następnie kieruje webhook narzędzia na adres konektora. Narzędzie wysyła dane we własnym formacie: exoCortex je normalizuje i w razie potrzeby otwiera zgłoszenie.
Obsługiwane narzędzia:
- Monitorowanie: Datadog, New Relic, Prometheus, Grafana, Nagios, Icinga, Centreon, Statuspage, NinjaOne.
- DevOps i dyżury (on-call): GitHub, GitLab, Jenkins, Bitbucket, PagerDuty, Opsgenie.
- Bezpieczeństwo: Wazuh, Microsoft Sentinel, Tenable, Qualys, Splunk, Elastic, CrowdStrike, SentinelOne, QRadar, Cyber Protect, Fortigate, Check Point oraz sieciowe sondy EDR.
W adresie {vendor} to nazwa narzędzia zapisana małymi literami (na przykład datadog), a {tenant} to kod tenanta, dla którego skonfigurowano konektor.
Uwierzytelnianie
Dział zatytułowany „Uwierzytelnianie”- GitHub, GitLab, PagerDuty, Opsgenie i Statuspage podpisują żądania własnym mechanizmem: exoCortex go weryfikuje.
- W przypadku wszystkich pozostałych narzędzi należy użyć podpisu exoCortex, obliczanego za pomocą sekretu konektora (zob. Podpisywanie żądań).
Jeśli konektor kilkakrotnie z rzędu zakończy się niepowodzeniem, exoCortex tymczasowo wstrzymuje przyjmowanie żądań i odpowiada kodem 503 z polem resume_in_ms, czyli liczbą milisekund, po których należy ponowić próbę.
Integracje i mosty ITSM
Dział zatytułowany „Integracje i mosty ITSM”W przypadku ServiceNow, Jira, Zendesk, BMC lub ogólnego źródła REST integrację konfiguruje się w Integration Center w exoCortex Core wraz z mapowaniem pól. Drugi system wysyła zdarzenia na adres integracji; exoCortex je mapuje i tworzy lub aktualizuje zgłoszenie.
Podpis jest obowiązkowy, gdy integracja ma sekret, a integracje w trybie webhook muszą go mieć. Należy używać podpisu exoCortex; alternatywnie akceptowane są nagłówki X-Bridge-Signature, X-Hub-Signature-256 lub X-Signature z wartością sha256=<hex HMAC of the body>.
Odpowiedź ma kod 200, gdy zdarzenie zostało przetworzone od razu, oraz 202, gdy zostało umieszczone w kolejce w celu niezawodnego przetworzenia.
Podpisywanie żądań
Dział zatytułowany „Podpisywanie żądań”Aby podpisać żądanie do exoCortex, należy wysłać dwa nagłówki:
X-Exo-Timestamp: bieżący czas w sekundach Unix;X-Exo-Signature:v1=, a po nim szesnastkowy HMAC-SHA256 ztimestamp + "." + body, obliczony za pomocą sekretu konektora.
exoCortex odrzuca żądania ze znacznikiem czasu różniącym się o ponad 300 sekund od jego własnego czasu.
ts=$(date +%s)body='{"title":"CPU high on web-01","alert_type":"error"}'sig=$(printf '%s.%s' "$ts" "$body" | openssl dgst -sha256 -hmac "$CONNECTOR_SECRET" -hex | sed 's/^.* //')curl -X POST "https://exocortex-api.ai-exo-cortex.com/api/connectors/datadog/ACME" \ -H "Content-Type: application/json" \ -H "X-Exo-Timestamp: $ts" -H "X-Exo-Signature: v1=$sig" \ --data-binary "$body"Nagłówek X-NH-Connector-Signature z HMAC obliczonym wyłącznie z treści jest wycofywany i działa do 30 czerwca 2027.
Brama SNMP
Dział zatytułowany „Brama SNMP”Jeśli posiadają Państwo urządzenia wysyłające pułapki (trap) SNMP, brama w Państwa sieci konwertuje je na JSON i wysyła do exoCortex. Sekret ustawia się w Integrations → SNMP gateway.
Brama podpisuje każde żądanie nagłówkami:
X-NH-SNMP-Timestamp: bieżący czas w milisekundach Unix;X-NH-SNMP-Signature:sha256=, a po nim szesnastkowy HMAC-SHA256 ztimestamp + "|" + body.
Tolerancja czasu wynosi 5 minut. Przykład pułapki:
{ "source_ip": "192.0.2.10", "source_sysname": "core-sw-01", "trap_oid": "1.3.6.1.6.3.1.1.5.3", "severity": "major", "varbinds": { "1.3.6.1.2.1.2.2.1.1": "12", "1.3.6.1.2.1.2.2.1.2": "GigabitEthernet1/0/12" }}