FileBeat 安装及实现日志采集

需求分析

通过 FleBeat 采集 Kafka 的日志到 Elasticsearch 中,实现在 Elasticsearch 中快速查询日志,定位问题

配置介绍

FileBeat 配置文件主要分为两个部分

① inputs

② output

input配置

在 FileBeats 中,可以读取一个或多个数据源(日志文件),用来做日志数据的输入

① 配置格式

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/*.log
    #- c:\programdata\elasticsearch\logs\*

② 配置介绍

output配置

配置一个输出源,最终的数据将会输出到指定的输出源,FileBeat 默认会将日志数据放入到名称为:filebeat-%filebeat版本号%-yyyy.MM.dd 的索引中

① 配置格式

output.elasticsearch:
    hosts: ["node1:9200", "node2:9200", "node3:9200"]

② 配置介绍

安装及配置

下载安装包

Download Elastic Stack FileBeat 7.6.1

上传并解压

tar -xvzf filebeat-7.6.1-linux-x86_64.tar.gz 

配置输入和输出信息

cd /opt/server/es/filebeat-7.6.1-linux-x86_64
vim filebeat_kafka_log.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/server/es/data/kafka/server.log.*

output.elasticsearch:
    hosts: ["node1:9200", "node2:9200", "node3:9200"]

启动及测试

启动

./filebeat -c filebeat_kafka_log.yml -e

测试

# 在 elasticsearch 中查看索引信息
GET _cat/indices

在这里插入图片描述

日志合并的问题

遇到的问题

FileBeat 默认将每一行日志作为一条文档数据,但是在日志中包含一些异常信息,对于异常信息,我们需要将完整的一个报错信息算作一个 Elasticsearch 日志索引的文档

因此我们需要解决的问题是:将多行数据算作一条文档数据
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
FileBeat 多行配置选项

在 FileBeat 的配置中,专门有一个解决一条日志跨多行问题的配置。主要为以下三个配置:

# multiline.pattern 表示能够匹配一条日志的模式,默认配置的是以 [ 开头的才认为是一条新的日志
# multiline.negate  配置该模式是否生效,默认为 false
# multiline.match   表示是否将未匹配到的行追加到上一日志,还是追加到下一个日志

multiline.pattern: ^\[
multiline.negate: false
multiline.match: after

问题解决

① 增加数据跨行配置

每条日志都是有统一格式的开头的,就拿Kafka的日志消息来说,[2020-04-30 14:00:05,725]这是一个统一的格式,如果不是以这样的形式开头,说明这一行肯定是属于某一条日志,而不是独立的一条日志。所以,我们可以通过日志的开头来判断某一行是否为新的一条日志

cd /opt/server/es/filebeat-7.6.1-linux-x86_64
vim filebeat_kafka_log.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /opt/server/es/data/kafka/server.log.*
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
  
output.elasticsearch:
    hosts: ["node1:9200", "node2:9200", "node3:9200"]

② 删除之前采集的文档数据

第一种删除方法:配置删除

# 修改注册表,将 server.log.error 对应的offset设置为0
cd /opt/server/es/filebeat-7.6.1-linux-x86_64/data/registry/filebeat
vim data.json
{
    "source": "/opt/server/kafka-log/server.log.error",
    "offset": 0,
    "timestamp": "2021-08-12T12:05:07.445025565+08:00",
    "ttl": -1,
    "type": "log",
    "meta": null,
    "FileStateOS": {
        "inode": 23367,
        "device": 64769
    }
}
// 删除指定文件的文档
POST /filebeat-7.6.1-2021.08.12-000001/_delete_by_query
{
    "query": {
        "match": {
            "log.file.path": "/opt/server/kafka-log/server.log.error"
        }
    }
}

第二种删除:直接删除

# 在 FileBeat 中删除 FileBeat 的元数据
cd /opt/server/es/filebeat-7.6.1-linux-x86_64/data/registry
rm -rf filebeat/*

# 删除之前的数据ES中的数据
delete /filebeat-7.6.1-2021.08.12-000001

③ 重启 FileBeat

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值