Назад | Перейти на главную страницу

Ошибки Zabbix Discovery JSON

У меня есть правило обнаружения Zabbix для серверов Windows, чтобы запустить сценарий PowerShell и вернуть имена экземпляров SQL и базы данных. Эта версия Zabbix агента (3.4.6) и конфигурация отлично работают для обнаружения на десятках других серверов, но по какой-то причине этот сервер, в частности, добавляет дополнительный текст к выходным данным, что делает JSON недействительным.

Вот пример zabbix_get для этого хоста:

[root@zabbix]# zabbix_get -s host1  -k mssql.db.discovery
Active code page: 1252
{
 "data":[

{ "{#INST}" : "Instance1", "{#DBNAME}" : "Database1" },
{ "{#INST}" : "Instance1", "{#DBNAME}" : "Database2" }

 ]
}

Сообщение «Активная кодовая страница: 1252» нарушает JSON. У меня такое ощущение, что это проблема с кодировкой, но я не уверен, где это могло быть. Все конфиги и скрипты были скопированы из того же источника, из которого рабочие серверы получили свои, поэтому я не знаю, в чем разница.

Что интересно, это не ограничивается сценариями PowerShell. Выполнение простой команды также генерирует сообщение:

[root@zabbix]# zabbix_get -s host1  -k system.run["hostname.exe"]
Active code page: 1252
host1

И еще одно замечание - бег zabbix_agentd.exe -t "mssql.db.discovery" на рассматриваемом хосте также выдает такое же сообщение. Но выполнение сценария отдельно в Powershell ISE на этом хосте не создает этого сообщения.

У меня такой вопрос - знает ли кто-нибудь способ остановить добавление этого сообщения Windows / Zabbix или обходной путь, чтобы он не нарушил мой JSON?

Я нашел решение, которое сработало. Оказывается, был ключ реестра Autorun для запущенного cmd.exe chcp 1252 каждый раз, когда вы запускаете команду, заставляя ее повторять это сообщение.

Я просто удалил HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\Autorun key, и никаких сообщений «Активная кодовая страница» в начале моих команд.