悟空,拿我的打狗棒来

logstah 脚本动态的传入变量问题,是其动态的查询 sql语句

Logstash | 作者 clean | 发布于2018年04月18日 | 阅读数:3163

    logstash 脚本中配置 Jdbc的 sql语句  定义了 ${x} 变量
                    
                     statement => "select * from ${x} a where a.locateTime > :sql_last_value order by a.locateTime asc"
                     
                     给变量传值: export x = y 
                     
                     但是这种方式仅仅限于手动, 而且必须是同一个用户的同一个窗口
                     
                    现在需要, 动态的给 ${x} 赋值, 已达到查询不同的表的效果 
                    
                    问题: 
                    
                        1. 如何动态的为 logstash 脚本赋值
                        
                        2. 赋值后, logstash 不会马上替换该变量, 需要重启 logstash 
                        
                        3. 上面的步骤可以自动化吗? 达到的效果是 每天晚上12点做 1和2 的事情,谁有例子? 
                        
                        4. 除了 ${x} 形式, 有其他动态赋值变量的方法吗, 比如: logstash 脚本中可以写shell 吗?
已邀请:

clean

赞同来自:

写一个shell 脚本搞定: 
 
 
 
#!/bin/bash
# this is shell script demo
echo "well come to the world of shll!"
server_name=logstash
#设置字段
export z_history_table=z_history_$(date -d today +"%y_%m_%d")
server_name=logstash
opservernum=$(ps -ef | grep $server_name |  grep -v grep | awk '{print $2}')
echo 'losstash pid = '
echo ${opservernum}
#if["$opservernum" == ""]
if [ "$opservernum" == "" ]
then
         cd /opt/logstash6/
       # ./bin/logstash -f /opt/logstash6/inputtxt/vw/vw_drive_table.conf >> /opt/logstash6/inputtxt/log/logstash_info$(date "+%Y_%m_%d").log &
         ./bin/logstash -f /opt/logstash6/inputtxt/vw/yyyymmdd.conf >> /opt/logstash6/inputtxt/log/logstash_info$(date "+%Y_%m_%d").log &
         opservernum=$(ps -ef | grep $server_name |  grep -v grep | awk '{print $2}')
         echo  $(date "+%Y_%m_%d_%H_%M_%S")"logstash 已宕机重启之后 进程Id:"$opservernum  >> /opt/logstash6/inputtxt/log/crond_fail_log$(date "+%Y_%m_%d").log

else
        kill -9 $opservernum
        cd /opt/logstash6/
        #./bin/logstash -f /opt/logstash6/inputtxt/vw/vw_drive_table.conf >> /opt/logstash6/inputtxt/log/logstash_info$(date "+%Y_%m_%d").log &
        ./bin/logstash -f /opt/logstash6/inputtxt/vw/yyyymmdd.conf >> /opt/logstash6/inputtxt/log/logstash_info$(date "+%Y_%m_%d").log &
        opservernum=$(ps -ef | grep $server_name |  grep -v grep | awk '{print $2}')
        echo  "logstash 运行正常 进程Id:"$opservernum  >> /opt/logstash6/inputtxt/log/crond_success_log$(date "+%Y_%m_%d").log
fi
 
 
并在 crontab -e 
写入定时任务   0 1 * * *  sh xxx.sh
每天凌晨一点启动
 

要回复问题请先登录注册