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

  • 相关阅读:
    暑假集训单切赛第二场 UVA 10982 Troublemakers
    暑假集训单切赛第一场 POJ 2309 BST(找规律的题)
    暑假集训单切赛第一场 CF 191A Dynasty Puzzles
    暑假集训单切赛第一场 CF 266E More Queries to Array(线段树+二项式展开式)
    暑假集训单切赛第一场 UVA 1737 Mnemonics and Palindromes 3
    大一暑假集训第六周第一场单切赛
    POJ 1486 Sorting Slides(寻找必须边)
    【机器学习】梯度下降法的相关介绍
    Linux下使用Tmux提高终端环境下的效率
    Fedora23安装以后要做的优化配置
  • 原文地址:https://www.cnblogs.com/dance-walter/p/10471950.html
Copyright © 2011-2022 走看看