请求收集 | Filebeat日志采集

2022-06-27 15:08:51 浏览数 (1)

请求录制文章中, 我们介绍了如何利用filter打印请求信息, 今天再一起看下, 如何收集请求日志. 日志数据的监控和采集一般会选用Logstash和Filebeat, 其中Filebeat占用的系统资源更少而成为首选.

一. 请求收集

通过Filebeat收集指定日志信息, 并通过kafka发送到流量银行服务中, 进行日志分析和存储; 流量银行服务可以根据平台规划存储到mongoDB,ES等存储引擎中.

二. Filebeat

2.1

安装

Filebeat的安装非常简单, 直接从官网下载安装包即可.在mac环境下, 直接解压就可以使用.

官网地址:

代码语言:javascript复制
https://www.elastic.co/cn/downloads/beats/filebeat

文件内容:

2.2

配置文件filebeat.yml

Filebeat是需要根据配置文件(filebeat.yml)收集文件信息的. 配置文件主要分为输入项和输出项两部分. 在我们的配置中, 输入项是指定目录下的日志文件, 输出项为Kafka.

代码语言:javascript复制
filebeat.inputs:
- type: log
  paths:
    - "/Users/xxx/logs/*.log"
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  multiline.negate: true
  multiline.match: after

output.kafka:
  hosts: ["kafkaserver:9092"]
  topics:
    - topic: 'filebeat-log'
      when:
        contains:
          message: "RequestRecordFilter"
  partition.round_robin:
    reachable_only: false
  required_acks: 1
  compression: gzip
  max_message_bytes: 1000000

配置说明: (1)输入项中, 配置日志收集目录, 可配置多项; (2)输入项中, 日志内容需要注意多行合并的情况; (3)输出项中, 配置的kafka地址可以根据集群或单点信息配置多个, 以[,]分隔. (4)输出项中, 配置的topic信息, 也是可以根据上下文配置项信息动态配置. (5)输出项中, 如果在你的日志文件中, 并不只含有你想收集的数据, 或者想根据日志内容分发到不同的kafka topic中, 可以使用[when]条件自定义配置;

点击阅读原文查看更多配置项;

三. Kafka

Kafka的单机安装部署之前我们介绍过,可以参考Kafka单机部署. 在使用docker-compose方式时, 如果需要清理旧的容器信息, 可以执行命令:

代码语言:javascript复制
docker-compose rm -v

四. 测试

启动filebeat, 监听日志文件.

代码语言:javascript复制
filebeat -e -c filebeat.yml

进入到kafka容器中, 监听topic(filebeat-log)消费内容.

代码语言:javascript复制
# 查看topic列表:
kafka-topics.sh --list --zookeeper zookeeper:2181
# 监听命令:
kafka-console-consumer.sh --bootstrap-server kafka:9092 --topic filebeat-log --from-beginning

内容:

代码语言:javascript复制
"@timestamp":"2021-02-20T20:51:48.038Z","@metadata":{"beat":"filebeat","type":"_doc","version":"7.11.1"},"agent":{"hostname":"MacBook-Pro.local","ephemeral_id":"9ab03559-417a-45b3-a1be-35532a01e2b9","id":"2f530193-f0cf-45d5-b1a3-f1c556803ac3","name":"MacBook-Pro.local","type":"filebeat","version":"7.11.1"},"log":{"flags":["multiline"],"offset":63440,"file":{"path":"/Users/xxx/logs/spring.log"}},"message":"2021-02-20 20:51:45.027 ERROR [RequestRecord,12ffadfd900cd438,12ffadfd900cd438,true] 65453 --- [http-nio-8080-exec-8] com.in.RequestRecordFilter               : uri=[/post/test],method=[POST],Header=[host=localhost:8080;connection=keep-alive;content-length=21;sec-ch-ua="Chromium";v="88", "Google Chrome";v="88", ";Not A Brand";v="99";accept=application/json;charset=UTF-8;sec-ch-ua-mobile=?0;user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36;content-type=application/json;origin=http://localhost:8080;sec-fetch-site=same-origin;sec-fetch-mode=cors;sec-fetch-dest=empty;referer=http://localhost:8080/swagger-ui.html;accept-encoding=gzip, deflate, br;accept-language=zh-CN,zh;q=0.9;cookie=Idea-2af32566=512880ee-48ca-47a8-a36e-8a43047d2321;],Parameter=[],Body=[{n  "str": "string"n}],response=[string-1613793105023]","input":{"type":"log"},"ecs":{"version":"1.6.0"},"host":{"name":"MacBook-Pro.local"}}

小结

本文主要介绍,使用Filebeat收集请求数据的简单实现, 有了这些数据, 就可以为后面的流量回放平台做准备了.

0 人点赞