Mетрик кешер экспортер

Вот и заопенсорсил свой метрик кешер: https://github.com/spions/metric-cacher-exporter — будет полезно тем, у кого в облаках берут денежки за каждый запрос при скрипинге метрик, а отказоустойчивость с несколькими зонами делать нужно. Экономия порядка 80%. Из особенностей — писался/вайбкодился проект пол дня, на языке, который не знаю, я больше по python. Opensource обвязка, инструкции, тесты и т.п. делалась еще 2 дня, так как я больше по gitlab стеку, да и helm chart пишу и использую с учетом нашей рабочей специфики. На агентах потратил примерно 5$ из 10$ подписки jetbrains.

metric-cacher-exporter — это прокси-сервис для кэширования метрик в формате Prometheus. Он предназначен для снижения нагрузки на системы и сервисы мониторинга путем кэширования дублирующих запросов в Redis.

Пример использования:

Для отказоустойчивости зонального VMStack применяют шардирование или репликацию.

Шардированный режим работы VMAgent не обеспечивает полноценной отказоустойчивости, так как при падении одной шарды (пода) в зоне данные от таргетов, которые эта шарда обрабатывала — потеряются.

Перевод VMAgent в режим репликации, например 2 и более реплик (как правило, ставят по количеству зон доступности), приводит:

  • увеличению запросов на истоник метрик, на котором может стоять лимит по запросам
  • увеличению стоимости обслуживания, если метрики платные
  • возможным поломкам графиков, там где не учтено возможное смещение времени опроса

    Указанные проблемы решает metric-cacher-exporter. Подтвержденная экономия составила порядка 70-80% на итоговой стоимости услуги сбора метрик.

    Основные возможности:

  • Кэширование метрик: Сохраняет ответы от апстрим-сервисов в Redis.
  • Гибкая настройка TTL: Время жизни кэша задается для каждого запроса через параметр cacheTTL.
  • Дедупликация запросов: Если несколько запросов приходят одновременно за одними и теми же данными, только один запрос уйдет на апстрим, остальные будут ждать результата.
  • Простая интеграция: В случае использования VictoriaMetrics или Prometheus нужно добавить несоколько строк в relabel_configs не меняя основной запрос.

    Установка и использование:

    По умолчанию metric-cacher-exporter слушает HTTP-порт 8080.

    docker run -d \
      --name metric-cacher-exporter \
      -p 8080:8080 \
      -e REDIS_ADDR=redis:6379 \
      spions/metric-cacher-exporter:latest
    

    Использование:

    Сервис работает как прокси. Вы передаете целевой адрес (upstream) в параметре target.

    В конфигурации scrape config используйте relabelConfigs для перенаправления запросов через кэшер:

    spec:
      path: "/metrics"
      scrape_interval: 60s
      params:
        cacheTTL: 
          - "45"
      staticConfigs:
        - targets: ["my-service:9090"]
      relabelConfigs:
        - source_labels: [__address__]
          target_label: __param_target
        - source_labels: [__param_target]
          target_label: instance
        - target_label: __address__
          replacement: metric-cacher-exporter:8080
    
  • Вы можете оставить комментарий ниже.

    Оставить комментарий

    Вы должны Войти, чтобы оставить комментарий.