Мониторинг Кафки Топи c по Jmeter - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь контролировать кафку топи c через jmeter. Я посылаю 100 сообщений в kafka topi c, хотя внешний инструмент и сообщения проходят отлично, как я проверил в окне пользователя. Теперь я хочу контролировать kafka topi c с помощью jmeter. Я изучил использование kafkameter и увидел несколько руководств по нагрузочному тестированию с использованием kafkameter. Но на всех ресурсах, которые я нашел в Интернете, было показано, как отправлять сообщения на Kafka topi c, а затем отслеживать их, что я не хочу делать. Я хочу отслеживать топи c, пока я отправляю сообщения на эту топи c из внешнего инструмента. Кто-нибудь может мне помочь с этим?

1 Ответ

1 голос
/ 18 марта 2020

Я не знаю, что вы подразумеваете под «мониторингом», если вы хотите получать сообщения от данной топики Kafka c - вы можете использовать JSR223 Sampler и Kafka Consumer API читать сообщения и делать с ними все, что вы хотите.

  1. Загрузите библиотеки, предоставляющие API-интерфейс Kafka Consumer для JMeter Classpath
  2. Перезапустите JMeter, чтобы выбрать библиотеки
  3. Добавить JSR223 Sampler в вашу группу потоков и поместите код, который установит sh соединение с «интересной» Kafka topi c, чтобы дать вам общее представление, вот простой пример кода, который ожидает входящие сообщения и печатает их в jmeter.log файл

    props.put('bootstrap.servers', '192.168.99.100:9092')
    props.put('group.id', 'foo')
    props.put('enable.auto.commit', 'true')
    props.put('auto.commit.interval.ms', '1000')
    props.put('session.timeout.ms', '30000')
    props.put('key.deserializer',
            'org.apache.kafka.common.serialization.StringDeserializer')
    props.put('value.deserializer',
            'org.apache.kafka.common.serialization.StringDeserializer')
    def consumer = new org.apache.kafka.clients.consumer.KafkaConsumer<String, String>(props)
    def topic = 'sometopic'
    
    consumer.subscribe(Arrays.asList(topic))
    log.info('Subscribed to topic ' + topic)
    
    while (true) {
        def records = consumer.poll(100)
        records.each { record ->
            log.info('Received message: ' + record.value())
        }
    }
    

Демонстрация:

enter image description here

Дополнительная информация: Apache Кафка - Как загрузить тест с JMeter

...