kibana自動建立索引

通常索引按月、季或年爲單位建立索引。我這裏寫成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

相關文章
相關標籤/搜索