kibana自動創建索引

一般索引按月、季或年爲單位創建索引。我這裏寫成logstash-www-2019-03,www是URL的二級域名。格式類型完全根據自己方便就行。

當ELK集羣中的索引過多時,我這裏有100多個不同的日誌,也就是得有100多個索引。如果要手動在在kibana界面上創建,還不得累死。所以就想到用程序調用API接口來做。如下是腳本:

#type_log.txt 文件中的有用部分全都是logstash中的type字段的值,其實可以寫個程序將logstash配置文件中所有type類型給抽出來並與此文件進行同步,這樣再結合下面的創建索引腳本,就可以實現新增一個elasticsearch索引,自動就在kibana中顯示了。
$ cat type_log.txt   
#beijing
www
...
#beijing

#shanghai
console
... 
#!/bin/bash


###此腳本用來每個月自動更新kibana索引
###操作類型分爲add和del
###每月1號凌晨3點左右執行
###所有elasticsearch中的索引寫入type_log.txt文件中,然後順序取出並創建kibana索引。如果新增索引,可直接寫入type_log.txt並執行腳本即可。對已經存在的索引不會存在影響。


#新增索引add,刪除索引del
action=add

URL="http://localhost:5601"
#index_pattern = ""   從type_log.txt文件中讀取所有索引的type,每當有新的
#ID = index_pattern
domain_name_file=/usr/local/pkg/kibana/scripts/type_log.txt

time_field="@timestamp"
#date=`date +%Y-%m`
date=2019-02

#更新日誌
log_file=/usr/local/pkg/kibana/scripts/update_index.log
echo "${date}" >> ${log_file}


#中間文件,用來存放type_log.txt中有用的行和其行號
middle_file=/usr/local/pkg/kibana/scripts/middle.txt
grep -E -n '^[[:alnum:]]' ${domain_name_file} > ${middle_file}


domain_name_num=`wc -l ${middle_file} | awk '{print $1}'`
for((i=1;i<=${domain_name_num};i++));do
	domain_name_type=`sed -n "${i}p" ${middle_file}| awk -F':' '{print $2}'`
	###開始新增新的索引
	if [ $action == "add" ];then
		curl -f -XPOST -H 'Content-Type: application/json' -H 'kbn-xsrf: anything' \
	"${URL}/api/saved_objects/index-pattern/logstash-app_${domain_name_type}_${date}" -d"{\"attributes\":{\"title\":\"logstash-app_${domain_name_type}_${date}\",\"timeFieldName\":\"@timestamp\"}}" >> ${log_file}
	elif [ $action == "del" ];then
		curl -XDELETE "${URL}/api/saved_objects/index-pattern/logstash-app_${domain_name_type}_${date}" -H 'kbn-xsrf: true' > /dev/null
	else
		echo "action errror" >> ${log_file}
		exit 100
	fi

	#對每一條操作都進行日誌記錄,這樣每月凌晨執行完成後,可過濾日誌文件,將錯誤發送給集羣負責人。
	if [ $? -eq 0 ];then
		echo "success ${domain_name_type}" >> ${log_file}
	else
		echo "error ${domain_name_type}" >> ${log_file}
	fi
done


#添加默認索引
curl -f -XPOST -H 'Content-Type: application/json' -H 'kbn-xsrf: anything' http://localhost:5601/api/kibana/settings/defaultIndex -d "{\"value\":\"logstash-app_www_${date}\"}" >> ${log_file}



mv -f  /usr/local/pkg/kibana/scripts/middle.txt /tmp/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章