一键启动 filebeat 5.1.1 集成 logstash

关键词: filebeat logstash docker docker-compose

PS : 本篇文章的改进版本,请点击filebeat 5.3.1 结合 rancher 和 data-volume 实现横向扩展

Background

上一篇文章《结合docker快速搭建启动ELK日志收集平台》讲到搭建ELK service,这一章主要为了通过filebeat发送日志文件到前面我们所搭建的ELK平台里边

Filebeat

beats中,filebeat作为轻量级的logs shipper,帮助用户将无数client端上的log文件以一种轻量级的方式转发并集中日志和文件到ELK stack中,主要通过elasticsearch或者logstash指定的port进行日志转发,本文主要讲filebeat和logstash的integration

Introduction

filebeat:轻量级logs shipper,在beats中发送应用日志文件的表现尤为突出,拥有backpressure-sensitive协议会让filebeat知道当logstash忙于处理数据的时候,自动减缓读取日志文件内容的速度,给logstash足够的resource,等到logstash恢复正常之后再回到正常的读取与发送速度。

Prerequisite

OS : Centos 7.x
# 如果选择快速启动的方式必须有一下两个要求
Docker engine > 1.12.x
Docker-compose > 1.11.x

安装并启动filebeat service

通过直接安装在宿主机上的方式

  1. 使用RPM安装官方rpm package

    rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
    curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
    sha1sum filebeat-5.1.1-x86_64.rpm
    rpm -vi filebeat-5.1.1-x86_64.rpm 
    
  2. 配置filebeatlogstash host,相关配置文件: /etc/filbeat/filebeat.yml
    filebeat配置默认连接elasticsearch,这里我们主要使用logstash,把无关的配置注释掉:

    #-------------------------- Elasticsearch output ------------------------------
    # output.elasticsearch:
    # hosts: ["localhost:9200"]
    

在logstash下面配置logstash host配置并去掉注释,这里我们以filebeat和logstash在同一台机器为例,相应的logstash host为localhost:

 #----------------------------- Logstash output --------------------------------
 #output.logstash:
 hosts: ["localhost:5044"]
 index: "logstash-%{+yyyy.MM.dd}"

配置日志目录,注意缩进,这里我们以/var/log/*.log为例,配置也支持*号通配:

- input_type: log

# Paths that should be crawled and fetched. Glob based paths.
paths:
 - /var/log/*.log
  1. 启动filebeat service
    systemctl start filebeat
    systemctl status filebeat
    
    LC_ALL=C systemctl status filebeat
    \* filebeat.service - filebeat
    Loaded: loaded (/usr/lib/systemd/system/filebeat.service; disabled; vendor preset: disabled)
    Active: active (running) since Sat 2017-03-25 03:59:03 EDT; 43s ago
      Docs: https://www.elastic.co/guide/en/beats/filebeat/current/index.html
    Main PID: 16277 (filebeat)
    Memory: 2.5M
    CGroup: /system.slice/filebeat.service
            `-16277 /usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/share/filebea...
    
    Mar 25 03:59:03 elk systemd[1]: Started filebeat.
    Mar 25 03:59:03 elk systemd[1]: Starting filebeat...
    

启动成功。

通过docker-compose

  1. Clone GIT folder 到本地,建议放在user HOME下,eg:/home/user1/

    cd ~ 
    git clone https://github.com/easonlau02/filebeat.git
    
  2. 修改配置文件:~/filebeat/.env

    # ~/filebeat/.env
    
    # environment
    environment=PROD
    
    # Logstash host
    LOGSTASH_HOST=localhost
    
    # for docker compose volumes: replacement, use absolute path, eg: /var/log/nginx
    # if multiple path, use space to separate them, eg:  VOLUME_FOLDER_LIST="path1 path2 ... ..."
    VOLUME_FOLDER_LIST="/var/log/nginx/"
    
    # for filebeat.hml paths: replacement, support regex, eg: /var/log/nginx/*.log
    # if mutiple file pattern, use space to separate them, eg: PROSPECT_FILE_PATTERN_LIST="path1/*.log path2/*.log.* path3/access.log path4/access.*"
    PROSPECT_FILE_PATTERN_LIST="/var/log/nginx/*.log"
    

上述基本配置属性是启动filebeat的基本属性:

  • environment: 和ELK一样用来区分日志环境
  • LOGSTASH_HOST:: 指定logstash host,这里以localhost为(与logstash在同一台机器,默认经过5044 port),如果不在同一台机器,需指定logstash的hostname,并确port:5044可以访问
  • VOLUME_FOLDER_LIST:配置需要发送的日志文件所在的文件夹绝对路径,eg:如果需要发送/var/log/nginx下的所有.log结尾的日志文件,需修改为VOLUME_FOLDER_LIST="/var/log/nginx/",如果有多个文件夹,则使用空格分开,例如VOLUME_FOLDER_LIST="path1 path2 ... ..."
  • PROSPECT_FILE_PATTERN_LIST: filebeat真正读取的文件路径,具体到文件,可以使用*号通配,eg: /var/log/nginx/*.log,记住要具体到文件,而不是文件夹,如果有多中不同文件夹的日志需要发送,同样使用空格分开,eg: PROSPECT_FILE_PATTERN_LIST="path1/*.log path2/*.log.* path3/access.log path4/access.*"
  1. 使用gen-config.sh生成filebeat.ymldocker-compose.yml文件
    $ cd ~/filebeat/
    $ chmod +x gen-config.sh
    $ ./gen-config.sh
    VOLUME_FOLDER_LIST=/var/log/nginx/
    PROSPECT_FILE_PATTERN_LIST=/var/log/nginx/*.log
    -rw-rw-r--. 1 user1 user1 504 Mar 25 04:24 docker-compose.yml
    -rw-rw-r--. 1 user1 user1 788 Mar 25 04:24 filebeat.yml
    

查看~/filebeat/filebeat.yml

filebeat.prospectors:

- input_type: log
paths:
 - /var/log/nginx/*.log
.....
output.logstash:
# The Logstash hosts
hosts: ["${logstash}:5044"]
index: "logstash-%{+yyyy.MM.dd}"
......

~/filebeat/docker-compose.yml

version: '2'
services:
  filebeat:
    image: eason02/filebeat:5.1.1
    container_name: filebeat-image
    restart: always
    environment:
      - env=${environment}
      - logstash=${LOGSTASH_HOST}
    network_mode: host
    ....
    volumes:
      - ./5.1.1/logs:/etc/filebeat/logs
      - ./5.1.1/data:/etc/filebeat/data
      - ./filebeat.yml:/etc/filebeat/filebeat.yml
      - /var/log/nginx/:/var/log/nginx/
    ....
  1. 使用docker-compose启动filebeat service
$ cd ~/filebeat/
$ docker-compose up -d
# ouput 
Creating filebeat-image
$ docker container ls -f name=filebeat-image
# output 
CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS              PORTS               NAMES
bb77764beb8a        eason02/filebeat:5.1.1.1                     "/docker-entrypoin..."   2 minutes ago       Up 2 minutes                            filebeat-image

通过Kibana查看日志localhost:5601

如果ELK没有收集过日志,当访问kibana的时候要求先建立index:

回到discovery查看我们通过filebeat发送的日志:

至此,filebeat service安装并启动成功,你可以根据你的需要选择不同的安装方式,第二种是经过抽离以及优化的,有问题大家下面评论。未完待续....

** 文章所有步骤都是经过实践检验并可行,若有问题,下方请评论

——END——
作者 : Eason,专注各种技术、平台、集成,不满现状,喜欢改改改
文章、技术合作
Email : eason.lau02@hotmail.com</small>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容