Szybki start
Domyślnie wyłączone
Metryki są domyślnie wyłączone. Aby włączyć zbieranie metryk, ustawMETRICS_ENABLED=true i uruchom GoModel:
W dalszej części przewodnika pokazujemy tylko ustawianą zmienną. Zastosuj ją
w sposób odpowiadający wybranemu wyżej sposobowi uruchamiania –
.env z
--env-file, flaga -e w linii poleceń albo export przed ./bin/gomodel –
i zrestartuj GoModel.Wyłączanie metryk
Opcja 1: zmienna środowiskowaWłasny endpoint metryk
Zmień domyślną ścieżkę/metrics:
Opcje konfiguracji
Przez zmienne środowiskowe
Przez config.yaml
Przykłady
Konfiguracja produkcyjna (metryki włączone)
.envKonfiguracja deweloperska (metryki wyłączone)
.envWłasny endpoint do wewnętrznego monitoringu
config.yamlWeryfikacja
Sprawdź, czy metryki są włączone
Uruchom serwer i poszukaj komunikatów w logach: Metryki włączone:Przetestuj endpoint metryk
Gdy włączone:Wpływ na wydajność
Metryki włączone
- Minimalny narzut: ok. 100 ns na request na wykonanie hooków
- Pamięć: ok. 1 MB na przechowywanie metryk (zależy od kardynalności)
- CPU: pomijalny wpływ (
<0.1%w benchmarkach)
Metryki wyłączone
- Zerowy narzut: brak zarejestrowanych hooków i brak zbierania danych
- Biblioteka metryk jest nadal linkowana, ale nieaktywna
- Zalecane dla maksymalnej wydajności w środowiskach nieprodukcyjnych
Kwestie bezpieczeństwa
Udostępnianie endpointu metryk
Endpoint/metrics jest chroniony uwierzytelnianiem master key, gdy master key
jest skonfigurowany – tak samo jak inne endpointy HTTP. Jeśli master key nie jest
skonfigurowany, endpoint jest dostępny bez uwierzytelniania, co pozwala
Prometheusowi scrapować metryki bez danych uwierzytelniających.
Jeśli potrzebujesz dodatkowo zabezpieczyć endpoint metryk:
-
Użyj własnej, wewnętrznej ścieżki:
-
Użyj zabezpieczeń na poziomie sieci:
- Skonfiguruj reguły firewalla tak, aby dopuszczały tylko serwer Prometheus
- Używaj prywatnej sieci do zbierania metryk
- Wdróż Prometheusa w tym samym VPC/tej samej sieci
-
Reverse proxy z uwierzytelnianiem:
Alerty na puste odpowiedzi
Provider czasem odpowiada200, ale nie zwraca żadnych choices, żadnego
outputu ani użycia tokenów. gomodel_requests_total liczy takie wywołania jako
udane, dlatego GoModel dodatkowo zwiększa gomodel_empty_responses_total i
loguje ostrzeżenie (provider returned 200 with an empty response).
Chat completion bez choices zwraca też klientowi
502 albo przechodzi przez
failover, jeśli istnieje cel failoveru. Odpowiedź z treścią, ale bez użycia, jest
nadal zwracana; psuje tylko śledzenie użycia i kosztów.
Konfiguracja Prometheusa
Konfiguracja scrapowania
prometheus.ymlZ własnym endpointem
Rozwiązywanie problemów
Endpoint metryk zwraca 404
Przyczyna: metryki są wyłączone (wartość domyślna). Rozwiązanie:METRICS_ENABLED=true w pliku .env, flagą -e METRICS_ENABLED=true w
linii poleceń albo przez export METRICS_ENABLED=true (trzy sposoby uruchamiania
opisano w Szybkim starcie), a następnie zrestartuj GoModel.
Nie pojawiają się żadne dane metryk
Przyczyna: nie wykonano jeszcze żadnych requestów. Rozwiązanie: wykonaj kilka requestów, aby wygenerować metryki:Własny endpoint nie działa
Przyczyna: endpoint musi zaczynać się od/.
Niepoprawnie:
Dobre praktyki
Development
- Wyłącz metryki, aby przyspieszyć start i ograniczyć szum
- Włączaj je tylko podczas testowania funkcji obserwowalności
Staging
- Włącz metryki, aby przetestować konfigurację monitoringu
- W razie potrzeby użyj własnego endpointu ze względów bezpieczeństwa
Produkcja
- Włącz metryki, aby uzyskać pełną obserwowalność
- Skonfiguruj alerty w Prometheusie
- Do wizualizacji używaj dashboardów Grafany
- Rozważ własny endpoint ze względów bezpieczeństwa
- Monitoruj kardynalność metryk, aby uniknąć jej eksplozji
Zobacz też
- Konfiguracja – pełna dokumentacja referencyjna zmiennych środowiskowych
- config.yaml – dokumentacja referencyjna konfiguracji YAML