• Fluentd部署:错误排查


    介绍一下排查Fluentd运行时错误的几种方法。

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

    2. 开启详细日志
      Fluentd日志支持多个级别,打开详细的日志有助于发现问题。有以下几种方法可以开启详细日志:
      2.1 通过配置文件的log_level项进行设置,具体可参考Fluentd日志。
      2.2 使用systemd用户级文件
      添加或修改配置文件/etc/systemd/system/td-agent,
      增加如下内容,这会覆盖/usr/lib/systemd/system/td-agent中的配置。

    [Service]
    ExecStart=...existing options... -vv
    

    2.3 修改init.d启动脚本
    编辑/etc/init.d/td-agent,在TD_AGENT_OPTIONS后增加"-vv",重启td-agent

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

    $ fluentd .. -vv

    
    3. 导出fluentd内部信息
    Fluentd使用sigdump(https://github.com/frsyuki/sigdump)将内部信息导出到本地文件中,可向fluentd进程发送SIGCONT信号以导出相关信息。
    
    4. CPU使用率较高的原因
    
    若发现Fluentd占用较高的CPU,一般可能有以下几点原因:
    
    - 某个插件发生竞态问题
    - 正则表达式错误
    - 系统调用异常,比如inotify监控了过多的文件
    - 某个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.28
    2016-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/lib/libjemalloc.so /usr/sbin/td-agent -c /etc/td-agent/td-agent.conf --user td-agent --group td-agent

  • 相关阅读:
    基础知识梳理
    计算机基础
    IAR平台下使用STM32的DSP配置方法
    第五节:STM32输入捕获(用CubeMX学习STM32)
    第四节:定时器中断及定时器产生PWM(用CubeMX学习STM32)
    第三节: 串口通信(用CubeMX学习STM32)
    第二节: 外部中断学习(用CubeMX学习STM32)
    第一节补充: 按键操作(CubeMX加HAL库学STM32系列)
    第一节:用Cube学32之简单IO口操作(点灯及按键)
    STM32程序中使用printf打印中文字符乱码
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13921240.html
Copyright © 2020-2023  润新知