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


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 相关文章推荐
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
apache基于端口创建虚拟主机的示例
Apr 22 Servers
Nginx进程管理和重载原理详解
Apr 22 Servers
nginx安装以及配置的详细过程记录
Sep 15 Servers
nginx负载功能+nfs服务器功能解析
Feb 28 Servers
Windows Server 2008 修改远程登录端口以及配置防火墙
Apr 28 Servers
搭建Yolov5服务器
Apr 30 Servers
关于windows server 2012 DC 环境 重启后蓝屏代码:0xc00002e2的问题
May 25 Servers
Docker与K8s关系介绍不会Docker也可以使用K8s
Jun 25 Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 Servers
Flink 侧流输出源码示例解析
Sep 23 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 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 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
ThinkPHP发送邮件示例代码
2016/10/08 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
PHP数组对象与Json转换操作实例分析
2019/10/22 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
php实现微信和支付宝支付的示例代码
2020/08/11 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python 学习笔记
2008/12/27 Python
pandas删除指定行详解
2019/04/04 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
python画微信表情符的实例代码
2019/10/09 Python
Python如何生成xml文件
2020/06/04 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
精彩广告词大全
2014/03/19 职场文书
触电现场处置方案
2014/05/14 职场文书
大学生国庆节65周年演讲稿范文
2014/09/25 职场文书
倡议书范文大全
2015/04/28 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书