配置 cron 任务的语法:crontab [option] [username]
语法 | 描述 |
crontab -e [username] | 编辑该用户的计时器设置 |
crontab -l [username] | 列出该用户的计时器设置 |
crontab -r [username] | 删除该用户的计时器设置 |
crontab -v [username] | 列出该用户cron作业的状态 |
清单 3. Crontab 配置演示 上面的配置将使 create_folder_daily.sh 每天凌晨 1 点钟运行一次,也就是说每天都会在 /root/workdir/ 目录下生成一个以当前日期命名的文件夹。
0 1 * * * /root/workdir/create_folder_daily.sh
3、中国移动飞信免费发短信 API 接口
飞信是由中国移动通信集团公司推出的一款集商务应用和娱乐功能为一体的,基于手机应用以及与 Internet 深度互通的即时通讯产品,可免费给好友发送短信。下载中国移动飞信 PC 客户端软件,并注册开通飞信。注册成为飞信用户,下载飞信PC客户端、使用 PC 客户端基本功能,不收取费用。通过 API 接口,即可免费给飞信好友或给你自己的手机发短信。利用本 API 接口可进行日程提醒、服务器监控、报警、故障通知或短信自动控制等功能。
它有 2 种调用方式:
清单 4. 浏览器调用方式
https://fetionlib.appspot.com/restlet/fetion/您手机号/您的飞信密码/接收方手机号/短信内容
清单 5. Linux下调用方式
curl https://fetionlib.appspot.com/restlet/fetion/您手机号/您的飞信密码/接收方手机号/短信内容
流程设计
程序主要分为 monitor.sh 主监控程序和 monitor_helper.sh 助手程序,下面将分别介绍:
1、monitor.sh
主监控程序,每 1 分钟运行一次,如果发现了某个检查点有问题,程序会自动给 DBA 发送一条短信,这样做是为了保证在出现问题的时侯 DBA 能在最短的时间内做出反映。
主监控程序流程图,如下:
正如上面展示的,只有某个检查点出现问题的时候,才会给DBA发短信提醒,如果正常的时候只会写日志,不会打扰DBA,这样保证让DBA更专心的做其它工作。
2、monitor_helper.sh
那么大家想一下,如果主监控进程停掉了怎么办呢?我们会误认为一切监控检查点都是正常的,所以我们需要一个方案来保证主监控程序正常运转,于是助手程序产生,每天 10 点运行一次,用于辅助主监控程序。它有如下 2 个功能:
监控主程序是否正常运转:它每天扫描日志文件,如果主监控程序当天的日志文件存在,那么说主监控进程是正常工作的,此时助手程序不做什么动作;如果找不到日志,那么它会给 DBA 发短信提醒主监控进程意外死掉了。
清理日志:由于主监控程序是每分钟调用 1 次,那么随着时间的推移它会产生大量的日志文件,如果不清理,会直接影响机器的存储空间,所以需要此助手程序进行日志清理的
助手程序流程图,如下:
这样我们即有主监控程序,又有助手程序,所以程序的安全性已经很高了,这回DBA就可以高枕无忧了。
项目实战
我们依然以南风公司为例,但需要将真实的情况缩小为一个便于大家理解的模型,所以我们假设该公司分别在北京和上海各有 1 组服务器(真实情况有更多组服务器),北京网通 1 区机房这组服务器里有 2 台服务器(真实情况是每组有更多的服务器),上海电信 1 区机房也有 2 台服务器(真实情况是每组有更多的服务器)。
程序目录结构及说明如下:
1、.profile文件说明
配置文件,存储常量信息、短信收发方相关信息及数据库服务器配置信息等,具体如下:
清单 6. .profile 文件
LOG_DIR=log
SENDER_ID=137********
SENDER_PWD=pwd********
RECEIVER_LIST=Tom~137********
SERVER_GROUP_CFG_DIR=server_group_cfg
EXPIRED_DAY=2
变量名 | 变量描述 |
LOG_DIR | 表示 monitor.sh 产生的日志文件的路径 |
SENDER_ID | 短信发送方手机号 |
SENDER_PWD | 短信发送方飞信密码 |
RECEIVER_LIST | 短信接收方列表 |
SERVER_GROUP_CFG_DIR | 服务器组配置文件的路径 |
EXPIRED_DAY | 用于 monitor_helper.sh 清理日志时用,此处为 2 表示清除 2 天前的日志 |
2、bj_cnc1 文件说明
服务器组配置文件,存储每组服务器中所有数据库的配置信息,具体如下:
清单 7. bj_cnc1 文件
第100号MySQL:86.160.1.100:1521:test_user0:test_pwd0:test_db_100
第101号MySQL:86.160.1.101:1522:test_user1:test_pwd1:test_db_101
表示北京网通1区中所有数据库的配置信息,本例仅以 2 个库为例,每个字段的含义如下:
列号 | 描述 |
第1列 | 数据库的中文描述 |
第2列 | 数据库的 IP 地址 |
第3列 | 数据库的监听端口 |
第4列 | 数据库用户名 |
第5列 | 数据库用户密码 |
第6列 | 服务器的名字 |