Skip to content

如果程序例行执行时间可能频繁变化,可以使用本程序替代crontab

Notifications You must be signed in to change notification settings

jishipu/alarmdaemon

Repository files navigation

做监控报警项目时,遇到一些需要解决的问题:

  • 有很多的监控项,每个监控项的轮执时间和执行时长可能都不一样,如有的每10分钟执行一次,有的每1个小时执行一次。
  • 要保证每个监控项在本轮次没有执行完成之前(如执行超时等),下一轮次的执行不能触发。
  • 每个监控项的轮执时间可以随时被修改和删除,修改后要尽快的按照新的轮执时间执行。

如果用crontab来完成工作,显然太复杂了,至少要解决频繁的修改删除问题,另外也不能保证快速的执行新的轮执时间等。 libev有ev_periodic这个功能。所以基于libev写了alarmdaemon这个小程序,目前运行已经有6个月了,运行正常。

#####基本思路:

系统定义监控项数组MONITOR_ITEM。主进程每隔5分钟请求一次mysql数据库,获取最新监控项目,更新MONITOR_ITEM。 如果是新的监控项,新建一个业务线程做轮执业务操作,如果是修改间隔时间,停止当前业务线程,新建一个业务线程。

#####程序安装:

解压libev-4.15.tar.gz,进入libev-4.15

./configure
make
make install

假定mysql安装目录在/data/webserver/mysql

ln -s /data/webserver/mysql/include /usr/include/mysql
ln -s /data/webserver/mysql/lib /usr/lib64/mysql  #运行在64位操作系统下
echo "/usr/lib64/mysql" >>/etc/ld.so.conf && ldconfig

进入alarmdaemon目录,运行make,生成的运行程序在bin目录下。

About

如果程序例行执行时间可能频繁变化,可以使用本程序替代crontab

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published