前言
因为近期在调研性能监控工具SkyWalking,SkyWalking推荐的持久化数据源为elasticsearch,因为SkyWalking的数据量过大,在使用MySQ作为数据源的时候出现过测试服务器磁盘被写满的情况。所以切换成elasticsearch,并通过配置索引过期策略,控制ES的数据量。
在控制ES数据量的同时,希望可以通过定期检测ES数据占用内存的变化,所以应用到了Linux定时任务。
1. 利用Crontab定时任务监控ES占用内存变化
1.1. 获取ES占用内存情况,并输出到文件
# 进入es的目录
cd /home/es
# 编写一个获取es占用内存情况的脚本
vim recordEsMemory.sh
脚本内容如下:
cd /home/es;
# 获取es中data的磁盘占用大小,并追加到esMemory.log,并将当时的时间信息追加到前面
echo $(date)":" "$(du -sh * | greop data)" >> /home/es/esMemory.log
# 定义一个执行成功的返回值,在crontab的日志中会用到
echo $(date)": es memory record success"
脚本可执行化
# 脚本可执行化
chmod +x recordEsMemory.sh
# 测试脚本执行,可以看到当前目录下会输出esMemory.log
./recordEsMemory.sh
1.2. 使用crontab定时执行上述脚本
# 查看crontab文件,每个定时任务单独占一行
crontab -l
# 编辑crontab文件,加入定时任务,与vim类似
crontab -e
crontab 文件
# 其他以前的定时任务
1 18 * * * sh /home/test.sh
# 新增定时任务
*/1 * * * * sh /home/es/recordEsMemory.sh >>/home/es/cron.log
保存之后,提示crontab:installing new crontab。表示部署成功。
任务解析
*/1 * * * * :定时器表达式,表示每分钟执行一次。(必选)
sh /home/es/recordEsMemory.sh:需要执行的脚本。(必选)
“>>/home/es/cron.log”:将脚本的执行结果输出到日志,可以用来查看定时任务的执行记录。(可选)
2. Linux 定时任务Crontab相关知识
- Crontab服务常用命令
# CentOs版本的下载
yum install cronie
# 查看cron 服务的状态
service crond status
# 启动
service crond start
# 停止
service crond stop
# 重启
service crond restart
# 重载服务配置
service crond reload
- Crontab的常用命令
# 查看crontab文件
crontab -l
# 编辑crontab文件
crontab -e
# 删除crontab文件
crontab -r