[TOC]
### Logstash是如何工作的
Logstash事件處理管道有三個階段:input →filters→outputs。Input獲取數據,filter處理這些數據,然后outputs將處理過的數據送到你需要的任何地方。Inputs和outputs支持編碼器,以便你可以在數據輸入或輸出的時候進行編碼或解碼而不必使用一個單獨的過濾器。
#### Inputs
你得使用Inputs將數據交給Logstash。下面是幾個最常用的Inputs:
+ **file**:從文件系統上的一個文件進行讀取,其工作原理有些類似UNIX的`tail -0F`命令
+ **syslog**:監聽來自514端口的syslog消息,并將其轉換為RFC3164格式
+ **redis**:從redis服務器讀取。可以是redis頻道或者redis列表。在一個集中部署的Logstash中,redis也用作中間件用來將傳入的消息排隊。(這段的意思應該是,redis可以用作消息隊列將消息傳遞給Logstash或者作為數據源直接將數據傳遞給Logstash。原文:reads from a redis server, using both redis channels and redis lists. Redis is often used as a "broker" in a centralized Logstash installation, which queues Logstash events from remote Logstash "shippers".)
+ **beats**:處理由[Beats](https://www.elastic.co/downloads/beats)發送過來的事件。
關于更多可用的inputs的信息,查看:[Input Plugins](https://www.elastic.co/guide/en/logstash/current/input-plugins.html)
#### Filters
Filters在Logstash管道中是一個中間件的角色。你可以對符合某些條件的事件結合filters和附加條件對其進行處理,下面是一些比較實用的filters(原文:Filters are intermediary processing devices in the Logstash pipeline. You can combine filters with conditionals to perform an action on an event if it meets certain criteria. Some useful filters include:):
+ **grok**:解析和構造文本。Grok是你將非結構化數據轉換成高質量的結構化數據的最佳選擇。Logstash集成了超過120條匹配規則,很大程度上你會找到一個你需要的。
+ **mutate**:對事件字段做常用的轉換,比如:重命名、移動、替換或者修改某些字段。
+ **drop**:徹底丟棄某個事件,如*debug*事件。
+ **clone**:創建一個時間的副本,可能增加或移除字段。(直譯。原文:make a copy of an event, possibly adding or removing fields.)
+ **geoip**:從IP地址添加物理地址信息(可以在Kibana創建很棒的圖表。)
更多關于Filter Plugins的信息,查看[Filter Plugins](https://www.elastic.co/guide/en/logstash/current/filter-plugins.html)。
#### Outputs
Outputs是Logstash管道的最后階段。一個事件可以通過Outputs發送到多個目的地。當這些過程一旦完成,這個事件的處理也就完全結束了。下面是一些使用的Outputs:
+ **Elasticsearch**:將事件數據發送到Elasticsearch。如果你計劃以高效、方便和容易查詢的格式存儲數據,你應該選擇Elasticsearch。是的,我們就是這么真實 : )
+ **file**:把事件數據寫到磁盤上的文件
+ **graphite**:將數據發送給graphite,這是一個流行的開源存儲和圖形化工具。http://graphite.readthedocs.io/en/latest/
+ **statsd**:將數據發送給是statsd,statsd是一個“像計數器和計時器一樣監聽統計數據,并通過UDP發送聚合信息到一個或多個可插入后端”的服務。如果你準備好使用statsd,這個會對你有幫助。
> <font color=#DC143C size=4>注</font>:引號部分為官方statsd官方介紹信息。有人翻譯為“通過 UDP 或者 TCP 方式偵聽各種統計信息,包括計數器和定時器,并發送聚合信息到后端服務”,不過我更傾向于我自己的翻譯,因為statsd是一個監控軟件,其應該是想表達像計時器一樣統計信息而不是統計像計時器和定時器這樣的數據。附上原文:listens for statistics, like counters and timers, sent over UDP and sends aggregates to one or more pluggable backend services
更多關于Outputs的信息,查看[Output Plugins](https://www.elastic.co/guide/en/logstash/current/output-plugins.html)
#### 編碼器Codecs
編碼器是最基本的流過濾器,可以替代部分input和output。編碼器可以讓你更容易的的從序列化數據中分離傳送你的信息(原文:Codecs enable you to easily separate the transport of your messages from the serialization process)。流行的編碼器包括`json`,`msgpack`,和`plain`(text)。
+ **json**:將數據編碼或解碼為JSON格式。
+ **multiline**:將類似java異常和java棧之類的多行文本事件合并成單個事件。
更多關于codecs的信息,查看[Codec Plugins](https://www.elastic.co/guide/en/logstash/current/codec-plugins.html)。
- Emmm
- Logstash簡介
- 開始使用Logstash
- 安裝Logstash
- 儲存你的第一個事件
- 通過Logstash解析日志
- 多個輸入和輸出插件的混合使用
- Logstash是如何工作的
- 執行模型Execution Model
- 設置并運行Logstash
- Logstash目錄布局
- Logstash配置文件
- logstash.yml
- Secrets keystore for secure settings
- 從命令行運行Logstash
- 以服務的方式運行Logstash
- 在Docker中運行Logstash
- 配置容器版Logstash
- Logging
- 關閉Logstash
- 安裝X-Pack
- 設置X-Pack
- 升級Logstash
- 使用包管理升級
- 直接下載進行升級
- 升級至6.0
- Upgrading with the Persistent Queue Enabled
- 配置Logstash
- 管道配置文件的結構
- 訪問配置中的事件數據和字段
- 在配置中使用環境變量
- Logstash配置示例
- 多管道
- 管道間通信(beta)
- 重載配置文件
- 管理多行事件
- Glob Pattern Support
- Converting Ingest Node Pipelines
- Logstash間通信
- 配置集中式管道管理
- X-Pack Monitoring
- X-Pack Security
- X-Pack Settings
- Field References Deep Dive(深入字段引用)
- 管理Logstash
- 集中式管道管理
- 使用Logstash模塊
- 使用Elastic Cloud
- Logstash ArcSight模塊