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 吗?
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 吗?
1 个回复
clean
赞同来自:
#!/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
每天凌晨一点启动