只要在後面加上&便可, 如linux
bin/logstash -f config/log4j-es.conf &
複製代碼
注意: 退出時使用Ctrl+D命令, 直接關閉窗口依然有可能使得進程關閉shell
啓動logstash時在後面加上命令--config.reload.automaticjson
bin/logstash -f config/log4j-es.conf --config.reload.automatic &
複製代碼
1.刪除registry下的data.json
如:bash
rm -rf /home/elk/filebeats/filebeat-7.3.1-linux-x86_64/data/registry/filebeat
複製代碼
2.重啓filebeat
若是存在正在運行的filebeat, 先kill掉app
ps aux | grep filebeat
kill -s 9 pid
複製代碼
而後執行curl
./filebeat -e -c filebeat.yml
複製代碼
原本我理解的理論上應該能夠用索引的生命週期來實現, 可是半天沒整明白, 因此如今 是簡單粗暴的使用linux的cron任務來實現, 更具體的cron配置詳見cron詳解
1.編輯shell腳本, 文件名爲removeDataByTime.sh, 內容以下url
#!/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分執行spa
15 00 * * * /home/elk/removeDataByTime.sh
複製代碼
設置cron從新啓動, 執行/sbin/service crond restart.net
3.查看cron執行狀況
查看cron任務列表 : crontab -l
查看cron執行日誌 : grep 'removeDataByTime' /var/log/cronrest