阿里云日志过滤器配置日志服务


Posted in Servers onApril 09, 2022

日志收集流程

对于日志收集的客户端,其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,执行命令:

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 的日志 

Servers 相关文章推荐
Nginx开启Brotli压缩算法实现过程详解
Mar 31 Servers
Nginx本地目录映射实现代码实例
Mar 31 Servers
解决使用了nginx获取IP地址都是127.0.0.1 的问题
Sep 25 Servers
苹果M1芯片安装nginx 并且部署vue项目步骤详解
Nov 20 Servers
nginx搭建NFS网络文件系统
Apr 14 Servers
Windows Server 2016 配置 IIS 的详细步骤
Apr 28 Servers
CentOS7安装MySQL8的超级详细教程(无坑!)
Jun 10 Servers
教你如何用cmd快速登录服务器
Jun 10 Servers
WinServer2012搭建DNS服务器的方法步骤
Jun 10 Servers
如何让你的Nginx支持分布式追踪详解
Jul 07 Servers
Docker安装MySql8并远程访问的实现
Jul 07 Servers
Nginx如何配置多个服务域名解析共用80端口详解
Sep 23 Servers
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 #Servers
Consul在linux环境的集群部署
nginx.conf配置文件结构小结
docker-compose部署Yapi的方法
Apr 08 #Servers
Nginx隐藏式跳转(浏览器URL跳转后保持不变)
Apr 07 #Servers
Nginx动静分离配置实现与说明
Nginx禁止ip访问或非法域名访问
Apr 07 #Servers
You might like
PHP命名空间(Namespace)的使用详解
2013/05/04 PHP
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
jQuery实现设置、移除文本框默认值功能
2015/01/13 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
[48:21]林俊杰圣堂刺客超神杀戮秀
2014/10/29 DOTA
在Python程序中实现分布式进程的教程
2015/04/28 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Python中read()、readline()和readlines()三者间的区别和用法
2017/07/30 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
python网络编程之五子棋游戏
2020/05/14 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
Python同时处理多个异常的方法
2020/07/28 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
自我评价的正确写法
2013/09/19 职场文书
安全教育心得体会
2013/12/29 职场文书
技校毕业生自荐信范文
2014/03/07 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
《所见》教学反思
2016/02/23 职场文书
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
Spring Boot 实现 WebSocket
2022/04/30 Java/Android