Вокруг да около Prometheus: Подготовка и установка

23.01.26

Администрирование - Мониторинг

Описания проблем и решений при настройке мониторинга. Мои подготовительные мероприятия.

Решил тоже написать о своем (пока не законченном) опыте настройки мониторинга 1С-ландшафта, с использованием Prometheus.

На это меня побудили некоторые статьи, где все описано в радужных цветах. Типа: "Все уже сделано! Бери, настраивай и радуйся!". Но на деле все сопровождается какими-то нюансами разной степени тяжести.

Всего планируется три статьи:

  • Подготовка (эта статья)
  • Мониторинг кластера 1С
  • Инструментирование конфигураций

Цель статей - описать, с чем и почему мне пришлось дополнительно разбираться в своих около-Prometheus-работах.

 

Литература

Пожалуй, начну с основных книг, которые почитал перед началом работ.

  • Mastering Prometheus

Автор William Hegedus. Издательство Packt Publishing.

С этой книги началось мое погружение в мир observability, docker и проч. Начал ее читать на песочке Пицунды, в 2024.

Книга оставила великолепные впечатления. Технические аспекты Prometheus расписаны подробно и нескучно. Но на около-литературном английском! Пол-книги пришлось со словарем читать.

  • Kubernetes изнутри

Авторы Вьяс Дж., Лав К.  Издательство DMK Press.

Теоретические знания о Prometheus появились, пришло время переходить к его развертыванию. С windows и установками на хост решил не связываться, пришло время использовать контейнеры.

В предыдущей книге (по Prometheus) все примеры по развертыванию и конфигурированию описаны с использованием кластера Kubernetes. "Автор плохого не порекомендует" - подумал я. Значит тоже буду поднимать кубер (понимающие улыбнулись;). Прочитав четверть книги, понял, что пусть этим kubernetes занимаются специально обученные люди.

Сама книга, думаю, неплохая. Даже начал немного понимать проблематику статей о kubernetes. Побаловался с k8n и helm, узнал про Штурвал.

  • Docker Compose для разработчика

Автор Гадзурас Э. Издательство ДМК Пресс.

От kubernetes я отказался, иду в сторону docker compose.

Книга "Docker Compose для разработчика" для меня оказалась слишком подробной и глубокой... Часть примеров/упражнений у меня не заработала. Тем не менее, основы Compose я получил и (неожиданно;) понял, что нужно бы и про сам Docker почитать.

  • Continious Delivery with Docker and Jenkins

Автор Rafal Leszko. Издательство Packt Publishing. На английском.

Эта книга мне показалась более поверхностной что ли. Кроме самого Docker, описываются и другие темы (например, Compose и Swarm).

Знаний из этой книги мне хватило, чтобы начать читать и писать docker-файлы. Например, написал файл для образа Jenkins-клиента со встроенным OScript.

 
Другая литература 

 

Эксперименты с Docker compose

Перед установкой Prometheus, решил потренироваться на другом ПО. И, в принципе, не прогадал, хоть это и отодвигало основную цель. Поскольку был выбран путь инсталляций с использованием Docker Compose, то и пробовал разворачивать запуская docker-compose.yml.

  • GitLab-ce

Решено, что GitLab придет на замену текущей Gitea.
Откуда у меня взялся docker-compose-файл - уже и не помню. Может с официального сайта, может нашел готовый и допилил.

Изначально в docker-compose был только запуск самого GitLab (без Runner). В gitlab.rb были какие-то минимальные правки.

Затем вместо использования self-signed сертификата настроил корпоративный.

Затем (уже намного позже) решил, что нужен и GitLab Runner. В следующей статье напишу, зачем. docker-compose немного усложнился.

Затем решил поэкспериментировать с Prometheus, встроенным в GitLab.
К времени этого эксперимента, Prometheus уже вполне работал, а я каким-то образом прочитал, что в GitLab есть свой bundle Prometheus, для сбора метрик. Как бы, зачем напрягать хост лишним ПО, если оно и так уже есть.

В официальной документации процесс переключения на внешний Prometheus описан достаточно подробно. Главное, не забыть открыть нужные порты экспортеров в docker-compose (секция ports описания сервиса), иначе GitLab не запустится.

Но это так и осталось экспериментом. Решил вернуться к использованию bundle.

 
 Текущий docker-compose.yml для GitLab

 

SonarQube, Jenkins

В принципе, ничего особо интересного. Для SQ прописан сервис Postgres, для хранения данных SQ.

Текущий Jenkins решено было оставить без изменений. Разве что, попробовал собрать образ Jenkins-клиента, со встроенным OScript и gitsync. Может когда-нибудь и пригодится.

 
 
 dockerfile (ssh-клиент Jenkins + OScript + gitsync)
 

Установка Prometheus 

Установка Prometheus прошла достаточно буднично - все восторги по поводу контейнеризации уже поулеглись. Главное, нужно было найти хороший docker-compose файл. 

Нужные файлы найдены тут (потом дорабатывались по необходимости). Помимо самого Prometheus, также поднимаются Grafana и экспортеры. 

Hot reload

Конечно же, мне захотелось перезапускать Prometheus при изменениях его конфигурации (которая в prometheus.yml). Читал, что можно настроить такую возможность - чтобы запуском curl можно было применить какие-то новые изменения. А то ведь делал docker compose down/up.

Да, нужно было установить нужный флаг запуска (--web.enable-lifecycle):

services:
...
  prometheus:
    ...
    command:
      ....
      - '--web.enable-lifecycle'

Но еще нужно было указать basic-аутентификацию:

curl -X POST http://user:password@prom-server:9090/-/reload

До этого не сразу додумался. Причем, ни гугл-поиск, ни ИИ-бот мне не подсказали, почему не работала перезагрузка конфигурации.

Remote write

Как мы знаем, Prometheus - это ПО для мониторинга другого ПО. Отсюда следующие идеологические выводы:

  1. Должна мониториться именно информационная система, без ухода в мелкие детали. Предполагается, что для мелких деталей должны быть предназначены logs and traces.
  2. Мониторинг - это что-то достаточно краткосрочное, чтобы своевременно выявить какие-то непредусмотренные/нежелательные режимы работы. Предполагается, что хранить глубокую историю данных система мониторинга хранить не будет.

Собственно, таким путем Prometheus и идет: 

  • Нежелательно работать с метриками высокой кардинальности;
  • Нежелательно хранить данные (метрики) на большую глубину.

Но в реалиях мы можем захотеть высокую кардинальность. Или просто вынуждены иметь ее, т.к. нужный нам экспортер выдает только детальные метрики.

И еще более вероятно, что мы захотим хотя бы на полгода хранить метрики.

Для этого в Prometheus можно использовать remote write - транслировать метрики в какое-то другое хранилище. Чаще всего упоминается трансляция в VictoriaMetrics (иногда далее, VM).

Настроить remote write, в простейшем случае, очень просто.

  1. Поднять хранилище (VM).
  2. Настроить конфиг Prometheus для трансляции метрик во внешнее хранилище.

Поднять хранилище можно примерно так:

 
 docker-compose.yml (Prometheus + VictoriaMetrics, частичный)
 
 

 Чтобы включить remote write, можно это прописать в default-настройки prometheus.yml:

 
 prometheus.yml (частичный, для remote write)

Можно даже настроить Prometheus, чтобы он только как агент remote write работал (см. --enable-feature=agent). При этом отключается часть сервисов и задействуются оптимизации WAL.
Я не пробовал этот режим.

Также, remote write можно более точно настроить под крейсерскую нагрузку. Об этом читал в Mastering Prometheus. Когда наконец организую у себя устойчивую конфигурацию источников, то займусь этим.

Понятно, что дополнительное ПО и трансляция добавляют свой оверхед по расходованию ресурсов. В том же Mastering Prometheus говориться о повышении расходования ресурсов на 10-15%. Но у меня получилась немного другая картина.

Если смотреть на CPU, то получилось примерно так.

Возьмем начальные расходования CPU за x. Добавилось 0.4x в контейнере Prometheus (накладные расходы на remote write). И добавилось 0.9x на контейнер VictoriaMetrics.
Т.е., было x, стало 2.3x.

Но все это меркнет на фоне расходов GitLab:))

Native histograms

Вот, в Prometheus есть такой тип метрик. Это гистограмма с динамическими бакетами. Потенциально, это более точный вид метрик для агрегации показателей. Также, Native histograms можно снабжать экземплярами (exemplars) - это какое-то конкретное значение показателя с детальными метками. Выгружаются не в текстовом формате, а в Protobuf (т.е., метрики так просто не сгенерировать конкатенацией строк).

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

До версии Prometheus 3.8, использование таких гистограмм было "экспериментальной" опцией и включалось специальным feature-флагом --enable-feature=native-histograms . Также, в prometheus.yml нужно указать, что используется чтение Native histograms - например, в разделе настроек по умолчанию указать scrape_native_histograms: true .  

Для меня стало определенной проблемой, что такие гистограммы не передаются по remote write в VictoriaMetrics... Для передачи native histograms по remote write, в конфигурации remote_write предусмотрена настройка: нужно указать send_native_histograms: true. Но у меня так трансляция не заработала. VM считывать такие гистограммы из экспортеров не умеет - у нее есть свой подобный вид гистограмм, но попроще.

В общем, только из-за Native histograms я остался на Prometheus - а так, можно было бы только на VM построить мониторинг.

 

Альтернативы Prometheus

Можно задуматься об использовании Prometheus-совместимого ПО, более оптимизированного под высокую кардинальность, долгосрочное хранение, с меньшим потреблением ресурсов.

Что можно рассмотреть.

  1. VictoriaMetrics, без лишнего звена в виде Prometheus (упоминал выше).
    VM может сама делать scrape по тем же конфигурационным файлам, что использует Prometheus. Есть и свой AlertManager.
    Синтаксис MetricsQL на 100% совместим с PromQL (но где-то на 75% по сходимости результатов). Для дашбордов Grafana просто указываем VM, как источник данных типа Prometheus. 
  2. Deckhouse Prom++. Это российский форк Prometheus, с оптимизациями (хабр). С оф.сайта: 
    "Open Source-система мониторинга: Prometheus, переписанный на С++
    Потребляет до 10 раз меньше памяти, чем обычный Prometheus
    До 3 раз эффективней, чем VictoriaMetrics".
    Кто знает, может придется на него уехать - зарегистрирован в реестре российского ПО.

 

Промежуточные итоги

На предоставленной мне виртуальной машине (Debian) в контейнерах работает следующее ПО:

  • Gitlab-ce
  • SonarQube
  • Пара Postgree
  • Prometheus
  • Экспортеры
  • VictoriaMetrics

Можно уже переходить к настройке экспортеров для наблюдения за нашими ИС. Об этом в следующей статье.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

29280 руб.

27.03.2025    67051    41    29    

53

Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

В логах содержится огромное количество полезной информации о том, как «живет» система: какие процессы в ней выполняются, и какие ошибки возникают. Расскажем о том, как выстроить централизованное хранение и обработку разрозненных логов, превратив их в полезный инструмент анализа и диагностики.

29.12.2025    6000    leongl    0    

18

HighLoad оптимизация Мониторинг Системный администратор Программист Бесплатно (free)

Делимся опытом поддержки баз 1С с более чем 6 000 одновременно работающих пользователей и рассказываем о ключевых подходах к контролю высоконагруженных систем. Рассмотрим реальные кейсы и дадим ответ на вопрос о том,: что точно надо контролировать. Сравним ElasticSearch и ClickHouse, дадим ссылки на статьи и репозитарии для быстрого старта, а также посмотрим на примеры рабочих столов для анализа логов технологического журнала в ElasticSearch.

19.12.2025    1582    Sergey.Noskov    2    

11

Администрирование СУБД Технологический журнал Мониторинг Системный администратор Программист Бесплатно (free)

Рассказываем, почему высоконагруженным бэкендам на 1С нужен регулярный мониторинг и что происходит, когда его нет: производительность и стабильность деградируют, а обращения пользователей копятся. Показываем, как построили легкую систему наблюдаемости для бэкендов корпоративных порталов. Она включает сбор метрик из технологического журнала, Apdex, журнала регистрации и динамики размеров таблиц с последующим анализом в связке ClickHouse и служебной информационной базы на 1С. Объясняем, какие отчеты и метрики быстрее всего помогают находить критичные проблемы производительности, и демонстрируем интерфейс расследования. Разбираем несколько кейсов оптимизации, найденных по итогам мониторинга, включая доработки функционала БСП «управление доступом» и «присоединенные файлы».

15.12.2025    3676    tystik    1    

8

Мониторинг Системный администратор 1С 8.3 Россия Бесплатно (free)

Когда речь заходит об инфраструктуре 1С, кажется, что все работает как часы: пользователи выполняют свои задачи, отчеты формируются без сбоев, зарплата начисляется вовремя. Как только начинается замедление базы, фоновые задания начинают зависать, а в службу поддержки поступают жалобы от раздраженных пользователей — ситуация требует вмешательства. Необходимо внедрить базовый мониторинг 1С, чтобы избежать неприятных моментов и минимизировать простой системы. Правильно организованный мониторинг не только помогает своевременно выявлять и предотвращать большинство проблем, но и существенно облегчает диагностику в случае сбоев. При этом не требуется больших затрат или сложных ИТ-решений — базовый и при этом эффективный мониторинг можно реализовать быстро, просто и без лишних сложностей. В статье я расскажу, как организовать такой мониторинг, не изобретая велосипед и используя проверенные практики. Но для начала разберемся, зачем вообще мониторить 1С.

03.12.2025    9558    user798823    2    

4

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Бесплатно (free)

Мониторинг в ландшафте 1С помогает не только вовремя выявлять проблемы и повышать SLA, но и укреплять информационную безопасность. Разбираем источники данных, ограничения штатных инструментов и современные практики мониторинга на базе Prometheus, ClickHouse и Grafana. А также рассказываем о коробочном решении «Оркестратор 1С-систем» и планах его развития.

29.10.2025    1990    Sibars    0    

5

Мониторинг Системный администратор Бесплатно (free)

Рассказываем, куда смотреть после миграции на PostgreSQL: как диагностировать нехватку или избыток буферного кэша, отслеживать работу автовакуума, репликации и чекпойнтера. На основе реальных аудитов покажем ключевые инструменты мониторинга и научим правильно интерпретировать их данные.

06.10.2025    3456    expnpe    1    

10

Журнал регистрации Мониторинг Программист 1С:Предприятие 8 Россия Абонемент ($m)

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

1 стартмани

27.08.2025    2574    6    Elkasar    1    

2
Для отправки сообщения требуется регистрация/авторизация