New Relic日志采集对Logback的影响及日志级别配置问题咨询
问题解答
1. 日志能否同时发送至New Relic和ELK?
- 不会中断向ELK的发送,完全可以同时流向两个系统。New Relic的日志采集是追加式读取,仅从日志源(如应用日志文件、stdout、AWS CloudWatch等)复制日志数据,不会修改、截断或占用原有日志流。只要ELK的原有采集配置(比如日志文件读取规则、AWS日志转发规则)保持正常,日志会同时被两个系统获取。
2. 如何让New Relic仅采集ERROR级别日志(不影响ELK)?
首先明确:newrelic.yml中的log_level配置的是New Relic Agent自身的日志输出级别,不是对应用日志的过滤级别,这是常见误区。要实现仅向New Relic发送ERROR级别日志,需针对日志框架(如Logback、Log4j2)单独配置,同时保留ELK的全量日志采集:
步骤1:关闭New Relic Agent的自动日志采集(若开启)
在newrelic.yml中添加或修改配置,避免Agent自动抓取全量日志:
logging: enabled: false
步骤2:给日志框架配置分级别输出
以常用的Logback为例,修改logback-spring.xml:
<!-- 保留原有ELK的Appender配置,确保全量日志正常发送到ELK --> <appender name="ELK_APPENDER" class="你的ELK适配Appender类"> <!-- 原有配置保持不变,比如输出级别设为debug或更低 --> </appender> <!-- 配置New Relic专属Appender,仅过滤ERROR级别日志 --> <appender name="NEW_RELIC_APPENDER" class="com.newrelic.logging.logback.NewRelicAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 根日志配置,同时关联两个Appender --> <root level="debug"> <appender-ref ref="ELK_APPENDER"/> <!-- ELK接收所有级别日志 --> <appender-ref ref="NEW_RELIC_APPENDER"/> <!-- New Relic仅接收ERROR级别 --> </root>
如果使用Log4j2,逻辑类似:在log4j2.xml中给New Relic的Appender添加ThresholdFilter,设置级别为ERROR,同时保留ELK的全量输出配置。
若通过AWS CloudWatch转发日志
如果是通过CloudWatch Logs将日志转发到New Relic,需在New Relic的日志摄取管道中添加过滤规则,仅保留日志内容中包含ERROR级别的事件;同时CloudWatch继续将全量日志转发到ELK,互不影响。
内容的提问来源于stack exchange,提问作者John Little
相关产品推荐
相关产品推荐

