GH GambleHub

Rurociągi dziennika: ELK i Loki

1) Dlaczego i kiedy: cele pozyskiwania drewna

Obserwowalność i RCA: przyspieszenie Debaga, pośmiertne, sterowanie SLO/SLA.
Bezpieczeństwo i audyt: ślady dostępu, anomalie, dochodzenia.
Wskaźniki biznesowe: konwersja, przepływ płatności, błędy PSP, zachowanie użytkownika.
Zgodność: przechowywanie, maskowanie PII, polityka retencji, blokada prawna.

Rodzaje dzienników: aplikacja, infrastruktura (kubelet, kube-proxy, CNI, ingress), sieć, audyt, płatność, zdarzenia internetowe, Nginx/Envoy, baza danych.

2) Architektury wysokiego szczebla

Wariant A: ELK

Producenci → Logshipper (Filebeat/Fluent Bit/Vector) → Logstash/Beats wejście → Elasticsearch → Kibana/Алертинz

Wariant B: Loki

Producenci → Promtail/Fluent Bit → Loki dystrybutor/ingester/querier → Grafana/Алертинz

Hybryda

ELK do wyszukiwania pełnych tekstów/facetów, Loki do taniego skalowalnego przechowywania i szybkich pytań podobnych do wykresu; korelacja z metrykami/śladami w Grafanie.

3) Poziomy przepływu i przetwarzania danych

1. Kolekcja: bajtowe pliki ogonowe, dziennik, syslog, pojemniki stdout, HTTP.
2. Wzbogacenie: znormalizowanie znacznika czasu, hosta/podstrona/przestrzeń nazw, (prod/etap), zwolnienie, commit SHA, ślad/span id.
3. Parsing: JSON → pola płaskie; grok/regex; formaty Nginx/Envoy; systemy płatności (kody błędów PSP).
4. Filtrowanie/edycja: cut PII (PAN, CVV, e-mail, adresy), sekrety, żetony.
5. Routing: według najemcy/usługi/poziomu dziennika; gorący/ciepły/zimny; do S3/object przechowywania.
6. Przechowywanie i przechowywanie: Zasady TTL według klasy danych.
7. Dostęp/Analityka/Alerty.

4) ELK: kluczowe rozwiązania

4. 1 Logstash/Beats

Użyj Beats/Fluent Bit na węzłach do łatwego zbierania, Logstash jako centralny ETL (grok, sekcję, mutate, geoip, translate).
Puli Logstash: ingest-ETL, security-ETL, payments-ETL - aby odizolować obciążenia.

4. 2 Elastyczny search

Shading: skupić się na ~ 20-50 GB na odłamek; unikać „wybuchu odłamków”.
Strategia indeksu: 'logs- <najemca> - <service> -RRRR. MM. DD' lub strumienie danych; przewrócenie według rozmiaru/czasu.

ILM (gorący/ciepły/zimny/zamrożony):
  • gorący: SSD, 1-7 dni; ciepło: HDD, 7-30 dni; zimno: objętościowe; zamrożone: minimalny koszt z wolniejszym dostępem.
  • Mapowanie - Pola typu twardego, ograniczenie field ddata i tworzenie pól dynamicznych.
  • Cache i zapytania: filtry według pól słów kluczowych, agregaty - starannie; pin-to-hot do wyszukiwania wysokiej częstotliwości.

4. 3 kibany

Przestrzenie dla wielu najemców.
Zapisane wyszukiwania, obiektyw/TSVB, progi/mierniki alarmowe.
RBAC według wzorców indeksu ('logs-tenant-').

5) Loki: kluczowe decyzje

5. 1 Model etykiety

Etykiety są indeksem Loki. "Użyj niskiej kardynalności: 'cluster', 'namspace', 'app', 'level', 'na', 'lokator'.
Pola o wysokiej kardynalności (uid, request_id) - z rzędu; pobierz '| =', '| json', '| regexp' podczas pytań przez LogQL.

5. 2 Składniki

Promtail: сбовstdout, pliki, dziennikarstwo; parsers (JSON, regex, cri).
Dystrybutor/Ingester/Querier/Query-frontend: skalowanie według roli; buforowanie żądań.
Przechowywanie obiektów (S3/GCS/MinIO) do długoterminowego przechowywania kłód kawałkowych.

5. 3 techniki LogQL

Szybki grep: '{app = „payments”, level =” error”} | = „declined”'

Марсин, JSON: ' {app =” api”} | json | code =” 5xx” | unwrap duration | avg ()'

Korelacja z metrykami: 'rate ({app = „nginx”} | = „200” [5m])'

6) Porównanie ELK vs Loki (w skrócie)

Wyszukiwanie/agregowanie: ELK jest silniejszy w przypadku złożonych zapytań w pełnym tekście i faceted; Loki - grep-like, szybki i tani.
Koszt: Loki jest często tańsze na większych woluminach (przechowywanie obiektów + mniejszy indeks).
Złożoność operacyjna: ELK wymaga dyscypliny w indeksach/ILM, Javu-hips; Loki - dyscypliny etykiet.
Korelacja z metrykami/śladami: Loki integruje się naturalnie ze stosem Grafana/OTel; ELK wie również, jak, ale częściej poprzez integrację.

7) Bezpieczeństwo i zgodność

Wydanie PII na krawędzi (nadawca): maska PAN, e-mail, telefon, adresy, żetony.
TLS w tranzycie, mTLS między agentami i autobusami.
RBAC: indeksy/etykiety dla jednego najemcy; izolacja neimspacji/przestrzeni.
Higiena tajemnic: zmienne środowiskowe bez tajemnic, indywidualni tajni menedżerowie.
Legal Hold: segment/index zamrażania mechanizmu; odpisać raz na sporne okresy.
Usuwanie/zatrzymywanie: Zasady TTL według klasy danych (prod/stateful/payments/audit).
Ścieżki kontroli dostępu do dziennika.

8) Niezawodność i przepustowość

Buforowanie i backpressure: lokalne pliki/dyski dla agentów; wycofuje się z wykładniczym backoff.
Idempotencja: 'ingest _ id'/' log _ d' fields, aby uniknąć duplikatów podczas duplikatów.
HA: minimum 3 węzły dla mistrzów/intestatorów Loki ES; środki antyaffinity ма AZ.
kwoty i limity stawek w podziale na najemców/usługi; ochrona przed wyrębem „burz”.
Schemat poziomu dziennika: „ERROR” ograniczony, „DEBUG” tylko tymczasowo poprzez flagi dynamiczne.

9) Wydajność i dostrajanie

ELK:
  • Hałas JVM 50% RAM (ale ≤ ~ 30-32 GB na węzeł), pamięć podręczna strony jest ważna.
  • Inteligentne przewrócenie (20-50 GB/shard), 'odświeżanie _ odstępu' na indeksy.
  • W Logstash, unikać „ciężkich” grok; jeśli to możliwe, rejestrowanie JSON u źródła.
Loki:
  • Odpowiedni zestaw etykiet jest kluczem do prędkości.
  • Duże kawałki → tańsze przechowywanie, ale droższa pamięć przy spożyciu; saldo.
  • Query-frontend + cache (meme/Redis) dla wielokrotnych żądań.

10) FinOps do dzienników (koszt)

Zmniejszająca się kardynalność pól/etykiet.
Próbkowanie DEBUG i dynamiczne „przełączniki dziennika”.
Obrót: krótkie gorące, długie zimno do obiektu.
Deduplikacja i skonsolidowane wiadomości (partia).
Archiwizacja rzadko używanych dzienników do tanich klas przechowywania.
Deska rozdzielcza wartości: strumienie głośności/danych/etykiety/indeksy/najemcy.

11) Obserwowalność 3-w-1

Identyfikator identyfikacyjny/identyfikator Span-ID każdego dziennika (oprogramowanie pośrednie na bramach i usługach API).
OpenTelemetry: pojedynczy kontekst; eksporterów do Tempo/Jaeger, metryki do Prometeusza/Mimira, dzienniki do Loki/ELK.
Szybkie scenariusze: „alert według metryki → przejdź do odpowiednich dzienników → przejdź do toru”.

12) Wielopoziomowość i izolacja

Izolacja w przestrzeni nazw (etykiety K8s), oddzielne wzory indeksów/etykiety „najemca”.
Separacja wpisów/desek rozdzielczych/retenschna przez najemcę.
Rozliczenie zużycia: objętość spożycia, przechowywanie, żądania.

13) Monitorowanie i SLO dla samego przenośnika

SLO ingest: "99. 9% dzienników dostarczonych

Wyszukiwanie SLO: „zapytania p95 <Y sec”.
Metryki techniczne: głębokość kolejki, rejestry spadków, szybkość przerobu, szybkość błędów parsera, awaria węzła ingester/ES.

14) Typowe programy rozmieszczenia

Zarządzany: Elasticsearch Service/Opensearch, Grafana Cloud Loki.
Hosted : Zestawy Stat dla ES/Loki, anty-powinowactwo do AZ, trwałe woluminy, przechowywanie obiektów.
Agenci krawędzi (aplikacje w regionach): lokalny bufor + kanał TLS do centralnego wlewu.

15) Przykłady konfiguracji

15. 1 Promtail (K8s, CRI JSON)

yaml scrape_configs:
- job_name: kubernetes-pods kubernetes_sd_configs:
- role: pod pipeline_stages:
- cri: {}
- json:
expressions:
level: level msg: message trace: trace_id
- labels:
level:
app:
namespace:
- match:
selector: '{namespace="prod"}'
stages:
- regex:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
- replace:
expression: '(?P<pan>\b[0-9]{12,19}\b)'
replace: '[REDACTED_PAN]'
relabel_configs:
- action: replace source_labels: [__meta_kubernetes_pod_label_app]
target_label: app
- action: replace source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- action: replace source_labels: [__meta_kubernetes_pod_node_name]
target_label: node

15. 2 Logstash (połknięcie i maskowanie)

ruby input {
beats { port => 5044 }
}
filter {
json { source => "message" skip_on_invalid_json => true }
mutate { add_field => { "env" => "%{[kubernetes][labels][env]}" } }
PII mutate {
gsub => [
"message", "\b[0-9]{12,19}\b", "[REDACTED_PAN]",
"message", "(?i)(authorization: Bearer)([A-Za-z0-9\.\-_]+)", "\1[REDACTED_TOKEN]"
]
}
}
output {
elasticsearch {
hosts => ["https://es-hot-1:9200","https://es-hot-2:9200"]
index => "logs-%{[fields][tenant]}-%{[app]}-%{+YYYY. MM. dd}"
ilm_enabled => true ssl => true cacert => "/etc/ssl/certs/ca. crt"
user => "${ES_USER}"
password => "${ES_PASS}"
}
}

16) Tablice ostrzegawcze i rozdzielcze (szablony)

Обибка API: 'rate ({app = „api „, level =” error”} [5m])> threshold' → PagerDuty/Telegram.
5xx splash in Nginx/Envoy; spadek spożycia środków; wzrost wyszukiwania opóźnień.

Deski rozdzielcze:
  • Ilość kłód według usług/najemców.
  • Górne wzory błędów (kod/wyjątek/punkt końcowy).
  • Koszt według klas retencji/przechowywania.

17) Kontrole jakości (log-QA)

Kontrakty na logowanie: format JSON, wymagane pola ('ts',' level ',' service ',' na ',' trace _ id', 'msg').
Linter logs w CI: zakazanie nowych pól o wysokiej kardynalności bez zgody.
Usługi kanaryjskie: generowanie dzienników referencyjnych do wczesnego wykrywania regresji.

18) Częste błędy i anty-wzory

Etykiety Loki o wysokiej kardynalności ('user _ id',' request _ id') → eksplozja pamięci.
Pola dynamiczne w ES bez mapowania → „eksplozja indeksu”.
DEBUG w sprzedaży "na zawsze. "Włącz flagami i z TTL.
Brak rewizji PII.
Jeden wspólny „monolityczny” rurociąg dla wszystkiego - lepsze segmenty według domeny.

19) Plan realizacji (iteracje)

1. MVP: środki + jeden rurociąg (aplikacje), podstawowe deski rozdzielcze, wydanie PII.
2. Rozszerzenie: network/infra-logs, wpisy SLO, korelacja z utworami.
3. FinOps: matryca retencji, raport kosztów, optymalizacja etykiety/indeksu.
4. Multi-najemca: spacje, RBAC, rachunki zużycia.
5. Niezawodność: HA, katastrofy-wiertarki, Legal Hold.

20) Lista kontrolna wprowadzenia do produkcji

  • Format JSON i wymagane pola we wszystkich usługach.
  • Maskowanie PII na/środku spożywczym.
  • Polityka retencji/ILM lub wiadro-cyklu życia.
  • RBAC/miejsca/najemcy.
  • SLO ingest/search i alerts.
  • Dzienniki kanaryjskie i badanie obciążenia.
  • Deski rozdzielcze wartości i sprawozdania dotyczące właścicieli usług.
  • Książki startowe: „co zrobić, jeśli połknięcie spadło/wyszukiwanie powoli/odłamki czerwone”.

21) Mini-FAQ

Co wybrać - ELK lub Loki?

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.