задача: расширить мониторинг вмвари собственными сенсорами
реализация: в host prototype стандартного шаблона мониторинга vmware инфраструктуры добавил темплейт.
в темплейте:
discovery rule - скрипт, который коннектится к vmware vcenter, получает необходимые данные и сохраняет их в json формате на заббикс сервере
item prototype - скрипт парсит сохраненный ранее json
powershell скрипт сам по себе работает прекрасно. причем его можно запускать через sudo от юзера zabbix или root. все работает.
в случае lld выглядит как скрипт запускается, но не подгружает powercli модули, из-за чего ничего не работает.
key для discovery выглядит как get_params.ps1[{$VMWARE.VCSERVER},"{$VMWARE.VCUSERNAME}","{$VMWAR E.VCPASSWORD}","{HOST.NAME}"]
в дебаг целях добавил в скрипт сохранение передаваемых переменных , а также $Env:PSModulePath и $connect = Connect-VIServer -Server $VCSERVER -user $VCUSERNAME -password $VCPASSWORD в файл.
вижу, что переменные передаются нормально, даже со спецсимволами. а вот $connect всегда пустой.
в случае запуска скрипта вручную $Env:PSModulePath = /var/lib/zabbix/.local/share/powershell/Modules:/usr/local/share/powershell/Modules:/opt/microsoft/powershell/7/Modules
а в случае lld $Env:PSModulePath = /tmp/pwsh-zabbix-98288ff9-5712-4a14-9a11-23693b9cd91a/.local/share/powershell/Modules:/usr/local/share/powershell/Modules:/opt/microsoft/powershell/7/Modules
по этим симптомам нашел статью https://communities.vmware.com/t5/VM...d/td-p/2891483 которая, как казалось, решит все проблемы
но ни Import-Module VMware.PowerCLI
ни Import-Module -FullyQualifiedName '/usr/local/share/powershell/Modules/VMware.PowerCLI'
ни даже Install-Module –Name VMware.PowerCLI –Scope CurrentUser –AllowClobber -Confirm:$false
пробьлему не решило.
скрипт упорно не хочет подгружать powercli.
в sysloge из ошибок светится такое
[QUOTE]Apr 04 19:00:04 zabbix powershell[2156325]: (7.3.3:E:80) [Command_Health:ExecutePipeline.Exception.Warning] Error Message = The type initializer for 'VMware.VimAutomation.Sdk.Interop.V1.Co>
Fully Qualified Error ID = System.TypeInitializationException,VMware.VimAutom ation.ViCore.Cmdlets.Commands.ConnectVIServer
Context:
Severity = Warning
Host Name = ConsoleHost
Host Version = 7.3.3
Host ID = 9f58d6c9-5030-4b66-b483-6a7c5e0aa6e3
Host Application = /opt/microsoft/powershell/7/pwsh.dll /usr/lib/zabbix/externalscripts/get_params.ps1 *** *** ***
Engine Version = 7.3.3
Runspace ID = d1d19b45-cb8a-41e6-be15-202fdaad134e
Pipeline ID = 6
Command Name = Connect-VIServer
Command Type = Cmdlet
Script Name = /usr/lib/zabbix/externalscripts/get_params.ps1
Command Path =
Sequence Number = 38
User = zabbix\zabbix
Connected User =
Shell ID = Microsoft.PowerShell zz0.ixng97ggctczz/QUOTE]
т.е. Connect-VIServer не происходит по причине Exception. подскажите, как это побороть?
zabbix 6.2.9
powershell 7.3.3 (the same issue on 7.2.10 lts)
powercli 13.0.0.20829139
Comment