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


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优化服务之网页压缩的实现方法
Mar 31 Servers
Nginx开启Brotli压缩算法实现过程详解
Mar 31 Servers
查看nginx配置文件路径和资源文件路径的方法
Mar 31 Servers
Filebeat 采集 Nginx 日志的方法
Mar 31 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
Docker官方工具docker-registry案例演示
Apr 13 Servers
项目中Nginx多级代理是如何获取客户端的真实IP地址
May 30 Servers
windows server 2016 域环境搭建的方法步骤(图文)
Jun 25 Servers
Linux中一对多配置日志服务器的详细步骤
Jul 23 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 Servers
解决ubuntu安装软件时,status-code=409报错的问题
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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
详解php中的implements 使用
2017/06/13 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
php函数式编程简单示例
2019/08/08 PHP
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
jQuery表单验证之密码确认
2017/05/22 jQuery
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
解决vue项目刷新后,导航菜单高亮显示的位置不对问题
2019/11/01 Javascript
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
2020/02/11 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
Python 忽略warning的输出方法
2018/10/18 Python
Python实现剪刀石头布小游戏(与电脑对战)
2019/12/31 Python
基于Pytorch SSD模型分析
2020/02/18 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
数据库连接池的工作原理
2012/09/26 面试题
小学毕业演讲稿
2014/04/25 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
通知函的格式
2015/04/27 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
2015年国培研修感言
2015/08/01 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python