Konfiguracja logowania i monitoringu w Cursor
Jest 2 w nocy i twój pager się odzywa. Alert mówi “wysoki wskaźnik błędów na API zamówień.” Otwierasz dashboard monitoringu i widzisz skok błędów 500, ale logi mówią tylko “Internal Server Error” bez stack trace, bez ID żądania, bez kontekstu o tym, który endpoint lub który użytkownik był dotknięty. Łączysz się przez SSH do serwera produkcyjnego, robisz tail na logach i znajdujesz tysiące linii nieustrukturyzowanego tekstu zmieszanego z debugowym outputem, który ktoś zapomniał usunąć. Po trzydziestu minutach nadal nie wiesz, co jest zepsute.
To jest koszt pominięcia obserwowalności. Ustrukturyzowane logowanie, metryki aplikacji i rozproszone śledzenie to różnica między 5-minutową diagnozą a 2-godzinną gorączką. Cursor Agent może wygenerować twój cały stos obserwowalności, ponieważ wzorce są dobrze zdefiniowane: ustrukturyzowane loggery, kolektory metryk, propagacja trace’ów i reguły alertowania — wszystko to podlega standardowym schematom, które AI generuje niezawodnie.
Co wyniesiesz z tej lekcji
Dział zatytułowany „Co wyniesiesz z tej lekcji”- Konfigurację ustrukturyzowanego logowania z ID korelacji i kontekstem żądania
- Zbieranie metryk aplikacji z instrumentacją kompatybilną z Prometheus
- Konfigurację rozproszonego śledzenia dla architektur wieloserwisowych
- Reguły alertowania, które wyzwalają się na istotnych warunkach, a nie na szumie
- Gotowe do skopiowania prompty do generowania każdej warstwy obserwowalności
Ustrukturyzowane logowanie
Dział zatytułowany „Ustrukturyzowane logowanie”Fundamentem obserwowalności jest ustrukturyzowane logowanie. Każda linia logu powinna być parsowalnym JSON z konsekwentnymi polami, abyś mógł przeszukiwać, filtrować i agregować w całym systemie.
Po wygenerowaniu zweryfikuj, że logger produkuje prawidłowy output:
Przetestuj logger wklejając to do trybu Agent:
"Napisz szybki test, który importuje nasz logger, tworzy child loggerz kontekstem user_id, loguje wiadomość info i error ze stack trace.Pokaż mi, jak wygląda output JSON zarówno w trybie development, jak i production."Dodawanie kontekstu do każdego logu
Dział zatytułowany „Dodawanie kontekstu do każdego logu”Najcenniejsza poprawa logowania to dodanie kontekstu biznesowego. Gdy możesz wyszukać wszystkie logi związane z zamówieniem ord_abc123, debugowanie staje się dramatycznie szybsze.
Metryki aplikacji
Dział zatytułowany „Metryki aplikacji”Metryki mówią ci, co dzieje się w twoim systemie w ujęciu zagregowanym. Podczas gdy logi pokazują pojedyncze zdarzenia, metryki pokazują trendy: wskaźniki żądań, wskaźniki błędów, rozkłady latencji i wykorzystanie zasobów.
Rozproszone śledzenie
Dział zatytułowany „Rozproszone śledzenie”Dla architektur mikroserwisowych rozproszone śledzenie łączy pojedyncze żądanie użytkownika przez wiele serwisów. Trace pokazuje pełną podróż: API gateway do serwisu auth, do serwisu zamówień, do serwisu płatności i z powrotem.
Reguły alertowania
Dział zatytułowany „Reguły alertowania”Metryki i trace’y są bezużyteczne, jeśli nikt na nie nie patrzy. Alerty łączą zbieranie danych z reagowaniem na incydenty. Kluczem jest alertowanie na symptomy (wpływ na użytkownika), a nie na przyczyny (wysokie CPU).
Generowanie dashboardów
Dział zatytułowany „Generowanie dashboardów”Gdy masz metryki i trace’y, potrzebujesz dashboardów do ich wizualizacji. Cursor może generować konfiguracje dashboardów:
Kiedy to się psuje
Dział zatytułowany „Kiedy to się psuje”Logi są zbyt szczegółowe na produkcji. Jeśli Agent wygeneruje logowanie na poziomie debug wszędzie, twoje koszty przechowywania logów wystrzelą. Ustaw domyślny poziom logowania na info na produkcji i debug tylko w developmencie. Użyj zmiennej środowiskowej LOG_LEVEL, aby zmienić to bez ponownego wdrażania.
Metryki mają zbyt wiele kombinacji etykiet (eksplozja kardynalności). Jeśli Agent użyje user_id lub request_id jako etykiety metryki, utworzysz miliony szeregów czasowych i twoje przechowywanie metryk się zawiesi. Etykiety metryk powinny mieć niską kardynalność: metoda HTTP, kod statusu, wzorzec endpointu (nie pełny URL z parametrami ścieżki). Przeglądaj każdą etykietę metryki, którą Agent generuje.
Trace’y są niekompletne. Jeśli tylko niektóre serwisy mają skonfigurowane śledzenie, trace’y będą miały luki. Kontekst trace’u (nagłówek traceparent) musi być propagowany przez każdy serwis na ścieżce żądania. Poproś Agenta: “Zweryfikuj, że każde wychodzące wywołanie HTTP w naszym serwisie zawiera nagłówek W3C traceparent z bieżącego kontekstu trace’u.”
Alerty odpalają się zbyt często (zmęczenie alertami). Zacznij od wyższych progów i zaostrzaj je dopiero, gdy masz dane bazowe. Dla nowych wdrożeń użyj “recording rules”, aby obliczyć wartości bazowe przez tydzień przed włączeniem alertów.
Brakuje ID korelacji. Jeśli twoje logi nie mają ID korelacji, nie możesz prześledzić żądania między serwisami. Middleware z pierwszego promptu generuje ID żądań, ale musisz też propagować je w wychodzących żądaniach. Poproś Agenta: “Zaktualizuj naszego klienta HTTP, aby zawierał nagłówek x-correlation-id z async local storage w każdym wychodzącym żądaniu.”