Wyzwalacze HTTP w agencie usługi Azure SRE

Wyzwalacze HTTP w agencie Azure SRE to punkty końcowe webhook, które systemy zewnętrzne używają do wywołania agenta na żądanie. Gdy potok ciągłej integracji i ciągłego dostarczania (CI/CD) kończy się niepowodzeniem, narzędzie do zgłaszania alertów wykrywa anomalię lub dowolny klient HTTP wysyła POST żądanie, agent odbiera kontekst zdarzenia i natychmiast zaczyna działać.

Problem: Alerty i awarie procesów wymagają ręcznej klasyfikacji

Twój zespół ma już narzędzia do alertowania, obserwacji i przepływu pracy, takie jak Datadog, Dynatrace, Jira, Splunk i Grafana oraz potoki CI/CD, które ulegają awarii. Gdy coś pójdzie nie tak, odpowiedź jest taka sama za każdym razem:

  • Inżynier otrzymuje powiadomienie: Inżynier otwiera narzędzie monitorujące, odczytuje alert, a następnie ręcznie otwiera dzienniki, metryki i historię wdrożeń w różnych dashboardach, aby dowiedzieć się, co się stało.
  • Potok zawiódł: Ktoś musi przerwać swoje obecne działania, sprawdzić dane wyjściowe kompilacji, skorelować je z ostatnimi zmianami i zdecydować, czy wycofać się, czy przeprowadzić naprawę w przyszłości.
  • Kontekst jest rozproszony: Alert usługi Datadog mówi: "Skok użycia CPU w usłudze prod-api". Główna przyczyna wymaga korelowania logów z trzech usług, sprawdzania ostatnich wdrożeń i analizowania śladów Dynatrace.

Jak działają wyzwalacze HTTP

Wyzwalacze HTTP umożliwiają łączenie dowolnego narzędzia obsługującego webhooki bezpośrednio z instancją agenta SRE. Zamiast inżyniera wykonującego ręczną klasyfikację, system, który wykrył problem, bez względu na to, czy jest to alert usługi Datadog, anomalia Dynatrace, przejście przepływu pracy Jira, czy awaria procesu w pipeline, poleca agentowi zbadanie problemu. Kontekst jest przekazywany automatycznie.

Każdy wyzwalacz jest nazwanym punktem końcowym webhooka w agencie z unikatowym adresem URL. Gdy zewnętrzny system wywołuje ten adres URL za pośrednictwem protokołu HTTP POST, agent wykonuje skonfigurowany monit wyzwalacza, który jest wzbogacony o dowolne dane JSON w treści żądania.

Kluczowe pojęcia

Pojęcie Jak to działa
Wyzwalacz Nazwany punkt końcowy z wezwaniem, przypisanym agentem (domyślnym lub podrzędnym) i poziomem autonomii (autonomiczny lub do przeglądu).
Adres URL wyzwalacza Unikatowy adres URL webhooka generowany podczas tworzenia wyzwalacza. Ten adres URL webhooka jest wywoływany przez narzędzia zewnętrzne.
Kontekst JSON Opcjonalna treść JSON wysłana z żądaniem POST . Staje się częścią monitu agenta, aby miał pełny kontekst.
Historia wykonania Każde wywołanie jest rejestrowane przy użyciu znacznika czasu, linku wątku i stanu powodzenia lub niepowodzenia.
Włączanie/wyłączanie Przełącz wyzwalacze włącz/wyłącz bez usuwania. Wyłączone wyzwalacze zwracają wartość 404.

Wywoływanie wyzwalacza

Wywołaj adres URL wyzwalacza za pomocą żądania HTTP POST :

curl -X POST \
  https://your-agent.sre.azure.com/api/v1/httptriggers/trigger/<TRIGGER_ID> \
  -H "Authorization: Bearer <ARM_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "datadog",
    "alert_title": "High error rate on checkout-api",
    "severity": "critical",
    "service": "checkout-api",
    "region": "eastus2",
    "metric": "error_rate",
    "value": "8.2%",
    "threshold": "5%"
  }'
Część Co to jest
adres URL Unikatowy punkt końcowy wyzwalacza webhook. Znajdź go w widoku szczegółów wyzwalacza pod Adresem URL wyzwalacza.
Authorization Token typu Bearer dla Azure Resource Manager. Zobacz Uwierzytelnianie w celu wywołania wyzwalacza.
Typ zawartości Musi być application/json , jeśli wysyłasz treść JSON.
Treść JSON (opcjonalnie) Wszelkie dane JSON, które mają być widoczne dla agenta. Te dane stają się częścią monitu agenta. Uwzględnij dowolny kontekst, który pomaga agentowi zbadać, na przykład nazwę alertu, ważność i usługę, której dotyczy problem.

Treść JSON jest opcjonalna. Jeśli wywołasz wyzwalacz bez ciała, agent jest uruchamiany tylko z użyciem skonfigurowanego monitu wyzwalacza. Dzięki posiadaniu „ciała” agent widzi zarówno monit, jak i dane, które wysłałeś.

Uwierzytelnianie przy wywołaniu wyzwalacza

Punkt końcowy wyzwalacza wymaga tokenu typu Bearer usługi Azure Resource Manager w nagłówku Authorization: Bearer <TOKEN>. Obiekt wywołujący potrzebuje uprawnień Microsoft.App/agents/threads/write do zasobu agenta.

Sposoby uzyskiwania tokenu

Metoda Najlepsze dla Szczegóły
Główna usługa CI/CD pipeline'y, systemy zautomatyzowane Utwórz rejestrację aplikacji, przypisz rolę zasobowi agenta i skorzystaj z przepływu poświadczeń klienta, aby uzyskać token.
Tożsamość zarządzana Usługi hostowane na platformie Azure (Azure Functions, Azure Virtual Machines, Azure Container Apps) Brak tajemnic do zarządzania. Zasób platformy Azure uwierzytelnia się automatycznie.
Azure CLI Testowanie i programowanie Uruchom program az account get-access-token --resource https://management.azure.com --query accessToken -o tsv.

Łączenie narzędzi zewnętrznych, które nie obsługują uwierzytelniania platformy Azure

Narzędzia takie jak Datadog, Dynatrace, Jira i Splunk wysyłają webhooki z własnymi formatami uwierzytelniania, a nie tokenami Azure Resource Manager. Aby wypełnić lukę, należy użyć jednego z następujących pośredników.

Pośrednika Jak to działa
Azure Functions Odbiera webhook, uzyskuje token Azure Resource Manager przy użyciu tożsamości zarządzanej i przekazuje żądanie do adresu URL wyzwalacza.
Azure Logic Apps Przepływ pracy bez kodu, który odbiera elementy webhook z dowolnego źródła i wywołuje interfejsy API platformy Azure z wbudowanym uwierzytelnianiem usługi Azure Resource Manager.
Azure API Management Znajduje się przed adresem URL wyzwalacza i obsługuje walidację tokenu i transformację za pośrednictwem zasad.

Odpowiedź

{
  "message": "HTTP trigger execution initiated",
  "executionTime": "2026-03-13T10:30:00Z",
  "threadId": "thread-abc123",
  "success": true
}

Wyzwalacz natychmiast zwraca HTTP 202 (zaakceptowane). Agent przetwarza żądanie asynchronicznie.

Co sprawia, że takie podejście różni się

Wyzwalacze HTTP łączą istniejące narzędzia do alertów oraz narzędzia CI/CD bezpośrednio z agentem, eliminując potrzebę zaangażowania inżyniera w proces. System, który wykrył problem, informuje agenta, aby zbadał sytuację, i automatycznie przekazuje mu pełny kontekst. Nie ma stronicowania, przełączania widoków na pulpicie ani ręcznego zbierania informacji kontekstowych.

Przed i po

Przed (ręczny triage) Po wyzwalaczach HTTP
Alert usługi Datadog został uruchomiony. Inżynier otrzymuje powiadomienie, otwiera trzy pulpity nawigacyjne i rozpoczyna analizę. Wyzwalacz wywołań elementu webhook usługi Datadog. Agent bada wyniki i publikuje je automatycznie.
Przerwy w rurociągu. Inżynier sprawdza dzienniki kompilacji, przegląda pull requesty i decyduje o następnym kroku. Wyzwalacz wywołań procedury obsługi błędów potoku. Agent analizuje awarię i publikuje główną przyczynę.
Dynatrace wykrywa anomalię. Inżynier ręcznie koreluje między usługami. Wywołania webhooków Dynatrace są inicjowane w kontekście anomalii. Agent koreluje logi, metryki i wdrożenia.

Zaplanowane zadania a wyzwalacze HTTP

Zaplanowane zadania Wyzwalacze HTTP
Na podstawie czasu (harmonogram chronologiczny). Sterowane zdarzeniami (na żądanie).
Działa niezależnie od tego, czy coś się stało. Uruchamia się tylko wtedy, gdy jest wywoływana.
Brak danych wejściowych zewnętrznych dla każdej operacji. Dane payload wstrzykiwane przy każdym wywołaniu.
Najlepsze do cyklicznych sprawdzeń. Najlepsze w przypadku reakcji sterowanych zdarzeniami.

Użyj obu razem. Użyj zaplanowanych zadań do proaktywnego monitorowania i wyzwalaczy HTTP na potrzeby reaktywnej obsługi zdarzeń.

Przypadki użycia

Integracja potoku CI/CD

Gdy potok wdrażania zakończy się niepowodzeniem, wywołaj agenta, aby przeanalizować błąd:

# In your pipeline's failure handler
curl -X POST "$AGENT_TRIGGER_URL" \
  -H "Authorization: Bearer $ARM_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"pipeline\": \"$PIPELINE_NAME\", \"run_id\": \"$RUN_ID\", \"error\": \"$ERROR_MESSAGE\"}"

Badanie sterowane alertami

Podłącz system alertów, aby zainicjować automatyczne badanie, kiedy zostaną uruchomione alerty krytyczne.

{
  "alert_name": "Error rate > 5%",
  "severity": "P1",
  "service": "checkout-api",
  "region": "eastus2",
  "start_time": "2026-03-13T10:15:00Z"
}

Testy zgodności wdrożenia

Po zakończeniu wdrażania rozpocznij przegląd zgodności.

curl -X POST "$AGENT_TRIGGER_URL" \
  -H "Authorization: Bearer $ARM_TOKEN" \
  -d '{"deployment_id": "deploy-456", "environment": "production", "changes": ["config update", "image bump"]}'

Odniesienie do API

Punkt końcowy Metoda Opis
/api/v1/httptriggers GET Wyświetl listę wszystkich wyzwalaczy.
/api/v1/httptriggers/create POST Utwórz nowy wyzwalacz.
/api/v1/httptriggers/{id} GET Pobierz szczegóły wyzwalacza.
/api/v1/httptriggers/{id} PUT Aktualizuj właściwości wyzwalacza.
/api/v1/httptriggers/{id} DELETE Usuń wyzwalacz.
/api/v1/httptriggers/{id}/enable POST Włącz wyzwalacz.
/api/v1/httptriggers/{id}/disable POST Wyłącz wyzwalacz.
/api/v1/httptriggers/{id}/execute POST Ręczne uruchamianie wyzwalacza.
/api/v1/httptriggers/{id}/executions GET Pobierz historię wykonywania.
/api/v1/httptriggers/trigger/{id} POST Zewnętrzny punkt końcowy elementu webhook.

Troubleshooting

Wyzwalacz zwraca wartość 404

  • Sprawdź, czy wyzwalacz jest ustawiony na włączony. Wyłączone wyzwalacze zwracają wartość 404.
  • Sprawdź, czy identyfikator wyzwalacza w adresie URL jest poprawny.

401 Brak autoryzacji

  • Odbiorcy tokenu muszą odpowiadać identyfikatorowi aplikacji agenta SRE, a nie https://management.azure.com.
  • Aby uzyskać token do testowania, użyj polecenia az account get-access-token --resource 59f0a04a-b322-4310-adc9-39ac41e9631e --query accessToken -o tsv.

Wyzwalacz jest wykonywany, ale agent nie działa

  • Sprawdź komunikat agenta. Pusty monit może nie wygenerować przydatnych danych wyjściowych.
  • Sprawdź, czy wybrany subagent ma narzędzia potrzebne do wykonania zadania.
  • Sprawdź historię wykonywania, aby uzyskać szczegółowe informacje o błędzie.

Limity

Resource Limit
Wyzwalacze przypisane agentowi Brak twardego limitu.
Maksymalna liczba obrotów na wykonanie 250 zakrętów.
Authentication Token elementu nośnego jest wymagany dla każdego adresu URL wyzwalacza.