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í topicu

Pro vytvoření topicu uveďte název topicu, 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 topicu.

Konfigurace topicu

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 topicu.

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í topicu 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 topicu.

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ý topic

Offset pro dané topic může být smazán ze spotřebitelské skupiny, což znamená, že spotřebitelská skupina bude fakticky odpojena od topicu. 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 topicu.

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

Smazání consumer group

Consumer group pro VŠECHNY topicy mohou být smazány 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 topicu

Změna počtu oddílů

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

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

Nahraďte events\.tenant\.fortigate názvem vašeho topicu.

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 topicu stále není rozpoznán.

Smazání topicu

Téma může být smazáno pomocí následujícího příkazu. Mějte na paměti, že Kafka topicy 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 topicu.

Ř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 topiců, zde ze všech topiců 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 topiců.