У меня есть скрипт Powershell для сбора данных с сервера базы данных. Сценарий работает нормально в ОС, но завершается неудачно с кодом выхода 1, затем я запускаю тест телеграфа (telegraf --config telegraf.d\my_db_conf.conf --test --debug
)
Вывод:
2020-04-09T22 : 44: 14Z E! [input.exec]: Ошибка в плагине: exe c: выход из состояния 1 для команды 'powershell C: / Progra ~ 1 / telegraf /telegraf.d/Scripts/script.ps1': C: / Progra ~ 1 / telegraf / telegraf.d / Scripts / script.ps1: Термин ...
Мне бы очень хотелось узнать, что будет после "Термина ...", но я не могу это уловить в журнале или в консоли.
Сценарий PowerShell:
$sql = @"
select ...
from sys.stats s
join ...
where ...
"@;
$dbs = Invoke-SqlCmd -Database master -Query "select name from sys.databases where name != 'tempdb'" -QueryTimeout 60;
$stats = @();
$results = @();
foreach($db in $dbs) {
$stats += Invoke-Sqlcmd -Database $db.name -Query $sql -QueryTimeout 60;
$stats | % {
$results += @{
database_name = $_.database_name;
schema_name = $_.schema_name;
table_name = $_.table_name;
stat_name = $_.stat_name;
stat_leading_column = $_.stat_leading_column;
last_udpdate_date = $_.last_updated;
rows = $_.rows;
unfiltered_rows = $_.unfiltered_rows;
rows_sampled = $_.rows_sampled;
modifications = $_.modification_counter;
update_threshold = $_.update_threshold;
}
}
}
$json_result = ConvertTo-Json -InputObject $results;
return $json_result;
Конфигурация сборщика:
[[inputs.exec]]
interval = "6h"
commands = ["powershell C:/Progra~1/telegraf/telegraf.d/Scripts/script.ps1"]
timeout = "2m"
name_override = "sql_statistics"
Существует несколько сценариев PowerShell, которые используют одну и ту же конфигурацию (разные name_override
и разные commands
параметры), которые работают просто отлично.