- Logstash 輸入階段
- Logstash - 收集日誌
- Logstash - 支援的輸入
- Logstash 解析和轉換
- Logstash - 解析日誌
- Logstash - 過濾器
- Logstash - 轉換日誌
- Logstash 輸出階段
- Logstash - 輸出階段
- Logstash - 支援的輸出
- Logstash 高階主題
- Logstash - 外掛
- Logstash - 監控 API
- Logstash - 安全和監控
- Logstash 有用資源
- Logstash - 快速指南
- Logstash - 有用資源
- Logstash - 討論
Logstash - 外掛
Logstash 為其管道的所有三個階段(輸入、過濾器和輸出)提供各種外掛。這些外掛幫助使用者從各種來源捕獲日誌,例如 Web 伺服器、資料庫、網路協議等。
捕獲後,Logstash 可以根據使用者的需要將資料解析和轉換成分有意義的資訊。最後,Logstash 可以將這些有意義的資訊傳送或儲存到各種目標源,例如 Elasticsearch、AWS Cloudwatch 等。
輸入外掛
Logstash 中的輸入外掛幫助使用者從各種來源提取和接收日誌。使用輸入外掛的語法如下:
Input {
Plugin name {
Setting 1……
Setting 2……..
}
}
您可以使用以下命令下載輸入外掛:
>Logstash-plugin install Logstash-input-<plugin name>
Logstash-plugin 實用程式位於 Logstash 安裝目錄的**bin 資料夾**中。下表列出了 Logstash 提供的輸入外掛。
| 序號 | 外掛名稱和描述 |
|---|---|
| 1 | beats 從 elastic beats 框架獲取日誌資料或事件。 |
| 2 | cloudwatch 從 CloudWatch 中提取事件,CloudWatch 是 Amazon Web Services 提供的 API。 |
| 3 | couchdb_changes 使用此外掛傳送 couchdb 的 _changes URI 的事件。 |
| 4 | drupal_dblog 提取啟用了 DBLog 的 drupal 的 watchdog 日誌資料。 |
| 5 | Elasticsearch 檢索在 Elasticsearch 叢集中執行的查詢結果。 |
| 6 | eventlog 獲取 Windows 事件日誌中的事件。 |
| 7 | exec 獲取 shell 命令輸出作為 Logstash 的輸入。 |
| 8 | file 從輸入檔案獲取事件。當 Logstash 在本地安裝並具有輸入源的訪問許可權時,這很有用。 |
| 9 | generator 用於測試目的,它建立隨機事件。 |
| 10 | github 捕獲來自 GitHub webhook 的事件。 |
| 11 | graphite 從 graphite 監控工具獲取指標資料。 |
| 12 | heartbeat 也用於測試,它生成類似心跳的事件 |
| 13 | http 收集兩個網路協議上的日誌事件,分別是 http 和 https。 |
| 14 | http_poller 用於將 HTTP API 輸出解碼為事件。 |
| 15 | jdbc 將 JDBC 事務轉換為 Logstash 中的事件。 |
| 16 | jmx 使用 JMX 從遠端 Java 應用程式提取指標。 |
| 17 | log4j 透過 TCP 套接字捕獲來自 Log4j 的 socketAppender 物件的事件。 |
| 18 | rss 將命令列工具的輸出作為 Logstash 中的輸入事件。 |
| 19 | tcp 透過 TCP 套接字捕獲事件。 |
| 20 | 從 Twitter 流式 API 收集事件。 |
| 21 | unix 透過 UNIX 套接字收集事件。 |
| 22 | websocket 透過 websocket 協議捕獲事件。 |
| 23 | xmpp 讀取 Jabber/xmpp 協議上的事件。 |
外掛設定
所有外掛都有其特定的設定,有助於指定外掛中重要的欄位,例如埠、路徑等。我們將討論一些輸入外掛的設定。
檔案
此輸入外掛用於直接從輸入源中存在的日誌或文字檔案中提取事件。它的工作原理類似於 UNIX 中的 tail 命令,並儲存上次讀取的遊標,僅讀取輸入檔案中新追加的資料,但可以透過使用 star_position 設定進行更改。以下是此輸入外掛的設定。
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| add_field | {} | 將新欄位新增到輸入事件。 |
| close_older | 3600 | 最後讀取時間(以秒為單位)超過此外掛中指定時間的檔案將關閉。 |
| codec | “plain” | 用於在進入 Logstash 管道之前解碼資料。 |
| delimiter | “\n” | 用於指定換行符。 |
| discover_interval | 15 | 在指定路徑中發現新檔案的間隔時間(以秒為單位)。 |
| enable_metric | true | 用於啟用或停用指定外掛的指標報告和收集。 |
| exclude | 用於指定應從輸入外掛中排除的檔名或模式。 | |
| Id | 為該外掛例項指定唯一標識。 | |
| max_open_files | 指定 Logstash 隨時可以開啟的最大輸入檔案數。 | |
| path | 指定檔案的路徑,它可以包含檔名的模式。 | |
| start_position | “end” | 如果需要,可以更改為“beginning”,以便 Logstash 最初應從開頭開始讀取檔案,而不僅僅是新的日誌事件。 |
| start_interval | 1 | 指定 Logstash 檢查修改檔案的時間間隔(以秒為單位)。 |
| tags | 新增任何其他資訊,例如 Logstash,當任何日誌事件無法符合指定的 grok 過濾器時,它會在標籤中新增“_grokparsefailure”。 | |
| type | 這是一個特殊的欄位,您可以將其新增到輸入事件中,它在過濾器和 kibana 中很有用。 |
Elasticsearch
此特定外掛用於讀取 Elasticsearch 叢集中的搜尋查詢結果。以下是此外掛中使用的設定:
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| add_field | {} | 與檔案外掛相同,用於將欄位新增到輸入事件中。 |
| ca_file | 用於指定 SSL 證書頒發機構檔案的路徑。 | |
| codec | “plain” | 用於在輸入事件進入 Logstash 管道之前對其進行解碼。 |
| docinfo | “false” | 如果要提取其他資訊(例如索引、型別和 ID)從 Elasticsearch 引擎,可以將其更改為 true。 |
| docinfo_fields | ["_index", "_type", "_id"] | 可以消除任何不需要的 Logstash 輸入欄位。 |
| enable_metric | true | 用於啟用或停用該外掛例項的指標報告和收集。 |
| hosts | 用於指定將作為該 Logstash 例項的輸入源的所有 Elasticsearch 引擎的地址。語法為 host:port 或 IP:port。 | |
| Id | 用於為該特定輸入外掛例項提供唯一標識號。 | |
| index | "logstash-*" | 用於指定 Logstash 將監視的索引名稱或模式,以便作為輸入。 |
| password | 用於身份驗證。 | |
| query | "{ \"sort\": [ \"_doc\" ] }" | 執行的查詢。 |
| ssl | false | 啟用或停用安全套接字層。 |
| tags | 在輸入事件中新增任何其他資訊。 | |
| type | 用於對輸入表單進行分類,以便在後續階段輕鬆搜尋所有輸入事件。 | |
| user | 用於身份驗證。 |
eventlog
此輸入外掛讀取 Windows 伺服器的 win32 API 中的資料。以下是此外掛的設定:
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| add_field | {} | 與檔案外掛相同,用於將欄位新增到輸入事件中 |
| codec | “plain” | 用於在輸入事件進入 Logstash 管道之前對其進行解碼 |
| logfile | ["Application", "Security", "System"] | 輸入日誌檔案中所需的事件 |
| interval | 1000 | 以毫秒為單位,定義兩次連續檢查新事件日誌之間的間隔 |
| tags | 在輸入事件中新增任何其他資訊 | |
| type | 用於將輸入表單特定外掛分類為給定的型別,以便在後續階段輕鬆搜尋所有輸入事件 |
此輸入外掛用於從其流式 API 收集 Twitter 的 feed。下表描述了此外掛的設定。
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| add_field | {} | 與檔案外掛相同,用於將欄位新增到輸入事件中 |
| codec | “plain” | 用於在輸入事件進入 Logstash 管道之前對其進行解碼 |
| consumer_key | 包含 Twitter 應用程式的消費者金鑰。有關更多資訊,請訪問https://dev.twitter.com/apps/new | |
| consumer_secret | 包含 Twitter 應用程式的消費者金鑰。有關更多資訊,請訪問https://dev.twitter.com/apps/new | |
| enable_metric | true | 用於啟用或停用該外掛例項的指標報告和收集 |
| follows | 指定用逗號分隔的使用者 ID,LogStash 檢查 Twitter 中這些使用者的狀態。 有關更多資訊,請訪問 |
|
| full_tweet | false | 如果希望 Logstash 讀取 Twitter API 返回的完整物件,可以將其更改為 true |
| id | 用於為該特定輸入外掛例項提供唯一標識號 | |
| ignore_retweets | False | 可以將其設定為 true 以忽略輸入 Twitter feed 中的轉發 |
| keywords | 需要在 Twitter 輸入 feed 中跟蹤的關鍵詞陣列 | |
| language | 定義 LogStash 從輸入 Twitter feed 中所需的推文的語言。這是一個識別符號陣列,用於定義 Twitter 中的特定語言 | |
| locations | 根據指定的地理位置過濾輸入feed中的推文。這是一個數組,包含位置的經度和緯度。 | |
| oauth_token | 這是必需欄位,包含使用者oauth令牌。更多資訊請訪問以下連結 https://dev.twitter.com/apps | |
| oauth_token_secret | 這是必需欄位,包含使用者oauth金鑰令牌。更多資訊請訪問以下連結 https://dev.twitter.com/apps | |
| tags | 在輸入事件中新增任何其他資訊 | |
| type | 用於將輸入表單特定外掛分類為給定的型別,以便在後續階段輕鬆搜尋所有輸入事件 |
TCP
TCP用於透過TCP套接字獲取事件;它可以讀取來自使用者連線或伺服器的事件,這在模式設定中指定。下表描述了此外掛的設定 -
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| add_field | {} | 與檔案外掛相同,用於將欄位新增到輸入事件中 |
| codec | “plain” | 用於在輸入事件進入 Logstash 管道之前對其進行解碼 |
| enable_metric | true | 用於啟用或停用該外掛例項的指標報告和收集 |
| host | “0.0.0.0” | 客戶端所依賴的伺服器作業系統地址 |
| id | 它包含Twitter應用程式的消費者金鑰 | |
| mode | “server” | 用於指定輸入源是伺服器還是客戶端。 |
| port | 定義埠號 | |
| ssl_cert | 用於指定SSL證書的路徑 | |
| ssl_enable | false | 啟用或停用SSL |
| ssl_key | 指定SSL金鑰檔案的路徑 | |
| tags | 在輸入事件中新增任何其他資訊 | |
| type | 用於將輸入表單特定外掛分類為給定的型別,以便在後續階段輕鬆搜尋所有輸入事件 |
Logstash – 輸出外掛
Logstash支援各種輸出源和不同的技術,如資料庫、檔案、電子郵件、標準輸出等。
使用輸出外掛的語法如下所示 -
output {
Plugin name {
Setting 1……
Setting 2……..
}
}
您可以使用以下命令下載輸出外掛 -
>logstash-plugin install logstash-output-<plugin name>
**Logstash-plugin實用程式**位於Logstash安裝目錄的bin資料夾中。下表描述了Logstash提供的輸出外掛。
| 序號 | 外掛名稱和描述 |
|---|---|
| 1 | CloudWatch 此外掛用於將聚合的指標資料傳送到亞馬遜網路服務的CloudWatch。 |
| 2 | csv 用於以逗號分隔的方式寫入輸出事件。 |
| 3 | Elasticsearch 用於將輸出日誌儲存在Elasticsearch索引中。 |
| 4 | 用於在生成輸出時傳送通知電子郵件。使用者可以在電子郵件中新增有關輸出的資訊。 |
| 5 | exec 用於執行與輸出事件匹配的命令。 |
| 6 | ganglia 它將指標寫入Gangila的gmond。 |
| 7 | gelf 用於以GELF格式生成Graylog2的輸出。 |
| 8 | google_bigquery 將事件輸出到Google BigQuery。 |
| 9 | google_cloud_storage 將輸出事件儲存到Google Cloud Storage。 |
| 10 | graphite 用於將輸出事件儲存到Graphite。 |
| 11 | graphtastic 用於在Windows上寫入輸出指標。 |
| 12 | hipchat 用於將輸出日誌事件儲存到HipChat。 |
| 13 | http 用於將輸出日誌事件傳送到http或https端點。 |
| 14 | influxdb 用於將輸出事件儲存在InfluxDB中。 |
| 15 | irc 用於將輸出事件寫入irc。 |
| 16 | mongodb 將輸出資料儲存在MongoDB中。 |
| 17 | nagios 用於使用被動檢查結果通知Nagios。 |
| 18 | nagios_nsca 用於透過NSCA協議使用被動檢查結果通知Nagios。 |
| 19 | opentsdb 將Logstash輸出事件儲存到OpenTSDB。 |
| 20 | pipe 將輸出事件流式傳輸到另一個程式的標準輸入。 |
| 21 | rackspace 用於將輸出日誌事件傳送到Rackspace Cloud的佇列服務。 |
| 22 | redis 使用rpush命令將輸出日誌資料傳送到Redis佇列。 |
| 23 | riak 用於將輸出事件儲存到Riak分散式鍵/值對中。 |
| 24 | s3 將輸出日誌資料儲存到Amazon Simple Storage Service。 |
| 25 | sns 用於將輸出事件傳送到Amazon的Simple Notification Service。 |
| 26 | solr_http 將輸出日誌資料索引並存儲在Solr中。 |
| 27 | sps 用於將事件傳送到AWS的Simple Queue Service。 |
| 28 | statsd 用於將指標資料傳送到statsd網路守護程式。 |
| 29 | stdout 用於在CLI的標準輸出上顯示輸出事件,例如命令提示符。 |
| 30 | syslog 用於將輸出事件傳送到syslog伺服器。 |
| 31 | tcp 用於將輸出事件傳送到TCP套接字。 |
| 32 | udp 用於透過UDP推送輸出事件。 |
| 33 | websocket 用於透過WebSocket協議推送輸出事件。 |
| 34 | xmpp 用於透過XMPP協議推送輸出事件。 |
所有外掛都有其特定的設定,有助於在外掛中指定重要的欄位,如埠、路徑等。我們將討論一些輸出外掛的設定。
Elasticsearch
Elasticsearch輸出外掛使Logstash能夠將輸出儲存在Elasticsearch引擎的特定叢集中。這是使用者最受歡迎的選擇之一,因為它包含在ELK Stack軟體包中,因此為Devops提供端到端解決方案。下表描述了此輸出外掛的設定。
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| action | index | 用於定義在Elasticsearch引擎中執行的操作。此設定的其他值包括delete、create、update等。 |
| cacert | 包含伺服器證書驗證的.cer或.pem檔案的路徑。 | |
| codec | “plain” | 用於在將輸出日誌資料傳送到目標源之前對其進行編碼。 |
| doc_as_upset | false | 此設定用於更新操作。如果在輸出外掛中未指定文件ID,則會在Elasticsearch引擎中建立一個文件。 |
| document_type | 用於將相同型別的事件儲存在相同的文件型別中。如果未指定,則使用事件型別。 | |
| flush_size | 500 | 用於提高Elasticsearch中批次上傳的效能 |
| hosts | [“127.0.0.1”] | 輸出日誌資料的目標地址陣列 |
| idle_flush_time | 1 | 定義兩次重新整理之間的時間限制(秒),Logstash在此設定中指定的超時後強制重新整理 |
| index | "logstash-%{+YYYY.MM.dd}" | 用於指定Elasticsearch引擎的索引 |
| manage_temlpate | true | 用於在Elasticsearch中應用預設模板 |
| parent | nil | 用於指定Elasticsearch中父文件的ID |
| password | 用於對Elasticsearch中安全叢集的請求進行身份驗證 | |
| path | 用於指定Elasticsearch的HTTP路徑。 | |
| pipeline | nil | 用於設定使用者希望為事件執行的攝取管道 |
| proxy | 用於指定HTTP代理 | |
| retry_initial_interval | 2 | 用於設定批次重試之間初始時間間隔(秒)。每次重試後都會加倍,直到達到retry_max_interval |
| retry_max_interval | 64 | 用於設定retry_initial_interval的最大時間間隔 |
| retry_on_conflict | 1 | Elasticsearch更新文件的重試次數 |
| ssl | 啟用或停用對Elasticsearch的安全SSL/TLS | |
| template | 包含Elasticsearch中自定義模板的路徑 | |
| template_name | "logstash" | 用於在Elasticsearch中命名模板 |
| timeout | 60 | 對Elasticsearch的網路請求的超時時間 |
| upsert | “” | 更新文件,如果文件ID不存在,則在Elasticsearch中建立新文件 |
| user | 包含用於在安全Elasticsearch叢集中對Logstash請求進行身份驗證的使用者 |
電子郵件輸出外掛用於在Logstash生成輸出時通知使用者。下表描述了此外掛的設定。
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| address | “localhost” | 郵件伺服器的地址 |
| attachments | [] | 包含附件檔案的名稱和位置 |
| body | “” | 包含電子郵件正文,應為純文字 |
| cc | 包含電子郵件的抄送電子郵件地址,以逗號分隔 | |
| codec | “plain” | 用於在將輸出日誌資料傳送到目標源之前對其進行編碼。 |
| contenttype | "text/html; charset = UTF-8" | 用於設定電子郵件的內容型別 |
| debug | false | 用於在除錯模式下執行郵件中繼 |
| domain | "localhost" | 用於設定傳送電子郵件訊息的域名 |
| from | "logstash.alert@nowhere.com" | 用於指定發件人的電子郵件地址 |
| htmlbody | “” | 用於以html格式指定電子郵件正文 |
| password | 用於對郵件伺服器進行身份驗證 | |
| port | 25 | 用於定義與郵件伺服器通訊的埠 |
| replyto | 用於指定電子郵件回覆欄位的電子郵件ID | |
| subject | “” | 包含電子郵件的主題行 |
| use_tls | false | 啟用或停用與郵件伺服器通訊的TSL |
| username | 包含用於對伺服器進行身份驗證的使用者名稱 | |
| via | “smtp” | 定義Logstash傳送電子郵件的方法 |
Http
此設定用於透過http將輸出事件傳送到目標。此外掛具有以下設定 -
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| automatic_retries | 1 | 用於設定logstash重試http請求的次數 |
| cacert | 包含伺服器證書驗證的檔案路徑 | |
| codec | “plain” | 用於在將輸出日誌資料傳送到目標源之前對其進行編碼。 |
| content_type | 指定對目標伺服器的http請求的內容型別 | |
| cookies | true | 用於啟用或停用cookie |
| format | "json" | 用於設定http請求正文的格式 |
| headers | 包含http標頭資訊 | |
| http_method | “” | 用於指定logstash在請求中使用的http方法,值可以是“put”、“post”、“patch”、“delete”、“get”、“head” |
| request_timeout | 60 | 用於對郵件伺服器進行身份驗證 |
| url | 這是此外掛的必需設定,用於指定http或https端點 |
stdout
stdout輸出外掛用於將輸出事件寫入命令列介面的標準輸出。在Windows中是命令提示符,在UNIX中是終端。此外掛具有以下設定 -
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| codec | “plain” | 用於在將輸出日誌資料傳送到目標源之前對其進行編碼。 |
| workers | 1 | 用於指定輸出的工作程式數量 |
statsd
這是一個網路守護程式,用於透過UDP將矩陣資料傳送到目標後端服務。在Windows中是命令提示符,在UNIX中是終端。此外掛具有以下設定 -
| 設定名稱 | 預設值 | 描述 |
|---|---|---|
| codec | “plain” | 用於在將輸出日誌資料傳送到目標源之前對其進行編碼。 |
| count | {} | 用於定義在指標中使用的計數 |
| decrement | [] | 用於指定遞減指標名稱 |
| host | “localhost” | 包含statsd伺服器的地址 |
| increment | [] | 用於指定遞增指標名稱 |
| port | 8125 | 包含statsd伺服器的埠 |
| sample_rate | 1 | 用於指定指標的取樣率 |
| sender | “%{host}” | 指定傳送者的名稱 |
| set | {} | 用於指定一個集合指標 |
| timing | {} | 用於指定一個計時指標 |
| workers | 1 | 用於指定輸出的工作程式數量 |
過濾器外掛
Logstash 支援各種過濾器外掛來解析和轉換輸入日誌,使其具有更結構化且易於查詢的格式。
使用過濾器外掛的語法如下所示:
filter {
Plugin name {
Setting 1……
Setting 2……..
}
}
您可以使用以下命令下載過濾器外掛:
>logstash-plugin install logstash-filter-<plugin name>
Logstash-plugin 實用程式位於 Logstash 安裝目錄的 bin 資料夾中。下表描述了 Logstash 提供的輸出外掛。
| 序號 | 外掛名稱和描述 |
|---|---|
| 1 | aggregate 此外掛收集或聚合來自各種相同型別事件的資料,並在最終事件中對其進行處理。 |
| 2 | alter 它允許使用者更改日誌事件的欄位,mutate 過濾器無法處理這些欄位。 |
| 3 | anonymize 它用於用一致的雜湊值替換欄位的值。 |
| 4 | cipher 它用於在將輸出事件儲存到目標源之前對其進行加密。 |
| 5 | clone 它用於在 Logstash 中建立輸出事件的副本。 |
| 6 | collate 它根據時間或計數合併來自不同日誌的事件。 |
| 7 | csv 此外掛根據分隔符解析輸入日誌中的資料。 |
| 8 | date 它解析事件中欄位中的日期,並將其設定為事件的時間戳。 |
| 9 | dissect 此外掛幫助使用者從非結構化資料中提取欄位,並使 grok 過濾器能夠正確解析它們。 |
| 10 | drop 它用於刪除所有相同型別或任何其他相似性的事件。 |
| 11 | elapsed 它用於計算開始事件和結束事件之間的時間。 |
| 12 | Elasticsearch 它用於將 Elasticsearch 中存在的先前日誌事件的欄位複製到 Logstash 中的當前事件。 |
| 13 | extractnumbers 它用於從日誌事件中的字串中提取數字。 |
| 14 | geoip 它在事件中新增一個欄位,該欄位包含日誌事件中存在的 IP 所在位置的經緯度。 |
| 15 | grok 它是常用的過濾器外掛,用於解析事件以獲取欄位。 |
| 16 | i18n 它刪除日誌事件中欄位中的特殊字元。 |
| 17 | json 它用於在事件中或事件的特定欄位中建立結構化的 Json 物件。 |
| 18 | kv 此外掛在解析日誌資料中的鍵值對時很有用。 |
| 19 | metrics 它用於聚合指標,例如計算每個事件中的時間持續時間。 |
| 20 | multiline 它也是常用的過濾器外掛之一,它可以幫助使用者將多行日誌資料轉換為單個事件。 |
| 21 | mutate 此外掛用於重新命名、刪除、替換和修改事件中的欄位。 |
| 22 | range 它用於檢查事件中欄位的數值是否在預期範圍內,以及字串的長度是否在範圍內。 |
| 23 | ruby 它用於執行任意 Ruby 程式碼。 |
| 24 | sleep 這使 Logstash 休眠指定的時間。 |
| 25 | split 它用於拆分事件的欄位,並將所有拆分值放置在該事件的克隆中。 |
| 26 | xml 它用於透過解析日誌中存在的 XML 資料來建立事件。 |
編解碼器外掛
編解碼器外掛可以是輸入或輸出外掛的一部分。這些外掛用於更改或格式化日誌資料的表示形式。Logstash 提供了多個編解碼器外掛,如下所示:
| 序號 | 外掛名稱和描述 |
|---|---|
| 1 | avro 此外掛將 Logstash 事件編碼序列化為 avro 資料或將 avro 記錄解碼為 Logstash 事件。 |
| 2 | cloudfront 此外掛讀取來自 AWS cloudfront 的編碼資料。 |
| 3 | cloudtrail 此外掛用於讀取來自 AWS cloudtrail 的資料。 |
| 4 | collectd 它讀取透過 UDP 收集的稱為 collectd 的二進位制協議的資料。 |
| 5 | compress_spooler 它用於在 Logstash 中將日誌事件壓縮到分段批處理中。 |
| 6 | dots 這用於透過為每個事件設定一個點到 stdout 來進行效能跟蹤。 |
| 7 | es_bulk 這用於將 Elasticsearch 中的大量資料轉換為 Logstash 事件,包括 Elasticsearch 元資料。 |
| 8 | graphite 此編解碼器將資料從 graphite 讀取到事件中,並將事件更改為 graphite 格式的記錄。 |
| 9 | gzip_lines 此外掛用於處理 gzip 編碼的資料。 |
| 10 | json 這用於將 Json 陣列中的單個元素轉換為單個 Logstash 事件。 |
| 11 | json_lines 它用於處理具有換行符分隔符的 Json 資料。 |
| 12 | line 此外掛將以單行讀取和寫入事件,這意味著換行符分隔符之後將出現一個新事件。 |
| 13 | multiline 它用於將多行日誌資料轉換為單個事件。 |
| 14 | netflow 此外掛用於將 nertflow v5/v9 資料轉換為 logstash 事件。 |
| 15 | nmap 它將 nmap 結果資料解析為 XML 格式。 |
| 16 | plain 這讀取沒有分隔符的文字。 |
| 17 | rubydebug 此外掛將使用 Ruby awesome print 庫寫入輸出 Logstash 事件。 |
構建您自己的外掛
您還可以建立自己的 Logstash 外掛,以滿足您的需求。Logstash-plugin 實用程式用於建立自定義外掛。在這裡,我們將建立一個過濾器外掛,它將在事件中新增自定義訊息。
生成基本結構
使用者可以使用 logstash-plugin 實用程式的 generate 選項生成必要的檔案,或者它也可以在 GitHub 上獲得。
>logstash-plugin generate --type filter --name myfilter --path c:/tpwork/logstash/lib
這裡,**type** 選項用於指定外掛是輸入、輸出還是過濾器。在此示例中,我們正在建立名為 **myfilter** 的過濾器外掛。path 選項用於指定您希望建立外掛目錄的路徑。執行上述命令後,您將看到建立了一個目錄結構。
開發外掛
您可以在外掛目錄的 **\lib\logstash\filters** 資料夾中找到外掛的程式碼檔案。副檔名將為 **.rb**。
在我們的例子中,程式碼檔案位於以下路徑:
C:\tpwork\logstash\lib\logstash-filter-myfilter\lib\logstash\filters\myfilter.rb
我們將訊息更改為:default ⇒ "Hi, You are learning this on tutorialspoint.com" 並儲存檔案。
安裝外掛
要安裝此外掛,需要修改 Logstash 的 Gemfile。您可以在 Logstash 的安裝目錄中找到此檔案。在我們的例子中,它將位於 **C:\tpwork\logstash**。使用任何文字編輯器編輯此檔案,並在其中新增以下文字。
gem "logstash-filter-myfilter",:path => "C:/tpwork/logstash/lib/logstash-filter-myfilter"
在上面的命令中,我們指定了外掛的名稱以及可以在哪裡找到它以進行安裝。然後,執行 Logstash-plugin 實用程式來安裝此外掛。
>logstash-plugin install --no-verify
測試
在這裡,我們在之前的示例之一中添加了 **myfilter**:
logstash.conf
此 Logstash 配置檔案在 grok 過濾器外掛之後包含過濾器部分中的 myfilter。
input {
file {
path => "C:/tpwork/logstash/bin/log/input1.log"
}
}
filter {
grok {
match => [
"message", "%{LOGLEVEL:loglevel} - %{NOTSPACE:taskid} -
%{NOTSPACE:logger} - %{WORD:label}( - %{INT:duration:int})?" ]
}
myfilter{}
}
output {
file {
path => "C:/tpwork/logstash/bin/log/output1.log"
codec => rubydebug
}
}
執行 logstash
我們可以使用以下命令執行 Logstash。
>logstash –f logsatsh.conf
input.log
以下程式碼塊顯示了輸入日誌資料。
INFO - 48566 - TRANSACTION_START - start
output.log
以下程式碼塊顯示了輸出日誌資料。
{
"path" => "C:/tpwork/logstash/bin/log/input.log",
"@timestamp" => 2017-01-07T06:25:25.484Z,
"loglevel" => "INFO",
"logger" => "TRANSACTION_END",
"@version" => "1",
"host" => "Dell-PC",
"label" => "end",
"message" => "Hi, You are learning this on tutorialspoint.com",
"taskid" => "48566",
"tags" => []
}
在 Logstash 上釋出
開發人員還可以透過將其上傳到 github 並遵循 Elasticsearch 公司定義的標準化步驟,將其自定義外掛釋出到 Logstash。
有關釋出的更多資訊,請參閱以下網址:
https://www.elastic.co/guide/en/logstash/current/contributing-to-logstash.html