Результат проводился на последнем zabbix 5.4 (а так же не работало на 4.0) и на разных серверах с powershell (WindowsServer2012R2 и WindowsServer2019) - не в этом дело.
Объясняю: В простых случаях, если в powershhell в скрипте прописать "hellow world" или допустим число 12 или $a=12; $a
- заббикс заберет эти данные (но это особо никому не нужно), так же забирает другие более сложные команды типа размер файла и т.п. (Get-ChildItem |select Length | sort -Descending | select -Last 1 ).Length.
Но есть действительно команды которые вводят заббикс в тупик, например команду (я не знаю, есть тут немного знакомые с powershell или нет) посмотреть все письма отправленные за последнюю минуту (не важно) и должна вернуться $result в иде обычного числа например 125 (в powershell и zabbix get возвращается без пробелов и других знаков, рассматривал под лупой), но накрывается всё медным тазом и в zabbix мониторинг данные не передаются!!!
$DateStart=(Get-Date).AddMinutes(-1)
$result=(Get-MessageTrackingLog -ResultSize unlimited -Start $DateStart | Sort MessageId -Unique | Group Sender |Select Count,@{N='Sender';E={$_.Group.Sender | select -Unique}} | Measure-Object -Sum Count).Sum
При этом, запущенная проверочная команда zabbix_get -s Exchange -p 10050 -k "ключ" - возвращает результат!
Не помогает на стороне заббикс менять тип элемента: десятичное/двоичное/текст/журнал - не в этом дело, уже проверял.
Не помогает на стороне powershell конвертировать результат в целое число [int]$result в десятичное и т.п. - не в этом дело повторюсь.
Но если сделать усложнив - выгрузить результат в текстовый файл то заббикс его заберет.
Что я еще делал и на что думал и не помогло. Было подозрение что консоль powershell выдает служебную белиберду помимо $result, и выводил я всё это в ноль ($result | out-null) - не помогает. И опять же zabbix_get показывает что заберает результат в чисовом виде от $result.
То есть после команды Get-MessageTrackingLog - вся консоль powershell ничего больше не передает по непонятным причиниам.
Так же, заббикс не передает данные если я подключаю консоль powershell к Exchange. Опять непонятные дела.
$Session=New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri http://Exchange/PowerShell; Import-PSSession $Session -DisableNameChecking | Out-Null
Всё это пахнет сыростью продукта опять. Может я не прав, буду рад, если это так!
Да еще забыл, вот строчки в агенте с ключом string.string[*] (всё просто)
Timeout=10
UserParameter=string.string[*],powershell.exe C:\Scripts\AllSent.ps1
Такой же один элемент с ключом на стороне заббикс.
Объясняю: В простых случаях, если в powershhell в скрипте прописать "hellow world" или допустим число 12 или $a=12; $a
- заббикс заберет эти данные (но это особо никому не нужно), так же забирает другие более сложные команды типа размер файла и т.п. (Get-ChildItem |select Length | sort -Descending | select -Last 1 ).Length.
Но есть действительно команды которые вводят заббикс в тупик, например команду (я не знаю, есть тут немного знакомые с powershell или нет) посмотреть все письма отправленные за последнюю минуту (не важно) и должна вернуться $result в иде обычного числа например 125 (в powershell и zabbix get возвращается без пробелов и других знаков, рассматривал под лупой), но накрывается всё медным тазом и в zabbix мониторинг данные не передаются!!!
$DateStart=(Get-Date).AddMinutes(-1)
$result=(Get-MessageTrackingLog -ResultSize unlimited -Start $DateStart | Sort MessageId -Unique | Group Sender |Select Count,@{N='Sender';E={$_.Group.Sender | select -Unique}} | Measure-Object -Sum Count).Sum
При этом, запущенная проверочная команда zabbix_get -s Exchange -p 10050 -k "ключ" - возвращает результат!
Не помогает на стороне заббикс менять тип элемента: десятичное/двоичное/текст/журнал - не в этом дело, уже проверял.
Не помогает на стороне powershell конвертировать результат в целое число [int]$result в десятичное и т.п. - не в этом дело повторюсь.
Но если сделать усложнив - выгрузить результат в текстовый файл то заббикс его заберет.
Что я еще делал и на что думал и не помогло. Было подозрение что консоль powershell выдает служебную белиберду помимо $result, и выводил я всё это в ноль ($result | out-null) - не помогает. И опять же zabbix_get показывает что заберает результат в чисовом виде от $result.
То есть после команды Get-MessageTrackingLog - вся консоль powershell ничего больше не передает по непонятным причиниам.
Так же, заббикс не передает данные если я подключаю консоль powershell к Exchange. Опять непонятные дела.
$Session=New-PSSession –ConfigurationName Microsoft.Exchange –ConnectionUri http://Exchange/PowerShell; Import-PSSession $Session -DisableNameChecking | Out-Null
Всё это пахнет сыростью продукта опять. Может я не прав, буду рад, если это так!
Да еще забыл, вот строчки в агенте с ключом string.string[*] (всё просто)
Timeout=10
UserParameter=string.string[*],powershell.exe C:\Scripts\AllSent.ps1
Такой же один элемент с ключом на стороне заббикс.
Comment