V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kkfnui
V2EX  ›  问与答

定时任务监控轮子?

  •  
  •   kkfnui · 2017-12-22 15:10:57 +08:00 · 3094 次点击
    这是一个创建于 2556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    服务中有很多数据是定时任务计算出来的,定时任务运行是会有很多异常情况导致任务异常退出

    本想程序中增加异常捕获,在最外层加上 try catch,然后通过 微信或者邮件发出通知告警。 但有些情况监控不了:

    1. 进程被其他人 kill,内存不足被系统强杀
    2. 运行节点断网或者停机(这个其实可以监控节点状态

    task and job

    设想有个定时任务的框架,每个定时程序作为一个 task,每次运行是一个 job。 有个统一的服务可以收集到 task 的运行状态,每个 job 运行的详情。

    这样可以监控:

    1. 如果一个 task 长时间没有 job,则报警
    2. 如果一个 job 运行时间过久 报警

    想到有两种实现方式:

    1. 托管方式,有用过 jenkins,但是感觉太重了,不适合这样的定时任务。现状是有多个人写了脚本,定时执行,并且在不同机器上,对配置要求不一样
    2. 脚本侵入式,可以避免上面需要搭建平台服务,并且可以服用原来的资源分配。缺点是需要修改原来所有的脚本,所以是想该的简单些。类似的暴露三个接口:init(task_info ), run(argv), uninit()

    1. 托管方式的不知道是不是有类似 jenkins,但是轻量点适合定时任务的
    2. 侵入式的,就有些开发工作量了。需要搭建服务,做定时检查报警这些工作了。不知道有没有现成的轮子。
    9 条回复    2017-12-25 13:44:58 +08:00
    kkfnui
        1
    kkfnui  
    OP
       2017-12-22 15:12:38 +08:00
    第二种,可能还想夹带私货。
    在 job 运行完成后,附带上报该 job 的一些附带属性。

    - 更新了多少条 mysql 记录
    - 耗时多少
    mpich
        2
    mpich  
       2017-12-22 15:14:05 +08:00   ❤️ 1
    airflow?
    Livid
        3
    Livid  
    MOD
       2017-12-22 15:21:10 +08:00   ❤️ 1
    如果是用 Python 写的话:

    APScheduler + Sentry.io
    kkfnui
        4
    kkfnui  
    OP
       2017-12-22 15:35:03 +08:00
    @mpich 我看看,学习学习
    kkfnui
        5
    kkfnui  
    OP
       2017-12-22 15:44:52 +08:00
    @Livid 语言不仅仅是 python, 我先了解下
    dong3580
        6
    dong3580  
       2017-12-22 16:11:00 +08:00
    如果是 C#直接创建个 service 服务,或者新建个 win/console 程序开个进程监控时间,你这个场景可以用前者。
    fjkfwz406
        7
    fjkfwz406  
       2017-12-23 13:30:33 +08:00 via iPhone   ❤️ 1
    airflow 满足所有需求
    kkfnui
        8
    kkfnui  
    OP
       2017-12-25 10:43:03 +08:00
    @fjkfwz406
    @mpich

    看了下确实大部分都能够满足,但是对于运行时间过长的任务,希望能够报警(但是不杀死任务),应该怎么做?
    没有看到类似 trigger
    fjkfwz406
        9
    fjkfwz406  
       2017-12-25 13:44:58 +08:00 via iPhone   ❤️ 1
    @kkfnui 看下 airfow 的 SLA
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2750 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:29 · PVG 22:29 · LAX 06:29 · JFK 09:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.