本文主要是介绍Kibana scripted fields 使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
scripted fields 是kibana提供动态的从指定列中提取指定字符串的功能,提取的数据可用于discover展示甚至可以用在visualize和Dashboard用于图标展示,功能极其强大。但是使用需要小心及慎重,它也是比较棘手的。
使用kibana过程中有时需要提取某个字段的部分值用于统计,例如提取message中的部分值,比如提取以下日志中的ip,可以使用script filed实现
remoteClientRealIp=192.168.168.30, remote.addr=192.168.168.10:56288, Accept-Encoding=gzip, X-Forwarded-For=
1、登入kibana管理界面(Management)
2、找到需要操作的索引
3、点击右侧菜单 scrpted fields列
4、add scripted filed
5、填写基本信息
我这次需要提取ip也就是字符串,type列我选择String
添加如下脚本到script文本框保存
painless 语法: https://www.elastic.co/guide/en/elasticsearch/painless/6.4/index.htm
String left = "remote.addr=";
String left2 = "host=";
String left3 = "remote.addr\":\"";
int leftln = left.length();String right = ",";def str = doc['message.keyword'].value;if(str == null){return "-"}def leftIndex = str.indexOf(left);if(leftIndex <=0){leftIndex = str.indexOf(left2);if(leftIndex <=0){leftIndex = str.indexOf(left3);if(leftIndex <=0){return "-"; }else{leftln = left3.length();}}else{leftln = left2.length();}}def tmp = str.substring(leftIndex + leftln);def rightIndex = tmp.indexOf(right);if(rightIndex <=0){return "-";}def result = tmp.substring(0,rightIndex).trim();result = result.substring(0,result.indexOf(":"));return result;
6、点击Discover页面选择指定的index 然后会看到添加的字段
7、visualize
这篇关于Kibana scripted fields 使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!