小知识:阿里云日志服务日志过滤器配置

日志收集流程

对于日志收集的客户端,其work pipeline通常包括三个过程:input,process,output。

input: 适配各类日志接入源,目前logtail支持文本文件、syslog(tcp流式)两种形式数据写入。 process:自定义日志处理逻辑,常见的有:日志切分、日志编码转换、日志结构化解析、日志过滤等等。 output:定义日志输出,例如logtail以http协议写数据到日志服务。

今天要介绍logtail在日志处理阶段的两个新功能:转码、过滤

日志转码

日志服务限制数据的字符编码为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,执行命令:
?
1
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记录这些请求:

?
1
2
3
4
5
6
7
8
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将该日志上传至日志服务,如下图所示:

%小知识:阿里云日志服务日志过滤器配置-1猿站网-插图

如果设置过滤器的字段名在日志里找不到,那么这条日志也是不合法的,需要被丢弃。默认情况下,用户没有任何过滤器设置的情况下,所有被logtail读取并解析成功的日志数据都会写入日志服务。

实例配置:

%小知识:阿里云日志服务日志过滤器配置-2猿站网-插图

%小知识:阿里云日志服务日志过滤器配置-3猿站网-插图

只收集匹配到 topic  为  action 或者 plugin 的日志 

更多关于阿里云日志服务日志过滤器配置技术文章请查看下面的相关链接

原文链接:https://www.cnblogs.com/weifeng1463/p/10577272.html

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:阿里云k8s服务springboot项目应用升级时出现502错误

2023-2-22 5:58:25

建站知识

小知识:香港云服务器怎么样?RAKsmart香港云服务器速度和性能评测

2023-2-22 6:08:58

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索