ELK学习

Filebeat

概念

  • Filebeat是由GO语言实现的轻量级的框架,开销相对Logstash小
  • Filebeat由两个模块组成:prospectors, harvesters
  • Prospector
    1. 负责找到因此匹配的文件,而后给每一个文件启动一个Harvester的线程(如何保证大量日志文件时的多线程性能?)
    2. 当前支持两种类型的Prospector: log和stdin,每种都能配置多个Prospector,每一个Prospector都是一个独立的进程
    3. 每一个Prospector经过文件的“惟一标识符”管理本身找到的文件的状态,当Filebeat重启后,经过文件的数据恢复文件状态
  • Harvester
    1. 负责读取文件内容,一个文件起一个Harvester线程,只能读取本地文件
    2. 当Harvester在读取文件的时候文件移动、删除或重命名,文件的空间在Harvester关闭的时候才被释放
  • Filebeat经过注册文件里的“Event Delivery State”来保证每一个事件至少被读取一次
  • 若是Filebeat在交付事件时关闭,那些没有获得output响应的事件会在启动的时候再次交付
  • 能够经过shutdown_timeout配置Filebeat在shutdown以前等待的时间,从而尽量的避免重复交付
  • 若是文件内容在被读取以前文件或内容就被删除,内容丢失,好比日志循环写入太快,或者在output阻塞的时候日志被删除
  • Filebeat传输数据能够经过配置SSL加密

配置输入输出

  • ELK使用YAML数据格式进行配置,filebeat.yml
  • 输入配置java

    filebeat.prospectors:
      - input_type: log
        paths:
          - /var/log/*.log
  • 输出到logstash数据库

    output.logstash:
        hosts: ["localhost:5044"]

启动filebeat

  • nohup ./filebeat -c filebeat.yml >> startup.log 2>&1 &
  • filebeat会一直尝试经过TCP链接localhost:5044,直到成功

Logstash

概念

  • Logstash是Ruby写的,用JRuby跑在JVM上,插件编写方便快捷
  • Logstash因为跑在JVM上,消耗资源较大,因此能够用Elastic Beats进行日志收集工做,任何与Elastic Beats framework整合的Beats都能使用,好比Filebeat,使用go语言写的轻量级框架,资源消耗小
  • Logstash由input,filter和output组成一个pipeline流程,其实是一个多线程间的数据读写

Hello world

  • 下载zip包解压,5+版本须要java 8+
  • bin/logstash -e 'input { stdin { } } output { stdout {} }',输入:Hello world,输出:2013-11-21T01:22:14.405+0000 0.0.0.0 hello world

Products

  • ElasticSearch
    1. Elasticsearch是一款基于Apache Lucene构建的开源分布式搜索引擎,目标是让全文搜索变得简单,开发者能够经过它简单明了的RESTFul API轻松地实现搜索功能,而没必要去面对Lucene的复杂性。
    2. 若是你有数百万的文档须要经过关键词进行定位时,Elasticsearch确定是最佳选择。固然,若是你的文档是JSON的,你就能够把Elasticsearch看成一种轻量级的“NoSQL数据库”。可是Elasticsearch不是一个合适的数据库引擎,对复杂的查询和聚合并非很强
    3. [Elasticsearch、MongoDB和Hadoop比较] : http://www.jianshu.com/p/2c7b0c76fa04
  • Kibana
    • 用户界面,用于查询总结分析日志
  • LogStash/FileBeat/Topbeat
    • 日志收集

Filebeat

  • filebeat.yml
  • how to startup
  • where to find port
相关文章
相关标签/搜索