配置启动ELK+FileBeats后台运行, 不随着窗口关闭而关闭
只要在后面加上&即可, 如
bin/logstash -f config/log4j-es.conf &
注意: 退出时使用Ctrl+D命令, 直接关闭窗口依然有可能使得进程关闭
LogStash自动重新加载配置
启动logstash时在后面加上命令--config.reload.automatic
bin/logstash -f config/log4j-es.conf --config.reload.automatic &
重新发送filebeat抓取的内容
1.删除registry下的data.json
如:
rm -rf /home/elk/filebeats/filebeat-7.3.1-linux-x86_64/data/registry/filebeat
2.重启filebeat
如果存在正在运行的filebeat, 先kill掉
ps aux | grep filebeat
kill -s 9 pid
然后执行
./filebeat -e -c filebeat.yml
设置索引内容30天过期删除
本来我理解的理论上应该可以用索引的生命周期来实现, 但是半天没整明白, 所以现在
是简单粗暴的使用linux的cron任务来实现, 更具体的cron配置详见cron详解
1.编辑shell脚本, 文件名为removeDataByTime.sh, 内容如下
#!/bin/bash
limit_date=30
for var in `curl 'localhost:9200/_cat/indices' | awk '!/kibana*/ {print $3}'`
do
curl -H "Content-Type:application/json" -X POST -d '{"query": {"range": {"@timestamp": {"lt": "now-'${limit_date}'d/d"}}}}' "http://localhost:9200/${var}/_delete_by_query"
done
2.编辑cron文件, 执行crantab -e, 打开crontab配置文件
加上刚才的shell脚本, 设置每天0点15分执行
15 00 * * * /home/elk/removeDataByTime.sh
设置cron重新启动, 执行/sbin/service crond restart
3.查看cron执行情况
查看cron任务列表 : crontab -l
查看cron执行日志 : grep 'removeDataByTime' /var/log/cron