Filebeat 日志采集工具在日常工作中,使用场景更多的是用来采集Nginx 日志和Java 应用运行的日志了。这里简单记录一下踩到坑,和大家分享。

一、Filebeat 收集Nginx 访问日志

Nginx 服务记录的日志,默认都是每行一条单独的日志;所以每条日志的分割很容易处理。

为了避免在日志中字段分割浪费精力,我们可以在Nginx的配置文件中,使用log_format 指令,将日志记录为Json格式。这样的话使用Filebeat服务的配置文件中json指令,很简单就可以完成字段的分割。

1.1、Nginx 服务日志中文乱码

这里和大家分享的是Nginx 服务日志中的中文乱码的处理方式。

nginx 服务日志记录中,最常见出现乱码的字段有:url和request_url。当这两个字段中出现中文内容时,默认日志中会记录乱码。

url:请求中的当前URI(不带请求参数,参数位于$args)。

request_url:这个变量等于包含一些客户端请求参数的原始URI。

1.2、消除Nginx 日志中部分乱码

url:会对中文进行转为16进制。

request_url:浏览器中会对中文进行百分号编码;这里记录的内容就是百分号编码后的内容。

只需要在定义log_format 时;设置escape属性,设置其值为json就可以消除 url 中的中文乱码。另外也可以解决日志字段中不能转化为Json字段的特殊符号。

For json escaping, all characters not allowed in JSON strings will be escaped: characters “"” and “\” are escaped as “\"” and “\\”, characters with values less than 32 are escaped as “\n”, “\r”, “\t”, “\b”, “\f”, or “\u00XX”.

1.3、Filebeat 消除中文百分号编码乱码

Filebeat 日志收集工具提供了 urldecode 模块扩展,可以将百分号编码的中文还原。配置案例:

processors:

- urldecode:

fields:

- from: "json.request"

to: "json.new_request"

- from: "json.referer"

to: "json.new_referer"

- drop_fields:

fields: ["json.referer","json.request"]

二、Java 程序中的多行日志

在Java 程序运行过程中,如果发生异常,则会记录多行的异常信息日志;在收集日志过程中需要考虑到对于应用中异常堆栈日志的处理。

此时有两种方案,一种是在采集是归并,一种是 Logstash 过滤时归并,更建议在客户端 agent 上直接实现堆栈的合并,把合并操作的压力在输入源头上进行控制。

filebeat 合并行的思路有两种,正向和逆向处理。

由于 filebeat 在合并行的时候需要设置 negate 和 match 来决定合并动作,意义混淆,简直是一种糟糕的设计,直接附上配置源码和说明便于理解。

2.1、符合条件才合并

容易有漏网之鱼说明:将以空格开头的所有行合并到上一行;并把以Caused by开头的也追加到上一行

multiline:

pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'

negate: false

match: after

negate 参数为 false,表示“否定参数=false”。multiline 多行参数负负得正,表示符合 pattern、match 条件的行会融入多行之中、成为一条完整日志的中间部分。如果match=after,则以b开头的和前面一行将合并成一条完整日志;如果 match=before,则以 b 开头的和后面一行将合并成一条完整日志。

2.2、不符合条件通通合并

需事先约定 说明:约定一行完整的日志开头必须是以“[”开始,不符合则归并。

multiline:

pattern: '^\['

negate: true

match: after

negate 参数为 true,表示“否定参数=true”。multiline 多行参数为负,表示符合 match 条件的行是多行的开头,是一条完整日志的开始或结尾。如果 match=after,则以 b 开头的行是一条完整日志的开始,它和后面多个不以 b 开头的行组成一条完整日志;如果 match=before,则以 b 开头的行是一条完整日志的结束,和前面多个不以 b 开头的合并成一条完整日志。

filebeat 收集json格式_Filebeat 采集日志实践经验记录相关推荐

  1. filebeat 收集json格式_集群日志收集架构ELK

    欢迎关注头条号:老顾聊技术 精品原创技术分享,知识的组装工 前言 前几篇我们介绍了项目中如何使用logback组件记录系统的日志情况:现在我们的系统都是分布式的,集群化的,那就代表着我们的应用会分布在 ...

  2. 采集日志实践-ELK以及filebeat配置解析

    上一篇完整介绍elk等的安装步骤,下面介绍下它们的配置 我们做日志采集的时候一般步骤如: 日志庞大时,filebeat和logstash或者logstash和es之间可以增加kafka或redis 首 ...

  3. 收集K8S容器的标准输出日志实践

    参考文章 ## 自己的博客 https://knight.blog.csdn.net/article/details/121476695## https://www.cnblogs.com/dogfe ...

  4. 拼多多api(json格式爬虫采集)

    item_get-根据ID取商品详情 前往测试入口 请求参数 请求参数:num_iid=1620002566 参数说明:num_iid:商品ID ; 请求示例 Curl PHP PHPsdk JAVA ...

  5. nginx日志输出配置json格式

    nginx日志输出配置json格式 nginx服务器日志相关指令主要有两条:一条是log_format,用来设置日志格式:另外一条是access_log,用来指定日志文件的存放路径.格式和缓存大小. ...

  6. 2 ELK收集nginx的json格式日志

    为了便于利用 ELK日志平台收集展示 Nginx 的日志,可以将 Nginx 的日志改成 json 的格式 https://www.jianshu.com/p/b6ba259777e7 1.修改ngi ...

  7. 使用Filebeat采集日志结合logstash过滤出特定格式的日志至Elasticsearch

    使用Filebeat采集日志结合logstash过滤出特定格式的日志 文章目录 使用Filebeat采集日志结合logstash过滤出特定格式的日志 ELK搭建 什么是Filebeat 什么是Logs ...

  8. java agent_GitHub - dingjs/javaagent: 基于javaagent开发的APM工具,收集方法的执行次数和执行时间,定时输出成json格式的日志。...

    Javaagent 概述 javaagent是一个简单优雅的java agent,利用java自带的instrument特性+javassist字节码编辑技术,实现了无侵入的方法级性能监控.相比于Ne ...

  9. 直击痛点,详解 K8s 日志采集最佳实践

    作者 | 元乙 阿里云存储服务技术专家 导读:上一篇文章主要介绍 Kubernetes 日志输出的一些注意事项,日志输出最终的目的还是做统一的采集和分析.在 Kubernetes 中,日志采集和普通虚 ...

最新文章

  1. 使用按钮控制HTML5背景音乐开关
  2. MVC系列框架之Struts存在的意义是什么?
  3. [c]如何通过结构体元素找到结构体?
  4. mysql 互斥_MySql中互斥量mutex的实现
  5. 卷积神经网络 池化层上采样(upsampling、interpolating)、下采样(subsampled、downsampled)是什么?(上采样为放大图像或图像插值、下采样为缩小图像)
  6. 网站开发之MyEclipse简单实现JSP网页表单提交及传递值
  7. php图片抖动,css3,jquery_css3图片抖动,css3,jquery - phpStudy
  8. 使用Spring Security和jdbc的Spring Boot
  9. webpack 谷歌地图_如何在Webpack中设置可靠且可维护的Google Analytics(分析)
  10. c语言程序设计点亮第一个LED,实验2__C语言程序设计及_LED跑马灯实验.ppt
  11. qt mysql分页控件_Qt分页布局与切分窗口的实现
  12. php 数组 构造为树,从PHP中的平面数组构建树
  13. 物联网将如何影响能源效率
  14. 问卷调查设计应注意避免的六大禁忌
  15. 基带单元(BBU)与无线单元(RRU)之间的高速链路-CPRI接口
  16. 这个行情,币圈小白该如何生存?
  17. 最长等差数列_最长等差子序列的长度
  18. python3中datetime模块当前时间多加一天、一小时、一分钟
  19. uniapp map 地图
  20. linux搭建h5学习日记

热门文章

  1. RPG游戏(地图传送)
  2. 转贴–人生的职业规划:让自己变得重要
  3. 自然语言处理技术及行业应用案例
  4. java/javaw/javaws与openjdk oracle jdk
  5. c语言根据月份判断季节指针,输入年份和月份,判断是否闰年?并根据月份判断是什么季节和有多少天...
  6. 小猪o2o源码v14.17双系统版(生活通+营销系统)怎么配置微信支付和支付宝支付
  7. 佳能c3020维修模式 白电平调整_传真机维修清零 白电平大全
  8. 怎么开启小米Note 3的root超级权限
  9. Google Calendar 跨平台同步方案(随时同步手机与电脑的日程安排)
  10. android蓝牙门禁,BleAgent蓝牙门禁SDK文档