Расширения / Разработка / Обновление до Python 3.8
Обновите пользовательские расширения АппОптима с Python 3.6 до Python 3.8.
Начиная с ЕдиногоАгента и АктивногоШлюза версии 1.231, мы обновляем платформу расширений (также называемую платформой плагинов) с Python 3.6 до Python 3.8.
- Последствия : некоторые расширения АппОптима, работающие в вашей среде, могут перестать работать и потребовать повторного развертывания новой версии, подготовленной для Python 3.8.
- Симптомы :
- Никакие данные не предоставляются для затронутых показателей на информационных панелях, оповещениях и страницах пользовательских устройств, заполненных затронутыми метриками расширения.
- В логах расширений отображаются ошибки.
ModuleNotFoundError
Чаще всего в логе PluginAgent это проявляется как Python . - Иногда виртуальная машина Python дает сбой.
- Влияние . Эта проблема затрагивает только те расширения, которые используют собственные библиотеки, вызываемые из кода Python, распространяемого вместе с расширением.
Рекомендуемое решение
В случае каких-либо проблем с пользовательскими расширениями после обновления до ЕдиногоАгента версии 1.231+ мы рекомендуем пересобрать пакет расширений с использованием Python 3.8 вместе с новейшими модулями и повторно развернуть его на всех хостах.
Подробную информацию о создании, загрузке и развертывании расширений см. в разделе Расширения .
Обратите внимание, что для создания расширения необходимо использовать Python 3.8, то есть его plugin_sdk
необходимо установить в среде Python 3.8. Мы рекомендуем использовать виртуальную среду Python, подготовленную Python 3.8.
- Расширения, работающие на компьютерах с Windows, необходимо пересобирать в Windows; Расширения Linux необходимо пересобрать в Linux.
- В настоящее время поддерживаются только 64-битные платформы.
Обновите расширение version
и install_requires
свойства в plugin.json
файле.
Модули зависимостей, определенные в install_requires
свойстве, должны быть последней доступной версией или версией, поддерживаемой Python 3.8.
Пример миграции
Ниже приведен отрывок из plugin.json
файла расширения, специфичного для Windows.
{
"name": "custom.python.mssql",
"version": "1.0",
"type": "python",
"requiredAgentVersion": "0.000.0",
"entity": "PROCESS_GROUP_INSTANCE",
"technologies": ["MSSQL"],
"source": {
"package": "custom_mssql_plugin",
"className": "CustomMsSqlPlugin",
"install_requires": ["pymssql==2.1.4"],
"activation": "Singleton"
},
- Это версия 1.0; для этого не требуется какая-либо конкретная версия ЕдиногоАгента.
- Для расширения требуется модуль pymssql версии 2.1.4.
- Пакет расширения содержит бинарные модули, специфичные для конкретной платформы:
_mssql.cp36-win_amd64.pyd
pymssql.cp36-win_amd64.pyd
Эти модули поддерживают Python версии 3.7 и более ранних версий, но не Python 3.8 (см. pymssql 2.1.4).).
Сообщение об ошибке
Расширение перестанет работать после обновления до ЕдиногоАгента версии 1.231+, и в логе PluginAgent появится следующая ошибка.
2021-10-26 11:03:32.032 UTC [00000c5c] info [native] 3164(MainThread) - [report_status] status changed for engine ('custom.python.mssql', 16080871464060409180) PluginFullStatus(pluginName=custom.python.mssql, pluginVersion=1.0, state=ERROR_UNKNOWN, description=No module named 'pymssql', monitoredEntityId=0xdf2abb657e09555c, stacktrace=Traceback (most recent call last):
File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 336, in _execute_next_task
self._query_plugin()
File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 663, in _query_plugin
self._plugin_run_data = self._create_plugin_run_data()
File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 636, in _create_plugin_run_data
plugin_module = importlib.import_module(self.metadata["source"]["package"])
File "C:\Program Files/astromkey/oneagent/agent/plugin/python3.8\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 843, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Program Files/astromkey/oneagent/plugin_deployment/custom.python.mssql\custom_mssql_plugin.py", line 14, in <module>
import pymssql
ModuleNotFoundError: No module named 'pymssql'
)
Расширение должно быть обновлено и пересобрано с использованием Python 3.8 и новейшего модуля pymssql, версия которого на данный момент равна 1. 2.2.2. Новую версию пакета расширения необходимо развернуть на всех хостах, на которых он работает.
Разрешение
Обновите определение расширения, изменив его plugin.json
следующим образом:
{
"name": "custom.python.mssql",
"version": "1.1",
"type": "python",
"requiredAgentVersion": "1.231.0",
"entity": "PROCESS_GROUP_INSTANCE",
"technologies": ["MSSQL"],
"source": {
"package": "custom_mssql_plugin",
"className": "CustomMsSqlPlugin",
"install_requires": ["pymssql==2.2.2"],
"activation": "Singleton"
},
где свойства version
, requiredAgentVersion
и install_requires
обновляются.
Теперь расширение готово к восстановлению. См plugin_sdk build_plugin
. руководство по расширениям ЕдиногоАгента.
Убедитесь, что новый пакет расширений содержит обновленные модули:
_mssql.cp38-win_amd64.pyd
_pymssql.cp38-win_amd64.pyd
Разверните пакет на хосте ЕдиногоАгента, перезапустите службу ЕдиныйАгент и проверьте в логе PluginAgent, что расширение запускается успешно.