• cron检测并启动logstash


    背景

    线上的logstash总是莫名其妙的挂了,我打算写一个定时任务,一分钟去检查一次logstash进程,不存在时就把它启动

    步骤

    1. 编写检测启动脚本
    2. 让cron定时来调用检测启动脚本

    1、编写脚本

    第一次完成是这个样子:

    #!/usr/bin/env bash
    
    
    pid_blog=`ps -ef|grep 'org.logstash.Logstash' |grep -v grep|awk '{print $2}'`
    if [ "$pid_blog" == "" ];
    then
        echo "now time is $(date +'%Y-%m-%d %H:%M:%S.%s')"
        nohup /home/logstash/logstash-6.4.2/bin/logstash -f /home/logstash/logstash-6.4.2/config/logstash.conf >> /data-big-1/logstash//logstash.log 2>&1 &
        echo "已将logstash启动"
    else
        echo "端口未被占用"
    fi
    

    后来发现cron无法启动logstash,原因是cron执行时没有对应的系统环境变量,例如:没有java环境

    进一步优化:
    使用 env 命令查看系统变量,然后将系统变量 export 进我的脚本中

    优化后的脚本:

    #!/usr/bin/env bash
    export XDG_SESSION_ID=485047
    export HOSTNAME=log-platform-tx-es-03
    export TERM=xterm
    export SHELL=/bin/bash
    export JRE_HOME=/opt/jdk1.8.0_211/jdk1.8.0_211/jre
    export USER=logstash
    export CLASS_PATH=.:/opt/jdk1.8.0_211/lib/dt.jar:/opt/jdk1.8.0_211/lib/tools.jar:/opt/jdk1.8.0_211/jdk1.8.0_211/jre/lib
    export PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/jdk1.8.0_211/bin:/opt/jdk1.8.0_211/jdk1.8.0_211/jre/bin
    export PWD=/home/logstashscripts
    export JAVA_HOME=/opt/jdk1.8.0_211
    export LANG=en_US.UTF-8
    export SHLVL=5
    
    pid_blog=`ps -ef|grep 'org.logstash.Logstash' |grep -v grep|awk '{print $2}'`
    if [ "$pid_blog" == "" ];
    then
        echo "now time is $(date +'%Y-%m-%d %H:%M:%S.%s')"
        nohup /home/logstash/logstash-6.4.2/bin/logstash -f /home/logstash/logstash-6.4.2/config/logstash.conf >> /data-big-1/logstash//logstash.log 2>&1 &
        echo "已将logstash启动"
    else
        echo "端口未被占用"
    fi
    

    2、cron 每一分钟调用一次脚本

    1、crontab -e 编辑任务

    2、添加任务如下

    */1 * * * * flock -xn /tmp/logstash_start.lock -c '/home/logstashscripts/logstash_start.sh >> /home/logstashscripts/logstash_start.log 2>&1'
    

    参考文档:
    https://blog.csdn.net/sum__mer/article/details/83387994

    https://askubuntu.com/questions/23009/why-crontab-scripts-are-not-working

  • 相关阅读:
    2017 Multi-University Training Contest
    NTT模板
    重庆OI2017 小 Q 的棋盘
    用TensorFlow2.0构建分类模型对数据集fashion_mnist进行分类
    读取keras中的fashion_mnist数据集并查看
    基本类型和引用类型
    idea快捷键
    pytorch的torch.nn.CrossEntropyLoss()
    高斯模糊和高斯双边滤波
    opencv之模糊操作
  • 原文地址:https://www.cnblogs.com/daleyzou/p/cronLogstash.html
Copyright © 2020-2023  润新知