我们的基础设施代理人与a捆绑在一起流利的位插件,因此您可以使用YAML文件的简单配置本身转发日志。目前,代理支持在Linux和Windows上日志拖尾,Linux上的Systemd(真的是一个集合JOURIDAD),Linux上的Syslog,TCP在Linux和Windows,Windows事件日志和包含任何一个的自定义流程位配置本机的输入可用的。

虽然这个开箱即用的功能是降低许多日志操作团队收集的进入障碍的好方法,但存在一些限制。

例如,在该领域中,我通常发现团队需要收集和解析多行日志消息,并以合理的方式显示它们。从表面上看,将多行日志消息合并到单个日志条目中很有挑战性,但是如果遵循一些基本模式,这绝对是可能的。

在此帖子中,我将演示如何在Linux和Windows上使用自定义流畅的位配置来支持多行日志消息新的遗物日志

多行日志消息的挑战

以下是应用程序日志中的多行消息的示例:

2020-10-28 13:48:55,584 [main] debug com.newrelictest.logging.nerdfactory:创建数据书呆子2020-10-28 13:48:55,751 [main] debug com.newrelict.logging.nerdfactory:{“ID“:1,”值“:100.0} 2020-10-28 13:48:55,754 [Main] debug com.newrelictest.logging.nerdfactory:创建数据书呆子2020-10-28 13:48:55,760 [主要]错误com.newrelictest.logging.nerdfactory:java.lang.nullpointerexception在com.newrelict.logging.nerdfactory.createdatanerd(nerdfactory.java:15)在com.newrelict.logging.nerdfactorytest.test(nerdfactorytest.java:11)

在不提供方向的方向,了解流畅的位应该如何处理这样的文件,您将每个单独的日志条目视为新的遗物中的单独行,这大大减少了日志数据的值:

但是在流利位中有一些简单的自定义配置,我可以将其转化为我可以在新遗物中可视化和存储的有用数据。

在New Relic中处理多行日志

为了在New Relic中处理这些多行日志,我将创建一个自定义的Fluent Bit配置和一个相关的解析器文件,来指导Fluent Bit做以下事情:

  • 跟踪特定文件
  • 使用密钥名称下的文件名装饰日志filePath
  • 输出带有密钥名称的解析日志消息
  • 用一个正则表达式模式标记时间戳,严重性级别和来自多线输入的消息。

笔记:对于流利的位(和fluentd),您将想要使用任何一个测试RegEx模式Rubular闪血管

这是我添加到的yaml配置文件/etc/newrelic-infra/logging.d.。(对于Windows路径是C:\Program Files\New \ newrelic-infra \ logging.d遗迹)。

Windows用户的警告:这些配置需要空格,而不是制表符。(记住这一点,就可以省去不必要的故障排除。)

- name: external-fluentbit-config-and- Parser -file fluentbit: config_file: /etc/newrelic-infra/logging.d/fluentbit.conf parsers_file: /etc/newrelic-infra/logging.d/ Parser .conf

下面是我正在使用的Fluent Bit配置文件:

# Path_Key允许用源文件名装饰日志消息# ----注意Path_Key的值== NR1中的属性名,它不需要“上”#键使从默认的日志更新NR1-friendly‘消息’[输入]名尾路径/ tmp / test.log Path_Key filePath关键信息标签tail_test多行Parser_Firstline MULTILINE_MATCH #这个块标识解析器使用的相关标签[输入]块(s)(过滤器)名称解析器匹配MULTILINE_MATCH Reserve_Data On Preserve_Key On

最后,这里是流利的位解析器文件:

# This block代表一个单独的解析器[parser]<时间> (\ d -] + [\ d:] +) (?: \ [\ w + \]) ?(? <水平> [a - z] +)(? <消息> [\ s \ s] *) /

按名称匹配这是匹配的(过滤器)块也在parser_firstline.归属于(输入)块在上面的配置文件中。

正则表达式名称为提供的样本MultiLine日志的时间戳,严重性级别和消息。

在New Relic中查看多行日志消息

既然我有配置的配置,并且流畅的位运行,我可以看到每个MultiLine消息在新的遗录日志中显示为单个:

你有它。有价值的日志正在流动,您不会牺牲您的任何数据。

如果您尚未使用新的遗物日志,则会发现它包含在全堆叠可操作性中。现在就免费注册

Zack Mutchler于2020年1月加入New Relic,担任TechOps战略顾问。在加入New Relic之前,他是Cardinal Health的一名监控工程师,负责New Relic、Stackdriver和SolarWinds组成的企业监控平台的设计、战略和实现。由于对监视和自动化的热情,Zack已经成为一名危险的PowerShell脚本编写者和意外的DBA。作为SolarWinds的前MVP和专业服务顾问,他曾与全球数百家客户合作,并曾担任多个SolarWinds活动和会议的主持人。基于沃斯堡,得克萨斯州,扎克是一个球迷在荒野以及热情的狩猎完美的玉米卷。查看贴子

有兴趣为New Relic博客写作吗?亚搏体育登入网送我们一个球场!!