Logstash - 收集日誌



使用 shipper 收集來自不同伺服器或資料來源的日誌。shipper 是安裝在伺服器上的 Logstash 例項,它訪問伺服器日誌並將日誌傳送到特定的輸出位置。

它主要將輸出傳送到 Elasticsearch 進行儲存。Logstash 從以下來源獲取輸入:

  • STDIN
  • Syslog
  • 檔案
  • TCP/UDP
  • Microsoft Windows 事件日誌
  • Websocket
  • Zeromq
  • 自定義擴充套件

使用 Apache Tomcat 7 伺服器收集日誌

在這個例子中,我們使用檔案輸入外掛收集安裝在 Windows 上的 Apache Tomcat 7 伺服器的日誌,並將它們傳送到另一個日誌。

logstash.conf

在這裡,Logstash 配置為訪問本地安裝的 Apache Tomcat 7 的訪問日誌。檔案外掛的路徑設定中使用了正則表示式模式來從日誌檔案中獲取資料。這包含在其名稱中帶有“access”的欄位,並添加了一個 apache 型別,這有助於區分集中式目標源中的 apache 事件和其他事件。最後,輸出事件將顯示在 output.log 中。

input {
   file {
      path => "C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/*access*"
      type => "apache"
   }
} 
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

執行 Logstash

我們可以使用以下命令執行 Logstash。

C:\logstash\bin> logstash –f  Logstash.conf

Apache Tomcat 日誌

訪問 Apache Tomcat 伺服器及其 Web 應用程式 (https://:8080) 以生成日誌。Logstash 即時讀取日誌中的更新資料,並將其儲存在配置檔案中指定的 output.log 中。

Apache Tomcat 根據日期生成新的訪問日誌檔案,並將訪問事件記錄在其中。在我們的例子中,它是 Apache Tomcat 的 logs 目錄中的 localhost_access_log.2016-12-24.txt。

0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:00 +0800] "GET / HTTP/1.1" 200 11418
0:0:0:0:0:0:0:1 - munish [
   25/Dec/2016:18:37:02 +0800] "GET /manager/html HTTP/1.1" 200 17472
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:08 +0800] "GET /docs/ HTTP/1.1" 200 19373
0:0:0:0:0:0:0:1 - - [
   25/Dec/2016:18:37:10 +0800] "GET /docs/introduction.html HTTP/1.1" 200 15399

output.log

您可以在輸出事件中看到,添加了一個 type 欄位,並且事件存在於 message 欄位中。

{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt",
   "@timestamp":"2016-12-25T10:37:00.363Z","@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:00 +0800] \"GET /
   HTTP/1.1\" 200 11418\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - munish [25/Dec/2016:18:37:02 +0800] \"GET /
   manager/html HTTP/1.1\" 200 17472\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:10.407Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:08 +0800] \"GET /docs/
   HTTP/1.1\" 200 19373\r","type":"apache","tags":[]
}
{
   "path":"C:/Program Files/Apache Software Foundation/Tomcat 7.0/logs/
   localhost_access_log.2016-12-25.txt","@timestamp":"2016-12-25T10:37:20.436Z",
   "@version":"1","host":"Dell-PC",
   "message":"0:0:0:0:0:0:0:1 - - [25/Dec/2016:18:37:10 +0800] \"GET /docs/
   introduction.html HTTP/1.1\" 200 15399\r","type":"apache","tags":[]
}

使用 STDIN 外掛收集日誌

在本節中,我們將討論另一個使用 STDIN 外掛收集日誌的示例。

logstash.conf

這是一個非常簡單的例子,Logstash 讀取使用者在標準輸入中輸入的事件。在我們的例子中,它是命令提示符,它將事件儲存在 output.log 檔案中。

input {
   stdin{}
}
output {
   file {
      path => "C:/tpwork/logstash/bin/log/output.log"
   }
}

執行 Logstash

我們可以使用以下命令執行 Logstash。

C:\logstash\bin> logstash –f  Logstash.conf

在命令提示符中寫入以下文字:

使用者輸入了以下兩行。Logstash 透過分隔符設定分隔事件,其預設值為“\n”。使用者可以透過更改檔案外掛中分隔符的值來更改它。

Tutorialspoint.com welcomes you
Simply easy learning

output.log

以下程式碼塊顯示輸出日誌資料。

{
   "@timestamp":"2016-12-25T11:41:16.518Z","@version":"1","host":"Dell-PC",
   "message":"tutrialspoint.com welcomes you\r","tags":[]
}
{
   "@timestamp":"2016-12-25T11:41:53.396Z","@version":"1","host":"Dell-PC",
   "message":"simply easy learning\r","tags":[]
}
廣告