Cronicle初探
最近这几天黑神话悟空发布掀起了国内外西游记的热度,第一时间入手游戏体验一下,灵虚子差点教“做人”,游戏难度不低,现在还卡在白衣这边……。

这两周“慵懒”没有更新工作杂记,正好工作上需要一款可以代替旧的nagios同时还具备计划任务调度的工具,同事推荐了Cronicle,直接安排上。
背景
之前线上存在需要使用POST方式的服务监控,运维这边用的nagios,后来忘记是开发还是测试同学用(https://gitee.com/ecar_team/apimonitor)这个来加POST类型的监控。

随着运维工具系统的不断更新迭代,特别是通知功能专门摘出去成为一个独立的系统,之前的这些nagios和apimonitor系统去加入通知系统非常不方便。从我个人的角度,有不少的nagios脚本,带一些独立的检测数据,需要在服务异常的时候能发到业务沟通群、个人手机、邮件报警信息(这块其实就是独立的通知系统要定制的),如何进行迁移就成了个大问题。
Cronicle安装
项目地址:https://github.com/jhuckaby/Cronicle
2.9K Star开源一款类似crontab的工具,带UI界面 正如这篇文章中介绍的:
Cronicle是一个基于Node.js的高级Cron替代工具,用于多服务器任务调度和执行。它具有基于Web的前端UI,能够处理定时、重复和按需作业,并支持对任意数量的工作服务器进行调度。它提供实时统计数据和实时日志查看器的功能。Cronicle可以接收简单的shell命令,也支持使用各种编程语言编写插件。
软件的功能特点

支持多服务器部署、自动发现、支持自定义的脚本、支持webhook等都比nagios强太多了,直接上手部署。
需要用root账号在修改下/opt目录权限,使运维普通账号可以部署Cronicle,这块主要是防止写错一些命令或者出现一些Bug导致因为是root而误删系统文件的小概率事件(一切都要稳妥)。
/opt/cronicle/bin/control.sh start 启动服务
Cronicle应用
梳理之前nagios脚本的运行逻辑:定时(10分钟或者20分钟)运行一些本机的计划任务(shell或者Python脚本),拿到任务执行的状态,根据返回值判断服务是否异常并发到指定报警组(POPO群、短信、邮件)。

每个定时调度任务都可以看到历史执行的状态

点进去可以看到调度任务执行的细节,包括CPU和内存使用情况、Error Output、 Job Event Log

通知这块调用自己编写的webhook来实现发送报警到自定义的接收人

webhook这边用的https://docs.n8n.io

增加对任务调度返回信息的获取处理,从中拿出异常的信息,去掉多余的信息之后通过HTTP方式发给通知系统,我收到的短信类似这样,可以看到job failed on 在哪台机器,失败的job details地址,还有开始的时间,这些信息可以很方便我去处理。

定义好发送的webhook,检测的脚本直接使用之前在nagios里面写好的,同时复制一份到另外一台机器这样就实现了高可用,存放job调度日志的这些都放到s3上(间接解决了系统配置的高可用问题)。
写在最后
Cronicle完美实现了替代之前nagios的功能,而且在时间设置、通知上更方便易用,解决了老nagios这个“鸡肋”,值得推荐大家也安装试用一下。运维工具根据工作场景、业务场景的不断更新也在不停迭代更新中,好的运维功能可以快速实现“降本增效”的目标。