草庐IT

logstash异常日志收集

直冲2w点 2023-04-21 原文

采集logstash容器日志并进行处理


前言

在使用logstash进行日志处理时,发现经常会出现某一个topic消费异常的报错。Record is corrupt (stored crc = 2000910049, computed crc = 1912358942)}
在logstash出现这个报错后,相应的topic就会无法正常消费,kibana上也无法正常查询到相关时间点之后的日志,重启logstash后才会恢复异常。


一、处理方式

日志采集流程:

fluent-bit ——> kafka ——> logstash ——> es ——> kibana

处理方案:

通过网上调研,没有找到相应的处理方法。但是发现通过手动重启logstash就可以恢复对应的日志采集。但是总不能一直看logstash日志看有没有报错吧。

于是,便通过已有的方式采集logstash容器日志并通过日志告警插件进行告警。

二、详细配置

告警详情

如下:

[ERROR][logstash.inputs.kafka    ][main][cb3a80073c6ad1403c54fc6cdce0a1c7d4352eb8afa38e0ff9519c07e83e96ce] Unable to poll Kafka consumer {:kafka_error_message=>org.apache.kafka.common.KafkaException: Received exception when fetching the next record from {kafka-topic}-0. If needed, please seek past the record to continue consumption., :cause=>org.apache.kafka.common.KafkaException: Record batch for partition {kafka-topic}-0 at offset 9213518 is invalid, cause: Record is corrupt (stored crc = 1008539063, computed crc = 2600267767)}

fluent-bit配置

input配置如下:


[INPUT]
        Name           tail
        Tag            logstash_log
        Path           /var/log/containers/*logstash*.log
        Parser         logstash_parser
        Mem_Buf_Limit  10MB
 [FILTER]
        Name record_modifier
        Match logstash_log

output配置如下:

[OUTPUT]
        Name            kafka
        Match           logstash_log
        Brokers         kafka-headless.monitoring.svc.cluster.local:9092
        Timestamp_Key   logstash_local_time
        Tag_Key         logstash_log
        Include_Tag_Key On
        Topics          logstash_log

对应的parser配置如下:

[PARSER]
        Name   logstash_parser
        Format regex
        Regex  ^(.*) \[(?<logstash_local_time>[^\]]*)\]\[(?<level>[^\]]*)\]\[(?<org_log>[^\]]*)\]\[(?<main>[^\]]*)\]\[(?<key>[^\]]*)\] (?<messages>.+)$
        Time_Key logstash_local_time
        Time_Format %d/%b/%Y:%H:%M:%S %z

(fluent-bit本地debug调试可参考: fluent-bit本地dubug调试

至此,已能事实监控到logstash采集异常,但是没有真正处理问题。


尝试方案

发现是由于消费kafka上特定topic异常,怀疑是topic消息增加太快,导致消费速度跟不上。所以尝试将topic增加为3分区(原先只有partition 0)并持续观察消费情况以及logstash异常情况。

有关logstash异常日志收集的更多相关文章

  1. ruby-on-rails - Rails - 乐观锁定总是触发 StaleObjectError 异常 - 2

    我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd

  2. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

  3. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

    我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

  4. SPI接收数据异常问题总结 - 2

    SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手

  5. ruby - 如何捕获 ruby​​ 中的所有异常? - 2

    我们如何捕获或/和处理ruby​​中所有未处理的异常?例如,这样做的动机可能是将某种异常记录到不同的文件或发送电子邮件给系统管理。在Java中我们会做Thread.setDefaultUncaughtExceptionHandler(UncaughtExceptionHandlerex);在Node.js中process.on('uncaughtException',function(error){/*code*/});在PHP中register_shutdown_function('errorHandler');functionerrorHandler(){$error=error_

  6. ruby - Sinatra 中的全局救援和日志记录异常 - 2

    如何在出现异常时指定全局救援,如果您将Sinatra用于API或应用程序,您将如何处理日志记录? 最佳答案 404可以在not_found方法的帮助下处理,例如:not_founddo'Sitedoesnotexist.'end500s可以通过调用带有block的错误方法来处理,例如:errordo"Applicationerror.Plstrylater."end错误的详细信息可以通过request.env中的sinatra.error访问,如下所示:errordo'Anerroroccured:'+request.env['si

  7. ruby-on-rails - 使用 Ruby 标准 Logger 每天只创建一个日志 - 2

    我正在使用ruby​​标准记录器,我想要每天轮换一次,所以在我的代码中我有:Logger.new("#{$ROOT_PATH}/log/errors.log",'daily')它运行完美,但它创建了两个文件errors.log.20130217和errors.log.20130217.1。如何强制它每天只创建一个文件? 最佳答案 您的代码对于长时间运行的应用程序是正确的。发生的事情是您在给定的一天多次运行代码。第一次运行时,Ruby会创建一个日志文件“errors.log”。当日期改变时,Ruby将文件重命名为“errors.log

  8. ruby - Cucumber/Savon 省略或删除日志输出 - 2

    在运行Cucumber测试时,我得到(除了测试结果)大量调试/日志相关的输出形式:D,[2013-03-06T12:21:38.911829#49031]DEBUG--:SOAPrequest:D,[2013-03-06T12:21:38.911919#49031]DEBUG--:Pragma:no-cache,SOAPAction:"",Content-Type:text/xml;charset=UTF-8,Content-Length:1592W,[2013-03-06T12:21:38.912360#49031]WARN--:HTTPIexecutesHTTPPOSTusingt

  9. ruby-on-rails - faraday如何设置日志级别 - 2

    我最近将我的http客户端切换到faraday,一切都按预期工作。我有以下代码来创建连接:@connection=Faraday.new(:url=>base_url)do|faraday|faraday.useCustim::Middlewarefaraday.request:url_encoded#form-encodePOSTparamsfaraday.request:jsonfaraday.response:json,:content_type=>/\bjson$/faraday.response:loggerfaraday.adapterFaraday.default_ada

  10. ruby-on-rails - Logstash 可以在 Rails 上使用 Ruby 吗? - 2

    有没有人得到Logstash在Rails上使用ruby​​?我的客户告诉我将Logstash用于日志收集器等。我正在使用ruby​​onrails技术。大部分都快完成了。但要求是将日志记录到logstash中。请让我知道这可能吗? 最佳答案 我为此编写了一个gem-logstasher.它将Rails日志写入一个单独的文件,采用纯json格式,无需任何处理即可由logstash使用。查看我的blog有关如何设置Logstash和Kibana的完整说明 关于ruby-on-rails-Lo

随机推荐