本文小编为大家详细介绍“Logtail在日志处理阶段的两个新功能是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Logtail在日志处理阶段的两个新功能是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
对于日志收集的客户端,其work pipeline通常包括三个过程:Input,Process,Output。
Input: 适配各类日志接入源,目前Logtail支持文本文件、Syslog(TCP流式)两种形式数据写入。
Process:自定义日志处理逻辑,常见的有:日志切分、日志编码转换、日志结构化解析、日志过滤等等。
Output:定义日志输出,例如Logtail以HTTP协议写数据到日志服务。
日志服务限制数据的字符编码为UTF-8,这也是Logtail在发送数据阶段对于字符编码的要求。
但可能一些较老的应用组件在处理中文的时候,会打印GBK编码的数据到日志文件。
这种情况下,你可以在Logtail配置的高级选项中,选择日志文件编码为”GBK“。那么,Logtail在采集日志时,会对日志内容先做GBK到UTF-8的编码转换,再进行后续处理。
Logtail目前支可以支持UTF-8和GBK两种文件编码格式。对于GBK格式,Logtail使用Linux系统的iconv API,编码转换过程中会额外消耗机器计算资源。
问:如何判断我的GBK日志文件是否可以通过Logtail收集?
答:在Linux Shell下使用iconv命令进行转码测试,假设日志文件名为gbk.log,执行命令:
iconv -f GBK -t UTF-8 gbk.log -o gbk_to_utf8.log
如果执行成功则说明文件编码是GBK;如执行失败(类似iconv: illegal input sequence at position 2743错误),则说明文件不是合法的GBK编码,无法通过Logtail做编码转换,请尝试调整应用输出的日志文件编码格式为UTF-8。
举一个web服务器的例子,Nginx每时每刻接收大量请求,并在access.log记录这些请求:
10.200.98.220 - - [25/May/2016:14:55:42 +0800] "HEAD sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 200 37 "-" "aliyun-sdk-java" 13605 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "POST sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 404 37 "-" "ali-log-logtail" 13608 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "PUT sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 401 37 "-" "aliyun-sdk-java" 13609 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "PUT sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 502 37 "-" "aliyun-sdk-java" 13610 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "GET sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 401 37 "-" "cpp-sdk-0.6" 13612 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "PUT sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 400 37 "-" "cpp-sdk-0.6" 13614 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "POST sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 400 37 "-" "ali-log-logtail" 13615 10.200.98.220 - - [25/May/2016:14:55:42 +0800] "HEAD sls-pub.alibaba-inc.com/projects/ali-cn-hangzhou-sls-admin/logstores HTTP/1.1" 0.024 18204 200 37 "-" "cpp-sdk-0.6" 13616
对于问题调查的场景,HTTP 200请求的日志量通常是巨大的,如果我们希望降低日志存储的成本,只上传发生异常的请求日志,应该怎么来做呢?
在今天,你可以打开Logtail配置的高级选项,设置过滤器来解决数据过滤的问题。
如上图所示,分别对url字段和status字段设置了两个过滤器。指定字段Key存在且Value符合正则表达式的日志会被保留。
定义多个过滤器的时候,判断条件是“与”的关系,满足所有过滤器设置的日志是合法的,否则被丢弃。
对于一条日志,当url字段与"(POSTs.)|(GETs.)"匹配成功且status字段与"[345]d+"匹配成功的时候(只采集POST、GET请求且状态码非200的日志),Logtail将该日志上传至日志服务,如下图所示:
如果设置过滤器的字段名在日志里找不到,那么这条日志也是不合法的,需要被丢弃。默认情况下,用户没有任何过滤器设置的情况下,所有被Logtail读取并解析成功的日志数据都会写入日志服务。
实例配置:
只收集匹配到 topic 为 action 或者 plugin 的日志
读到这里,这篇“Logtail在日志处理阶段的两个新功能是什么”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。