Logstash收集多數據源數據神器
- 2019 年 12 月 26 日
- 筆記
問題導讀 1.Logstash是什麼? 2.Logstash工作包含哪些流程? 3.logstash 是以什麼方式流轉數據的? 4.logstash架構包含哪些內容? 前言 Logstash很多老鐵,vip會員等在用,這裡對於已經會用的老鐵可以複習下,不會用老鐵,可以通過這篇文章來學習。本文從它的價值,也就是為何會產生Logstash,它能幹什麼,到它是如何設計的,也就是它的架構原理方面學習,到最後該如何實現Logstash的細節,也就是我們該如何讓Logstash來工作,通過各種配置,來定製和控制我們的Logstash。 第一部分為何產生 1.Logstash是什麼? Logstash是一個開源數據收集引擎,具有實時管道功能。Logstash可以動態地將來自不同數據源的數據統一起來,並將數據標準化到你所選擇的目的地進行存儲。

我們可以看到可以搜集多種類型的數據,而且能夠把他們標準化,然後發往目的地。對於這些數據,可以用來分析、歸檔、監控、報警燈。 第二部分設計實現 2.工作流程 分為三個階段

處理流

pipeline本質 pipeline 是input-filter-output的三個階段的處理流程,包含隊列管理、插件生命周期管理。 logstash 數據以event的方式流轉 原始數據進入logstash後在內部流轉並不是以原始數據的形式流轉,在input處被轉換為event,在output event處被轉換為目標格式的數據。可在配置文件中對其進行增刪改查操作。

logstash數據流轉示例 (1)通過配置文件控制流轉

其數據轉換過程如下:


命令運行
[Bash shell] 純文本查看 複製代碼
?
echo -e "foonbar" | ./bin/logstash -f codec.conf
3.Logstash工作流總結 Logstash是一個開源的服務器端數據處理管道,可以同時從多個數據源獲取數據,並對其進行轉換,然後將其發送到你最喜歡的「存儲」。(當然,我們最喜歡的是Elasticsearch) 輸入:多數據源 數據往往以各種各樣的形式,或分散或集中地存在於很多系統中。Logstash 支持各種輸入選擇 ,可以在同一時間從眾多常用來源捕捉事件。能夠以連續的流式傳輸方式,輕鬆地從日誌、指標、Web 應用、數據存儲以及各種 AWS 服務採集數據。 過濾器:在線實時轉換處理 數據從源傳輸到存儲庫的過程中,Logstash 過濾器能夠解析各個事件,識別已命名的字段以構建結構,並將它們轉換成通用格式,以便更輕鬆、更快速地分析和實現商業價值。 Logstash 能夠動態地轉換和解析數據,不受格式或複雜度的影響:
- 利用 Grok 從非結構化數據中派生出結構
- 從 IP 地址破譯出地理坐標
- 將 PII 數據匿名化,完全排除敏感字段
- 整體處理不受數據源、格式或架構的影響

輸出:選擇你的存儲,導出你的數據 儘管 Elasticsearch 是我們的首選輸出方向,能夠為我們的搜索和分析帶來無限可能,但它並非唯一選擇。 Logstash 提供眾多輸出選擇,可以將數據發送到指定的地方,並且能夠靈活地解鎖眾多下游用例。

4.logstash架構 logstash6.x架構

箭頭代表數據流向。可以有多個input。中間的queue負責將數據分發到不同的pipline中,每個pipline由batcher,filter和output構成。batcher的作用是批量從queue中取數據(可配置)。 logstash數據流歷程 首先有一個輸入數據,例如是一個web.log文件,其中每一行都是一條數據。file imput會從文件中取出數據,然後通過json codec將數據轉換成logstash event。 這條event會通過queue流入某一條pipline處理線程中,首先會存放在batcher中。當batcher達到處理數據的條件(如一定時間或event一定規模)後,batcher會把數據發送到filter中,filter對event數據進行處理後轉到output,output就把數據輸出到指定的輸出位置。 輸出後還會返回ACK給queue,包含已經處理的event,queue會將已處理的event進行標記。 隊列詳解 1.queue分類 In Memory 在內存中,固定大小,無法處理進程crash、機器宕機等情況,會導致數據丟失。 Persistent Queue In Disk 可處理進程crash情況,保證數據不丟失。保證數據至少消費一次;充當緩衝區,可代替kafka等消息隊列作用。 Persistent Queue(PQ)處理流程 1、一條數據經由input進入PQ,PQ將數據備份在disk,然後PQ響應input表示已收到數據; 2、數據從PQ到達filter/output,其處理到事件後返回ACK到PQ; 3、PQ收到ACK後刪除磁盤的備份數據; 第三部分具體實現 logstash設置相關配置文件 logstash設置相關配置文件主要位於conf配置文件下,在logstash啟動時使用。 logstash.yml logstash相關配置,如node.name,path.data等。其中這些配置的參數可以被命令行參數覆蓋。 jvm.options jvm相關參數,比如heap、size等。 pipeline配置文件 定義數據處理流程的文件,一般是用戶自定義,以.conf結尾。 logstash.yml常見配置項


logstash命令行配置

pipeline配置 pipeline用於配置input、filter、output插件,框架如下:

配置語法 數值類型


注釋

引用logstash event的屬性(字段) 在配置中可以引用logstash event的屬性(字段),方式如下: 1、直接引用字段 2、在字符串中以sprintf方式引用


條件判斷 支持條件判斷語法,從而擴展了配置的多樣性

其中表達式操作符如下:

配置示例:

相關鏈接 https://blog.csdn.net/sinat_35930259/article/details/81044846 https://www.cnblogs.com/cjsblog/p/9459781.html