Как защитить и контролировать Kafka

0 Акции
0
0
0
0

Введение

Apache Kafka поддерживает различные протоколы безопасности и процессы аутентификации, чтобы гарантировать, что к кластеру могут подключаться только авторизованные сотрудники и приложения. В конфигурации по умолчанию Kafka предоставляет доступ всем, но проверки безопасности не включены. Хотя это полезно для исследований и разработок, производственные развертывания должны быть надлежащим образом защищены, прежде чем они будут доступны извне. Кроме того, такие среды необходимо контролировать для обеспечения бесперебойной работы и предотвращения потенциальных сбоев.

В этом руководстве вы усовершенствуете свою установку Kafka, настроив шифрование трафика TLS и аутентификацию SASL для обеспечения стандартного процесса входа в систему с использованием имени пользователя и пароля. Вы узнаете, как настроить предоставленные скрипты производителя и потребителя для подключения к защищенному кластеру. Затем вы научитесь экспортировать метрики Kafka и визуализировать их в Grafana. Вы также узнаете, как получить доступ к узлам кластера и темам через простой в использовании веб-интерфейс, предоставляемый AKHQ.

Предпосылки
  • Для работы требуется виртуальный сервер (дроплет) с объемом оперативной памяти не менее 4 ГБ и двумя процессорами. Для Ubuntu Server следуйте инструкциям по первоначальной настройке сервера.
  • Apache Kafka установлен и настроен на вашем Droplet. Инструкции по настройке см. в руководстве «Начало работы с Kafka». Вам нужно выполнить только шаги 1 и 2.
  • Разберитесь, как Java управляет ключами и сертификатами. Для получения дополнительной информации см. руководство «Основы Java Keytool: работа с хранилищами ключей Java».
  • Grafana установлена на вашем сервере или локальном компьютере. Инструкции по установке и обеспечению безопасности Grafana в Ubuntu см. в руководстве. Вам нужно выполнить только первые четыре шага.
  • Полностью зарегистрированное доменное имя указывает на ваш виртуальный сервер (дроплет). В этом руководстве используется your_domain, и оно указывает на то же доменное имя, которое требуется для Grafana. Вы можете приобрести доменное имя на Namecheap, получить доменное имя бесплатно на Freenom или воспользоваться услугами любого регистратора доменов по вашему выбору.

Шаг 1 – Настройка протоколов безопасности Kafka

В стандартной конфигурации Kafka позволяет любому пользователю подключаться к ней без проверки источника запроса. Это означает, что ваш кластер по умолчанию доступен всем. Хотя это хорошо для тестирования, поскольку снижает нагрузку на обслуживание локальных машин и частных установок, в производственных и публичных установках Kafka следует включить функции безопасности для предотвращения несанкционированного доступа.

На этом этапе вы настроите свой брокер Kafka для использования TLS-шифрования для трафика между брокером и потребителями. Вы также настроите SASL в качестве платформы аутентификации для подключения к кластеру.

Генерация и хранение TLS-сертификатов

Для генерации сертификатов и ключей, необходимых для настройки TLS, вы будете использовать скрипт, доступный в репозитории Confluent Platform Security Tools. Сначала клонируйте его в свою домашнюю директорию, выполнив следующую команду:

git clone https://github.com/confluentinc/confluent-platform-security-tools.git ~/kafka-ssl

Перейти к нему:

cd ~/kafka-ssl

Используемый вами скрипт называется kafka-generate-ssl-automatic.sh и запрашивает у вас страну, штат, организацию и город в качестве переменных окружения. Эти параметры используются для генерации сертификатов, но их содержимое не имеет значения. Вам также необходимо указать пароль, который используется для защиты создаваемого хранилища доверия и ключей Java.

Чтобы установить необходимые переменные среды, выполните следующие команды, заменив your_tls_password на желаемое значение:

export COUNTRY=US
export STATE=NY
export ORGANIZATION_UNIT=SE
export CITY=New York
export PASSWORD=your_tls_password

Обратите внимание, что пароль должен состоять как минимум из шести символов.

Предоставьте скрипту права на выполнение, выполнив следующую команду:

chmod +x kafka-generate-ssl-automatic.sh

Затем запустите программу, чтобы сгенерировать необходимые файлы:

./kafka-generate-ssl-automatic.sh

Будет получено много выходных данных. После завершения перечислите файлы в указанной директории:

ls -l

Вывод должен выглядеть так:

Outputrw-rw-r-- 1 kafka kafka 964 May 13 09:33 README.md
-rw-rw-r-- 1 kafka kafka 1063 May 13 09:34 cert-file
-rw-rw-r-- 1 kafka kafka 1159 May 13 09:34 cert-signed
-rwxrw-r-- 1 kafka kafka 6016 May 13 09:33 kafka-generate-ssl-automatic.sh
-rwxrwxr-x 1 kafka kafka 7382 May 13 09:33 kafka-generate-ssl.sh
drwxrwxr-x 2 kafka kafka 4096 May 13 09:34 keystore
-rw-rw-r-- 1 kafka kafka 184929 May 13 09:33 single-trust-store-diagram.pages
-rw-rw-r-- 1 kafka kafka 36980 May 13 09:33 single-trust-store-diagram.pdf
drwxrwxr-x 2 kafka kafka 4096 May 13 09:34 truststore

Вы увидите, что сертификат, доверенное хранилище и хранилище ключей успешно созданы.

Настройка Kafka для TLS и SASL

Теперь, когда у вас есть необходимые файлы для включения шифрования TLS, вы настроите Kafka для их использования и аутентификации пользователей с помощью SASL.

Вам потребуется изменить файл server.properties в разделе config/kraft установочного каталога. Вы установили его в Kafka в свой домашний каталог в рамках предварительных условий. Перейдите к нему, выполнив команду:

cd ~/kafka

Откройте основной конфигурационный файл для редактирования:

nano config/kraft/server.properties

Найдите следующие строки:

...
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
# Name of listener used for communication between brokers.
inter.broker.listener.name=PLAINTEXT
# Listener name, hostname and port the broker will advertise to clients.
# If not set, it uses the value for "listeners".
advertised.listeners=PLAINTEXT://localhost:9092

Измените их следующим образом, заменив PLAINTEXT на BROKER:

...
listeners=BROKER://:9092,CONTROLLER://:9093
# Name of listener used for communication between brokers.
inter.broker.listener.name=BROKER
# Listener name, hostname and port the broker will advertise to clients.
# If not set, it uses the value for "listeners".
advertised.listeners=BROKER://localhost:9092

Затем найдите строку listener.security.protocol.map:

# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

Сопоставьте BROKER с SASL_SSL, внедрив определение со значением:

# Maps listener names to security protocols, the default is for them to be the same. See the config documentation for more details
listener.security.protocol.map=BROKER:SASL_SSL,CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

Здесь вы добавили определение псевдонима BROKER, которое использовали в слушателях, и сопоставили его с SASL_SSL, что указывает на необходимость использования как SSL (прежнее название TLS), так и SASL.

Затем перейдите в конец файла и добавьте следующие строки:

ssl.truststore.location=/home/kafka/kafka-ssl/truststore/kafka.truststore.jks
ssl.truststore.password=your_tls_password
ssl.keystore.location=/home/kafka/kafka-ssl/keystore/kafka.keystore.jks
ssl.keystore.password=your_tls_password
ssl.key.password=your_tls_password
ssl.client.auth=required
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.controller.protocol=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=false
super.users=User:admin

Сначала вы определяете местоположения и пароли для созданных вами хранилищ доверия и ключей. Вы устанавливаете параметр ssl.client.auth в значение required, указывая Kafka отклонять любые соединения, не имеющие действительного TLS-сертификата. Затем вы устанавливаете механизм SASL в значение PLAIN, что включает его. PLAIN отличается от PLAINTEXT тем, что требует использования зашифрованного соединения, и оба механизма основаны на комбинации имени пользователя и пароля.

Наконец, вы устанавливаете StandardAuthorizer в качестве класса авторизатора, который проверяет учетные данные по файлу конфигурации, который вы создадите в ближайшее время. Затем вы устанавливаете параметр allow.everyone.if.no.acl.found в значение false, ограничивая доступ для подключений с неподходящими учетными данными. Вы также выбираете пользователя admin в качестве суперпользователя, поскольку для выполнения административных задач в кластере должен быть хотя бы один такой пользователь.

Не забудьте заменить your_tls_password на пароль, который вы ввели в скрипт в предыдущем разделе, затем сохраните и закройте файл.

Теперь, когда Kafka настроена, необходимо создать файл, определяющий разрешенные учетные данные для подключения. Kafka поддерживает Java Authentication and Authorization Service (JAAS), фреймворк для реализации рабочих процессов аутентификации, и принимает определения учетных данных в формате JAAS.

Вы будете хранить их в файле kafka-server-jaas.conf в папке config/kraft. Создайте и откройте его для редактирования, выполнив следующую команду:

nano config/kraft/kafka-server-jaas.conf

Добавьте следующие строки:

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin"
user_admin="admin";
};

Имя пользователя и пароль определяют основные учетные данные, которые будут использоваться для связи между брокерами в кластере при наличии нескольких узлов. Строка user_admin определяет пользователя с именем пользователя admin и паролем admin, который может подключаться к брокеру извне. После завершения сохраните и закройте файл.

Kafka необходимо знать о файле kafka-server-jaas.conf, поскольку он завершает основную конфигурацию. Вам нужно изменить конфигурацию службы kafka systemd и передать на неё ссылку. Выполните следующую команду, чтобы открыть службу для редактирования:

sudo systemctl edit --full kafka

Передав параметр –full, вы получите доступ ко всему содержимому сервиса. Найдите строку ExecStart:

...
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/kraft/server.properties > /home/kafka/kafka/kafka.log 2>&1'
...

Добавьте следующую строку над ней, чтобы получилось вот так:

...
User=kafka
Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/home/kafka/kafka/config/kraft/kafka-server-jaas.conf"
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/kraft/server.properties > /home/kafka/kafka/kafka.log 2>&1'
...

Это установит параметр java.security.auth.login.config в конфигурации на путь к файлу конфигурации JAAS, отделив его от основной конфигурации Kafka. После завершения сохраните и закройте файл. Перезагрузите определение сервиса, выполнив команду:

sudo systemctl daemon-reload

Затем перезапустите Kafka:

sudo systemctl restart kafka

Теперь вы настроили шифрование TLS и аутентификацию SASL для вашей установки Kafka, и теперь вы узнаете, как подключиться к ней с помощью предоставленных консольных скриптов.

Шаг 2 – Подключитесь к защищенному кластеру

На этом этапе вы узнаете, как подключиться к защищенному кластеру Kafka, используя конфигурационные файлы JAAS с помощью предоставленных консольных скриптов.

Предоставляемые скрипты для управления темами создания и потребления сообщений также используют Java внутри и, следовательно, принимают конфигурацию JAAS, описывающую расположение хранилищ доверенных сертификатов и ключей, а также аутентификацию SASL.

Вы сохраните эту конфигурацию в файле client-jaas.conf в своей домашней директории. Создайте и откройте его для редактирования:

nano ~/client-jaas.conf

Добавьте следующие строки:

security.protocol=SASL_SSL
ssl.truststore.location=/home/kafka/kafka-ssl/truststore/kafka.truststore.jks
ssl.truststore.password=your_tls_password
ssl.keystore.location=/home/kafka/kafka-ssl/keystore/kafka.keystore.jks
ssl.keystore.password=your_tls_password
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
ssl.endpoint.identification.algorithm=

Как и прежде, вы устанавливаете протокол SASL_SSL и указываете пути и пароль для созданных вами хранилищ ключей и доверенных сертификатов. Затем вы устанавливаете механизм SASL в режим PLAIN и указываете учетные данные для пользователя admin. Вы явно очищаете параметр ssl.endpoint.identification.algorithm, чтобы избежать проблем с подключением, поскольку начальные скрипты устанавливают имя хоста машины, на которой они работают, в качестве конечной точки сертификата, что может быть некорректно.

Замените your_tls_password соответствующим значением, затем сохраните и закройте файл.

Для передачи этого файла скриптам можно использовать параметр --command-config. Создайте новую тему в кластере с помощью следующей команды:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic new_topic --command-config ~/client-jaas.conf

Команда должна выполниться успешно:

Output...
Created topic new_topic.

Чтобы убедиться в его создании, выведите список всех потоков в кластере, выполнив следующую команду:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --list --command-config ~/client-jaas.conf

В результате будет показано, что новая тема (new_topic) существует:

Output__consumer_offsets
new_topic
...

В этом разделе вы настроили свою установку Kafka для использования шифрования TLS для трафика и SASL для аутентификации с помощью комбинации имени пользователя и пароля. Теперь вы узнаете, как экспортировать различные метрики Kafka через JMX с помощью Prometheus.

Шаг 3 – Мониторинг метрик Kafka JMX с помощью Prometheus

В этом разделе вы будете использовать Prometheus для сбора метрик Kafka и выполнения запросов к ним в Grafana. Для этого потребуется настроить экспортер JMX для Kafka и подключить его к Prometheus.

[Java Management Extensions (JMX) — это фреймворк для Java-приложений, который позволяет разработчикам собирать общие и пользовательские метрики о производительности приложения во время выполнения в стандартном формате. Поскольку Kafka написана на Java, она поддерживает протокол JMX и предоставляет через него свои пользовательские метрики, такие как состояние тем и брокеров.].

Настройка Kafka и Prometheus

Прежде чем продолжить, вам необходимо установить Prometheus. На машинах с Ubuntu это можно сделать с помощью apt. Чтобы получить доступ к его репозиториям, выполните команду:

sudo apt update

Затем установите Prometheus:

sudo apt install prometheus -y

Для других платформ, пожалуйста, следуйте инструкциям по установке на официальном сайте.

После установки необходимо добавить библиотеку экспортера JMX для Prometheus в вашу установку Kafka. Перейдите на страницу версий и выберите последнюю версию, в названии которой присутствует javaagent. На момент написания этой статьи последней доступной версией была 0.20.0. Используйте следующую команду, чтобы загрузить её в каталог libs/, где установлена Kafka:

curl https://repo.maven.apache.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.20.0/jmx_prometheus_javaagent-0.20.0.jar -o ~/kafka/libs/jmx_prometheus_javaagent.jar

Теперь Kafka будет выбирать библиотеку экспорта JMX.

Перед включением экспортера необходимо указать, какие метрики он будет передавать в Prometheus. Эту конфигурацию следует сохранить в файле jmx-exporter.yml в папке config/ вашей установки Kafka. Проект экспортера JMX предоставляет подходящую конфигурацию по умолчанию, поэтому выполните следующую команду, чтобы сохранить её как jmx-exporter.yml в папке config/ вашей установки Kafka:

curl https://raw.githubusercontent.com/prometheus/jmx_exporter/main/example_configs/kafka-2_0_0.yml -o ~/kafka/config/jmx-exporter.yml

Далее необходимо изменить службу Kafka systemd, чтобы включить экспортер. Для этого нужно изменить переменную среды KAFKA_OPTS, указав в ней экспортер и его конфигурацию. Для редактирования службы выполните следующую команду:

sudo systemctl edit --full kafka

Измените строку "Окружение" следующим образом:

Environment="KAFKA_OPTS=-Djava.security.auth.login.config=/home/kafka/kafka/config/kraft/kafka-server-jaas.conf -javaagent:/home/kafka/kafka/libs/jmx_prometheus_javaagent.jar=7075:/home/kafka/kafka/config/jmx-exporter.yml"

Здесь вы используете аргумент -javaagent для инициализации экспортера JMX с его конфигурацией.

После завершения сохраните и закройте файл, затем запустите Kafka, выполнив команду:

sudo systemctl restart kafka

Через минуту проверьте, запущен ли экспортер JMX, запросив информацию о том, используется ли порт 7075:

sudo ss -tunelp | grep 7075

Вывод должен выглядеть так:

Outputtcp LISTEN 0 3 *:7075 *:* users:(("java",pid=6311,fd=137)) uid:1000 ino:48151 sk:8 cgroup:/system.slice/kafka.service v6only:0 <->

Эта строка указывает на то, что порт 7075 используется Java-процессом, запущенным службой Kafka, которая указывает на экспортер JMX.

Теперь вам нужно настроить Prometheus для мониторинга экспортированных метрик JMX. Основной конфигурационный файл находится по адресу /etc/prometheus/prometheus.yml, поэтому откройте его для редактирования:

sudo nano /etc/prometheus/prometheus.yml

Найдите следующие строки:

...
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
scrape_timeout: 5s
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets: ['localhost:9100']

В разделе scrape_configs, определяющем, за какими конечными точками должен следить Prometheus, добавьте новый раздел для сбора метрик Kafka:

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
scrape_timeout: 5s
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: node
# If prometheus-node-exporter is installed, grab stats about the local
# machine by default.
static_configs:
- targets: ['localhost:9100']
- job_name: 'kafka'
static_configs:
- targets: ['your_domain:7075']

В задании Kafka есть целевой объект, указывающий на конечную точку экспорта JMX.

Не забудьте заменить your_domain на имя вашего домена, затем сохраните и закройте файл. После этого запустите Prometheus, выполнив команду:

sudo systemctl restart prometheus

В браузере перейдите по адресу порта 9090 вашего домена. Вы получите доступ к интерфейсу Prometheus. В разделе «Статус» нажмите «Цели», чтобы отобразить список заданий:

Обратите внимание, что Prometheus взял на себя задачу Kafka и начал собирать её метрики. Теперь вы узнаете, как получить к ним доступ в Grafana.

Запрос метрик в Grafana

В качестве предварительных условий вы установили Grafana на свой Droplet и разместили его на вашем домене your_domain. Перейдите на него в браузере, в разделе «Подключения» на боковой панели нажмите «Добавить новое подключение», затем введите Prometheus в поле поиска.

Щелкните на Prometheus, затем нажмите кнопку «Добавить новый источник данных» в правом верхнем углу. Вам будет предложено ввести адрес экземпляра Prometheus:

Введите http://your_domain_name:9090, заменив фактическое имя вашего домена, затем прокрутите вниз и нажмите «Сохранить и проверить». Вы должны получить сообщение об успешном завершении:

В Grafana добавлено подключение к Prometheus. Нажмите «Explore» на боковой панели, и вам будет предложено выбрать метрику. Вы можете ввести kafka_, чтобы отобразить все метрики, относящиеся к кластеру, как показано ниже:

Например, выберите метрику kafka_log_log_size, которая показывает размер внутреннего дискового журнала в каждом разделе, затем нажмите «Выполнить запрос» в правом верхнем углу. Вы увидите полученные размеры с течением времени для каждой из доступных тем:

К этому моменту вы настроили метрики экспортера JMX, предоставляемые Kafka, и сконфигурировали Prometheus для их сбора. Затем вы подключились к нему из Grafana и выполнили запрос к метрикам Kafka. Теперь вы узнаете, как управлять кластером Kafka с помощью веб-интерфейса.

Шаг 4 – Управление кластерами Kafka с помощью AKHQ

На этом этапе вы узнаете, как настроить и использовать AKHQ, веб-приложение для управления кластерами Kafka. Оно позволяет перечислять и изменять темы, разделы, группы потребителей и параметры конфигурации, а также отправлять и получать сообщения из тем из одного места.

Исполняемый файл и его конфигурационный файл следует хранить в директории с именем akhq. Создайте её в своей домашней директории, выполнив следующую команду:

mkdir ~/akhq

Перейти к нему:

cd ~/akhq

В браузере перейдите на официальную страницу релизов и скопируйте ссылку на последний JAR-файл. На момент написания статьи последняя версия была 0.24.0. Выполните следующую команду, чтобы загрузить её в свою домашнюю директорию:

curl -L https://github.com/tchiotludo/akhq/releases/download/0.24.0/akhq-0.24.0-all.jar -o ~/akhq/akhq.jar

Теперь вы скачали AKHQ и готовы настроить его конфигурацию для подключения к вашему кластеру. Сохраните её в файле с именем akhq-config.yml. Создайте и откройте его для редактирования, выполнив следующую команду:

nano ~/akhq/akhq-config.yml

Добавьте следующие строки:

akhq:
connections:
localhost-sasl:
properties:
bootstrap.servers: "localhost:9092"
security.protocol: SASL_SSL
sasl.mechanism: PLAIN
sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin";
ssl.truststore.location: /home/kafka/kafka-ssl/truststore/kafka.truststore.jks
ssl.truststore.password: secret
ssl.keystore.location: /home/kafka/kafka-ssl/keystore/kafka.keystore.jks
ssl.keystore.password: secret
ssl.key.password: secret
ssl.endpoint.identification.algorithm: ""

Это базовая конфигурация AKHQ, которая задает кластер по адресу localhost:9092 с указанием параметров SASL и TLS. Поддерживается также одновременное подключение нескольких кластеров, поскольку вы можете определить столько соединений, сколько вам нужно. Это делает AKHQ универсальным инструментом для управления Kafka. После завершения сохраните и закройте файл.

Далее необходимо определить службу systemd для запуска AKHQ в фоновом режиме. Службы systemd можно запускать, останавливать и перезапускать непрерывно.

Конфигурацию службы следует хранить в файле с именем code-server.service в каталоге /lib/systemd/system, где systemd хранит свои службы. Создайте его с помощью текстового редактора:

sudo nano /etc/systemd/system/akhq.service

Добавьте следующие строки:

[Unit]
Description=akhq
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c 'java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar'
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

Сначала вы указываете описание службы. Затем в поле [Служба] вы определяете тип службы (simple означает, что команда должна быть выполнена просто) и указываете команду, которая будет выполнена. Вы также указываете, что пользователь, от имени которого будет выполняться служба, — kafka, и что служба должна автоматически перезапускаться при завершении работы.

В разделе [Установка] система получает указание запустить эту службу, когда вы сможете войти на свой сервер. После завершения сохраните и закройте файл.

Загрузите настройки службы, выполнив следующую команду:

sudo systemctl daemon-reload

Запустите службу AKHQ, выполнив следующую команду:

sudo systemctl start akhq

Затем проверьте правильность запуска, просмотрев его статус:

sudo systemctl status akhq

Вывод должен выглядеть так:

Output● akhq.service - akhq
Loaded: loaded (/etc/systemd/system/akhq.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2024-05-15 07:37:10 UTC; 3s ago
Main PID: 3241 (sh)
Tasks: 21 (limit: 4647)
Memory: 123.3M
CPU: 4.474s
CGroup: /system.slice/akhq.service
├─3241 /bin/sh -c "java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar"
└─3242 java -Dmicronaut.config.files=/home/kafka/akhq/akhq-config.yml -jar /home/kafka/akhq/akhq.jar

AKHQ теперь работает в фоновом режиме. По умолчанию он отображается на порту 8080. В браузере перейдите на свой домен, используя этот порт, чтобы получить к нему доступ. Вы увидите стандартный вид, отображающий список тем:

Для просмотра подробной информации вы можете дважды щелкнуть по строке с темой в таблице:

AKHQ позволяет просматривать сообщения в теме, а также разделы, группы потребителей и их конфигурацию. Вы также можете очистить или скопировать тему, используя кнопки в правом нижнем углу.

Поскольку поле new_topic пустое, нажмите кнопку «Создать в тему», которая откроет интерфейс для выбора параметров нового сообщения:

AKHQ автоматически заполнит имя топика. В поле «Значение» введите Hello World!, затем нажмите «Создать». Сообщение будет отправлено в Kafka, и вы увидите его на вкладке «Данные»:

Поскольку содержимое сообщения может быть очень большим, AKHQ отображает только первую строку. Чтобы просмотреть полное сообщение, щелкните по темной области после строки.

В левой боковой панели вы можете просмотреть список брокеров в кластере, щелкнув по кнопке «Узлы». В настоящее время кластер состоит всего из одного узла:

Двойной щелчок по узлу открывает его конфигурацию, позволяя удаленно изменять любые параметры:

После внесения изменений вы можете применить их, нажав кнопку «Обновить конфигурацию» в правом нижнем углу. Аналогичным образом вы можете просмотреть и изменить конфигурацию каждой из тем, перейдя на вкладку «Конфигурации».

В этом разделе вы настроили AKHQ — веб-приложение, предоставляющее простой в использовании интерфейс для удаленного управления и просмотра узлов и тем Kafka. Оно позволяет отправлять и получать сообщения в темы, а также оперативно обновлять параметры конфигурации как тем, так и узлов.

Результат

В этом руководстве вы защитили свою установку Kafka, настроив TLS для шифрования и SASL для аутентификации пользователей. Вы также настроили экспорт метрик с помощью Prometheus и визуализировали их в Grafana. Затем вы научились использовать AKHQ, веб-приложение для управления кластерами Kafka.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться