Filebeat 容器化

基于 Docker18.09.0


简单介绍

Filebeat 是一个轻量级的托运人,用于转发和集中日志数据。Filebeat作为代理安装在服务器上,监视您指定的日志文件或位置,收集日志事件,并将它们转发到ElasticsearchLogstash进行索引。

以下是 Filebeat 的工作原理:启动Filebeat时,它会启动一个或多个输入,这些输入将查找您指定的位置的日志数据。
对于Filebeat找到的每个日志,Filebeat启动一个收集器。每个收集器为新内容读取单个日志,并将新日志数据发送到 libbeatlibbeat 聚合事件并将聚合数据发送到您为 Filebeat 配置的输出。

工作流图

Filebeat Logstash 都是以事件为推动的和处理单位的,不是以文件中的行。

获取镜像

docker pull docker.elastic.co/beats/filebeat:6.5.2

配置输入和输出

容器内的配置文件位置是 /usr/share/filebeat/filebeat.yml

Filebeat 容器默认没有配置输入,默认的输出目标是 elasticsearch:9200

为了调试目的,下面的示例是配置输入为本地的某一个 Nginx 日志格式的日志文件,输出是 console, 就是输出到屏幕终端。

filebeat.inputs:
- type: log
  paths:
    - /*.log

output.console:
  pretty: true

假如你的文件的编码不是 utf-8, 这可能会导致乱码的现象,解决办法是使用配置项 encoding 指定具体的编码。比如 encoding: gbk
如果pretty设置为true,则写入stdout的事件将被很好地格式化。默认值为false。

运行容器

下面是利用上面的配置文件运行容器的示例

  1. 准备源日志文件

www.sharkyun.com.log

95.213.177.126 - - [18/Jul/2017:00:01:09 +0800] "POST http://check.proxyradar.com/azenv.php HTTP/1.1" 404 326 "https://proxyradar.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)" "-"
202.108.211.56 - - [18/Jul/2017:00:03:23 +0800] "GET http://1.1.1.1/ HTTP/1.1" 200 6228 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21" "-"
221.228.109.90 - - [18/Jul/2017:01:52:17 +0800] "GET http://www.sharkyun.com/ HTTP/1.1" 200 6228 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:17 +0800] "GET http://www.sharkyun.com/css/style_eeoweb.css HTTP/1.1" 200 11988 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/mobile/js/deviceType.js HTTP/1.1" 200 1055 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/js/jplayer/skin/black/css/style.css HTTP/1.1" 200 3339 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/js/index_eeoweb.js HTTP/1.1" 200 910 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/js/easySlider.js HTTP/1.1" 200 2431 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/js/require_eeoweb.js HTTP/1.1" 200 7161 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"
221.228.109.90 - - [18/Jul/2017:01:52:18 +0800] "GET http://www.sharkyun.com/js/jquery.js HTTP/1.1" 200 46467 "https://www.sharkyun.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" "119.61.20.114"

上面只是个示例日志部分内容

  1. 使用自定义的配置文件运行容器

我们上面的配置文件是输入到标准输出的,要想看到效果就不能让容器在后台运行了。

$ docker run -it --rm --name=filebeat65_stdout --mount type=bind,src=$(pwd)/www.sharkyun.com.log,dst=/shark.log,readonly --mount type=bind,src=$(pwd)/filebeat_stdout.yml,dst=/usr/share/filebeat/filebeat.yml,readonly  docker.elastic.co/beats/filebeat:6.5.2

部分输出结果

  "input": {
    "type": "log"
  },
  "host": {
    "name": "db719e24b943"
  },
  "beat": {
    "name": "db719e24b943",
    "hostname": "db719e24b943",
    "version": "6.5.2"
  },
  "source": "/shark.log",
  "offset": 2514473,
  "message": "106.75.19.227 - - [18/Jul/2017:03:28:16 +0800] \"POST http://www.sharkyun.com/partner/api/course.api.php HTTP/1.1\" 200 521 \"-\" \"-\" \"-\"",
  "prospector": {
    "type": "log"
  }
}

更多的配置请参考官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Logstash介绍 [转载] 好文分享, 感谢作者! 原文链接 Logstash是一个开源数据收集引擎,具有实时...
    奶爸撸代码阅读 691评论 0 4
  • 1. Logstash介绍 Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将...
    梅_梅阅读 1,159评论 0 1
  • 搜索引擎介绍Elasticsearch的使用Logstash的使用Filebeat的使用Kibana的使用Elas...
    哈喽别样阅读 957评论 1 4
  • 1 大概在我三四岁的时候,一到夏天,我总是一起床就穿上自己心爱的小凉鞋,跑到正围着围裙做饭的妈妈跟前,缠着她问:“...
    廿一行阅读 2,995评论 53 46
  • 季节交替 一路花香 立冬安康 插花养生 煮诗进补 祈求好运
    静轩茶香阅读 175评论 1 3