Fluentd部署:日志

Fluentd是用来处理其他系统产生的日志的,它本身也会产生一些运行时日志。我们一起来了解一下Fluentd本身的日志机制。

Fluentd包含两个日志层:全局日志和插件级日志。每个层次的日志都可以进行单独配置。

  1. 日志级别

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

  2. 全局日志

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

    1. 命令行

      -v、-vv用于增加日志级别,-q、-qq用于降低日志级别。

      $ fluentd -v ... # debug level$ fluentd -vv ... # trace level

      $ fluentd -q ... # warn level$ fluentd -qq ... # error leve

      使用命令行可以在不改变配置文件的情况下调整日志级别,方便调试。
    2. 配置文件
      也可以在配置文件中设置<system>的log_level来配置全局日志级别。
      <system> # equal to -qq option log_level error</system>
  3. 插件日志
    可通过@log_level对每个插件单独设置日志级别,这个级别将覆盖全局日志级别。
    <source> @type tail @log_level debug path /var/log/data.log ...</source><source> @type http @log_level fatal</source>
    上边这个片段中,我们对两个不同的输入源分别设置了各自的日志级别。
  4. 日志格式
    如今天第一篇文章中所述,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}
  5. 将日志写入文件
    Fluentd默认将其日志输出到stdout,可通过-o将日志输出到文件中。
    $ fluentd -o /path/to/log_file
    若将日志写入文件,默认情况下Fluentd不会进行日志轮转,即会向指定的文件中不断写入日志,这可能会导致日志文件过大。可通过命令行参数开启日志轮转功能。
    1. --log-rotate-age AGE
      这里AGE为整数或字符串,需要和下边的rotate-size配合使用。
      整数表示轮转文件个数;
      字符串表示轮转频率,可为daily、weekly或monthly。
    2. -log-rotate-size BYTES
      BYTES为轮转文件的大小,达到此字节数即开始写入新的文件。
      当rotate-age值为整数时,通过此配置项控制日志的轮转。
      $ fluentd -c fluent.conf --log-rotate-age 5 --log-rotate-size 104857600
  6. 捕获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运行情况。
(0)

相关推荐

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

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

  • K8s~为pod添加sidecar进行日志收集

    我们在k8s部署服务时,一般来说一个服务会对应一类pod,而pod通过rs实现副本集,而这些pod的日志一般有控制台stdout和文件的,一般会把这些日志最终输出到elasticsearch里,再通过 ...

  • Fluentd部署:错误排查

    本文介绍一下排查Fluentd运行时错误的几种方法. 查看日志 如果感觉Fluentd运行异常,请先查看日志.td-agent安装后,默认日志存放在/var/log/td-agent/td-agent ...

  • 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+MongoDB采集Apache日志

    我们之前介绍了EFK日志采集分析套件,今天再介绍一个组合:Fluentd+MongoDB,用以实时收集半结构化数据. 背景知识 日志接入Fluentd后,会以json的格式在Fluentd内部进行路由 ...

  • 广华日志漫笔99977(97)

    刚开始做流量的时候,不要想着我每天怎么搞个100个200个,就想着我每天怎么能搞到10个精准,我怎么能每天搞到10个精准流量,当你真的做到了这一点,当你真正做到了这一点,那你就超越了大部分人. 等人啊 ...