如何使用PRTG监控Rundeck作业状态?
用PRTG自定义传感器监控Rundeck作业状态
前置准备
- 在Rundeck服务器上生成API令牌:登录Rundeck,进入用户设置页面,创建一个具备作业读取权限的API令牌并妥善保存。
- 确保PRTG所在Windows服务器能访问Rundeck的API端口(默认4440,自定义端口需同步调整)。
自定义PowerShell传感器脚本(单作业监控)
将以下脚本保存为RundeckJobMonitor.ps1,放到PRTG服务器的C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML目录下:
param( [string]$RundeckUrl = "http://your-rundeck-ip:4440", [string]$ApiToken = "your-api-token", [string]$JobId = "your-job-uuid" ) $apiEndpoint = "$RundeckUrl/api/40/job/$JobId/executions?max=1" $headers = @{ "X-Rundeck-Auth-Token" = $ApiToken "Accept" = "application/json" } try { $response = Invoke-RestMethod -Uri $apiEndpoint -Headers $headers -Method Get -ErrorAction Stop $latestExecution = $response.executions[0] $executionStatus = $latestExecution.status $startTime = $latestExecution.dateStarted $endTime = $latestExecution.dateEnded $durationMs = ([datetime]$endTime - [datetime]$startTime).TotalMilliseconds # 输出PRTG兼容的XML格式 Write-Host "<prtg>" Write-Host " <result>" Write-Host " <channel>作业状态</channel>" Write-Host " <value>$($executionStatus -eq 'succeeded' ? 1 : 0)</value>" Write-Host " <unit>Custom</unit>" Write-Host " <ValueLookup>prtg.standardlookups.state.okerror</ValueLookup>" Write-Host " </result>" Write-Host " <result>" Write-Host " <channel>执行时长(毫秒)</channel>" Write-Host " <value>$durationMs</value>" Write-Host " <unit>TimeMilliseconds</unit>" Write-Host " </result>" Write-Host " <text>最新状态: $executionStatus | 开始时间: $startTime | 结束时间: $endTime</text>" Write-Host "</prtg>" } catch { Write-Host "<prtg>" Write-Host " <error>1</error>" Write-Host " <text>API调用失败: $($_.Exception.Message)</text>" Write-Host "</prtg>" }
脚本参数说明
RundeckUrl:你的Rundeck服务器地址(含端口),例如http://192.168.1.100:4440ApiToken:你在Rundeck生成的API令牌JobId:目标作业的UUID(可在Rundeck作业页面的「作业选项」中查看)
PRTG中添加自定义传感器
- 在PRTG控制台中找到已添加的Rundeck设备,右键选择「添加传感器」
- 选择「EXE/Script Advanced」传感器类型
- 在「EXE/Script」下拉菜单中选择
RundeckJobMonitor.ps1 - 在「Parameters」栏填写参数,格式为:
-RundeckUrl "http://x.x.x.x:4440" -ApiToken "your-token" -JobId "job-uuid" - 配置告警阈值:在传感器设置的「Channels」选项中,给「作业状态」通道设置阈值,当值为0(失败/超时)时触发告警
批量监控多个作业的思路
如果需要监控多个Rundeck作业,可以修改脚本接受多个JobId参数,或者借助PRTG的自动发现功能:
- 编写PowerShell脚本调用Rundeck API获取所有作业列表(接口
/api/40/jobs) - 将作业列表格式化为PRTG自动发现兼容的XML
- 创建自动发现模板,批量生成每个作业的监控传感器
内容的提问来源于stack exchange,提问作者aristosv
相关产品推荐
相关产品推荐

