记一次添加一个docker 监控的的小工具

背景

由于测试环境docker 容器里的celery, 进程在但是不执行任务!故猜测是由于docker 内存不够,导致的问题(PS: 但是目前不知道为啥进程在,但是任务不执行了。这个问题,需要接下来查下原因)。

解决思路

添加docker 容器内存监控,明确出问题的确切原因

方法

写一个shell文件,使用docker stats 拿到容器使用情况。crontab定时执行。

过程

  • a.编写.sh文件
#!/bin/bash

# 获取当前时间
cur_date=`date +%Y%m%d`

cur_time=`date +%H%M%S`

subject="Get docker stats. ${cur_date}_${cur_time}" 

echo $subject

docker_stats_log_folder=./logs
# 一天生成一个文件
bizeff_backup_file="${docker_stats_log_folder}/docker_stats_${cur_date}.log"

echo "" >> $bizeff_backup_file
echo "==========================================================================${subject}==========================================================================" >> $bizeff_backup_file
 
docker stats --no-stream >> $bizeff_backup_file

# 添加个分界线
echo "=====================================================================================================================================================================================" >> $bizeff_backup_file

echo "Getting docker stats is complete!"
  • b.编写crontab 定时语句
# 每隔十分钟拉取一次,docker stats 信息
*/10 * * * * /root/exec_file/get_docker_stats.sh >> /root/exec_file/logs/exec_get_docker_stats.log 
  • c.拿到测试执行 没有问题

  • d.添加定时任务

编辑定时任务
crontab -e
  • e.结果没执行

      1. 确定没执行(难过的哇哇的)
      1. 打开crontab 执行日志,确定crontab有执行
    #打开crontab 执行日志
    vim /etc/rsyslog.d/50-default.conf
   
    cron.*                          /var/log/cron.log # 去掉这个签名的#
    
    sudo service rsyslog restart # 重启日志
   
    # 得到如下日志
    Aug  1 23:12:01 dev-services-1 CRON[22734]: (root) CMD (/root/exec_file/get_docker_stats.sh >> /root/exec_file/logs/exec_get_docker_stats.log)
    Aug  1 23:12:01 dev-services-1 CRON[22733]: (root) MAIL (mailed 67 bytes of output but got status 0xffffffff from MTA#012)
   
    得到结论 
    crontab 正在执行
    
    # 查错得知,默认好像要配个邮箱啥的,不配置
    选择 输出后面添加 
    */10 * * * * /root/exec_file/get_docker_stats.sh >> /root/exec_file/logs/exec_get_docker_stats.log 2>&1
    
    # 之前系统创建了这个文件但是没有输出日志 所以是个空文件,经过上述调整得到日志输出
    exec_get_docker_stats.log
     
   /bin/sh: 1: /root/exec_file/get_docker_stats.sh: Permission denied
   # 没有权限执行 加执行权限
  
   chmod +x bash.sh
   

完结撒花

对了,crontab -e 编辑的时候默认的编辑器超级难用。反正我是没玩明白。最后使用了select-editor 选了vim。

posted @ 2021-08-02 00:04  孤舟勇进  阅读(100)  评论(0)    收藏  举报