91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Fluentd事件的生命周期有哪些

發布時間:2021-07-22 14:17:00 來源:億速云 閱讀:220 作者:Leah 欄目:大數據

本篇文章給大家分享的是有關Fluentd事件的生命周期有哪些,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

什么是事件?

事件(Event)是Fluentd內部處理流程使用的數據結構,日志記錄一旦進入Fluentd便被封裝成一個event。Event由三部分組成:tag、time、record。

tag標識事件的來源,或者說類型,用于內部消息路由,即后續交由哪個插件處理;

time是事件的發生時間;

record為日志的實際內容,這是一個JSON對象。

Input插件負責將源數據封裝為event,比如in_tail插件從文本中生成event。對于下邊這行文本:

        192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777

將會產生下邊的event對象:

tag: apache.access    #根據插件的tag參數來設置

time: 1362020400      # 28/Feb/2013:12:00:00 +0900

record: {"user":"-","method":"GET","code":200,"size":777,"host":"192.168.0.1","path":"/"}    #根據in_tail插件中的parse項來決定如何解析單行日志記錄,并生成相應的JSON對象

下邊我們通過一個具體的配置來講解事件的處理過程。

      本例使用一個很基礎的配置片段來描述各插件是如何關聯到一起的,它包括了如何定義輸入源(或者說監聽器),以及如何設置通用的匹配規則將event路由到輸出端。

我們使用in_http和out_stdout這兩個插件來描述event的循環過程。






<source>  @type http  port 8888  bind 0.0.0.0</source>


    上邊的配置使用in_http插件定義了一個HTTP服務器,監聽端口為8888。然后我們再定義一個匹配(Match)規則,event路由引擎會根據這個規則將http請求派發到輸出端。這里的輸出端是stdout,僅僅將http請求打印到屏幕上。




<match test.cycle>  @type stdout </match>

    Match的作用是設置一個匹配規則test.cycle,對于每個進入Fluentd的event,如果其tag值和test.cycle相等(或者說匹配,因為match可以使用通配符。這里的tag是由in_http插件生成的。),那么這個event就會進入此match定義的output插件,本例中的output插件就是out_stdout。

    至此,我們定義了三個基本項:Input、Match和Output,雖然僅僅使用兩個配置段。這就是一個可以使用的采集配置了,可以通過以下命令進行測試:


curl -i -X POST -d 'json={"action":"login","user":2}' http://localhost:8888/test.cycle

    你會看到如下輸出:





    HTTP/1.1 200 OKContent-Type: text/plainConnection: Keep-AliveContent-Length: 0
     

    在/var/log/td-agent.log中會有如下輸出:


    2020-03-05 14:06:24.144168913 +0800 test.cycle: {"action":"login","user":2}
     

     
    下邊我們開始了解一下事件是如何被處理和改變的。  
     
    當你準備好一個采集配置后,Fluentd就生成了用以處理輸入數據的各種規則。日志事件會歷經一系列的處理流程,從而決定了事件的循環周期。  
    • 過濾器(Filters)

    • 過濾器用于對事件進行篩選,決定是否接收或者丟棄事件。我們可以在上邊的示例中增加一個過濾器。


















      <source>  @type http  port 8888  bind 0.0.0.0</source>
      <filter test.cycle>  @type grep  <exclude>    key action    pattern ^logout$  </exclude></filter>
      <match test.cycle>  @type stdout</match>
       

      添加過濾器之后,事件在路由到match之前必須經過過濾器的處理。過濾器根據事件的類型和過濾規則來決定是否接受此事件。


      我們示例中使用的是grep過濾器,這個過濾器對test.cycle這類事件進行過濾,會排除http請求中action值為logout的事件。

      所以,如果嘗試發送下邊的請求,在td-agent.log中是看不到任何輸出的。


      curl -i -X POST -d 'json={"action":"logout","user":2}' http://localhost:8888/test.cycle
       


      從示例中可以看到,事件是根據配置順序自上而下來被處理的。我們可以根據需要配置任意多個過濾器,這樣一來,配置文件會變得很長很復雜。Fluentd提供了標簽來解決此問題。


    • 標簽(Labels)

      標簽的作用是用來定義一組配置項,這組配置項可以被其他配置項引用,從而實現事件路由跳轉。類似編程語言中的goto的功能。


      還是上邊的示例,我們定義一個標簽來看一下效果。

      <source>  @type http  bind 0.0.0.0  port 8888  @label @STAGING</source>
      <filter test.cycle>  @type grep  <exclude>    key action    pattern ^login$  </exclude></filter>
      <label @STAGING>  <filter test.cycle>    @type grep    <exclude>      key action      pattern ^logout$    </exclude>  </filter>
       <match test.cycle>    @type stdout  </match></label>

      這個STARTING標簽將之前的filter和match封裝到了一起,然后在source中進行了引用。如此一來,事件由input插件生成后將會跳過那個獨立的filter,直接進入STARTING定義的處理流程中。


    • 緩存(Buffers)

      我們看到了事件從input產生,經由filter篩選,最后到達output的過程。在上邊的示例中,我們使用的是stdout插件直接輸出到控制臺,并沒有經過緩存。

      實際應用中,一般會先把數據進行緩存,達到一定條件后再flush到目標存儲中。這樣可以提升系統可靠性,對于穩定系統吞吐量也很重要。可在后續文章中共同了解更多關于緩存插件的知識。

總的來說,事件會在各插件之間接續流轉,直到到達output,結束整個生命周期。如下圖:  

Fluentd事件的生命周期有哪些

以上就是Fluentd事件的生命周期有哪些,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄石市| 鹰潭市| 小金县| 阜新市| 象山县| 观塘区| 麻阳| 凌云县| 武义县| 河间市| 沈丘县| 嘉定区| 高台县| 普陀区| 思南县| 博客| 册亨县| 武胜县| 南川市| 静乐县| 新巴尔虎左旗| 松潘县| 盐津县| 武定县| 错那县| 青岛市| 荥阳市| 静安区| 阿拉善右旗| 金平| 景泰县| 玛多县| 华安县| 乌拉特前旗| 高尔夫| 合作市| 灵川县| 嵊州市| 汝城县| 嘉峪关市| 肃南|