zoukankan      html  css  js  c++  java
  • fluentd安装和配置,收集docker日志

    安装fluentd

    参考文档:

    官方文档    https://docs.fluentd.org/v0.12/categories/installation

    fluentd配置 https://www.ixdba.net/archives/2018/01/1116.htm

     

     

    curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

    查看已安装fluentd版本

    /opt/td-agent/embedded/bin/gem list|grep fluentd

    fluentd (1.2.4)建议1.2.4版本以上,因为之前的版本日志切割的时候会有问题

    (https://github.com/fluent/fluentd/pull/2054)

    更新版本

    /opt/td-agent/embedded/bin/gem update fluentd

    卸载之前的版本

    /opt/td-agent/embedded/bin/gem uninstall fluentd --version=1.2.2

     

    systemctl start td-agent  fluentd启动

    systemctl enable td-agent  开机自启动

     

     

    安装Fluentd 必要插件

    # 从 rpm 安装的话, # 比如要使用下例的 mongo,需要安装 # $ sudo td-agent-gem install fluent-plugin-mongo $ sudo td-agent-gem 

    # 从 gem 安装的话 $ sudo gem install 

    安装完成后可以用以下命令测试是否成功,

    curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test

    td-agent的日志默认路径是:

    /var/log/td-agent/td-agent.log

     

    不过安装的环境可能是没网的环境,可以直接去gem官网找安装包,然后gem install 安装,以下插件是flutend成功将消息推送到elasticsearch的关键

    (1)安装fluent-plugin-elasticsearch

    /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch

    (2)安装fluentd type 插件

    /usr/sbin/td-agent-gem install fluent-plugin-typecast

    (2)安装secure-forward 插件(非必须但常用)

    /usr/sbin/td-agent-gem install fluent-plugin-secure-forward

     

    插件安装完成后,就可以修改td-agent的配置文件,将你所要收集的日志推送到

     

    td-agent的配置文件路径默认为:

    /etc/td-agent/td-agent.conf ,修改配置文件前将配置文件备份是个好习惯

    cp /etc/td-agent/td-agent.conf  /etc/td-agent/td-agent.conf-ori

    cat /etc/td-agent/td-agent.conf

    <source>

      @type  forward

      @id    input1

      @label @mainstream

      port  24224

    </source>

    <filter **>

      @type stdout

    </filter>

    <label @mainstream>

      <match alloc-order>   ← 指定标签

        @type file         ← 指定out_file插件

        @id   output_auth-server

        path         /data/alloc-order/docker.*.log     ← 指定输出文件

        append       true

        message_key log

        format single_value

        time_slice_format %Y%m%d           ← 文件添加日期信

        time_slice_wait   10m ← 文件添加日期信息

      </match>

      <match **>

        @type file

        @id   output1

        path         /data/data.*.log

        #symlink_path /data/data.log

        append       true

        time_slice_format %Y%m%d

        time_slice_wait   10m

        time_format       %Y%m%dT%H%M%S%z

        #format single_value

        #message_key log

      </match>

    </label>

    1、source:确定输入源

    match: 确定输出目的地

    filter:确定 event 处理流

    label:将内部路由的输出和过滤器分组

    2、Fluentd 的标准输入插件包含 http(监听 9880) 和 forward 模式(监听 24224),分别用来接收 HTTP 请求和 TCP 请求。

    http:使 fluentd 转变为一个 httpd 端点,以接受进入的 http 报文。

    forward:使 fluentd 转变为一个 TCP 端点,以接受 TCP 报文。

    3、match 指令查找匹配 “tags” 的事件,并处理它们。match 命令的最常见用法是将事件输出到其他系统(因此,与 match 命令对应的插件称为 “输出插件”)。每个match指令必须包括一个匹配模式和type参数。match模式是用来过滤事件。只有事件与tag匹配,这个模式将被发送到输出目的地。type参数指定输出插件使用。Fluentd 尝试按照它们在配置文件中出现的顺序,从上到下来进行 "tags" 匹配 

    append:默认值 false,即刷新日志到不同的文件;若为 true 则输出到同一文件,直到触发 time_slice_format

    当满足 time_slice_format 条件时,将创建该文件。 要更改输出频率,请修改 time_slice_format 值。%Y%m%d  每天切割一次收集的日志

    time_slice_wait   事件发生时间和fluentd接收事件信息时间有时会发生时差,因此会出现输出文件日期和实际内容不相符的情况。例如23:55发生的事件信息的接收事件是0:01,这时用日期切换输出文件可能会导致该事件信息的丢失。这时可指定 time_slice_wait 参数,该参数是out_file插件根据日期分割输出文件之后,等待多长时间之后向新文件输出信息,在这里10m是10分钟。

    message_key log和format single_value将json格式中log字段提取出来

    参考文档:http://www.imekaku.com/2016/09/18/fluentd-remove-time-tag-to-only-value/

    Fluentd提取发送日志中的value-SingleValue – Imekaku-Blog 


    docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt tag="alloc-order" --log-opt fluentd-async-connect

     --log-driver: 配置log驱动

    --log-opt: 配置log相关的参数

    fluentd-address: fluentd服务地址fluentd-async-connect:fluentd-docker异步设置,避免fluentd挂掉之后导致Docker容器也挂了



  • 相关阅读:
    编译用到boost相关的东西,问题的解决;以及和googletest库
    看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph)
    centos5 升级到centos6
    Go vs Erlang
    Graphviz
    Oracle相关安装经验总结
    学习erlang书籍
    sublime使用总结
    List集合五种遍历方式
    nginx常用命令
  • 原文地址:https://www.cnblogs.com/zs-007/p/9475293.html
Copyright © 2011-2022 走看看