Přeskočit obsah

Nastavení retenční politiky Kafka

TeskaLabs LogMan.io zajišťuje, že nastavení Kafka témat jsou udržována v určitých mezích.

  • Topicy pro event lane jsou automaticky spravovány LogMan.io Event Lane Manager. Jejich retenční doba může být nastavena globálně.
  • Retenci jakéhokoli Kafka topicu lze změnit ručně v Kafce.

Info

Následující řádky jsou relevantní pouze pro verze TeskaLabs LogMan.io starší než v25.28.

Od verze v25.28 je retenční politika pro topicy event lane automaticky spravována LogMan.io Event Lane Manager a může být nastavena v profilu Event Lane. Přečtěte si více o tom v profilu event lane.

Topicy pro event lane

LogMan.io Event Lane Manager automaticky nastavuje retenční politiku pro topicy event lane received.<tenant>.<stream>, events.<tenant>.<stream> a others.<tenant>. Je možné nastavit retenci globálně (pro všechny topicy) v konfiguraci:

/Site/model.yaml
services:
  lmio-elman:
    asab:
      config:
        kafka:
          retention.ms_optimal: ...  # výchozí: 3 dny
          retention.ms_max: ...  # výchozí: 7 dní
          retention.ms_min: ...  # výchozí: 1 den (24 hodin)
lmio-elman.conf
[kafka]
retention.ms_optimal=...  ; výchozí: 3 dny
retention.ms_max=...  ; výchozí: 7 dní
retention.ms_min=...  ; výchozí: 1 den (24 hodin)

Když je vytvořen nový topic pro datovou linku, jeho retence je nastavena na retention.ms_optimal. Poté může být retence každého tématu event lane změněna ručně, ale musí být vyšší než retention.ms_min a nižší než retention.ms_max, jinak se automaticky vrátí na retention.ms_optimal.

Kontrola sanity

Warning

Následující řádky jsou relevantní pro neautomatizované nasazení TeskaLabs LogMan.io bez LMIO Event Lane Manager.

Pro instalace, kde není spuštěn LMIO Event Lane Manager, existuje podpůrný mechanismus, který nastavuje retenci pro topicy event lane.

LMIO Receiver kontroluje všechna Kafka topicy received.<tenant>.<stream> a zajišťuje, že jejich retence je mezi nakonfigurovanými minimem a maximem. Výchozí minimální retence je 12 hodin a výchozí maximum je 7 dní. Pokud je retence menší, je nastavena na nakonfigurovanou minimální hodnotu. Pokud je retence větší, je nastavena na nakonfigurovanou maximální hodnotu.

Můžete změnit konfiguraci v konfiguračním souboru LMIO Receiver. Použijte čas v milisekundách:

[kafka:sanity]
min.retention.ms=...  # výchozí: 12 hodin
max.retention.ms=...  # výchozí: 7 dní

LMIO Depositor implementuje stejnou logiku, používající stejnou konfiguraci, ovlivňující topicy events.<tenant>.<stream> a others.<tenant> a poskytující stejné výchozí hodnoty.

Mějte na paměti, že retenci lze řídit na základě jak stáří logů v frontě, tak velikosti topicy (v bajtech). Komponenty LogMan.io nekontrolují konfiguraci retence na základě velikosti indexu.

Nastavení retenční doby v Kafce

Retenci každého Kafka topiku lze změnit v Kafce.

Každý Docker kontejner Kafka je vybaven nástroji pro příkazový řádek Kafka, které lze použít.

  1. Vstupte do shellu Docker kontejneru Kafka:

    docker exec -it kafka-1 bash
    
  2. Zkontrolujte, že téma existuje a je dostupné:

    /usr/bin/kafka-topics --bootstrap-server localhost:9092 --list | grep "<topic>"
    

    (Nahraďte <topic> názvem vašeho topiku.)

  3. Nastavte retenci pro jednotlivé topiky pomocí příkazu:

    /usr/bin/kafka-configs --bootstrap-server localhost:9092 \
    --entity-type topics --entity-name "<topic>" \
    --alter --add-config retention.ms=86400000
    

    (Nahraďte <topic> názvem vašeho topicu a retention.ms vaší hodnotou.)

Proč milisekundy?

Možná se ptáte, proč používáme milisekundy všude, kde konfigurujeme retenci Kafky. Proč prostě nepoužít hodiny nebo dny?

Ve skutečnosti existují konfigurační možnosti pro nastavení retence pomocí hodin nebo dní. Ale volba retention.ms má vždy nejvyšší prioritu před všemi ostatními možnostmi. Abychom předešli možným konfliktům s jinými službami, rozhodli jsme se používat milisekundy, což je také doporučeno společností Confluent.