Kibana:自动同步ES的索引(index)
ES新增了一个索引(index)之后,Kibana并不会自动的同步创建相关的【索引模式】
例如,我当前的Kibana的索引模式是这样的:

但是,这个时候,我的ES其实不止两个索引:

因此,我需要将ES的索引,通过创建Kibana的索引模式来与Kibana建立关联。
来看看当前Kibana在后台的索引模式:

如上,可以看到有一个【创建索引模式】的按钮。
如果手动创建,点击它,然后根据提示一步步的操作就可以完成了。
但是,如果你需要创建索引模式的ES有几百个,或者你的索引是有规律的,比如按照每天的日期自动生成的索引名称,一个个的手动操作就太繁琐与麻烦了一点,而且效率也不高。
如果希望【自动的根据ES的索引配置Kibana的索引模式】,可以采用下面的方法。
编写Bash Shell脚本,脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash # Used for : Kibana 同步 Elastic 中的 Index(索引) # variable # 当前的日期 str_date=`date +%Y.%m.%d` str_ipaddr=`ifconfig | grep --color "inet" | grep -v "inet6" | grep -v "127.0.0.1" | awk '{print $2}'` str_hostname=`hostname | cut -d'.' -f 1` # 当前服务器的索引名称 str_index="filebeat-$str_ipaddr-$str_hostname-$str_date" # display echo "==================" echo "Current Index name is: [$str_index]" # do echo "==================" curl -f -XPOST -H 'Content-Type: application/json' -H 'kbn-xsrf: anything' \ "http://192.168.72.112:5601/api/saved_objects/index-pattern/${str_index}" -d"{\"attributes\":{\"title\":\"${str_index}\",\"timeFieldName\":\"@timestamp\"}}" # done |
需要注意:
- 该脚本的变量部分的定义是根据我的环境适配的,如果需要在不同的环境执行,可以根据自己的场景做修改。
- 【# do .. # done…】部分的写法是固定的,如果我脚本的变量名【str_index】不更改,则适配不同场景的时候【do .. done ..】部分的代码应该是不需要做任何修改的。
然后,在目标服务器(运行filebeat服务的服务器 / 自定义了索引名的服务器)上执行上面的脚本:
1 2 3 4 |
[root@cloudera1 kibana]# sh sync_data_from_elasticsearch_to_kibana.sh Current Index name is: [filebeat-addr:192.168.72.131-cloudera1-2019.10.16] {"type":"index-pattern","id":"filebeat-addr:192.168.72.131-cloudera1-2019.10.16","attributes":{"title":"filebeat-addr:192.168.72.131-cloudera1-2019.10.16","timeFieldName":"@timestamp"},"references":[],"migrationVersion":{"index-pattern":"6.5.0"},"updated_at":"2019-10-16T08:04:03.785Z","version":"WzUxMDMsM10="} [root@cloudera1 kibana]# |
执行成功后,你就可以在kibana的后端,看到新增的索引模式了:

这时候,在Discover界面也可以看到新增的索引模式了:

最后,为了比对不同的索引的状态,我做了一个可视化的视图:


至此,文首的问题已经说明清楚了。
Done。