通常索引按月、季或年爲單位建立索引。我這裏寫成logstash-www-2019-03,www是URL的二級域名。格式類型徹底根據本身方便就行。html
當ELK集羣中的索引過多時,我這裏有100多個不一樣的日誌,也就是得有100多個索引。若是要手動在在kibana界面上建立,還不得累死。因此就想到用程序調用API接口來作。以下是腳本:json
#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/
腳本中最重要的就是添加索引、刪除索引和添加默認索引的三個API。閣下若是對腳本有高見,歡迎留言。api
官方api文檔:https://www.elastic.co/guide/en/kibana/current/api.htmlbash