初探ELK-filebeat使用小结

2016/9/18

一、安装
1、下载
有2种方式下载,推荐缓存rpm包到本地yum源
1)直接使用rpm
[[email protected] ~]# curl -L -O https://download.elastic.co/beats/filebeat/filebeat-1.3.1-x86_64.rpm

2)使用yum源
[[email protected] ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[[email protected] ~]# vim /etc/yum.repos.d/beats.repo
[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

[[email protected] ~]# yum install logstash
[[email protected] ~]# chkconfig filebeat on

2、配置
【默认的配置】
[[email protected] ~]# cat /etc/filebeat/filebeat.yml |grep -Ev ‘^(#|  #|    #|      #|        #|$)‘
filebeat:
  prospectors:
    -
      paths:
        - /var/log/*.log
      input_type: log
  registry_file: /var/lib/filebeat/registry
output:
  elasticsearch:
    hosts: ["localhost:9200"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB

二、使用
1、测试环境(已经部署了服务)
客户端:10.50.200.49 nginx(www.test.com, www.work.com)
服务端:10.50.200.220 logstash, elasticsearch, kibana

2、场景1:只有1个域名/模糊匹配N个域名
目的:将匹配的 access 日志收集起来集中展示。
【客户端】
输入:filebeat
输出:logstash

[[email protected] ~]# cat /etc/filebeat/filebeat.yml |grep -Ev ‘^(#|  #|    #|      #|        #|$)‘
filebeat:
  prospectors:
    -
      paths:
        - /var/log/nginx/access_*.log
      input_type: log
      document_type: NginxAccess
  registry_file: /var/lib/filebeat/registry
output:
  logstash:
    hosts: ["10.50.200.220:5044"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB

[[email protected] ~]# service filebeat restart

【服务端】
输入:logstash
输出:elasticsearch

配置自定义的 pattern
[[email protected] ~]# mkdir -p /etc/logstash/patterns.d
[[email protected] ~]# vim /etc/logstash/patterns.d/extra_patterns
NGINXACCESS %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" (?:%{QS:content_type}|-) (?:%{QS:request_body}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{NUMBER:response} %{BASE16FLOAT:request_time} (?:%{NUMBER:bytes}|-)

调整 logstash 的配置,启用 filebeat 插件。
[[email protected] ~]# cat /etc/logstash/conf.d/filebeat.conf
input {
    beats {
        port => "5044"
    }
}

filter {
    if[type] =~ "NginxAccess-" {
        grok {
            patterns_dir => ["/etc/logstash/patterns.d"]
            match => {
                "message" => "%{NGINXACCESS}"
            }
        }
        date {
            match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
        }
    }
}

output {
    if[type] =~ "NginxAccess" {
        elasticsearch {
            hosts => "127.0.0.1:9200"
            manage_template => false
            index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
            document_type => "%{[@metadata][type]}"
        }
    }
}

[[email protected] ~]# service logstash restart

回到 kibana 界面,使用 index 名称为:
filebeat-*
来获取数据。

结果:符合预期。

3、场景2:N个域名分开收集
目的:将 www.test.com 和 www.work.com 的 access 日志收集起来分开展示
【客户端】
输入:filebeat
输出:logstash

[[email protected] ~]# cat /etc/filebeat/filebeat.yml |grep -Ev ‘^(#|  #|    #|      #|        #|$)‘
filebeat:
  prospectors:
    -
      paths:
        - /var/log/nginx/access_www.test.com*.log
      input_type: log
      document_type: NginxAccess-www.test.com
    -
      paths:
        - /var/log/nginx/access_www.work.com*.log
      input_type: log
      document_type: NginxAccess-www.work.com
  registry_file: /var/lib/filebeat/registry
output:
  logstash:
    hosts: ["10.50.200.220:5044"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB

[[email protected] ~]# service filebeat restart

【服务端】
输入:logstash
输出:elasticsearch

配置自定义的 pattern
[[email protected] ~]# mkdir -p /etc/logstash/patterns.d
[[email protected] ~]# vim /etc/logstash/patterns.d/extra_patterns
NGINXACCESS %{IPORHOST:clientip} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" (?:%{QS:content_type}|-) (?:%{QS:request_body}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{NUMBER:response} %{BASE16FLOAT:request_time} (?:%{NUMBER:bytes}|-)

调整 logstash 的配置,启用 filebeat 插件。
[[email protected] ~]# cat /etc/logstash/conf.d/filebeat.conf
input {
    beats {
        port => "5044"
    }
}

filter {
    if[type] =~ "NginxAccess-" {
        grok {
            patterns_dir => ["/etc/logstash/patterns.d"]
            match => {
                "message" => "%{NGINXACCESS}"
            }
        }
        date {
            match => [ "timestamp", "dd/MMM/YYYY:HH:mm:ss Z" ]
        }
    }
}

output {
    if[type] == "NginxAccess-www.test.com" {
        elasticsearch {
            hosts => "127.0.0.1:9200"
            manage_template => false
            index => "%{[@metadata][beat]}-nginxaccess-www.test.com-%{+YYYY.MM.dd}"
            document_type => "%{[@metadata][type]}"
        }
    } else if[type] == "NginxAccess-www.work.com" {
        elasticsearch {
            hosts => "127.0.0.1:9200"
            manage_template => false
            index => "%{[@metadata][beat]}-nginxaccess-www.work.com-%{+YYYY.MM.dd}"
            document_type => "%{[@metadata][type]}"
        }
    }
}

[[email protected] ~]# service logstash restart

回到 kibana 界面,使用 index 名称为:
nginxaccess-www.test.com-*
nginxaccess-www.work.com-*
来获取数据。

结果:符合预期。

三、小结FAQ
1、数据流向
-----------------------------------------------------------------------------
|---------client-------|----------server------------------------|
log_files ->  filebeat ->  logstash ->  elasticsearch ->  kibana
-----------------------------------------------------------------------------

2、关于模版
1)关闭logstash自动管理模板功能
manage_template => false

2)手动导入模版
[[email protected] ~]# curl -XPUT ‘http://localhost:9200/_template/filebeat‘ [email protected]/etc/filebeat/filebeat.template.json

3)删除模版
[[email protected] ~]# curl -XDELETE ‘http://localhost:9200/filebeat-*‘

ZYXW、参考
1、官网
https://www.elastic.co/guide/en/beats/filebeat/current/config-filebeat-logstash.html
https://www.elastic.co/guide/en/beats/libbeat/1.3/logstash-installation.html#logstash-setup
https://www.elastic.co/guide/en/beats/libbeat/1.3/setup-repositories.html
https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-template.html#load-template-shell
时间: 2024-08-10 17:48:00

初探ELK-filebeat使用小结的相关文章

ELK+FileBeat+Log4Net

ELK+FileBeat+Log4Net搭建日志系统 output { elasticsearch { hosts => ["localhost:9200"] } stdout { codec => rubydebug } } ElasticSearch配置 默认不需要配置,监听9200端口.直接运行即可 Kibana配置 elasticsearch.url: "http://localhost:9200"默认连接es地址,如果本机测试无需修改.正式环境

ELK+Filebeat+Nginx集中式日志解决方案(二)——添加ElasticSearch集群

一.使用说明: Elasticsearch插件:  Elasticsearch常用的几个插件为: # head # 地址  https://github.com/mobz/elasticsearch-head mobz/elasticsearch-head # kopf # 地址  https://github.com/lmenezes/elasticsearch-kopf lmenezes/elasticsearch-kopf # bigdesk # 地址 https://github.com

ELK+Filebeat 集中式日志解决方案详解

原文:ELK+Filebeat 集中式日志解决方案详解 链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html?ca=drs- ELK Stack 简介 ELK 不是一款软件,而是 Elasticsearch.Logstash 和 Kibana 三种软件产品的首字母缩写.这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack.根据

ELK+filebeat日志分析系统部署文档

环境说明 架构说明及架构图 filebeat部署在客户端用于收集日志并把收集到的日志发送到logstash.logstash把收集到的日志处理之后交给elasticsearch. kibana从elasticsearch中提取数据并进行展示.之所以使用filebeat进行日志收集是因为filebeat不会像logstash使用大量的资源,影响业务服务器. 环境需求 需要java环境和redis yum install java yum install redis 使用版本 java  1.8.0

ELK+Filebeat 实践 Error : read tcp 192.168.0.2:48968->121.40.216.20:5044: i/o timeout

问题描述: 这是一个i/o time 的问题,一般考虑就是磁盘满的问题.以下是我遇到的具体问题: 1.Kibana页面刷新,没有新数据出来,再次刷新或者点击页面上其他地方,kibana就变成这样了: 这让我就猜测存储空间满了. 2.看filebeat的log ,发现全是  read tcp 192.168.0.2:48968->121.40.216.20:5044: i/o timeout 这样的log; 3.等到elk服务器上,想修改配置,发现修改不了,并报错 "Write Error!

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(转)

参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为ELK+Redis直接构建,在采集nginx日志时一切正常,当我采集我司业务报文日志类后,logstash会报大量的redis connect timeout.换成redis cluster后也是同样的情况后,就考虑对消息中间件进行替换重新选型,经过各种刷文档,决定选用kafka来替换redis.根据网上找的一篇参考文档中的架构图如下: 注:由于环境有限,在对该架构图中的ela

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://tchuairen.blog.51cto.com/3848118/1861167 什么要做日志分析平台? 随着业务量的增长,每天业务服务器将会产生上亿条的日志,单个日志文件达几个GB,这时我们发现用Linux自带工具,cat grep awk 分析越来越力不从心了,而且除了服务器日志,还有程序报错日志,分布在不同的服务器,查阅繁琐. 待解决的痛点: 1.大量不同种类的日志成为了运

CentOS 7下最新版(6.2.4)ELK+Filebeat+Log4j日志集成环境搭建完整指南

现在的公司由于绝大部分项目都采用分布式架构,很早就采用ELK了,只不过最近因为额外的工作需要,仔细的研究了分布式系统中,怎么样的日志规范和架构才是合理和能够有效提高问题排查效率的.经过仔细的分析和研究,确定下面的架构应该是比较合理的之一(Filebeat也支持直接写到ES).关于ELK的各种架构以及优缺点,可以参考https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html. 首先,不管是不是分布式架

Elk+filebeat收集docker集群swarm中的nginx和tomcat容器的日志信息

前言: 之前有说过elk收集nginx日志, 现在来说一下收集容器集群的日志收集Elk的安装这里不在说了,上来直接怼, 这里是elk的服务器:的服务状态:以及端口 Logstash是主要的配置内容这里: 如下 input { beats { port => 5044 } } filter { if "nginx-accesslog" in [tags] { grok { match => { "message" => "%{HTTPDAT

ELK教程3:logstash的部署、SpringBoot整合ELK+Filebeat

本篇文章主要讲解如下安装Logstash,logstash依赖于Java环境,首先安装Java,安装脚本如下: 1 yum install java logstash安装 Logstash的安装脚本如下: 1 # 下载logstash的压缩包 2 wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.zip 3 # 解压压缩包 4 upzip logstash-7.2.0.zip 5 # 将解压的包移到/usr/s