Мониторинг Redis с помощью OpenTelemetry и SigNoz

В этом посте мы покажем вам, как настроить мониторинг Redis с помощью SigNoz — APM с открытым исходным кодом для полного стека. SigNoz собирает данные с помощью OpenTelemetry, которая становится мировым стандартом для инструментария облачных нативных приложений. Помимо сбора метрик с вашего сервера Redis, вы также можете собирать журналы и трассировки с помощью OpenTelemetry.

Что такое OpenTelemetry?

OpenTelemetry — это коллекция инструментов, API и SDK с открытым исходным кодом, целью которой является стандартизация способов генерации и сбора телеметрических данных. Он разрабатывается на основе спецификации. Спецификация OpenTelemetry содержит рекомендации по проектированию и реализации того, как должны быть реализованы библиотеки инструментов.

OpenTelemetry разрабатывается в рамках Cloud Native Computing Foundation (CNCF), того же фонда, который разработал Kubernetes. OpenTelemetry решает проблему инструментации полиглотных облачных нативных приложений. Клиентские библиотеки обеспечивают согласованный опыт работы с инструментами на различных языках программирования. OpenTelemetry предоставляет отдельный сервис под названием Collector. Его можно использовать в качестве системы обработки данных для создания согласованных конвейеров данных.

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

Он не предоставляет уровень хранения и визуализации данных. Именно здесь на помощь приходит SigNoz. SigNoz — это APM с открытым исходным кодом, созданный для поддержки OpenTelemetry. Метрики Redis собираются с помощью OpenTelemetry Collector.

Сбор метрик Redis с помощью OpenTelemetry Collector

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

Redis раскрывает ряд метрик производительности и статистики через команду INFO. Вы можете собрать данные Redis INFO с одного экземпляра Redis с помощью OpenTelemetry Collector.

OpenTelemetry Collector предоставляет систему обработки телеметрии, которая может быть настроена для импорта и экспорта данных во многих распространенных форматах. Три основных компонента OpenTelemetry Collector — это:

  • Приемники

    Приемники собирают телеметрические данные из различных источников. Вы можете ознакомиться с приемником OpenTelemetry Redis здесь. Вы также можете ознакомиться с полным списком приемников OpenTelemetry.

  • Процессоры

    Процессоры выполняют различные задачи, такие как очистка данных, нормализация данных, маршрутизация и выборка.

  • Экспортеры

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

Установка SigNoz поставляется с двумя экземплярами OpenTelemetry Collectors. Один коллектор предназначен для сбора метрик на основе push, а другой — для сбора метрик на основе pull. В этом посте мы будем использовать OpenTelemetry Collector, работающий по принципу pull.

Коллекторы записывают данные в ClickHouse, базу данных, используемую SigNoz. Затем служба запросов обращается к БД ClickHouse, как показано на рисунке, для создания визуализации, которая обслуживается внешним веб-приложением.

Для сбора и визуализации метрик Redis давайте сначала установим SigNoz.

Установка SigNoz

SigNoz — это APM с открытым исходным кодом, который может быть самостоятельно установлен в вашей инфраструктуре.

Начать работу с SigNoz очень просто. Его можно установить на компьютеры с macOS или Linux всего за три шага с помощью простого сценария установки.

Сценарий установки автоматически устанавливает Docker Engine на Linux. Однако перед запуском сценария установки необходимо вручную установить Docker Engine на macOS.

git clone -b main https://github.com/SigNoz/signoz.git
cd signoz/deploy/
./install.sh
Вход в полноэкранный режим Выход из полноэкранного режима

Инструкции по установке SigNoz с помощью Docker Swarm и Helm Charts вы можете найти в нашей документации.

После установки вы можете получить доступ к пользовательскому интерфейсу SigNoz по порту 3301 — http://localhost:3301. Вы получите страницу регистрации. Если вы первый пользователь, вы можете создать учетную запись, используя Create an account.

SigNoz предоставляет функции управления доступом на основе ролей. При первом создании учетной записи создается учетная запись Admin.

Как только вы войдете в систему, вы получите доступ ко всем вкладкам SigNoz. Для мониторинга метрик Redis мы будем использовать вкладку Dashboards.

Дашборд SigNoz APM — включает в себя мониторинг метрик, распределенную трассировку и мониторинг исключений, среди прочего.

Шаги для сбора метрик Redis с помощью Otel-Collector

Прежде всего, убедитесь, что ваш сервер Redis и redis-cli работают правильно.

redis-cli info | grep uptime_in_seconds
Войдите в полноэкранный режим Выйдите из полноэкранного режима

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

redis-cli -h <host> -p <port> info | grep uptime_in_seconds
Войти в полноэкранный режим Выйдите из полноэкранного режима

Вы увидите следующее сообщение:

uptime_in_seconds:10706
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь необходимо настроить приемник OpenTelemetry Redis. Параметры коллектора настраиваются с помощью файлов yaml.

Откройте файл otel-collector-metrics-config.yaml, расположенный по следующему адресу в папке установки SigNoz:

deploy/docker/clickhouse-setup/otel-collector-metrics-config.yaml

Вам нужно сделать два изменения, чтобы OpenTelemetry Collector мог получать метрики Redis:

  • Включите приемник Redis

    В файле config yaml нужно добавить redis в качестве одного из приемников.

    receivers:
      redis:
        endpoint: "localhost:6379"
        collection_interval: 60s
        password: $REDIS_PASSWORD
    
  • Настройка конвейера данных

    Как упоминалось выше, OpenTelemetry Collector действует как система обработки телеметрии с настраиваемым конвейером данных. Нам потребуется добавить redis в конвейер данных.

    pipelines:
        metrics:
          receivers: [redis, prometheus]
          processors: [batch]
          exporters: [clickhousemetricswrite]
    

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

Вы можете взглянуть на файл otel-collector-metrics-config.yaml на нашем GitHub repo. Итоговый файл конфигурации вместе с приемником Redis выглядит следующим образом:

receivers:
  otlp:
    protocols:
      grpc:
      http:
  prometheus:
    config:
      scrape_configs:
        # otel-collector internal metrics
        - job_name: "otel-collector"
          scrape_interval: 60s
          static_configs:
            - targets:
              - otel-collector:8888
        # otel-collector-metrics internal metrics
        - job_name: "otel-collector-metrics"
          scrape_interval: 60s
          static_configs:
            - targets:
              - localhost:8888
        # SigNoz span metrics
        - job_name: "signozspanmetrics-collector"
          scrape_interval: 60s
          static_configs:
            - targets:
              - otel-collector:8889
    #Redis metrics receiver
  redis:
    endpoint: "host.docker.internal:6379"
    collection_interval: 60s

processors:
  batch:
    send_batch_size: 10000
    send_batch_max_size: 11000
    timeout: 10s
  # memory_limiter:
  #   # 80% of maximum memory up to 2G
  #   limit_mib: 1500
  #   # 25% of limit up to 2G
  #   spike_limit_mib: 512
  #   check_interval: 5s
  #
  #   # 50% of the maximum memory
  #   limit_percentage: 50
  #   # 20% of max memory usage spike expected
  #   spike_limit_percentage: 20
  # queued_retry:
  #   num_workers: 4
  #   queue_size: 100
  #   retry_on_failure: true

extensions:
  health_check:
    endpoint: 0.0.0.0:13133
  zpages:
    endpoint: 0.0.0.0:55679
  pprof:
    endpoint: 0.0.0.0:1777

exporters:
  clickhousemetricswrite:
    endpoint: tcp://clickhouse:9000/?database=signoz_metrics

service:
  telemetry:
    metrics:
      address: 0.0.0.0:8888
  extensions:
    - health_check
    - zpages
    - pprof
  pipelines:
    metrics:
      receivers: [redis, prometheus]
      processors: [batch]
      exporters: [clickhousemetricswrite]
Вход в полноэкранный режим Выйти из полноэкранного режима

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

Мы также установили collection_interval в 60s. Значение по умолчанию 10s, но это может быть дорогостоящей операцией.

Если вы настроили свой экземпляр Redis с паролем, вам необходимо включить его в параметры конфигурации:

receivers:
  redis:
    endpoint: "localhost:6379"
    collection_interval: 60s
    password: $REDIS_PASSWORD
Войти в полноэкранный режим Выйти из полноэкранного режима

Пароль должен совпадать с паролем, указанным в параметре конфигурации сервера Redis requirepass.

После завершения конфигурации yaml необходимо перезапустить контейнеры Docker, чтобы OpenTelemetry Collector смог получить метрики с сервера Redis.

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

docker-compose -f docker/clickhouse-setup/docker-compose.yaml stop
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем выполните следующую команду для перезапуска контейнеров Docker:

docker-compose -f docker/clickhouse-setup/docker-compose.yaml up
Войти в полноэкранный режим Выйти из полноэкранного режима

Когда контейнеры снова запущены, вы можете использовать вкладку Dashboards в SigNoz для создания настраиваемых графиков для мониторинга вашего экземпляра Redis.

Мониторинг экземпляра Redis с помощью приборных панелей SigNoz

Нажмите на Dashboards и затем + New Dashboards. Приборная панель состоит из панелей в SigNoz.

Вы можете создать два различных типа панелей: Временной ряд и Значение, в зависимости от вашего сценария использования.

Как только вы нажмете на + Добавить панель, вы получите доступ к DIY конструктору запросов метрики для создания необходимых вам графиков.

Вы также можете использовать собственные запросы ClickHouse или PromQL для создания графиков, но построитель запросов обеспечивает самый простой опыт.

После завершения построения графиков вы можете сохранить макет и начать мониторинг вашего экземпляра Redis.

Полнофункциональный APM для Redis

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

Если вы используете Redis в своем технологическом стеке, SigNoz APM может фиксировать взаимодействие вашего приложения с Redis. SigNoz также обеспечивает распределенную трассировку. С помощью Flamegraphs и диаграмм Ганта вы можете визуализировать вызовы Redis как часть всей транзакции.

Заключительные мысли: сквозная видимость Redis

В этом посте мы узнали, как настроить мониторинг Redis с помощью SigNoz с использованием коллекторов OpenTelemetry. Современные приложения — это в основном распределенные системы. Мониторинг производительности таких систем требует полной видимости каждого компонента и его взаимодействия. APM полного стека, такой как SigNoz, может дать вам сквозную видимость ваших систем.

OpenTelemetry может использовать широкий спектр технологий. Конвейер данных OpenTelemetry Collector делает OpenTelemetry идеальной интеграцией с другими инструментами в экосистеме. Он также предоставляет клиентские библиотеки для инструментации кода приложений на всех основных языках программирования.

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


Если вы хотите узнать больше о SigNoz, прочитайте этот блог:

SigNoz — альтернатива DataDog с открытым исходным кодом

Если вы хотите больше узнать об OpenTelemetry Collector, читайте этот блог:

OpenTelemetry Collector — полное руководство

Оцените статью
devanswers.ru
Добавить комментарий