Статьи

Отчетность по метрикам в Apache Kafka и мониторинг с потребителем

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

Метрики Coda Hale  стали ведущим способом для инструментов ваших приложений JVM, фиксируя, что приложение делает, и сообщая о нем на различные серверы, такие как Graphite, Ganglia, Riemann и другие системы. Основная проблема в этом заключается в тесной связи между метриками вашего приложения (и инфраструктуры) с тем, как вы строите графики, определяете тенденции и оповещаете о них. Теперь давайте вставим Apache Kafka, чтобы выполнить разделение, которое оно делает лучше всего.

kafka1

Системы, отправляющие данные, и системы, считывающие данные, разъединяются через брокеров Kafka.

producer_consumer

Теперь, когда такое разделение происходит, это позволяет нам подключать новые системы (производителей) для отправки метрик, а затем использовать их для нескольких различных систем. Это означает, что вы можете не только отслеживать и оповещать о метриках, но также (и в то же время) выполнять анализ или анализ в реальном времени по большому набору данных, потребляемому где-то еще.

Итак, как это все работает? Итак, мы создали репортер Metrics  https://github.com/stealthly/metrics-kafka, который вы можете использовать в своих собственных приложениях и в любом приложении, поддерживающем метрики Coda Hale, но теперь отчитываетесь по теме Kafka. Мы будем создавать больше производителей (таких как утилизация процессора, mem, диск и т. Д.) И добавим их в этот проект. Чтобы использовать эту настройку репортер метрик, как вы обычно, но сделать это так:

import <span class="skimlinks-unlinked">ly.stealth.kafka.metrics.KafkaReporter</span>
val producer = KafkaReporter.builder(registry, kafkaConnection, topic).build()
producer.report()

Он был разработан на Java, поэтому вам не нужно включать зависимости Scala, если вы не используете Scala.
Исходный код репортера доступен здесь: 
https://github.com/stealthly/metrics-kafka/tree/master/metrics/src/main/java/ly/stealth/kafka/metrics .

Мы также настроили пример того, как читать полученные метрики с помощью
Римана . Riemann контролирует распределенные системы и обеспечивает переходное общее состояние с малой задержкой для систем со многими движущимися частями. Есть потребитель KafkaRiemman, который читает из Kafka и отправляет сообщения Риману 
https://github.com/stealthly/metrics-kafka/blob/master/riemann/src/main/scala/ly/stealth/kafka/riemann/RiemannMetricsConsumer.scala ,

1) Установите Vagrant 
http://www.vagrantup.com/

2) Установите Виртуальный ящик 
https://www.virtualbox.org/

git clone <span class="skimlinks-unlinked">https://github.com/stealthly/metrics-kafka.git</span>
cd metrics-kafka
vagrant up

После запуска виртуальных машин перейдите по  ссылке http://192.168.86.55:4567/ . Мы устанавливаем образец приборной панели. Из командной строки запустите тестовые случаи из командной строки (после запуска vms).

./gradlew test

И приборная панель будет заполняться автоматически.
Снимок экрана 2014-04-18 в 12.04.13 PM

Вы можете изменить то, что отображается в Riemann, и узнать, как это использовать, из тестовых примеров 
https://github.com/stealthly/metrics-kafka/blob/master/riemann/src/test/scala/ly/stealth/kafka /metrics/RiemannMetricsConsumerSpec.scala .