zoukankan      html  css  js  c++  java
  • 9. Fluentd部署:日志

    Fluentd是用来处理其他系统产生的日志的,它本身也会产生一些运行时日志。Fluentd包含两个日志层:全局日志和插件级日志。每个层次的日志都可以进行单独配置。

    1. 日志级别
      Fluentd的日志包含6个级别:fatal、error、warn、info、debug和trace。级别依次递增,高级别的日志包含低级别的日志。默认为info,所以默认情况下,日志中包含info、warn、error、fatal这4个级别的日志。

    2. 全局日志
      Fluentd内核使用全局日志配置,若插件没有单独设置自己的日志配置项,插件也共用全局日志配置项。可通过命令行或配置文件进行设置。

    2.1 命令行

    • -v、-vv用于增加日志级别,-q、-qq用于降低日志级别。
    $ fluentd -v  ... # debug level
    $ fluentd -vv ... # trace level
    
    $ fluentd -q  ... # warn level
    $ fluentd -qq ... # error leve
    

    使用命令行可以在不改变配置文件的情况下调整日志级别,方便调试。

    • 配置文件
      也可以在配置文件中设置的log_level来配置全局日志级别。
    <system>
      # equal to -qq option
      log_level error
    </system>
    
    1. 插件日志
      可通过@log_level对每个插件单独设置日志级别,这个级别将覆盖全局日志级别。
    <source>
      @type tail
      @log_level debug
      path /var/log/data.log
      ...
    </source>
    <source>
      @type http
      @log_level fatal
    </source>
    

    上边这个片段中,对两个不同的输入源分别设置了各自的日志级别。

    1. 日志格式
      Fluentd的日志支持text和json两种格式,默认使用text,可在<system>中进行设定。
    <system>
      <log>
        format json
        time_format %Y-%m-%d
      </log>
    </system>
    

    若使用json格式,

    2017-07-27 06:44:54 +0900 [info]: #0 fluentd worker is now running worker=0
    

    这条日志将会转化为如下输出:

    {"time":"2017-07-27","level":"info","message":"fluentd worker is now running worker=0","worker_id":0}
    
    1. 将日志写入文件
      Fluentd默认将其日志输出到stdout,可通过-o将日志输出到文件中。
    $ fluentd -o /path/to/log_file
    

    若将日志写入文件,默认情况下Fluentd不会进行日志轮转,即会向指定的文件中不断写入日志,这可能会导致日志文件过大。可通过命令行参数开启日志轮转功能。

    5.1 --log-rotate-age AGE
    这里AGE为整数或字符串,需要和下边的rotate-size配合使用。
    整数表示轮转文件个数;
    字符串表示轮转频率,可为daily、weekly或monthly。

    5.2 --log-rotate-size BYTES
    BYTES为轮转文件的大小,达到此字节数即开始写入新的文件。
    当rotate-age值为整数时,通过此配置项控制日志的轮转。

    $ fluentd -c fluent.conf --log-rotate-age 5 --log-rotate-size 104857600
    
    1. 捕获Fluentd日志
      Fluentd自身日志也可以被采集。
      Fluentd使用fluent作为自身日志的tag,我们可以通过<label @FLUENT_LOG>来处理Fluentd自身的日志。
    # Add hostname for identifying the server
    <label @FLUENT_LOG>
      <filter fluent.*>
        @type record_transformer
        <record>
          host "#{Socket.gethostname}"
        </record>
      </filter>
    
      <match fluent.*>
        @type monitoring_plugin
        # parameters...
      </match>
    <label>
    

    这样做的一个用处是用来监控Fluentd运行情况。

  • 相关阅读:
    功能检查和降级
    蓄水池问题
    Linux删除大于/小于固定大小的文件等
    理解Faster-RCNN 中的Anchor
    【转】DBSCAN密度聚类算法
    ROC曲线和PR曲线
    LSTM比较RNN
    【转】ROI Pooling
    【转】VGG网络结构及参数
    面试知识点准备(各方面)
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13921045.html
Copyright © 2011-2022 走看看