Příkazy¶
Následující příkazy slouží k vytváření, změně a mazá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 event lane, které lze nalézt ve složce /EventLanes
v knihovně.
Požadavky¶
Všechny příkazy by měly být spuštěny z Docker kontejneru Kafka. Je velmi pohodlné vytvořit pomocný dočasný kontejner pro administrativní příkazy.
docker run --network=host --rm -it confluentinc/cp-kafka:<version> bash
Tímto se vytvoří nový Kafka kontejner, který bude odstraněn po vašem odchodu a je vybaven rozhraním příkazového řádku Kafka, které je zdokumentováno zde: Nástroje rozhraní příkazového řádku Kafka (CLI)
Vytvoření tématu¶
Pro vytvoření tématu specifikujte název tématu, počet partition a faktor replikace. Faktor replikace by měl být nastaven na 1 a partition na 6, což je výchozí hodnota pro Kafka témata LogMan.io.
/usr/bin/kafka-topics --bootstrap-server localhost:9092 --create --topic "events.<tenant>.<stream>" --replication-factor 1 --partitions 6
Nahraďte events.<tenant>.<stream>
vaším názvem tématu.
Kafka verze nižší než 7.0
Pro Kafka verze nižší než 7.0 příkaz nepoužívá možnost --bootstrap-server
, ale místo toho používá možnost --zookeeper
. Zde je příkaz pro starší verze Kafka:
/usr/bin/kafka-topics --zookeeper localhost:2181 --create --topic "events.<tenant>.<stream>" --replication-factor 1 --partitions 6
Konfigurace tématu¶
Retence¶
Následující příkaz změní retenci dat pro Kafka téma na 86400000
milisekund, což je 1 den. To znamená, že data starší než 1 den budou odstraněna z Kafka, aby se uvolnilo místo na disku:
/usr/bin/kafka-configs --bootstrap-server localhost:9092 --entity-type topics --entity-name "events.<tenant>.<stream>" --alter --add-config retention.ms=86400000
Nahraďte events.<tenant>.<stream>
vaším názvem tématu.
Info
Všechna Kafka témata v LogMan.io by měla mít nastavenou retenci pro data.
Info
Při úpravě nastavení tématu v Kafka by měly být speciální znaky, jako je tečka (.), escapovány lomítkem (\).
Resetování offsetu spotřebitelské skupiny pro dané téma¶
Pro resetování pozice čtení, nebo offsetu, pro dané ID skupiny (spotřebitelské skupiny) použijte následující příkaz:
/usr/bin/kafka-consumer-groups --bootstrap-server localhost:9092 --group "my-console-client" --topic "events.<tenant>.<stream>" --reset-offsets --to-datetime 2020-12-20T00:00:00.000 --execute
Nahraďte events.<tenant>.<stream>
vaším názvem 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
.
Mazání offsetu spotřebitelské skupiny pro dané téma¶
Offset pro dané téma může být odstraněn ze spotřebitelské skupiny, čímž by byla spotřebitelská skupina efektivně odpojena od samotného 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>.<stream>" --delete-offsets
Nahraďte events.<tenant>.<stream>
vaším názvem tématu.
Nahraďte my-console-client
daným ID skupiny.
Mazání spotřebitelské skupiny¶
Spotřebitelská skupina pro VŠECHNA témata může být odstraněna se svými 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.
Změna tématu¶
Změna počtu partition¶
Následující příkaz zvyšuje počet partition v daném tématu.
/usr/bin/kafka-topics --bootstrap-server localhost:9092 --alter --partitions 6 --topic "events.<tenant>.<stream>"
Nahraďte events.<tenant>.<stream>
vaším názvem tématu.
Specifikujte uzel ZooKeeper
Kafka čte a mění data uložená v ZooKeeperu. Pokud jste nakonfigurovali Kafka tak, aby jeho soubory byly uloženy v konkrétním uzlu ZooKeeper, obdržíte tuto chybu.
Chyba při provádění příkazu tématu: Téma 'events.<tenant>.<stream>' neexistuje, jak se očekávalo
[2024-05-06 10:16:36,207] CHYBA java.lang.IllegalArgumentException: Téma 'events.<tenant>.<stream>' neexistuje, jak se očekávalo
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$)
Přizpůsobte argument --zookeeper
podle potřeby. Např. data Kafka jsou uložena v uzlu kafka
ZooKeeperu:
/usr/bin/kafka-topics --zookeeper lm11:2181/kafka --alter --partitions 6 --topic 'events\.tenant\.fortigate'
Zkuste odstranit escape 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 prosím na paměti, že Kafka témata jsou automaticky vytvářena, pokud jsou do nich produkována/odesílána nová data jakoukoli službou.
/usr/bin/kafka-topics --bootstrap-server localhost:9092 --delete --topic "events.<tenant>.<stream>"
Nahraďte events.<tenant>.<stream>
vaším názvem tématu.
Řešení problémů¶
V ostatních jsou mnohé logy 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é vyhledat 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říchozí logy s atributem "interface"
ze všech event témat.