本文介绍了关于清洗日志的最佳实践。
为什么要清洗日志
ARMS 为用户提供低学习成本的实时监控解决方案。不同用户的日志格式是不同的,日志的字段信息也是不同的。为了让 ARMS 能使用用户的日志,需要先对用户日志进行清洗工作。
以下是一行示例日志:
2016-08-24-13:32:33|itemID=abc|amount=100
ARMS 需要知道,在这行日志中,时间为 2016-08-24-13:32:33,商品 ID 为 abc,以及交易额为 100。只有清洗出这些属性以后,才能在后续聚合计算编排中,针对这些属性进行计算。
ARMS 将数据清洗过程抽象为通过切分日志数据形成时间、字符串、数字等字段的过程。
两种日志清洗方式
ARMS 提供两种日志清洗方式:
-
智能切分:快速、便捷、智能
智能生成数据清洗切分方案。对用户提供的部分日志样例进行智能分析,并采用最优方案切分日志。用户可在拖拽式的可视化界面微调智能切分方案,大幅节省了手动配置切分方式的时间。
-
自定义切分:手动、全面、可控
用户可在拖拽式的可视化界面配置数据清洗切分逻辑。全图形化的配置流程,让用户不需要编写代码即可完成大部分的监控配置任务。
关于日志格式的建议
- 尽量保证格式一致
请尽量保证同一日志源的日志格式一致。若同一日志源有多种格式的日志,则需要使用 filter 功能过滤出需要的日志内容。
- 使用可以识别的时间格式
ARMS 支持多种常用时间格式(需要精确到年月日时分秒,毫秒可选)。
自定义切分支持所有能转化为常用 SimpleDateFormat 时间正则表达式(例如 yyyy-MM-dd HH:mm:ss)的时间格式。
智能切分能识别的时间格式有:
-
能转化为常用 SimpleDateFormat 时间正则表达式(例如 2016-8-21 23:12:53)的常用时间格式。
- Nginx 时间格式,例如 28/Nov/2014:11:56:09 +0800。
- 其他 Java SimpleDateFormat 常用格式。详情请参见智能切分可识别的时间格式。
-
- 使用清晰无歧义的分隔符 (常用分隔符有空格、“|”、“;”、“,”等)
建议使用同类分隔符,这样更容易被切分器切分。
- 字串子串等建议使用 JSON 格式
如果日志串中含有 JSON 字串,则使用 JSON 切分器清洗日志更容易。
日志中的 JSON 串需为有引号的标准 JSON 格式,且不能含有换行符。
在文档使用中是否遇到以下问题
更多建议
匿名提交