Strumieniowanie logów telemetrii w czasie rzeczywistym

Przesyłaj logi dostępu proxy z serwera XProxy do Graylog lub SigNoz w czasie rzeczywistym — monitoruj wiele urządzeń z jednego miejsca, buduj pulpity nawigacyjne i otrzymuj alerty o błędach.

Dlaczego warto korzystać ze scentralizowanego strumieniowania logów?

  • Ujednolicone monitorowanie — obserwuj dostęp i stan wszystkich węzłów XProxy w czasie rzeczywistym.
  • Łatwe wyszukiwanie — filtruj według urządzenia, regionu, akcji lub kodu błędu.
  • Szybsze rozwiązywanie problemów — szybko izoluj błędy, skoki ruchu lub nietypowe zachowania.
Konfiguracja: XProxy → Ustawienia ogólne → Logi telemetryczne. Obsługiwani dostawcy: Graylog (GELF UDP) i SigNoz (OTLP/HTTP).

Zalecane etykietowanie

  • Identyfikator hosta — nazwa przypadająca na serwer, np. sg-core-01, us-east-02.
  • Nazwa usługi — grupowanie według regionu lub jednostki biznesowej, np. xproxy-region-a.

Każdy log zawiera te etykiety, co ułatwia budowanie pulpitów nawigacyjnych i filtrów obejmujących wiele urządzeń.

Typowe przypadki użycia

  • Zliczanie unikalnych adresów IP klientów — oszacuj rzeczywisty ruch i wykryj nieznane źródła.
  • Śledzenie wskaźnika błędów — filtruj error_code != 00000, aby mierzyć niezawodność.
  • Najpopularniejsze miejsca docelowe i przepustowość — grupuj według destination_host, sumuj received_bytes i sent_bytes.
  • Monitorowanie per urządzenie/port — użyj modem_position, proxy_port, proxy_service, aby wyizolować konkretny dongle.
  • Wykrywanie anomalii — alertuj o nagłych skokach ruchu lub podwyższonych kodach błędów.

Wskazówki operacyjne dla wielu urządzeń

  • Spójne nazewnictwo — standaryzuj Identyfikator hosta i Nazwę usługi według regionu lub grupy.
  • Separacja środowisk — używaj prefiksów takich jak prod- / stg- w Nazwie usługi.
  • Planowanie retencji — ustaw rotację indeksów w Graylog; monitoruj użycie/retencję w SigNoz Cloud.
  • Alerty o stanie — alertuj, gdy węzeł przestanie wysyłać logi przez N minut; ponownie uruchom Test połączenia po dodaniu nowych węzłów.

Opcja A — Graylog

Instalacja Graylog

Wymagania: Ubuntu Server 20.04 lub 22.04, minimum 2 GB RAM (zalecane 4 GB).

bash
curl x-proxy.io/graylog | bash
Instalacja Graylog

Utwórz wejście GELF UDP

  1. Otwórz Graylog → System → Wejścia.
  2. Wybierz GELF UDP i kliknij Uruchom nowe wejście.
  3. Ustaw adres powiązania na 0.0.0.0 i port na 12201.
  4. Kliknij Zapisz.
Wejście GELF UDP w Graylog

Konfiguracja XProxy dla Graylog

  1. Otwórz Ustawienia ogólne → Logi telemetryczne.
  2. Włącz przełącznik Włącz telemetrię.
  3. Ustaw dostawcę na Graylog.
  4. Wpisz serwer Graylog jako YOUR_GRAYLOG_IP:12201.
  5. Ustaw Identyfikator hosta i Nazwę usługi (opcjonalne, ale zalecane).
  6. Kliknij Zapisz, a następnie Test połączenia.
Formularz konfiguracji Graylog w XProxy

Przykłady zapytań w Graylog

graylog query
# By service/cluster
service_name:xproxy-region-a

# Only errors
error_code:!00000

# By action
action:CONNECT

# By device/slot
modem_position:3
Wyniki wyszukiwania w Graylog

Opcja B — SigNoz

Instalacja SigNoz (Community)

Wymagania: Ubuntu Server 20.04, 22.04 lub 24.04. Pomiń w przypadku korzystania z SigNoz Cloud.

bash
curl x-proxy.io/signoz | bash
Instalacja SigNoz

Konfiguracja XProxy dla SigNoz

  1. Otwórz Ustawienia ogólne → Logi telemetryczne.
  2. Włącz Włącz telemetrię i wybierz SigNoz jako dostawcę.
  3. Wpisz punkt końcowy OTLP/HTTP, np. https://ingest.us.signoz.cloud:4318.
  4. Wklej swój klucz pozyskiwania (SigNoz Cloud) lub pozostaw pole puste w przypadku instalacji lokalnej.
  5. Ustaw Nazwę usługi (np. xproxy-region-a).
  6. Kliknij Zapisz, a następnie Test połączenia.
Formularz konfiguracji SigNoz w XProxy

Przykłady zapytań w SigNoz

signoz query
# By service name
service.name = "xproxy-region-a"

# Only errors
attributes.error_code != "00000"

# By action
attributes.action = "CONNECT"

# By device/slot
attributes.modem_position = 3
Eksplorator logów SigNoz

Referencja pól logu

PoleOpis
log_dateData logu (DD/MM)
log_timeCzas logu (HH:MM:SS)
proxy_serviceNazwa grupy usług (np. MAIN)
modem_positionIndeks urządzenia/gniazda obsługującego żądanie
proxy_protocolHTTP lub SOCKS5
proxy_portPort nasłuchu proxy w XProxy
proxy_userNazwa użytkownika użyta do uwierzytelnienia (pusta dla białej listy IP)
client_ipAdres IP klienta korzystającego z proxy
destination_hostHost docelowy żądany przez proxy
destination_portPort docelowy
actionCONNECT (tunel) lub ACCESS (żądanie HTTP)
error_code00000 = powodzenie; wartość niezerowa = błąd
received_bytesBajty z miejsca docelowego do klienta
sent_bytesBajty z klienta do miejsca docelowego

Referencja kodów błędów

XProxy emituje w logach pięciocyfrowy error_code (np. 00000, 00004). Zera wiodące są celowe — zapewniają spójne sortowanie i filtrowanie.

  • 00000 — Powodzenie (połączenie zamknięte normalnie)
  • 00001–00009 — Błędy uwierzytelniania (ACL/nazwa użytkownika/hasło)
  • 00010 — Przekroczono limit ruchu
  • 00011–00019 — Błędy połączenia (socket/bind/connect)
  • 00020–00029 — Błędy wewnętrzne (np. alokacja pamięci)
  • 00030–00039 — Błędy przekierowania proxy HTTP CONNECT
  • 00050–00069 — Błędy przekierowania proxy SOCKS5
  • 00090–00099 — Przekroczenia limitu czasu połączenia / problemy sieciowe
  • 00100 — Nie znaleziono hosta
  • 00200–00299 — Błędy portmappera UDP
  • 00300–00399 — Błędy portmappera TCP
  • 00400–00499 — Błędy proxy SOCKS
  • 00500–00599 — Błędy proxy HTTP

Rozwiązywanie problemów

  • Brak danych — upewnij się, że telemetria jest włączona i że kliknięto Zapisz. Wygeneruj ruch przez dowolny port proxy.
  • Graylog — potwierdź, że wejście GELF UDP działa na porcie 12201 i że zapora sieciowa zezwala na ruch UDP 12201.
  • SigNoz — punkt końcowy musi zawierać port 4318 i być osiągalny przez HTTPS. Zweryfikuj klucz pozyskiwania i region obszaru roboczego.

Sprawdź, czy wszystko działa

  • Graylog — wyszukaj service_name:xproxy-logs i sprawdź pola wiadomości w prawym panelu.
  • SigNoz — w Eksploratorze logów filtruj według dokładnie skonfigurowanej nazwy usługi, np. service.name = "xproxy-region-a". Możesz też wyczyścić filtry, aby zobaczyć wszystkie logi i potwierdzić pozyskiwanie; otwórz dowolny wiersz, aby zobaczyć atrybuty.

FAQ

Jak zweryfikować, że logi są strumieniowane?

Skorzystaj z sekcji Sprawdź, czy wszystko działa powyżej: w Graylog wyszukaj service_name:xproxy-logs; w SigNoz otwórz Eksplorator logów i filtruj według service.name.

Jak rozróżniać urządzenia lub regiony?

Ustaw Identyfikator hosta dla każdego serwera i Nazwę usługi dla każdego regionu lub klastra. Te etykiety pojawiają się w każdym logu.

Dlaczego pole proxy_user jest puste?

Prawdopodobnie używasz białej listy IP; nazwa użytkownika uwierzytelniania nie jest obecna.

Jaka jest różnica między CONNECT a ACCESS?

CONNECT to nawiązywanie tunelu; ACCESS to żądanie HTTP przez proxy do miejsca docelowego.

Jak mogę alertować o błędach?

Utwórz regułę na error_code != "00000" w oknie czasowym; grupuj według service_name lub modem_position, aby wskazać źródło.