我正在尝试监视在GKE上运行的CronJob,但看不到一种简单的方法来检查CronJob是否正在实际运行。如果CronJob的运行时间不超过X的时间,并且Stackdriver似乎不支持它,我想触发警报。
此刻,我尝试使用基于日志记录指标的警报,但这仅在应用程序崩溃或特定错误而不是平台错误本身的情况下为我提供警报。
我研究了使用Prometheus警报的解决方案,可以将其集成到Stackdriver中吗?
答案 0 :(得分:0)
看起来它像是一个cronjob,可以启动标准的Kubernetes作业,您可以查询该作业,然后检查它的开始时间,并将其与当前时间进行比较。
注意:我不熟悉stackdriver,所以这可能不是您想要的,但是...
例如用bash:
START_TIME=$(kubectl -n=your-namespace get job your-job-name -o json | jq '.status.startTime')
echo $START_TIME
您还可以像这样通过JSON Blob获取作业的当前状态:
kubectl -n=your-namespace get job your-job-name -o json | jq '.status'
这将给出如下结果:
{
"completionTime": "2019-09-06T17:13:51Z",
"conditions": [
{
"lastProbeTime": "2019-09-06T17:13:51Z",
"lastTransitionTime": "2019-09-06T17:13:51Z",
"status": "True",
"type": "Complete"
}
],
"startTime": "2019-09-06T17:13:49Z",
"succeeded": 1
}
您可以在检查脚本中使用jq之类的工具查看成功或类型字段,以查看作业是否成功。
因此,使用您的START_TIME值,您可以获取当前时间或作业完成时间( completionTime ),如果结果小于您的最低作业时间阈值,则可以触发警报-例如POST到松弛的Webhook,以发送通知或您使用的任何其他警报系统。