插入关键字 文章采集器(轻量级开源日志管理工具航程(一)|.gz)

优采云 发布时间: 2021-10-21 15:22

  插入关键字 文章采集器(轻量级开源日志管理工具航程(一)|.gz)

  转载请注明出处

  一天早上,领导们的怒吼声从远处传来,空荡荡的办公区放大了怒吼的“下流”程度。“xxxxxx……不能使用重量级的日志管理工具。xxxx不代表你要自己造轮子。拥抱开源不仅仅是口号,xxxx必须行动……”

  伴随着不适合儿童的哔哔哔哔声,我开始了探索轻量级开源日志管理工具的航程。Filebeat 等开源日志管理软件进入了我的视野。都说:别人发怒的时刻,可能是你发现新世界的开始。

  与前面提到的开源日志管理工具文章相比,本文适合轻量级应用的日志管理。准确的说:如何使用Filebeat从java服务到redis服务生成log采集。

  Filebeat 简介

  Filebeat是Beats平台系列产品中的日志采集、存储、路由工具。官方功能列表:

  

  Filebeat 介绍

  总之,Filebeat 简化了日志采集流程,完美对接数据库,是一款轻量级的开源产品。轻量级符合我们的期望,支持redis库与我们目前的服务兼容,所以是我们的选择。

  本文为教程,分为安装、配置、运行三部分。按这个顺序介绍。注:由于实现场景,Filebeat 参数只涉及一部分。

  关于发行说明

  软件版本号:

  Filebeat 6.5 (release version)Linux x86_64 x86_64 GNU/Linux(os version) redis_version: 5.0.0 (redis采用单节点模式,高可用需要集群或哨兵模式) 如何安装

  Filebeat可以安装在主流操作系统上,也支持docker和k8s模式部署。是“五脏俱全的小麻雀”的典型工具。

  下载门户

  linux下的安装包是gz的压缩包。解压并安装:

  tar xzvf filebeat-5.1.1-darwin-x86_64.tar.gz

  

  安装目录列表

  下面分别介绍一下目录的功能:

  如何配置

  下面介绍如何配置以及配置什么。

  如何配置 Filebeat?

  它提供了三种配置方法:

  Filebeat 配置了哪些参数?

  A、先说运行所需的最低配置参数:

  filebeat.inputs:

- type: log #采集的数据格式 log

enabled: true #激活log采集功能

paths: #采集路径

- /var/log/*.log

- /var/path2/*.log

  注:配置文件格式为yaml语言,类似于json的标记语言

  output.redis:

hosts: ["localhost"] #*敏*感*词* redis

port: 6379 #port

password: "my_password" #用户名和密码

key: "filebeat" # filebeat是数据的key

db: 0 #数据写入的库

  以上配置实现了日志导入Redis的基本配置。Filebeat有哪些特殊参数?如何实现需求的特性?这些在其他配置中一一解释。

  B.其他配置说明

  Filebeat 输出数据的格式为 json。像这样的东西:

  {

  "@timestamp": "2018-12-18T08:33:01.604Z", #采集时间UTC

  "@metadata": {....}, #Describe 节拍信息

  "message": "日志内容", ### 数据主题

  "source": "/var/log/run.log", #数据源

  “探矿者”:{“类型”:“日志”},

  "input": {"type": "log" }, #数据类型

  “打”: {.... },

  "host": {.... }, #系统信息ip系统版本名称等

  “偏移”:244 #offset

  }

  输出数据格式不仅包括数据主体的消息,还包括一些附加信息。对于不需要的信息,如何过滤转换?这涉及到 Filebeat 并不强大的数据过滤功能。

  过滤json中的输出字段

  Filebeat 为处理器提供了类似的管道功能来指定生成的字段,格式如下。

  event -> filter1 -> event1 -> filter2 ->event2 ...

  每个数据采集 是一个事件,每个过滤器都是一个处理器。让我们自己定义一个处理器,如下:

  processors:

- drop_fields:

when:

has_fields: ['source']

fields: ["input_type"]

  功能:过滤函数删除字段(drop_fields),条件是当源字段存在时,删除input_type字段。

  更多 Filebeat 处理器和过滤器:链接

  fields: #字段的类型可以是不同类型或者 list,也可以自定义

level: debug

review: 1

selfDefine: xxxxx

  官方文档建议可以使用fields来过滤json文件,但是我的尝试没有成功。

  Filebeat 提供有限的 redis 关键功能定制。如果输入数据为json格式,可以提取Json字段作为redis key。我们key的定义是数据存储时间。配置如下:

   when.contains:

message: "INFO"

key: "debug_list" # send to debug_list if `message` field contains DEBUG

  遗憾的是:时间不是北京时间,而是UTC时间。即不支持修改,时间输出错误。

  max_bytes: 10485760 #10M 缓存层,一次采集数据超出10M 数据会丢弃

harvester_buffer_size: 16384 #收割器大小

scan_frequency: 10s #文件扫描频率

harvester_limit: 0 #采集器数量, 0 表示无限制

close_inactive: 5m #5m 无活动,关闭采集器

  使用配置过程也说明:Filebeat易于配置和使用,过滤和转换功能是稍微单一的组件。与logstash相比,各有侧重,但对于大多数采集层来说已经足够了。

  如何开始

  ./filebeat -e #简单让人们启动命令

  后记和帮助

  经过Filebeat+redis的实践,我们发现配置非常简单。你甚至不需要关注输入部分的内容和输出端的redis,这才是中间件该有的样子。

  Filebeat 没有足够的输出终端来支持太少的数据库,社区也没有计划支持更多的数据库。

  最近在看golang,萌生了写输出到postgres插件的想法。

  如果你开发输出到postgres插件,你有什么想法,希望路过的大侠给点建议。感激的。.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线