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
相關文章
相關標籤/搜索