ELK技术栈—Logstash—基础介绍
原文作者:
原文地址:
?
1、概述
官網介紹:Logstash is an open source data collection engine with real-time pipelining capabilities。簡單來說logstash就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端;與此同時這根管道還可以讓你根據自己的需求在中間加上濾網,Logstash提供里很多功能強大的濾網以滿足你的各種應用場景。Logstash常用于日志關系系統中做日志采集設備,最常用于ELK(elasticsearch + logstash + kibane)中作為日志收集器使用;
?
從 Logstash 的名字就能看出,它主要負責跟日志相關的各類操作,在此之前,我們先來看看日志管理的三個境界吧
- 境界一 『昨夜西風凋碧樹。獨上高樓,望盡天涯路』,在各臺服務器上用傳統的 linux 工具(如 cat, tail, sed, awk, grep 等)對日志進行簡單的分析和處理,基本上可以認為是命令級別的操作,成本很低,速度很快,但難以復用,也只能完成基本的操作。
- 境界二 『衣帶漸寬終不悔,為伊消得人憔悴』,服務器多了之后,分散管理的成本變得越來越多,所以會利用 rsyslog 這樣的工具,把各臺機器上的日志匯總到某一臺指定的服務器上,進行集中化管理。這樣帶來的問題是日志量劇增,小作坊式的管理基本難以滿足需求。
- 境界三 『眾里尋他千百度,驀然回首,那人卻在燈火闌珊處』,隨著日志量的增大,我們從日志中獲取去所需信息,并找到各類關聯事件的難度會逐漸加大,這個時候,就是 Logstash 登場的時候了
Logstash 的主要優勢:一個是在支持各類插件的前提下提供統一的管道進行日志處理(就是 input-filter-output 這一套),二個是靈活且性能不錯。
- 在幾分鐘內建立數據流管道
- 具有水平可擴展及韌性且具有自適應緩沖
- 不可知的數據源
- 具有200多個集成和處理器的插件生態系統
- 使用 Elastic Stack 監視和管理部署
2、數據類別:
它可以攝入日志、文件、指標或者網路真實數據。經過 Logstash 的處理,變為可以使用的 Web Apps 可以消耗的數據,也可以存儲于數據中心,或變為其它的流式數據。
最流行的數據源如下:
- Logstash 可以很方便地和Beats一起合作,這也是被推薦的方法
- Logstash 也可以和那些著名的云廠商的服務一起合作處理它們的數據
- 它也可以和最為同樣的信息消息隊列,比如 redis 或 kafka 一起協作
- Logstash 也可以使用 JDBC 來訪問 RDMS 數據
- 它也可以和 IoT 設備一起處理它們的數據
- Logstash 不僅僅可以把數據傳送到 Elasticsearch,而且它還可以把數據發送至很多其它的目的地,并作為它們的輸入源做進一步的
3、架構
Logstash 是由 JRuby 編寫的,使用基于消息的簡單架構,在 JVM 上運行。理念非常簡單,如果說 MapReduce 框架分為 Mapper 和 Reducer 兩大模塊,處理流水線有三個主要角色完成:inputs –> filters –> outputs:
- Collect: 數據輸入。對應 input ,必須有,負責產生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
- Enrich: 數據處理。對應 filter ,可選,負責數據處理與轉換(filters modify them),常用:grok、mutate、drop、clone、geoip
- Transport: 數據輸出。對應 output,必須,負責數據輸出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd
雖然模塊僅僅比 MapReduce 框架多了一個,但是無三不成幾,通過不同的拓撲結構,可以完成各類數據處理應用。不過這里我們主要還是以日志匯總處理系統的思路來進行介紹,一個典型的架構為:
4、安裝
1)下載上傳
首先下載logstash,上傳到服務器,下載地址:https://www.elastic.co/guide/en/logstash/current/index.htmllogstash是用JRuby語言開發的,所以要安裝JDK
2)解壓
tar -zxvf logstash-2.3.1.tar.gz -C /bigdata/3)編輯配置文件
vi logstash.conf
input {file {type => "gamelog"path => "/log/*/*.log"discover_interval => 10start_position => "beginning" } }output {elasticsearch {index => "gamelog-%{+YYYY.MM.dd}"hosts => ["172.16.0.14:9200", "172.16.0.15:9200", "172.16.0.16:9200"]} }4)啟動logstack
bin/logstash -f logstash.conf?
總結
以上是生活随笔為你收集整理的ELK技术栈—Logstash—基础介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回文字符串—回文子串—Manacher算
- 下一篇: API网关—系统的门面要如何做呢?