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