• Home
  • 悦读
    • WYN photo

      WYN

      ridikuius

    • Learn More
    • Email
    • Github
  • 技术小札
    • 所有文章
    • 所有标签
  • 阅心笔记

FileBeat+Elasticsearch+kibana日志集成环境搭建

21 Jun 2016

Reading time ~1 minute

FileBeat + Elasticsearch + kibana

日志收集+搜索分析+可视化

FileBeat

简介

Filebeat是一个开源的文件收集器,主要用于获取日志文件,并把它们发送到logstash或elasticsearch。

安装

下载

https://www.elastic.co/downloads/beats/filebeat

安装(windows)

  • PS > cd 'D:\Filebeat'
  • PS C:\Program Files\Filebeat> PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-filebeat.ps1

配置

Filebeat的配置文件是./filebeat/filebeat.yml,遵循YAML语法。具体可以配置如下几个项目:

  • Filebeat
  • Output
  • Shipper
  • Logging(可选)
  • Run Options(可选)

Filebeat的部分主要定义prospector的列表,定义监控哪里的日志文件,关于如何定义的详细信息可以参考filebeat.yml中的注释,下面主要介绍一些需要注意的地方。

  • paths:指定要监控的日志,没有对配置目录做递归处理:

d:\itone\program\logs*。

  • encoding:指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的。 encoding: GBK
  • input_type:指定文件的输入类型log(默认)或者stdin。

  • exclude_lines:在输入中排除符合正则表达式列表的那些行。

  • include_lines:包含输入中符合正则表达式列表的那些行(默认包含所有行),include_lines执行完毕之后会执行exclude_lines。

  • exclude_files:忽略掉符合正则表达式列表的文件(默认为每一个符合paths定义的文件都创建一个harvester)。

  • fields:向输出的每一条日志添加额外的信息,比如“level:debug”,方便后续对日志进行分组统计。默认情况下,会在输出信息的fields子目录下以指定的新增fields建立子目录,例如fields.level。

fields: level: debug

  • ignore_older:可以指定Filebeat忽略指定时间段以外修改的日志内容,比如2h(两个小时)或者5m(5分钟)。

  • close_older:如果一个文件在某个时间段内没有发生过更新,则关闭监控的文件handle。默认1h,change只会在下一次scan才会被发现

  • force_close_files:Filebeat会在没有到达close_older之前一直保持文件的handle,如果在这个时间窗内删除文件会有问题,所以可以把force_close_files设置为true,只要filebeat检测到文件名字发生变化,就会关掉这个handle。

  • scan_frequency:Filebeat以多快的频率去prospector指定的目录下面检测文件更新(比如是否有新增文件),如果设置为0s,则Filebeat会尽可能快地感知更新(占用的CPU会变高)。默认是10s。
  • multiline 多行配置 pattern:正则表达式 negate:true 或 false;默认是false,匹配pattern的行合并到上一行;true,不匹配pattern的行合并到上一行 match:after 或 before,合并到上一行的末尾或开头
 multiline.pattern: ^\[
 multiline.negate: true
 multiline.match: after

Elasticsearch

简介

http://es.xiaoleilu.com/index.html Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。 Elasticsearch不仅仅是Lucene和全文搜索,我们还能这样去描述它:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

安装

下载

https://www.elastic.co/downloads/elasticsearch

配置

绑定的IP地址

设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0 network.host: ["0.0.0.0"]

交互的IP地址

设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。 network.publish_host: ["192.168.0.1"]

启动(windows)

  • cd d:\elasticsearch
  • .\bin\elasticsearch

访问localhost:9200验证启动成功

name———Elasticsearch实例的名字,默认情况下它将从名字列表中随机选择一个,其设置是在config/elasticsearch.yml文件中;

version———版本号,以json格式表示了一组信息,其中:

number字段代表了当前运行Elasticserch的版本号;

build_snashot字段代表了当前版本是否是从源代码构建而来;

lucene_version表示Elasticsearch所基于的Lucene的版本;

tagline———包含了Elasticsearch的第一个tagline:"You Know, for Search"。

将elasticsearch安装为服务

d:\elasticsearch\bin>elasticsearch-service install

kibana

简介

Kibana是一个基于浏览器页面的Elasticsearch前端展示工具。Kibana全部使用HTML语言和Javascript编写的。

安装

下载

https://www.elastic.co/downloads/kibana

解压并启动(windows)

  • CD d:\kibana
  • .\bin\kibana

访问localhost:5601验证启动成功

检索

全文搜索

在搜索栏输入debug,会返回所有字段值中包含debug的文档

字段

也可以按页面左侧显示的字段搜索 限定字段全文搜索:field:value 精确搜索:关键字加上双引号 filed:"value" offset:624179 搜索http状态码为404的文档

字段本身是否存在 _exists_:message:返回结果中需要有http字段 _missing_:message:不能含有http字段

通配符

? 匹配单个字符 * 匹配0到多个字符

runni?g, Wrapper*AppMain

? * 不能用作第一个字符,例如:?text *text

正则

es支持部分正则功能 mesg:/mes{2}ages?/

模糊搜索

~:在一个单词后面加上~启用模糊搜索

first~ 也能匹配到 frist

还可以指定需要多少相似度 cromm~0.3 会匹配到 from 和 chrome 数值范围0.0 ~ 1.0,默认0.5,越大越接近搜索的原始值

近似搜索

在短语后面加上~ "select where"~3 表示 select 和 where 中间隔着3个单词以内

范围搜索

数值和时间类型的字段可以对某一范围进行查询 offset:[628053 TO 628176]` [ ] 表示端点数值包含在范围内,{ } 表示端点数值不包含在范围内

逻辑操作

AND OR

+:搜索结果中必须包含此项 -:不能含有此项 +running -TopoMetricValueProvider:结果中必须存在apache,不能有jakarta,test可有可无

分组

(com.its.itone.core.jsonrpc.tools.GroovyRpcServlet RO running) AND debug

字段分组

message:(com.its.itone.core.jsonrpc.tools.GroovyRpcServlet RO running) AND debug

转义特殊字符

+ - && || ! () {} [] ^" ~ * ? : \ 以上字符当作值搜索的时候需要用\转义



ELKFileBeat日志 Like Tweet +1