**本文不介紹技術的具體實現,只介紹概念原理,有哪些實現方式.適合已經學習過ELK的人,進行ELK快速復習**
#Logstash
## 1.Logstash安裝
參考:[《安裝logstash》](http://www.hmoore.net/hanxt/elk/153880)
## 2.Logstash概念
* logstash與linux系統的配合管道"|"的使用方式比較像,輸入,過濾,輸出
* Logstash是用多線程來實現的,并為每類線程取了名字.輸入的叫做"<threadname",過濾的叫做"|threadname",輸出的叫做">threadname"
* 數據在線程之間以事件的形式流轉.不要叫行,因為logstash可以處理多行的事件.
logstash通常會為原始事件添加一些額外信息,如:
* @timestamp 用來標記事件發生的事件
* host用來標記事件發生的主機位置
* type用來標記事件的唯一標識類型,比如:std表示標準輸入輸出
* tags用來為事件打標簽,一個事件可以有多個標簽組成的數組
Logstash的過濾插件都有四個方法:
* add_tag
* remove_tag
* add_filed
* remove_filed
**第7-14頁的配置語法先簡單略過**
## 3.Logstash插件配置
插件是logstash的最大的特色,目前支持四種插件類型:
* 輸入插件
* 輸出插件
* 過濾插件
* 編解碼插件
### 3.1 輸入插件
#### 3.1.1 stdin:從linux終端的標準輸入獲得數據
這個不多說
#### 3.1.2 file:文件輸入
* 可以監聽文件的變化,記錄一個數據庫文件.sincedb來跟蹤被監聽文件的當前讀取位置
* 支持通配符
* 支持遞歸子目錄
#### 3.1.3 TCP輸入
不建議使用,測試可以.因為logstash的緩沖隊列中只能緩存20個事件.
建議在生產中使用kafka或redis作為消息隊列
#### 3.1.4 syslog輸入
syslog是運維領域一種流行的數據傳輸協議.如果想從設備上收集系統日志,syslog應該是第一選擇,尤其是網絡設備.
**如果有需要,syslog需要進一步的了解**
#### 3.1.5 collected輸入
collectd是一款系統監控軟件,可以用來收集CPU,內存,網卡流量,磁盤IO及磁盤空間占用等信息。他會在系統運行時周期性的統計系統相關信息.可以利用這些信息來查找系統性能瓶頸.