Přeskočit obsah

Příkazy

Následující příkazy slouží k vytvoření, úpravě a odstranění Kafka témat v prostředí LogMan.io. Všechna Kafka témata spravovaná LogMan.io vedle interních jsou specifikována v deklaracích *.yaml v event lane uvnitř složky /EventLanes v knihovně.

Předpoklady

Všechny příkazy by měly být spouštěny z Docker kontejneru s Kafkou, který lze přistupovat následujícím příkazem:

docker exec -it kafka_container bash

Příkaz využívá Command Line Interface (CLI) pro Kafka, který je dokumentován zde: Kafka Command-Line Interface (CLI) Tools

Vytvoření tématu

Pro vytvoření tématu uveďte název tématu, počet oddílů (partitions) a replikační faktor. Replikační faktor by měl být nastaven na 1 a počet oddílů na 6, což je výchozí hodnota pro Kafka témata v LogMan.io.

/usr/bin/kafka-topics --zookeeper locahost:2181 --create --topic "events.tenant.fortigate" --replication-factor 1 --partitions 6

Nahraďte events.tenant.fortigate názvem vašeho tématu.

Konfigurace tématu

Retence

Následující příkaz změní dobu uchovávání dat pro Kafka téma na 86400000 milisekund, což je 1 den. To znamená, že data starší než 1 den budou z Kafka odstraněna kvůli úsporě úložného prostoru:

/usr/bin/kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name "events\.tenant\.fortigate" --alter --add-config retention.ms=86400000
Nahraďte events\.tenant\.fortigate názvem vašeho tématu.

Info

Všechna Kafka témata v LogMan.io by měla mít nastavenou dobu uchovávání dat.

Info

Při úpravě nastavení tématu v Kafce by měly být speciální znaky jako tečka (.) upraveny lomítkem (\).

Resetování offsetu spotřebitelské skupiny pro dané téma

Pro resetování čtecí pozice, nebo offsetu, pro dané ID skupiny (spotřebitelskou skupinu), použijte následující příkaz:

/usr/bin/kafka-consumer-groups --bootstrap-server localhost:9092  --group "my-console-client"  --topic "events\.tenant\.fortigate"  --reset-offsets --to-datetime 2020-12-20T00:00:00.000 --execute

Nahraďte events\.tenant\.fortigate názvem vašeho tématu.

Nahraďte my-console-client daným ID skupiny.

Nahraďte 2020-12-20T00:00:00.000 časem, na který chcete resetovat čtecí offset.

Hint

Pro resetování skupiny na aktuální offset použijte --to-current místo --to-datetime 2020-12-20T00:00:00.000.

Smazání offsetu spotřebitelské skupiny pro dané téma

Offset pro dané téma může být smazán ze spotřebitelské skupiny, což znamená, že spotřebitelská skupina bude fakticky odpojena od tématu. Použijte následující příkaz:

/usr/bin/kafka-consumer-groups --bootstrap-server localhost:9092  --group "my-console-client"  --topic "events\.tenant\.fortigate" --delete-offsets

Nahraďte events\.tenant\.fortigate názvem vašeho tématu.

Nahraďte my-console-client daným ID skupiny.

Smazání spotřebitelské skupiny

Spotřebitelská skupina pro VŠECHNA témata může být smazána spolu s informacemi o offsetu pomocí následujícího příkazu:

/usr/bin/kafka-consumer-groups --bootstrap-server localhost:9092 --delete --group my-console-client

Nahraďte my-console-client daným ID skupiny.

Úprava tématu

Změna počtu oddílů

Následující příkaz zvýší počet oddílů v rámci daného tématu.

/usr/bin/kafka-topics --zookeeper locahost:2181 --alter -partitions 6 --topic "events\.tenant\.fortigate"

Nahraďte events\.tenant\.fortigate názvem vašeho tématu.

Specifikujte uzel ZooKeeper

Kafka čte a mění data uložená v ZooKeeper. Pokud jste nakonfigurovali Kafku tak, že její soubory jsou uloženy v konkrétním uzlu ZooKeeper, obdržíte tuto chybu.

Error while executing topic command : Topic 'events.tenant.fortigate' does not exist as expected
[2024-05-06 10:16:36,207] ERROR java.lang.IllegalArgumentException: Topic 'events.tenant.fortigate' does not exist as expected
at kafka.admin.TopicCommand$.kafka$admin$TopicCommand$$ensureTopicExists(TopicCommand.scala:539)
at kafka.admin.TopicCommand$ZookeeperTopicService.alterTopic(TopicCommand.scala:408)
at kafka.admin.TopicCommand$.main(TopicCommand.scala:66)
at kafka.admin.TopicCommand.main(TopicCommand.scala)
(kafka.admin.TopicCommand$)

Upravte podle toho argument --zookeeper. Například data Kafka jsou uložena v uzlu kafka ZooKeeper:

/usr/bin/kafka-topics --zookeeper lm11:2181/kafka --alter --partitions 6 --topic 'events\.tenant\.fortigate'

Zkuste odstranit únikové znaky (/), pokud název tématu stále není rozpoznán.

Smazání tématu

Téma může být smazáno pomocí následujícího příkazu. Mějte na paměti, že Kafka témata jsou automaticky vytvářena, pokud jsou na ně jakoukoli službou produkována/odesílána nová data.

/usr/bin/kafka-topics --zookeeper locahost:2181 --delete --topic "events\.tenant\.fortigate"

Nahraďte events\.tenant\.fortigate názvem vašeho tématu.

Řešení problémů

Je zde mnoho logů v jiných a nemohu najít ty s atributem "interface"

Kafka Console Consumer může být použit k získání událostí z více témat, zde ze všech témat začínajících na events..

Dále je možné grepovat pole v dvojitých uvozovkách:

/usr/bin/kafka-console-consumer --bootstrap-server localhost:9092 --whitelist "events.*" | grep '"interface"'

Tento příkaz vám poskytne všechny přicházející logy s atributem "interface" ze všech event témat.