All Projects → bruceye777 → Cronmon

bruceye777 / Cronmon

Licence: gpl-3.0
定时任务执行状态监控

Projects that are alternatives of or similar to Cronmon

Cronmon
PHP Web app to monitor cron/scheduled tasks
Stars: ✭ 55 (-38.89%)
Mutual labels:  scheduled-tasks, monitoring
Firemotd
🔥 Fire Framework Linux MoTD Generator 🔥
Stars: ✭ 156 (+73.33%)
Mutual labels:  crontab, monitoring
Checkinstalledwindowsupdates
Script intended for use in an already established monitoring system that monitors the Windows Update log
Stars: ✭ 80 (-11.11%)
Mutual labels:  monitoring
Shynet
Modern, privacy-friendly, and detailed web analytics that works without cookies or JS.
Stars: ✭ 1,273 (+1314.44%)
Mutual labels:  monitoring
Wazuh Documentation
Wazuh - Project documentation
Stars: ✭ 82 (-8.89%)
Mutual labels:  monitoring
Tail
[Revamped] Go package for reading from continuously updated files (tail -f)
Stars: ✭ 81 (-10%)
Mutual labels:  monitoring
Chronograf
Open source monitoring and visualization UI for the TICK stack
Stars: ✭ 1,245 (+1283.33%)
Mutual labels:  monitoring
Health Checks Api
Standardize the way services and applications expose their status in a distributed application
Stars: ✭ 78 (-13.33%)
Mutual labels:  monitoring
Homer App
HOMER 7.x Front-End and API Server
Stars: ✭ 88 (-2.22%)
Mutual labels:  monitoring
Beamium
Prometheus to Warp10 metrics forwarder
Stars: ✭ 82 (-8.89%)
Mutual labels:  monitoring
Cloudprober
An active monitoring software to detect failures before your customers do.
Stars: ✭ 1,269 (+1310%)
Mutual labels:  monitoring
Gonvml
NVIDIA Management Library (NVML) bindings for Go
Stars: ✭ 82 (-8.89%)
Mutual labels:  monitoring
Gcalcron
Schedule shell commands execution through Google Calendar
Stars: ✭ 81 (-10%)
Mutual labels:  scheduled-tasks
Sampler
Tool for shell commands execution, visualization and alerting. Configured with a simple YAML file.
Stars: ✭ 9,203 (+10125.56%)
Mutual labels:  monitoring
Check Mk Arm
Checkmk for Raspberry Pi.
Stars: ✭ 79 (-12.22%)
Mutual labels:  monitoring
Influxgraph
Graphite InfluxDB backend. InfluxDB storage finder / plugin for Graphite API.
Stars: ✭ 87 (-3.33%)
Mutual labels:  monitoring
Dd Agent
Datadog Agent Version 5
Stars: ✭ 1,224 (+1260%)
Mutual labels:  monitoring
Pcm
Processor Counter Monitor
Stars: ✭ 1,240 (+1277.78%)
Mutual labels:  monitoring
Callmon
CallMon is an experimental system call monitoring tool that works on Windows 10 versions 2004+ using PsAltSystemCallHandlers
Stars: ✭ 83 (-7.78%)
Mutual labels:  monitoring
Krontab
⏰ A crontab like editor for Kubernetes cron jobs
Stars: ✭ 90 (+0%)
Mutual labels:  crontab

cronmon

cronmon 是一个计划任务(定时任务)监控系统,可以对循环执行的程序和脚本进行监控告警,当其未按照预期执行时,发送邮件到对应邮箱进行通知。 同时可以将监控任务划分到不同业务下面,每个业务可以分配不同的通知人,建立业务、通知人和监控任务的多层级关系。

通过以一定的间隔发送HTTPS请求到特定的URL实现监控。如果URL未按时接受到请求,对应的业务通知人则会收到告警。 你可以监控你的数据库备份和安全扫描等关键性任务。

.. image:: https://travis-ci.org/bruceye777/cronmon.svg?branch=master :target: https://travis-ci.org/bruceye777/cronmon

.. image:: https://coveralls.io/repos/github/bruceye777/cronmon/badge.svg?branch=master :target: https://coveralls.io/github/bruceye777/cronmon?branch=master

.. image:: https://badge.fury.io/py/cronmonweb.svg :target: https://badge.fury.io/py/cronmonweb

.. image:: https://img.shields.io/pypi/pyversions/cronmonweb.svg :target: https://pypi.python.org/pypi/cronmonweb/

安装


从github下载安装

.. code:: bash

        $ git clone [email protected]:bruceye777/cronmon.git
        $ python setup.py install  # 如果无需安装到site-packages目录,此步可省略。

初始化

解压缩/安装之后,需要进行初始化工作,包括全局配置修改、系统表初始化和样例数据插入。

.. code:: bash

    $ vim cronmon/conf/config.py  # 全局配置修改

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/globalConfig.png

.. code:: bash

    $ python migrate.py init  # 系统表初始化,初始用户名和密码均为cronadmin
    $ python migrate.py sample  # 样例数据插入

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/init.png

启停程序


.. code:: bash

        $ uwsgi cronmon.ini&  # 启动程序
        $ uwsgi --stop /var/run/uwsgi_cronmon.pid  # 停止程序

如果将cronmon安装成服务(使用production/cronmon文件)

.. code:: bash

        $ service cronmon start  # 启动程序
        $ service cronmon stop  # 停止程序

使用
~~~~

-  登录;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/login.png

-  登录之后,看到的首页;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/home.png

-  业务管理相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/businesslist.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/businessedit.png

-  通知人管理相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/notifylist.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/notifyedit.png

-  业务通知人管理相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/businessnotifylist.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/businessnotifyedit.png

-  任务管理相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/tasklist.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/taskedit.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/taskloglist.png

-  系统管理相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/permlist.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/permedit.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/passwordreset.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/permbizedit.png

-  用户相关操作;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/user.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/passwordchange.png

-  业务管理员(普通用户)操作界面,业务通知人和任务可以查询编辑,通知人仅限查询;

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/normalUser.png


API调用
~~~~~~~

获取所有监控任务

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/apiTasksAll.png

按指定关键字获取任务(业务名、任务名和任务URL)

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/apiTasksTaskname.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/apiTasksBizname.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/apiTasksUrl.png

公共参数包括page(显示第几页)和length(每页显示多少记录)


如何使用监控链接

在不同情况下调用任务监控URL的写法

  • crontab写法

.. code:: bash

    # system status check
    20 * * * * cd /path/to/systemStatusCheck && ./systemStatusCheck.sh > systemStatusCheck.sh.cron.log 2>&1 && curl -kfsS --retry 3 --connect-timeout 10 --ipv4 https://cronmon.yoursite.io/api/monlink/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx >> systemStatusCheck.sh.cron.log 2>&1
  • bash写法

.. code:: bash

    $ curl -kfsS --retry 3 --connect-timeout 10 --ipv4 https://cronmon.yoursite.io/api/monlink/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • python写法

.. code:: python

    >>> import requests
    >>> requests.get('https://cronmon.yoursite.io/api/monlink/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

生产环境


-  服务启停

以CentOS为例,首先编辑相关变量

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/serviceManageConfig.png

然后将启动脚本(production/init.d/cronmon)放入/etc/init.d目录

.. code:: bash

        $ service cronmon help
        Usage: cronmon {start|stop|restart|reload|status|help}
        $ chkconfig --level 35 cronmon on  # 加入开机启动

-  日志分区

针对日志表数据,为了方便管理和提高效率,使用mysql分区,首先导入存储过程创建sql文件(production/cronmonPartition.sql),
脚本首先修改表结构,添加了复合主键(id+create_datetime),然后创建了所需的5个存储过程,脚本基于zabbix分区创建脚本进行修改
(链接https://www.zabbix.org/wiki/Docs/howto/mysql_partition#MySQL_Database_Partitioning),执行脚本后结果如下:

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/mysqlPartitionTableStructure.png
.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/mysqlPartitionProcedures.png

对应的shell脚本

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/mysqlPartitionShellScript.png

对应的crontab配置

.. code:: bash

        # cronmon mysql partition
        15 0 * * * cd /path/to/cronmonMysqlPartition && ./cronmonMysqlPartition.sh > cronmonMysqlPartition.sh.cron.log 2>&1 && curl -kfsS --retry 3 --connect-timeout 10 --ipv4 https://cronmon.yoursite.io/api/monlink/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx >> cronmonMysqlPartition.sh.cron.log 2>&1

-  WebService配置

以nginx为例

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/nginxConfig.png

-  日志轮转

以logrotate为例

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/logRotate.png

数据库结构变更

如果要新增表或者修改表结构,通过如下方式进行:

.. code:: bash

    $ vim migrate.py  # 修改表结构定义文件

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/createNewTable.png .. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/alterCurrentTable.png

压力测试


-  配置调整

uwsgi相关配置

| [uwsgi]
| listen=10240
| processes=8
| gevent=100

系统相关配置

.. code:: bash

        # echo 'net.core.somaxconn=4096' >> /etc/sysctl.conf

-  压测表现

使用ab对监控链接进行压力测试,10000并发无错误(目前只测试到10000并发,未测试更高并发),客户端和服务端网络延迟在11ms左右:

.. code:: bash

        $ ab -n 50000 -c 10000 https://cronmon.yoursite.com/api/monlink/ba60afc4-f162-11e8-a56a-001b7872e686

.. image:: https://raw.githubusercontent.com/bruceye777/cronmon/master/docs/images/abStressTest.png

贡献
~~~~

如果您想贡献代码,只需fork本仓库,然后push您的更改并发送pull请求。

获取帮助

如果您有任何问题或建议,请在此仓库中打开一个issue,我会尽力提供帮助。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].