Как вывести APDEX из 1С в Zabbix простыми способами?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как вывести APDEX из 1С в Zabbix простыми способами?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38738
      Фото аватараOdineski
      Участник

        простые способы вывода APDEX 1C в Zabbix

      • #38739
        bot_avaOdin — Одинэсник
        Участник

          Самый простой вариант: считать APDEX в 1С, записывать результат в файл, а Zabbix забирать его через Zabbix Agent.

          APDEX обычно рассчитывается по формуле:

          Где:

          — удовлетворительные: время ответа <= T;
          — терпимые: время ответа > T и <= 4T;
          — неудовлетворительные: время ответа > 4T;
          — T обычно принимают равным 1, 2 или 4 секундам.

          Например:

          В Zabbix значение можно хранить как 0,875 или умножить на 100 и показывать как 87,5%.

          ## Вариант 1. Файл с APDEX и UserParameter

          Это наиболее простой и понятный способ.

          ### 1. Расчет APDEX в 1С

          Ниже пример процедуры, которая получает количество операций по трем категориям и записывает APDEX в файл.

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

          Важно, чтобы пользователь, под которым работает сервер 1С, имел права на запись в каталог:

          Например, можно использовать отдельный каталог:

          и дать доступ на запись пользователю сервера 1С.

          ### 2. Настройка UserParameter

          На сервере, где работает Zabbix Agent, создайте файл:

          Содержимое:

          Проверьте ключ:

          Ожидаемый результат:

          Перезапустите агент:

          ### 3. Элемент данных в Zabbix

          Создайте элемент данных:

          Если нужно показывать APDEX в процентах, можно записывать в файл значение 87.5, а в Zabbix указать единицу измерения %.

          ## Триггер на низкий APDEX

          Например, критичным считаем значение ниже 0,7:

          Предупреждение при значении ниже 0,85:

          Чтобы избежать срабатывания на коротком единичном провале, лучше использовать среднее значение:

          ## Вариант 2. Передача APDEX через zabbix_sender

          Этот способ лучше, если APDEX рассчитывается по расписанию, например раз в 5 минут. Не нужно ждать, пока Zabbix Agent сам опросит файл.

          ### Скрипт отправки

          Создайте файл:

          Сделайте его исполняемым:

          Проверьте вручную:

          Должен появиться результат примерно такого вида:

          В Zabbix создайте элемент данных:

          Запускать отправку можно через планировщик:

          Или непосредственно из регламентного задания 1С, если на сервере 1С разрешен запуск внешней команды. Но обычно безопаснее разделить расчет и отправку:

          1. 1С формирует файл;
          2. cron запускает zabbix_sender.

          ## Вариант 3. Один JSON со всеми показателями

          Если нужно передавать не только APDEX, но и расшифровку, удобнее отправлять JSON:

          В 1С можно формировать JSON так:

          В Zabbix создается основной элемент:

          UserParameter:

          Затем создаются зависимые элементы данных.

          ### Зависимый элемент APDEX

          В предобработке укажите JSONPath:

          ### Зависимый элемент удовлетворительных операций

          ### Зависимый элемент терпимых операций

          ### Зависимый элемент неудовлетворительных операций

          ### Зависимый элемент общего количества операций

          Преимущество этого способа в том, что Zabbix делает только один опрос агента, а из одного JSON получает несколько показателей.

          ## Вариант 4. Сбор APDEX из журнала регистрации 1С

          Если в журнале регистрации уже есть события с длительностью выполнения, можно не добавлять отдельные измерения в прикладное решение.

          Общая схема:

          1. Отбираются события за последнюю минуту или пять минут.
          2. Для каждого события определяется длительность.
          3. Длительность сравнивается с порогом T.
          4. Считаются:
          — быстрые операции;
          — терпимые операции;
          — медленные операции.
          5. Рассчитывается APDEX.
          6. Результат передается в файл или через zabbix_sender.

          Этот способ зависит от того, какие именно события записываются в журнал регистрации и доступны ли в них длительности операций. Журнал регистрации 1С не всегда содержит полноценное время ответа пользователя, особенно если требуется измерять клиентские операции, сетевые задержки и время отрисовки формы. Поэтому для прикладного APDEX надежнее самостоятельно фиксировать начало и окончание контролируемых операций.

          Например, для критичных операций можно сохранять длительность в регистр сведений:

          Затем регламентное задание за последние 5 минут выполняет расчет:

          ## Что лучше передавать в Zabbix

          Для практического мониторинга рекомендую передавать минимум четыре показателя:

          Одного APDEX бывает недостаточно. Например, APDEX равен 1, но за интервал была всего одна операция. Поэтому желательно контролировать количество операций:

          Также полезен показатель p95, то есть 95-й процентиль времени ответа. Он показывает, насколько медленно работают самые проблемные 5% операций.

          Оптимальная простая схема для небольшой базы:

          Пример условий:

          Для самого простого внедрения достаточно одного файла 1c_apdex.txt и ключа:

          Если требуется вывести сразу APDEX, количество операций и длительности, лучше использовать JSON и зависимые элементы данных.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С