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/

脚本中最重要的就是添加索引、删除索引和添加默认索引的三个API。阁下如果对脚本有高见,欢迎留言。

官方api文档:https://www.elastic.co/guide/en/kibana/current/api.html

posted @ 2019-03-04 17:38  dance_man  阅读(12656)  评论(0编辑  收藏  举报