Fluentd部署:错误排查

本文介绍一下排查Fluentd运行时错误的几种方法。
  1. 查看日志

    如果感觉Fluentd运行异常,请先查看日志。td-agent安装后,默认日志存放在/var/log/td-agent/td-agent.log。

  2. 开启详细日志

    Fluentd日志支持多个级别,打开详细的日志有助于发现问题。有以下几种方法可以开启详细日志:

    1. 通过配置文件的log_level项进行设置,具体可参考Fluentd日志

    2. 使用systemd用户级文件

      添加或修改配置文件/etc/systemd/system/td-agent,

      增加如下内容,这会覆盖/usr/lib/systemd/system/td-agent中的

      配置。

      [Service]ExecStart=...existing options... -vv
    3. 修改init.d启动脚本

      编辑/etc/init.d/td-agent,在TD_AGENT_OPTIONS后增加"-vv",重启td-agent

      # at /etc/init.d/td-agent...TD_AGENT_OPTIONS="... -vv"...
    4. 命令行参数

      $ fluentd .. -vv
  3. 导出fluentd内部信息

    Fluentd使用sigdump(https://github.com/frsyuki/sigdump)将内部信息导出到本地文件中,可向fluentd进程发送SIGCONT信号以导出相关信息。

  4. CPU使用率较高的原因

    若发现Fluentd占用较高的CPU,一般可能有以下几点原因:

    1. 某个插件发生竞态问题

    2. 正则表达式错误

    3. 系统调用异常,比如inotify监控了过多的文件

    4. 某个ruby依赖包异常

    出现这些情况时,可使用linux perf工具来检测问题所在。也可使用pid2line.rb(https://gist.github.com/nurse/0619b6af90df140508c2)这个脚本来辅助排查。

  5. 检查未捕获的日志

    有时候会遇到一些异常退出的情况,这时程序返回值非0。比如:

    2016-01-01 00:00:00 +0800 [info]: starting fluentd-0.12.282016-01-01 00:00:00 +0800 [info]: reading config file path="/etc/td-agent/td-agent.conf"[...snip...]2016-01-01 00:00:02 +0800 [info]: process finished code=6

    这类问题可能发生在ruby内部,比如段错误、某些C扩展有bug等。当fluentd以守护进程方式运行时,我们将得不到完整的日志。

    使用如下方式运行td-agent,就可以在程序异常时获取到完整的日志。

    $ sudo LD_PRELOAD=/opt/td-agent/embedded/lib/libjemalloc.so /usr/sbin/td-agent -c /etc/td-agent/td-agent.conf --user td-agent --group td-agent
(0)

相关推荐

  • 号称下一代日志收集系统!来看看它有多强

    后面随着架构的优化与演进,又引入另一个轻量级的组件 Filebeat,Filebeat和Logstash一样属于日志收集处理工具,基于原先 Logstash-fowarder 的源码改造出来的.与Lo ...

  • 大数据安全分析05_数据采集技术

    大数据分析中的数据采集方式包括Logstash.Flume.Fluentd.Logtail等,本文对这几种数据采集技术进行简要介绍. Logstash Logstash是一个具备实时处理能力的开源的数 ...

  • Fluentd部署:高可用配置

    对于高访问量的web站点或者服务,我们可以采用Fluentd的高可用配置模式. 消息分发语义 Fluentd设计初衷主要是用作事件日志分发系统的.这类系统支持几种不同的分发模式: 至多一次.消息被立即 ...

  • Fluentd部署:性能优化

    本文提供一些对于单Fluentd进程进行性能优化的建议.如果你的日志请求达到了5000条/秒,这里描述的技术点可用于调优. 检查操作系统配置 在安装Fluentd之前,进行操作系统参数优化.可参考这里 ...

  • Fluentd部署:多Workers进程模式

    本文介绍如何使用Fluentd的多worker模式处理高访问量的日志事件.此模式会运行多个worker进程以最大利用多核CPU. 原理 默认情况下,一个Fluentd实例会运行一个监控进程和一个工作进 ...

  • Fluentd部署:如何监控Fluentd

    今天的文章主要介绍一下如何监控Fluentd.监控的目的是确保日志采集能稳定高效运行. Fluentd内部运行指标 Fluentd内部保存着一些运行指标,这些指标可通过REST api直接获取,也支持 ...

  • Fluentd部署:通过Prometheus监控Fluentd

    本文简单介绍一下如何通过Prometheus监控Fluentd. Prometheus也是CNCF成员项目之一,所以Fluentd官方推荐使用Prometheus作为监控工具. 安装fluent-pl ...

  • Fluentd部署:系统配置

    首先,本文"系统配置"指的是Fluentd的全局配置项,诸如开启RPC.使用多worker模式等.可在配置文件中通过<system>进行配置,或通过命令行进行配置. & ...

  • Fluentd部署:日志

    Fluentd是用来处理其他系统产生的日志的,它本身也会产生一些运行时日志.我们一起来了解一下Fluentd本身的日志机制. Fluentd包含两个日志层:全局日志和插件级日志.每个层次的日志都可以进 ...

  • 猿友福音:使用AddressSanitizer排查程序错误

    AddressSanitizer(ASan)已经在Visual Studio 2019 v16.9中正式发布了.最近,我们使用了这项功能找到了MSVC编译器中的一个Bug.为了进一步验证ASan确实为 ...

  • 交通部危旧桥梁改造培训动员部署政策解读、排查目标及评定要点上

    交通部危旧桥梁改造培训动员部署政策解读、排查目标及评定要点上