Обновление до 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. Новую версию пакета расширения необходимо развернуть на всех хостах, на которых он работает.