zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    汽车驾驶盲区 无论新手老手都要看看
    看看大货车到底有多少盲区,肯定用得到!救命的!
    大货车的盲区很大的,所以在大货车周围 超车 并线的时候 最好鸣喇叭提示一下...
    换挡时机
    新手眼中的葵花宝典,手把手教你成为一名老司机!
    后视镜什么时候看?老司机也不一定知道
    【调查】开车时,你多长时间看一下后视镜?(安全驾驶)
    究竟什么时候该看哪个后视镜?老司机用经验告诉你答案
    java selenium (五) 元素定位大全
    java selenium (八) Selenium IDE 用法
  • 原文地址:https://www.cnblogs.com/dance-walter/p/10471950.html
Copyright © 2011-2022 走看看