You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何监控HPCC集群(Thor)中cron任务并在异常时发送通知?

监控HPCC集群Thor节点cron任务并发送故障通知的可行方案

1. 利用cron原生邮件通知

cron默认会将任务的输出(包括错误信息)发送至执行用户的本地邮箱。你可以通过以下方式将告警转发到指定邮箱:

  • 编辑用户主目录下的~/.forward文件,添加目标告警邮箱:
    your-alert-email@example.com
    
  • 确保集群节点的邮件服务(如postfix、sendmail)已配置完成并能向外发送邮件。如果任务无输出,可在cron命令后追加强制告警逻辑:
    0 * * * * /path/to/your-thor-task.sh || echo "Thor定时任务执行失败" | mail -s "Cron任务告警" your-alert-email@example.com
    

2. 自定义状态监控脚本

编写shell脚本记录任务运行时间,对比预期间隔判断是否异常,触发告警:

  • 监控脚本示例(cron_monitor.sh):
    #!/bin/bash
    TASK_NAME="thor-custom-cron"
    LAST_RUN_RECORD="/var/log/${TASK_NAME}_last_run"
    EXPECTED_INTERVAL=3600  # 任务预期执行间隔(秒,示例为1小时)
    CURRENT_TIMESTAMP=$(date +%s)
    
    if [ -f "$LAST_RUN_RECORD" ]; then
        LAST_RUN_TIMESTAMP=$(cat "$LAST_RUN_RECORD")
        TIME_DELTA=$((CURRENT_TIMESTAMP - LAST_RUN_TIMESTAMP))
        if [ $TIME_DELTA -gt $EXPECTED_INTERVAL ]; then
            echo "告警:$TASK_NAME 已超过$EXPECTED_INTERVAL秒未执行,上次运行时间:$(date -d @$LAST_RUN_TIMESTAMP)" | mail -s "Thor Cron任务异常" your-alert-email@example.com
        fi
    else
        echo "告警:$TASK_NAME 无运行记录,可能从未执行" | mail -s "Thor Cron任务异常" your-alert-email@example.com
    fi
    
  • 在你的定时任务末尾添加更新运行时间的命令:
    0 * * * * /path/to/your-thor-task.sh && date +%s > /var/log/thor-custom-cron_last_run
    
  • 配置监控脚本的定时执行(比如每30分钟检查一次):
    */30 * * * * /path/to/cron_monitor.sh
    

3. 结合HPCC平台原生监控工具

借助HPCC自带的监控体系扩展cron任务监控:

  • ECL Watch自定义监控项:在ECL Watch中添加外部脚本监控,将cron任务的运行状态作为指标上报,配置阈值触发告警通知。
  • HPCC监控框架:通过配置监控规则,检测节点上的cron进程状态或任务日志,当发现异常(如进程未启动、日志长时间无更新)时,触发邮件或其他告警方式。

4. 日志分析触发告警

将cron任务的输出定向到专属日志文件,通过检查日志更新或错误关键词触发告警:

  • 修改定时任务,将日志写入指定文件:
    0 * * * * /path/to/your-thor-task.sh >> /var/log/thor_cron_task.log 2>&1
    
  • 日志检查脚本示例:
    #!/bin/bash
    LOG_FILE="/var/log/thor_cron_task.log"
    LAST_MODIFIED=$(stat -c %Y "$LOG_FILE")
    CURRENT_TIMESTAMP=$(date +%s)
    
    # 检查日志是否超时未更新
    if [ $((CURRENT_TIMESTAMP - LAST_MODIFIED)) -gt 3600 ]; then
        echo "告警:Thor定时任务日志已超过1小时未更新" | mail -s "Cron任务告警" your-alert-email@example.com
    fi
    
    # 检查日志中的错误关键词
    if grep -q "ERROR\|Failed\|Exception" "$LOG_FILE"; then
        echo "告警:Thor定时任务执行出错,日志路径:$LOG_FILE" | mail -s "Cron任务错误告警" your-alert-email@example.com
        # 可选:清除已告警的错误记录,避免重复通知
        sed -i '/ERROR\|Failed\|Exception/d' "$LOG_FILE"
    fi
    
  • 配置该脚本定时执行,比如每15分钟一次。

内容的提问来源于stack exchange,提问作者Akhilesh Badhri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:25:33