小编Or *_*hum的帖子

Fluentd 错误:“缓冲区空间有太多数据”

我在我的 kubernetes 集群中使用 fluentd 从 pod 收集日志并将它们发送到 elasticseach。一两天,fluetnd 收到错误:

[warn]: #0 emit transaction failed: error_class=Fluent::Plugin::Buffer::BufferOverflowError error=“buffer space has too many data” location=“/fluentd/vendor/bundle/ruby/2.6.0/gems/fluentd-1.7.4/lib/fluent/plugin/buffer.rb:265:in `write’”
Run Code Online (Sandbox Code Playgroud)

并且 fluentd 停止发送日志,直到我重置 fluentd pod。

如何避免出现此错误?

也许我需要更改配置中的某些内容?

<match filter.Logs.**.System**>
  @type elasticsearch
  host "#{ENV['FLUENT_ELASTICSEARCH_HOST']}"
  port "#{ENV['FLUENT_ELASTICSEARCH_PORT']}"
  scheme "#{ENV['FLUENT_ELASTICSEARCH_SCHEME']}"
  user "#{ENV['FLUENT_ELASTICSEARCH_USER']}"
  password "#{ENV['FLUENT_ELASTICSEARCH_PASSWORD']}"

  logstash_format true
  logstash_prefix system
  type_name systemlog
  time_key_format %Y-%m-%dT%H:%M:%S.%NZ
  time_key time
  log_es_400_reason true
  <buffer>
    flush_thread_count "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_FLUSH_THREAD_COUNT'] || '8'}"
    flush_interval "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_FLUSH_INTERVAL'] || '5s'}"
    chunk_limit_size "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_CHUNK_LIMIT_SIZE'] || '8M'}"
    queue_limit_length "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_QUEUE_LIMIT_LENGTH'] || '32'}"
    retry_max_interval "#{ENV['FLUENT_ELASTICSEARCH_BUFFER_RETRY_MAX_INTERVAL'] || '30'}"
    retry_forever true
  </buffer> …
Run Code Online (Sandbox Code Playgroud)

logging elasticsearch fluentd kubernetes

5
推荐指数
1
解决办法
6642
查看次数

Go程序中的一般恐慌恢复

我正在尝试从程序中创建的go例程中捕获崩溃/紧急情况,以便将其发送到崩溃错误报告服务器(例如Sentry / Raygun)

例如,

func main() {

    go func() {
        // Get this panic
        panic("Go routine panic")
    }()
}
Run Code Online (Sandbox Code Playgroud)

答案表明,一个goroutine无法从另一个goroutine的恐慌中恢复。

惯用的方式是什么?

crash-reports go panic sentry raygun

2
推荐指数
1
解决办法
126
查看次数