️ Apache Kafka

If you like this project, consider supporting me on Buy Me a Coffee ☕️

Kafka Sysadmin Cheatsheet

Description: Apache Kafka is a distributed event streaming platform capable of handling trillions of events per day. Originally developed at LinkedIn (2011), it is now used for real-time data pipelines, event sourcing, log aggregation, and stream processing. Kafka 3.3+ supports KRaft mode (no Zookeeper dependency). Apache Kafka — это распределённая платформа потоковой передачи событий, способная обрабатывать триллионы событий в день. Kafka 3.3+ поддерживает режим KRaft (без зависимости от Zookeeper).

Status: Actively maintained by Apache/Confluent. Alternatives: Apache Pulsar (multi-tenancy, tiered storage), RabbitMQ (traditional message broker), NATS (lightweight, cloud-native), Amazon Kinesis (AWS-managed). Role: Sysadmin / DevOps Version: 2.8+ (Zookeeper/KRaft modes noted where applicable)


📚 Table of Contents / Содержание

  1. Installation & Configuration
  2. Core Management
  3. Sysadmin Operations
  4. Security
  5. Backup & Restore
  6. Troubleshooting & Tools
  7. Logrotate Configuration

1. Installation & Configuration / Установка и конфигурация

Systemd Service Unit / Юнит Systemd

File: /etc/systemd/system/kafka.service

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=network.target zookeeper.service

[Service]
Type=simple
User=kafka
Group=kafka
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
Environment="KAFKA_HEAP_OPTS=-Xmx1G -Xms1G"
# JMX Port for monitoring / Порт JMX для мониторинга
Environment="JMX_PORT=9999"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Essential server.properties Settings / Основные настройки

File: /opt/kafka/config/server.properties

# Valid broker id (unique) / Уникальный ID брокера
broker.id=1

# Listeners / Слушатели
listeners=PLAINTEXT://<IP>:9092
advertised.listeners=PLAINTEXT://<HOST>:9092

# Zookeeper connection / Подключение к Zookeeper
zookeeper.connect=<IP1>:2181,<IP2>:2181,<IP3>:2181/kafka

# Log data directories / Директории для логов (данных)
log.dirs=/var/lib/kafka/data

# Auto topic creation (Production: false) / Автосоздание топиков (В проде: false)
auto.create.topics.enable=false

# Delete topic enable / Разрешить удаление топиков
delete.topic.enable=true

2. Core Management / Базовое управление

Topics / Топики

# List all topics / Список всех топиков
kafka-topics.sh --bootstrap-server <HOST>:9092 --list

# Create topic / Создать топик
kafka-topics.sh --bootstrap-server <HOST>:9092 --create --topic <TOPIC_NAME> \
  --partitions 3 --replication-factor 2

# Describe topic details / Подробная информация о топике
kafka-topics.sh --bootstrap-server <HOST>:9092 --describe --topic <TOPIC_NAME>

# Delete topic / Удалить топик
kafka-topics.sh --bootstrap-server <HOST>:9092 --delete --topic <TOPIC_NAME>

# Alter topic configuration / Изменить конфигурацию топика
kafka-configs.sh --bootstrap-server <HOST>:9092 --entity-type topics --entity-name <TOPIC_NAME> \
  --alter --add-config retention.ms=86400000

Producers & Consumers / Продюсеры и Консьюмеры

# Console Producer (Input) / Консольный продюсер (Ввод)
kafka-console-producer.sh --bootstrap-server <HOST>:9092 --topic <TOPIC_NAME>
# Type message and press Enter / Введите сообщение и нажмите Enter

# Console Consumer (Output) / Консольный консьюмер (Вывод)
kafka-console-consumer.sh --bootstrap-server <HOST>:9092 --topic <TOPIC_NAME> --from-beginning

# Read last N messages / Прочитать последние N сообщений
kafka-console-consumer.sh --bootstrap-server <HOST>:9092 --topic <TOPIC_NAME> --max-messages 10

3. Sysadmin Operations / Операции сисадмина

Service Management / Управление сервисом

systemctl start kafka    # Start Kafka / Запустить Kafka
systemctl stop kafka     # Stop Kafka / Остановить Kafka
systemctl restart kafka  # Restart Kafka / Перезапустить Kafka
systemctl status kafka   # Status / Статус
journalctl -u kafka -f   # Follow logs / Смотреть логи

Consumer Groups / Группы консьюмеров

# List consumer groups / Список групп консьюмеров
kafka-consumer-groups.sh --bootstrap-server <HOST>:9092 --list

# Describe group (Check lag) / Описание группы (Проверка лага)
kafka-consumer-groups.sh --bootstrap-server <HOST>:9092 --describe --group <GROUP_NAME>

# Reset offsets to latest / Сброс офсетов к последним
kafka-consumer-groups.sh --bootstrap-server <HOST>:9092 --group <GROUP_NAME> \
  --reset-offsets --to-latest --execute --topic <TOPIC_NAME>

JVM & Performance / JVM и Производительность

[!TIP] Heap Size: Start with 6GB-30GB depending on RAM. Do not exceed 32GB (Compressed oops). GC: G1GC is recommended for Kafka.

# Check JVM usage via jstat / Проверка использования JVM через jstat
jstat -gc <PID> 1000

4. Security / Безопасность

ACL Configuration / Настройка ACL

(Requires authorizer.class.name configured in server.properties)

# Add Producer ACL / Добавить ACL для продюсера
kafka-acls.sh --bootstrap-server <HOST>:9092 --add --allow-principal User:<USER> \
  --producer --topic <TOPIC_NAME>

# Add Consumer ACL / Добавить ACL для консьюмера
kafka-acls.sh --bootstrap-server <HOST>:9092 --add --allow-principal User:<USER> \
  --consumer --topic <TOPIC_NAME> --group <GROUP_NAME>

# List ACLs / Список ACL
kafka-acls.sh --bootstrap-server <HOST>:9092 --list

SSL/TLS Basics / Основы SSL/TLS

Locations:

server.properties:

security.inter.broker.protocol=SSL
ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
ssl.keystore.password=<SECRET_KEY>
ssl.key.password=<SECRET_KEY>
ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
ssl.truststore.password=<SECRET_KEY>

5. Backup & Restore / Резервное копирование и восстановление

MirrorMaker (Replication) / Репликация через MirrorMaker

Replicate topics from one cluster to another. / Репликация топиков из одного кластера в другой.

# Run MirrorMaker 2 / Запуск MirrorMaker 2
./bin/connect-mirror-maker.sh mm2.properties

File System Backup / Бэкап файловой системы

Ideally, backup the log.dirs only when Kafka is stopped to ensure consistency. В идеале, делайте бэкап log.dirs только при остановленной Kafka для обеспечения целостности.

# Snapshot logs dir / Снапшот директории логов
tar -czf kafka_data_backup_$(date +%F).tar.gz /var/lib/kafka/data

6. Troubleshooting & Tools / Устранение неполадок и инструменты

Common Issues / Частые проблемы

  1. Under-replicated Partitions / Недореплицированные разделы

    # Check for under-replicated partitions / Проверка на недорепликацию
    kafka-topics.sh --bootstrap-server <HOST>:9092 --describe --under-replicated-partitions
  2. Controller log errors / Ошибки в логах контроллера Check server.log and controller.log. Ensure Zookeeper is stable. Проверьте server.log и controller.log. Убедитесь, что Zookeeper стабилен.

  3. "Leader Not Available" / "Лидер недоступен" Usually means the broker hosting the leader partition is down. Обычно означает, что брокер с лидер-разделом упал.

Diagnostic Tools / Инструменты диагностики


[!WARNING] Keep delete.topic.enable=true with caution in production! Будьте осторожны с delete.topic.enable=true в продакшене!


7. Logrotate Configuration / Конфигурация Logrotate

/etc/logrotate.d/kafka

/opt/kafka/logs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}

[!NOTE] Kafka manages data log rotation internally via log.retention.hours in server.properties. Kafka управляет ротацией логов данных через log.retention.hours в server.properties.


Official Documentation / Официальная документация

On this page

Kafka Sysadmin Cheatsheet 📚 Table of Contents / Содержание 1. Installation &amp; Configuration / Установка и конфигурация Systemd Service Unit / Юнит Systemd Essential server.properties Settings / Основные настройки 2. Core Management / Базовое управление Topics / Топики Producers &amp; Consumers / Продюсеры и Консьюмеры 3. Sysadmin Operations / Операции сисадмина Service Management / Управление сервисом Consumer Groups / Группы консьюмеров JVM &amp; Performance / JVM и Производительность 4. Security / Безопасность ACL Configuration / Настройка ACL SSL/TLS Basics / Основы SSL/TLS 5. Backup &amp; Restore / Резервное копирование и восстановление MirrorMaker (Replication) / Репликация через MirrorMaker File System Backup / Бэкап файловой системы 6. Troubleshooting &amp; Tools / Устранение неполадок и инструменты Common Issues / Частые проблемы Diagnostic Tools / Инструменты диагностики 7. Logrotate Configuration / Конфигурация Logrotate Official Documentation / Официальная документация