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
kibana自动创建索引的更多相关文章
- elasticsearch 5.6.4自动创建索引与mapping映射关系 +Java语言
由于业务上的需求 ,最近在研究elasticsearch的相关知识 ,在网上查略了大部分资料 ,基本上对elasticsearch的数据增删改都没有太大问题 ,这里就不做总结了 .但是,在网上始终没 ...
- apach hadoop2.6 集群利用Phoenix 4.6-hbase 批量导入并自动创建索引
基础环境: 1.安装apach 版本hadoop2.6 2.部署hbase1.0.0 3.下载phoenix-4.6.0-HBase-1.0.下载地址(http://mirror.nus.edu.sg ...
- phoenix 利用CsvBulkLoadTool 批量带入数据并自动创建索引
需要先创建表: CREATE TABLE IF NOT EXISTS population ( state CHAR() NOT NULL, city VARCHAR NOT NULL, popula ...
- Elasticsearch索引的操作,利用kibana(如何创建/删除一个es的索引?)
我们已经通过索引一篇文档创建了一个新的索引 .这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射.现在我们需要对这个建立索引的过程做更多的控制:我们想要确保这个索引有数量适中的主分 ...
- 在MongoDB中执行查询、创建索引
1. MongoDB中数据查询的方法 (1)find函数的使用: (2)条件操作符: (3)distinct找出给定键所有不同的值: (4)group分组: (5)游标: (6)存储过程. 文档查找 ...
- Kibana自动关联ES索引
原因: Kibana中关联ES索引需要手动操作,如果ES中索引较多(如每天生成),则工作量会比较大. 方法: 考虑使用Linux的cron定时器自动关联ES索引,原理是调用Kibana API接口自动 ...
- Kibana 创建索引 POST 403 (forbidden) on create index
一.问题描述: Kibana创建索引:kibana > management > index patterns > create index pattern 索引名称: mercha ...
- elasticsearch自动按天创建索引脚本
elasticsearch保存在一个索引中数据量太大无法查询,现在需要将索引按照天来建,查询的时候关联查询即可 有时候es集群创建了很多索引,删不掉,如果是测试环境或者初始化es集群(清空所有数据), ...
- Kibana创建索引成功,但一直不显示出来(Fielddata is disabled on text fields by default. Set fielddata=true........)
现象 把EFK整个集群搭建完成后,通过Kibana操作界面创建索引(如图1),我创建了lile-zabbix*的索引,显示是创建成功了,但是只要我在重新刷新一次,已经创建的索引就“消失了”.后通过查看 ...
随机推荐
- python中多线程相关
基础知识 进程:进程就是一个程序在一个数据集上的一次动态执行过程 数据集:程序执行过程中需要的资源 进程控制块:完成状态保存的单元 线程:线程是寄托在进程之上,为了提高系统的并发性 线程是进程的实体 ...
- Xamarin.Forms移动开发系列2:创建和调试
摘要 本文将介绍如何通过VS2019创建Xamarin.Forms应用程序,以及如何进行调试. 前言 本文介绍Xamarin.Froms应用程序的创建和调试. 开发环境 1.Visual Studio ...
- 【可视化】Vue基础
作者 | Jeskson 来源 | 达达前端小酒馆 Vue简介 Vue框架,框架的作者,尤雨溪,组件化,快速开发的特点. 生命周期 beforeCreate:组件刚刚被创建 created:组件创建完 ...
- API数据加密框架monkey-api-encrypt
之前有写过一篇加密的文章<前后端API交互如何保证数据安全性>.主要是在Spring Boot中如何对接口的数据进行自动加解密操作,通过注解的方式来指定是否需要加解密. 原理也很简单,通过 ...
- DVWA File Inclusion 通关教程
File Inclusion 介绍File Inclusion,即文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数:include(),req ...
- python 利用淘宝IP库 查询IP归属地
#coding:utf-8 from django.test import TestCase import json import urllib ip = "114.114.114.114& ...
- c++性能测试工具:计算时间复杂度
有时候除了测量算法的具体性能指数,我们也会希望测试出算法的时间复杂度,以便我们对待测试的算法的性能有一个更加直观的了解. 测量时间复杂度 google benchmark已经为我们提供了类似的功能,而 ...
- sprintboot+mybatis+@Mapper中in的使用方法
错误的使用方法: @Select("select goods_sn from ${tableName} where goods_sn in (#{skuStr})") public ...
- Redis学习之Redis服务器数据库实现
本文内容: 1.Redis服务器保存数据库的方法 2.客户端切换数据库的方法 3.数据库保存键值对的方法 4.数据库的添加,删除,查看,更新操作的实现方法 5.服务器保存键的过期时间的方法 6.服务器 ...
- CountDownLatch 一个复杂的例子
CountDownLatch复杂点的例子 public class CountDownLatchTest2 { private static Random random = new Random(Sy ...