騰訊雲 Elasticsearch 進階篇(二十九)Logstash講解與實戰

  • 2020 年 3 月 14 日
  • 筆記

一、Logstash輸出插件(output)

output是Logstash的最後階段,一個事件可以經過多個輸出,而一旦所有輸出處理完成,整個事件就執行完成。 一些常用的輸出包括:

file: 表示將日誌數據寫入磁碟上的文件。

elasticsearch:表示將日誌數據發送給Elasticsearch。Elasticsearch可以高效方便和易於查詢的保存數據。

graphite:表示將日誌數據發送給graphite,graphite是一種流行的開源工具,用於存儲和繪製數據指標。

此外,Logstash還支援輸出到nagios、hdfs、email(發送郵件)和Exec(調用命令執行)。

1、輸出到標準輸出(stdout)

stdout與之前介紹過的stdin插件一樣,它是最基礎和簡單的輸出插件,下面是一個配置實例:

output {

stdout {

codec => rubydebug———》調試、測試使用

}

}

stdout插件,主要的功能和用途就是用於調試,這個插件,在前面已經多次使用過。這裡不再過多介紹。

2、保存為文件(file)

file插件可以將輸出保存到一個文件中,配置實例如下:

output {

file {

path => "/data/log3/%{+yyyy-MM-dd}/%{host}_%{+HH}.log"

}

上面這個配置中,使用了變數匹配,用於自動匹配時間和主機名,這在實際使用中很有幫助。我們看一下下面得配置文件截圖:

Output配置文件解析

1,input{} 標準輸入,也就是從鍵盤輸入

2,output{} file:表示輸出一個到一個文件; path:表示文件的路徑,需要手動創建目錄,後面得目錄會自動創建。

3,codec 對輸出得文件內容進行編碼,保證輸入得內容與輸出得內容保持一致,進而對數據進行分析。

好,接下來,我們啟動服務。看下圖:bin/logstash -f config/logstash8.conf

啟動服務

那麼我們驗證一下:/data/log下是否有我們得輸入文本並記錄日誌呢?

輸出日誌內容

驗證成功。其實這個過程就可以稱為對系統日誌的實時備份。

3,輸出到elasticsearch(*****)

Logstash將過濾、分析好的數據輸出到elasticsearch中進行存儲和查詢,是最經常使用的方法。下面是一個配置實例

output—》到ES的配置路徑如下:

output {

elasticsearch {

host => ["http://vip:9200"]

index => "logstash-%{+YYYY.MM.dd}" —————->以時間為序列進行索引的生成。每天一個索引。

user => "elastic"

password => "XXXX"

}

}

上面配置中每個配置項含義如下:

l host:是一個數組類型的值,後面跟的值是elasticsearch節點的地址與埠,默認埠是9200。可添加多個地址。

l index:寫入elasticsearch的索引的名稱,這裡可以使用變數。Logstash提供了%{+YYYY.MM.dd}這種寫法。在語法解析的時候,看到以+ 號開頭的,就會自動認為後面是時間格式,嘗試用時間格式來解析後續字元串。這種以天為單位分割的寫法,可以很容易的刪除老的數據或者搜索指定時間範圍內的數據。此外,注意索引名中不能有大寫字母。

二、總結

那麼至此,Logstash入門篇的三大插件,已經全部講解完畢。想必通過前面的這些知識的了解學習,對於ELK有了更進一步的了解。好好複習一下吧,下面,我們再來講一下filebeat的一些知識。

此外,別忘了,ELK 官網,你值得擁有!!