В этом посте мы покажем вам, как настроить мониторинг 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 — полное руководство