Apache Kafka уже давно используется организациями для потребления не только всех данных в своей инфраструктуре с точки зрения приложений, но и статистики серверов работающих приложений и инфраструктуры. Apache Kafka отлично подходит для этого.
Метрики Coda Hale стали ведущим способом для инструментов ваших приложений JVM, фиксируя, что приложение делает, и сообщая о нем на различные серверы, такие как Graphite, Ganglia, Riemann и другие системы. Основная проблема в этом заключается в тесной связи между метриками вашего приложения (и инфраструктуры) с тем, как вы строите графики, определяете тенденции и оповещаете о них. Теперь давайте вставим Apache Kafka, чтобы выполнить разделение, которое оно делает лучше всего.
Системы, отправляющие данные, и системы, считывающие данные, разъединяются через брокеров Kafka.
Теперь, когда такое разделение происходит, это позволяет нам подключать новые системы (производителей) для отправки метрик, а затем использовать их для нескольких различных систем. Это означает, что вы можете не только отслеживать и оповещать о метриках, но также (и в то же время) выполнять анализ или анализ в реальном времени по большому набору данных, потребляемому где-то еще.
Итак, как это все работает? Итак, мы создали репортер 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
И приборная панель будет заполняться автоматически.
Вы можете изменить то, что отображается в Riemann, и узнать, как это использовать, из тестовых примеров
https://github.com/stealthly/metrics-kafka/blob/master/riemann/src/test/scala/ly/stealth/kafka /metrics/RiemannMetricsConsumerSpec.scala .