ZABBIX脚本超时

问题描述 投票:0回答:2

我试图从对的zabbix代理清理磁盘运行PowerShell脚本。看来,脚本运行时间过长,而不是回应我的错误。

powershell -NonInteractive C:\Scripts\CleanDisk.ps1 -deleteLogsOlderThanDays 10

脚本删除一些日志和临时文件夹和打印的统计数据。如果只有几个文件夹,删除它的工作的罚款。但是,如果脚本运行时间过长则对话窗口与脚本结果,错误获得价值从结束代理失败:ZBX_TCP_READ

猜猜这是因为连接到客户端超时。是否有某种方式如何克服这种限制?谢谢

powershell scripting monitoring zabbix
2个回答
0
投票

我的同事们发现可用的解决方法。取而代之的启动脚本将运行很长一段时间它与Schtask.exe的更好,只计划脚本。所以我修改剧本,现在它包含两个部分。一个是负责安排和开始预定任务(计划它的自我,但使用不同的参数),第二重型和长时间运行的确实的动作。调度的结果将出现在ZABBIX,长时间运行的作用结果执行脚本对话框将日志文件...

下面是例子PowerShell脚本StartCleanDisk.ps1的。在这种情况下,任务将被预定并立即调度执行。

StartCleanDisk.ps1 -deleteLogsOlderThanDays 10 -startAsTask 1

在这种情况下,任务将直接执行。

StartCleanDisk.ps1 -deleteLogsOlderThanDays 10 -startAsTask 0

StartCleanDisk.ps1内容:

[CmdletBinding()]
param
(
    [parameter(Mandatory=$true)]
    [int]
    $deleteLogsOlderThanDays,
    [bool]
    $startAsTask = $false
)

if ($startAsTask)
{
    Write-Output "Scheduling task for cleaning disk ...";

  $taskname = "CleanDisk"
    $logFile = "X:\logs\Tasks\cleaningDisk.log";
    $task = "powershell $PSScriptRoot\StartCleanDisk.ps1 -deleteLogsOlderThanDays $deleteLogsOlderThanDays -startAsTask 0 > $logFile 2>&1";
    & schtasks /create /ru "System" /tn $taskname /tr $task /sc once /ST 23:59 /F /V1 /Z;
    Write-Output "Task Clean disk created...";
    & schtasks /run /tn $taskname;
    Write-Output "Task $taskname started... Please chek $logFile";
    exit 0;
}

#####################
# Script begins here
# PUT HERE COMMANDS FOR DELETING
#####################

0
投票

开始作为一个隐藏的进程

UserParameter=Key[*],powershell -NoProfile -ExecutionPolicy Bypass Start-Process powershell -ArgumentList \\Path\SYSVOL\..\scripts\Files\Zabbix\Key.$1.ps1 "$2" "$3" -Windowstyle Hidden

其中key [*]是的zabbix代理开始的PowerShell的活动项目,在Windows主机上,用于名PowerShell的scrips的变化$ 1,“$2" "$3" "next"任何参数

如果$1="Ring"那么脚本的名称将Key.Ring.ps1

© www.soinside.com 2019 - 2024. All rights reserved.