809
iPhone_iPad_Mac_手机_平板_苹果apple
自定义清洗的使用__创建监控任务_用户指南_业务实时监控服务 ARMS-阿里云
当智能切分器提供的切分方案无法满足用户实际的切分需求时,您可以使用ARMS提供的自定义清洗配置器,定制你自己的日志清洗流程。
自定义清洗配置器采用所见即所得的可视化配置方式,本文档将详细介绍如何使用自定义清洗配置器。
常见切分问题
特殊字符(不可见字符)作为分隔符如何切分?
假如不可见字符是ascii码的1,则对应的分隔符为u0001,如果是2,则是u0002…以此类推,tab作为分隔符的话请使用t作为分隔符。
特殊字符在流程配置页面上如何测试?
因为无法在浏览器里粘贴不可见字符,因此您只能暂时将测试文本的分隔符替换为可见字符进行测试,全部流程测试通过后,再将分隔符替换为不可见字符进行部署。
下图中key的列表中如何添加更多的key?
试试点击积木块上的蓝底白色五角星。
JSON格式的日志可以切分吗?
可以,不过没有直接的专属JSON切分器来支持,需要使用逻辑表达式+KV切分器配合使用。请阅读完下面KV切分器的说明,凭借您的智慧,一定可以成功地切分JSON格式的日志。
跨行日志(如异常堆栈)支持吗?
暂不支持。
单分隔符切分器
说明
将单一字符串作为输入,当匹配用户指定分隔字符串时进行切分,切分结果为多个Key-Values.
实例
该配置以|为分隔符,将切分后0号位置的字符串按照yyyy-MM-dd HH:mm:ss的格式转为date(内部实际将以long型保存),2号位置的字符串转为保存为key为username的string,3号位置转为key为userid的long,5号位置保存为key为event的string…
因此使用该配置可以将日志:
2014-07-25 17:25:00|aaa|用户a|1234567|abcd|购买
切分为如下结果:
=> [ username - 用户a ] [ _hostIp - 127.0.0.1 ] [ event - 购买 ] [ date - 1406280300000 ] [ userid - 1234567 ]
说明:
对不可见字符的支持:本切分器支持不可见字符的切分,例如t,u001f(ascii char=31),一些不可见字符的切分将无法在页面测试中被正确验证(因为页面文本框内无法正确输入不可见字符),所以建议用户可以在测试页面先使用可见字符进行调试,然后换成不可见字符保存后进行部署。
多字符分隔符:本切分器分隔符可以为多字符,如a::b::c为输入,以::为分隔符切分。
多分隔符切分器
说明
将单一字符串作为输入,当匹配任意一个用户指定分隔字符时进行切分,切分结果为多个Key-Values.
实例
使用该配置可以将日志:
2014-07-25 17:25:00,aaa|b~1
切分为:=> [ item - b ] [ _hostIp - 127.0.0.1 ] [ userId - aaa ] [ quantity - 1 ] [ date - 1406280300000 ]
顺序分隔符切分器
说明
对于较复杂的切分场景(如accesslog),ARMS提供“顺序分隔符切分器”,以O(n)的复杂度将日志进行切分。
实例
假如 accesslog 如下:
117.74.77.48 835158 - [26 May 2014:14:05:28 +0800] “GET https://trade.taobao.com/trade/detail/trade_snap.htm?spm=a1z0f.2.100003.9.8BpicQ&trade_id=664793864233811“ 302 0
我们想在这个日志中切分出如下结果:
=> [ url - https://trade.taobao.com/trade/detail/trade_snap.htm?spm=a1z0f.2.100003.9.8BpicQ&trade_id=664793864233811 ] [ _hostIp - 127.0.0.1 ] [ ip - 117.74.77.48 ] [ date - 1401084328000 ] [ rt - 835158 ]
我们会发现:
用单分隔符切分器显然无法满足需求;
用多分隔符切分器也不能满足需求:我们如果想切出rt=835158这组KV,必须以” “(空格)作为切分字符之一,但是这样做会错误地把26 May 2014:14:05:28 +0800这个字符串给切成几段,因此我们将无法得到date - 1401084328000;
如果使用正则表达式来匹配kv,效率太低,需要遍历多次。
ARMS提供了”顺序分隔符切分”的方式,使用如下配置,就可以得到本实例正确的结果。
用户定义了5个分隔符字符串,依次将输入字符串切分为了6段子串,随后用户将指定的子串分别赋给不同的key即可。
KV切分器
当需要切分如下多组key=value形式的日志:
key1=aaaa;key2=bbbb;key3=cccc;key4=dddd;….
且各个key-value的位置不固定时,可以使用KV切分器:
切分配置如下:
注意:
当没有配置文本字符<->Key映射时,KV切分器将视所有的key为“未定义key”,所有key对应的value将被切为StringKey类型
如果选择取消勾选”是否切分未定义的Key”,那么未定义Key将不会被切分,也就是说如果没有配置文本字符<->Key映射,并且未勾选”是否切分未定义的Key”,本切分器将不做任何事。
这里展示一个需要将制定的Key转换成对应类型的例子:
假如有日志如下:name=abc;item=iphone6;quantity=15;date=201412120000;….
需要将quantity变为LongKey,date变为DateKey:
JSON切分器
如果您的日志中包含JSON字符串,使用JSON切分器可以让您快速切分出该JSON中的“叶子节点”。
例一:全自动切分
{ “title”: “Example Schema”, “type”: “object”, “quantity”: 200, “date”:”2015-12-12 12:12:12”, “properties”: { “firstName”: { “type”: “string” }, “lastName”: { “type”: “string” }, “age”: { “description”: “Age in years”, “type”: “integer”, “minimum”: 0 } }, “required”: [“firstName”, “lastName”]}
将该json放在一行文本中,使用JSON切分器进行切分:
切分结果如下:
=> [ minimum - 0 ] [ date - 2015-12-12 12:12:12 ] [ type - string ] [ title - ExampleSchema ] [ description - Ageinyears ] [ quantity - 200 ]
由于勾选了“切分未定义字段”,JSON切分器将自动切出所有的“非array类型的叶子节点”,并自动转成对应的类型(stringkey或longkey),注意本例中的required字段由于是array类型所以没有切分,另外,date这个字段由于
例二:自定义切分
如果您只想切分JSON中指定的某些字段,可以像如下这样配置:
=> [ date - 1449893532000 ] [ title - ExampleSchema ] [ quantity - 200 ]
本例中,我们去掉了“切分未定义字段”的勾选,并且自定义了title,date和quantity三个字段,并指定了类型。ARMS会只切分自定义的字段,并转成对应的类型(本例中date字段被转成了ARMS内置的long型)
最后更新:2016-11-23 17:31:50
上一篇:
步骤 3-3:创建和查询多维数据集__创建监控任务_用户指南_业务实时监控服务 ARMS-阿里云
下一篇:
监控任务管理__管理监控任务_用户指南_业务实时监控服务 ARMS-阿里云
查询弹性公网IP列表__弹性公网IP相关接口_API参考_专有网络 VPC-阿里云
获取主题属性__主题使用帮助_控制台使用帮助_消息服务-阿里云
8.2 数据导入任务生产指南__第八章 在生产中使用分析型数据库_使用手册_分析型数据库-阿里云
产品术语__产品简介_数据集成-阿里云
查看实例详情__实例管理_开放API_分布式关系型数据库 DRDS-阿里云
读写权限分离__权限管理_最佳实践_对象存储 OSS-阿里云
参数(Parameters)__模板语法_资源编排-阿里云
怎样为一个子用户授予只读访问SLB的权限___负载均衡(SLB)授权问题_授权常见问题_访问控制-阿里云
PermissionType__数据类型_API 参考_云服务器 ECS-阿里云
定位及解决 HSF 问题__HSF 常见问题_开发常见问题_产品常见问题_企业级分布式应用服务 EDAS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云