Top.Mail.Ru

Запуск свежего ПО в легаси системах для Катрен

Один из лидеров российского фармацевтического рынка

Задача:

Помочь локализовать причины зависания системного программного обеспечения производственного конвейера. Система устанавливалась около 2010 года, поддержка от производителя была прекращена.

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

С технологической точки зрения задача была достаточно сложна:
  1. Операционная система SLES - 2013 года
  2. База данных - Oracle 10g - 2006 года
  3. Python 2.6
  4. Сервер мониторинга - кластерный Zabbix v.6 - 2023 года

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

Период работы:

07.2023-09.2023

Итог:

Несмотря на оверхед в виде распаковки исполняемого бандла (и записи в /tmp директорию), данное решение оказалось самым удобным в плане поддержки и трудозатрат.

Инженеры клиента получили необходимые для решения проблем производства метрики.

Решение:

Для начала необходимо было создать сбор системных метрик.

Для сбора системных метрик был выбран агент версии 2, так как у него имеются минимальные требования к системным зависимостям (в особенности libc). Был собран статический исполняемый файл, с учетом инструментов и версий зависимостей, которые мы также собрали, подобрав по версиям (gcc, libssl, re2, etc).

После того, как появились системные метрики, мы занялись решением самой сложной задачи: сбором метрик с СУБД.

Мы выяснили:

  1. шаблоны, поддерживаемые “из коробки” есть, только начиная с определенного обновления для Oracle 11g, в котором добавили поддержку json;
  2. доступные в паблике проекты уже адаптированы под Python 3+;
  3. количество SQL скриптов сбора метрик превышает разумные пределы для выноса их в внешние скрипты агента (адаптация шаблона также не рациональна по трудозатратам).

Для решения головоломки по запуску несовместимого (Python 2.6 + бинарные зависимости для работы с БД + библиотеки и код под Python 3) мы использовали следующую схему:

  1. Упаковали кодовую базу в исполняемый файл вместе с зависимостями при помощи pyinstaller. Это позволило получить скрипт + библиотеки к нему + интерпретатор свежей версии.
  2. После чего исполняемый файл упаковали вместе с системными библиотеками при помощи python staticx проекта.

Технологии:

Python
Oracle
SLES
Zabbix
Обсудить проект_
Если у вас есть ИТ-проблема, оставьте ваши контакты, и мы поможем составить план ее решения. Обещаем не слать спам.
Нажимая, я говорю «Да»
политике конфиденциальности
hello@softwarecats.dev
Новосибирск, ул. Демакова
23/5, оф.308
Контакты_