安装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容器也挂了

												

fluentd安装和配置,收集docker日志的更多相关文章

  1. ELK学习实验018:filebeat收集docker日志

    Filebeat收集Docker日志 1 安装docker [root@node4 ~]# yum install -y yum-utils device-mapper-persistent-data ...

  2. debian安装filebeat5.5收集nginx日志

    先贴一下我的BELK架构 1.Download and install the Public Signing Key: # wget -qO - https://artifacts.elastic.c ...

  3. docker-搭建efk收集docker日志

    新建docker-compose.yml文件 version: '2' services: fluentd: build: ./fluentd volumes: - ./fluentd/conf:/f ...

  4. Filebeat 日志收集器 安装和配置

    Filebeat的配置文件是/etc/filebeat/filebeat.yml,遵循YAML语法.具体可以配置如下几个项目: Filebeat Output Shipper Logging(可选) ...

  5. CentOS7下 简单安装和配置Elasticsearch Kibana Filebeat 快速搭建集群日志收集平台

    目录 1.添加elasticsearch官网的yum源 2.Elasticsearch 安装elasticsearch 配置elasticsearch 启动elasticsearch并设为开机启动 3 ...

  6. Docker日志收集最佳实践

    传统日志处理 说到日志,我们以前处理日志的方式如下: · 日志写到本机磁盘上 · 通常仅用于排查线上问题,很少用于数据分析 ·需要时登录到机器上,用grep.awk等工具分析 那么,这种方式有什么缺点 ...

  7. elk-filebeat收集docker容器日志

    目录 使用docker搭建elk filebeat安装与配置 docker容器设置 参考文章 首发地址 使用docker搭建elk 1.使用docker-compose文件构建elk.文件如下: ve ...

  8. Docker 部署 ELK 收集 Nginx 日志

    一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...

  9. ELK:收集Docker容器日志

    简介 之前写过一篇博客 ELK:日志收集分析平台,介绍了在Centos7系统上部署配置使用ELK的方法,随着容器化时代的到来,容器化部署成为一种很方便的部署方式,收集容器日志也成为刚需.本篇文档从 容 ...

随机推荐

  1. CPU调度

    概念 1.控制,协调进程对CPU的竞争,按一定的调度算法从就绪队列中选择一个进程把CPU的使用权交给被选中的进程, 如果没有就绪进程,系统会安排一个系统空闲进程或idle进程 cpu调度要解决的三个问 ...

  2. 类的方法练习——定义MySQL类

    要求: 1.对象有id.host.port三个属性 2.定义工具create_id,在实例化时为每个对象随机生成id,保证id唯一 3.提供两种实例化方式,方式一:用户传入host和port 方式二: ...

  3. windows环境下wampserver配置https

    因为公司业务主要是在微信上进行开展的,所以作为程序员的我们每天的开发任务就都是在与微信打交道,这个时候我们就需要在本地配置端口映射到外网,方便我们在微信客户端进行调试. 最近某种需要,所以需要配置 h ...

  4. [PAMI 2018] Differential Geometry in Edge Detection: accurate estimation of position, orientation and curvature

    铛铛铛,我的第一篇文章终于上线了,过程曲折,太不容易了--欢迎访问--- https://ieeexplore.ieee.org/document/8382271/ 后面有需要的话可以更新一下介绍,毕 ...

  5. 15_volatile

    [volatile概念] volatile关键字的主要作用是是变量在多个线程间可见. [注意] 在java中,每一个线程都会有一块工作内存区,其中存放着所有线程共享的主内存中的变量的拷贝.当线程执行时 ...

  6. Java环境路径配置--转载

    windows环境中JDK环境变量配置   一.环境准备 Windows10 jdk-9.0.1 二.下载并安装JDK 到Java的官网下载JDK安装包,地址:http://www.oracle.co ...

  7. <meta name="viewport" content="width=device-width, initial-scale=1.0">理解

    ViewPort <meta>标记用于指定用户是否可以缩放Web页面,如果可以,那么缩放到的最大和最小缩放比例是什么.使用ViewPort <meta>标记还表示文档针对移动设 ...

  8. Struts2学习-拦截器2续

    定义拦截器有2种办法:1.实现Interceptor接口2.集成AbstractInterceptor抽象类 一.方法1 ..... <struts> <package name=& ...

  9. 作为软件技术人员建立自己的git账户并保存资料的重要性

    日常生活中,当修改并保存了一个文件,所得到的就是此文件的最新版本,假若今后因某一问题需要用到原来文件,可是很多情况下,这种修改是不可逆的.你修改完之后,无法回到你修改前的样子.为了避免这种情况,有的人 ...

  10. Android(java)学习笔记52:成员位置的内部类的介绍

    1. 内部类的定义 /* 内部类概述: 把类定义在其他类的内部,这个类就被称为内部类. 举例:在类A中定义了一个类B,类B就是内部类. 内部的访问特点: A:内部类可以直接访问外部类的成员,包括私有. ...