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

相关文章
相关标签/搜索