通常索引按月、季或年为单位建立索引。我这里写成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