linux shell监控日志文件更新时间的方式,管理spark sreaming服务,实现异常重启

1.将spark streaming 服务jar放到指定目录中,创建启动脚本,后台启动将日志重定向到指定目录

nohup /opt/cloudera/parcels/SPARK2-2.1.0.cloudera1-1.cdh5.7.0.p0.120904/lib/spark2/bin/spark-submit --class pj.streamservice.Main --master yarn --executor-memory 512M --total-executor-cores 1 --num-executors 1 --conf spark.streaming.stopGracefullyOnShutdown=true --conf spark.streaming.backpressure.enabled=true --conf spark.streaming.backpressure.initialRate=100000 --conf spark.streaming.kafka.maxRatePerPartition=10000 /root/sparkstreaming_work/pj-streamservice-error-question-dinc-1.0.0.jar >> /data/tmp/sparksteaming/logs/error-question-dinc_`date +"%Y%m%d%H%M%S"`.log 2>&1 &

2.我的两个服务产生的文件如下所示

在这里插入图片描述

3.创建文件job_name,写入如下内容,读者根据自己的日志文件名称写入

vi job_name
error-question-dinc
similar-question-dinc

4.创建shell监控脚本,内容如下,根据自己的实际情况修改文件目录位置

#!/bin/bash
eche `date`
for jn in `cat job_name` ;
do
  file_name=`ls -lt /data/tmp/sparksteaming/logs | grep $jn  | head -n 1 |awk '{print $9}'`
  now_date=`date +%s`
  file_date=`date +%s -r /data/tmp/sparksteaming/logs/${file_name}`
  echo ${file_name}
  sub_date=$((${now_date}-${file_date}))
  echo $sub_date
  #我的sparkstreaming任务是30秒处理一次,所以这里设置了35秒
  if(($sub_date>35));then
    echo "服务异常,重启服务!"
    job_id=`ps -ef | grep $jn | grep -v grep | awk '{print $2}'`
    if(($job_id==''));then
      echo "无异常服务,正常重启!"
      `sh /root/sparkstreaming_work/monitor/run_job/pj-streamservice-$jn.sh`
    else
      echo "有异常服务,杀死异常服务后重新启动!"
      `kill -9 $job_id`
      `sh /root/sparkstreaming_work/monitor/run_job/pj-streamservice-$jn.sh`
    fi
  else
    echo "服务正常!"
  fi
done

5.配置定时运行,进行服务监控

这里做快是一分钟运行一次

vi /etc/crontab
加如下面内容
* * * * * root cd /data/tmp/sparksteaming/logs; sh monitor.sh > monitor.sh.log 2>&1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值