繁体   English   中英

计划作业的 Rundeck 详细信息

[英]Rundeck details of scheduled job

在 rundeck(带有 H2SQL 的 OpenSource v3.3.1)中,有没有办法查看计划作业的详细信息? 对我们来说,了解将执行作业的节点列表很重要。 我在文件和 H2 DB 中进行了搜索,但无法获取用于安排作业的节点或过滤器。

您可以在“活动”面板上看到,单击任何执行(计划或未计划),然后单击“日志输出”,您可以看到所有作业的详细信息。 此外,您可以检查执行日志,通常位于/var/lib/rundeck/logs/rundeck/<projectname>/job/<job-id>/logs路径。

您可以在此处查看更多信息。

更新 1:您可以使用预测 API 调用来检查“要执行”的作业,我留下一个使用它的脚本:

#!/bin/sh

#############################################
echo "Insert the Rundeck Server hostname:"; read -r rundeckServer
echo -e "\nWhich port?:"; read -r rundeckPort
echo -e "\nCopy and Paste the Rundeck API Token:"; read -r rundeckApitoken

#############################################
# to run unatended mode, please comment the code above and uncomment the code below, and replace with your props
#############################################
# rundeckServer="node01.rundeck.local"
# rundeckPort="4440"
# rundeckApitoken="P0K0EvIAoWkAbmvj3JnlelmwaVhF5AJd"
#############################################
# Options Variables
#############################################
rundeckProtocol="http"
rundeckApiversion="31"
rundeckApiformat="json"
curlOptions="-s"
#############################################
echo
echo "The following Jobs are Scheduled:"
echo

for projectName in $(curl -X "GET" "$curlOptions" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/projects|sed 's/,/\n/g'| grep name | cut -d ":" -f2 | tr -d '"')
    do
        for jobId in $(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/project/"$projectName"/jobs | sed 's/,/\n/g' | grep id | cut -d ":" -f2 | tr -d '"')
            do
                output=$(curl "$curlOptions" -X "GET" -H "Accept: application/$rundeckApiformat" -H "Content-Type: application/$rundeckApiformat" -H "X-Rundeck-Auth-Token: $rundeckApitoken" "$rundeckProtocol"://"$rundeckServer":"$rundeckPort"/api/"$rundeckApiversion"/job/"$jobId"/forecast?time=7d | grep "futureScheduledExecutions")
                if [ -n "$output" ]
                    then
                        echo $output | sed -r 's/.+("href":".+),.+("futureScheduledExecutions":\[.+\]),.+("project":".+),("name":".+).+/\1\n\3\n\4\n\2/g'
                        echo
                fi
        done
done

更新 2:我留下更简单的预测 API 调用,(需要jq )。

curl --location --request GET 'http://localhost:4440/api/35/job/your-job-id/forecast' --header 'Accept: application/json' --header 'X-Rundeck-Auth-Token: your-user-token' --header 'Content-Type: application/json' --data-raw '' | jq

打印所有信息:

{
  "href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
  "scheduleEnabled": true,
  "scheduled": true,
  "enabled": true,
  "permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "group": null,
  "futureScheduledExecutions": [
    "2020-08-06T14:33:00Z"
  ],
  "description": "",
  "project": "ProjectEXAMPLE",
  "name": "ExampleJob"
}

更新 3:现在结合导出作业信息和预测 API 调用,您可以获得作业信息和节点,我留下一个示例脚本:

#!/bin/sh

#####################################################
# rundeck instance values
server="localhost"
port="4440"
api="35"
jobid="328789d1-986f-4aa2-9013-de8eb6b6df98"
token="MhloqezoV3IygvOIA6yzE9TNlzYCbi4m"

info=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid/forecast" --header "Accept: application/json" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/json" | jq)

nodes=$(curl -s --location --request GET "http://$server:$port/api/$api/job/$jobid" --header "Accept: application/xml" --header "X-Rundeck-Auth-Token:$token" --header "Content-Type: application/xml" --data-raw "" | grep -oPm1 "(?<=<filter>)[^<]+")

echo "######################"
echo "Job information: $info"
echo "######################"
echo "Nodes: $nodes"
echo "######################"

使用以下数据:

######################
Job information: {
  "href": "http://localhost:4440/api/35/job/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "id": "328789d1-986f-4aa2-9013-de8eb6b6df98",
  "scheduleEnabled": true,
  "scheduled": true,
  "enabled": true,
  "permalink": "http://localhost:4440/project/ProjectEXAMPLE/job/show/328789d1-986f-4aa2-9013-de8eb6b6df98",
  "group": null,
  "futureScheduledExecutions": [
    "2020-08-07T14:33:00Z"
  ],
  "description": "",
  "project": "ProjectEXAMPLE",
  "name": "ExampleJob"
}
######################
Nodes: localhost
######################

更新 4:作业定义数据在数据库(H2 或其他任何东西)上“分布”。 因此,例如,如果您针对MySQL配置 Rundeck 并使用任何工具访问数据库,则节点过滤器将保存scheduled_execution表中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM