Поиск по сайту:

Наблюдение за приложением с помощью Apache Kafka и SigNoz


SigNoz помогает разработчикам быстро и с минимальными усилиями начать достигать своих целей по наблюдаемости.

SigNoz — это платформа наблюдения за приложениями с открытым исходным кодом. SigNoz, построенный на React и Go, написан с нуля, чтобы позволить разработчикам приступить к достижению своих целей по наблюдаемости как можно скорее и с минимальными усилиями.

В этой статье подробно рассматривается программное обеспечение, включая архитектуру, развертывание на основе Kubernetes и некоторые распространенные варианты использования SigNoz.

Архитектура СигНоз

SigNoz объединяет несколько компонентов вместе, чтобы создать масштабируемую, слабосвязанную систему, с которой легко начать работу. Некоторые из наиболее важных компонентов:

  • Сборщик OpenTelemetry
  • Апач Кафка
  • Апач Друид

OpenTelemetry Collector — это механизм сбора данных трассировки или метрик. Это позволяет SigNoz принимать данные в стандартных отраслевых форматах, включая Jaeger, Zipkin и OpenConsensus. Затем собранные данные передаются в Apache Kafka.

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

После того как данные сведены и сохранены в Druid, служба запросов SigNoz может запрашивать и передавать данные во внешний интерфейс SigNoz React. Затем интерфейсная часть создает красивые графики для пользователей, чтобы они могли визуализировать данные наблюдения.

(Нитиш Тивари, CC BY-SA 4.0)

Установить СигНоз

Компоненты SigNoz включают Apache Kafka и Druid. Эти компоненты слабо связаны и работают в тандеме, обеспечивая удобство работы для конечного пользователя. Учитывая все компоненты, лучше всего запускать SigNoz как комбинацию микросервисов на Kubernetes или Docker Compose (для локального тестирования).

В этом примере используется развертывание Kubernetes Helm на основе диаграмм для установки SigNoz в Kubernetes. В качестве предварительного условия вам понадобится кластер Kubernetes. Если у вас нет доступного кластера Kubernetes, вы можете использовать такие инструменты, как MiniKube или Kind, для создания тестового кластера на вашем локальном компьютере. Обратите внимание, что для этого на компьютере должно быть не менее 4 ГБ свободного места.

Когда у вас есть доступный кластер и настроенный kubectl для связи с ним, запустите:

$ git clone https://github.com/SigNoz/signoz.git && cd signoz

$ helm dependency update deploy/kubernetes/platform

$ kubectl create ns platform

$ helm -n platform install signoz deploy/kubernetes/platform

$ kubectl -n platform apply -Rf deploy/kubernetes/jobs

$ kubectl -n platform apply -f deploy/kubernetes/otel-collector

При этом в кластере будут установлены SigNoz и связанные с ним контейнеры. Чтобы получить доступ к пользовательскому интерфейсу (UI), выполните команду kubectl port-forward; например:

$ kubectl -n platform port-forward svc/signoz-frontend 3000:3000

Теперь вы сможете получить доступ к своей панели управления SigNoz с помощью локального браузера по адресу http://localhost:3000.

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

Чтобы установить его, запустите:

$ kubectl create ns sample-application

$ kubectl -n sample-application apply -Rf sample-apps/hotrod/

Изучите возможности

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

(Нитиш Тивари, CC BY-SA 4.0)

Метрики

Нажав на конкретное приложение, вы попадете на его домашнюю страницу. На странице «Метрики» отображается информация за последние 15 минут (это число можно настроить), например задержка приложения, средняя пропускная способность, частота ошибок и верхние конечные точки, к которым обращается приложение. Это дает вам представление о статусе приложения с высоты птичьего полета. Любые скачки ошибок, задержек или нагрузки сразу видны.

(Нитиш Тивари, CC BY-SA 4.0)

Отслеживание

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

(Нитиш Тивари, CC BY-SA 4.0)

(Нитиш Тивари, CC BY-SA 4.0)

Обозреватель использования

Большинство метрик и данных трассировки очень полезны, но только в течение определенного периода. Со временем данные в большинстве случаев перестают быть полезными. Это означает, что важно запланировать правильную продолжительность хранения данных; в противном случае вы заплатите больше за хранение. Обозреватель использования предоставляет обзор принятых данных за час, день и неделю.

(Нитиш Тивари, CC BY-SA 4.0)

Добавить инструменты

До сих пор вы рассматривали метрики и трассировки примера приложения HotROD. В идеале вам нужно настроить свое приложение так, чтобы оно отправляло данные наблюдения в SigNoz. Сделайте это, следуя обзору приборов на веб-сайте SigNoz.

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

Узнать больше

SigNoz помогает разработчикам быстро приступить к работе с приложениями метрик и трассировки. Чтобы узнать больше, вы можете ознакомиться с документацией, присоединиться к сообществу и получить доступ к исходному коду на GitHub.