天天看點

ELK - Logstash - Configuration Files

環境:Logstash 6.5.4

-----------------------------------------------------------------------

Logstash有兩種類型的配置檔案:

Pipeline configuration files:定義Logstash處理管道的管道配置檔案

settings files:指定控制Logstash啟動和執行的選項的設定

Pipeline Configuration Files

将管道配置檔案放在/etc/logstash/conf.d目錄中。Logstash試圖隻加載/etc/logstash/conf.d目錄中的.conf擴充名的檔案,并忽略所有其他檔案。

logstash.yml:

node.name:名稱

path.data:資料存放

pipeline.id:id

pipeline.workers:并行執行管道的過濾器和輸出階段的worker數量。

pipeline.batch.size:單個工作線程在嘗試執行其篩選器和輸出之前将從輸入中收集的事件的最大數量。較大的批量大小通常更有效,但是要以增加的記憶體開銷為代價。

pipeline.batch.delay:在建立 pipeline 事件批處理時,以毫秒為機關等待每個事件多長時間,然後才向 pipeline 工作者分發小批處理。

pipeline.unsafe_shutdown:當設定為true時,強制Logstash在關閉期間退出,即使記憶體中仍然存在正在執行的事件。預設情況下,Logstash将拒絕退出,直到所有接收到的事件都被推送到輸出為止。啟用此選項會導緻關閉期間的資料丢失。

path.config:主管道的Logstash配置的路徑。

config.string:包含用于主管道的管道配置的字元串。

config.test_and_exit:當設定為true時,檢查配置是否有效,然後退出。注意,這個設定沒有檢查grok模式的正确性。Logstash可以從一個目錄讀取多個配置檔案。

config.reload.automatic:當設定為true時,定期檢查配置是否已更改,并在更改時重新加載配置。

config.reload.interval:Logstash以秒為機關檢查配置檔案的更改頻率。

config.debug:當設定為true時,将完全編譯的配置顯示為調試日志消息。還必須設定log.level:debug。

config.support_escapes:當設定為true時,引号字元串将處理以下轉義序列: \n 變為文字換行,\r 變為回車符, \t 變成一個文本頁籤, \\ b變成一個 backslash \,\" 變成一個雙引号,\' 變為引号。

modules:在配置時,子產品必須位于上表描述的嵌套YAML結構中。

queue.type:用于事件緩沖的内部隊列模型。為基于記憶體的遺留隊列指定記憶體,或為基于磁盤的ACKed 隊列(持久隊列)指定持久記憶體。

path.queue:用于事件緩沖的内部隊列模型。為基于記憶體的遺留隊列指定記憶體,或為基于磁盤的ACKed 隊列指定持久記憶體。

queue.page_capacity:啟用持久隊列時使用的頁資料檔案的大小(queue.type: persisted)。隊列資料由分隔成頁的僅附加的資料檔案組成。

queue.max_events:啟用持久隊列時隊列中未讀事件的最大數量(queue.type: persisted)

queue.max_bytes:隊列總容量的位元組數。確定磁盤驅動器的容量大于這裡指定的值。如果同時指定了queue.max_events and queue.max_bytes,則Logstash使用首先達到的任何條件。

queue.checkpoint.acks:在啟用持久隊列時強制檢查點之前ACKed事件的最大數量(queue.type:persisted)。指定queue.checkpoint.acks:0以将該值設定為.。

queue.checkpoint.writes:在啟用持久隊列時強制檢查點之前寫入事件的最大數量(queue.type:persisted)。指定queue.checkpoint.write:0以将該值設定為.。

queue.drain:啟用後,Logstash将等待,直到持久隊列耗盡後才關機。

dead_letter_queue.enable:訓示Logstash啟用插件支援的dead letter Queue特性的标志。

dead_letter_queue.max_bytes:每個dead letter 隊列的最大大小。如果條目将增加超出此設定的dead letter 隊列的大小,則會删除這些條目。

path.dead_letter_queue:存儲資料檔案的目錄路徑,用于dead letter 隊列。

http.host:度量REST端點的綁定位址。

http.port:度量REST端點的綁定端口。

log.level:日志級别。fatal,error,warn,info,debug,trace。

log.format:日志格式。設定為json以JSON格式登入,或者直接使用Object#.inspect。

path.logs:日志目錄位置。

path.plugins:在哪裡可以找到自定義插件。您可以多次指定此設定以包括多個路徑。插件應該位于特定的目錄層次結構中PATH/logstash/TYPE/NAME.rb,其中TYPE是輸入、過濾器、輸出或編解碼器,而NAME是插件的名稱。

pipelines.yml:

如果需要在同一程序中運作多個管道,則Logstash提供了一種通過名為 pipelines.yml 的配置檔案執行此操作的方法。該檔案必須放在 path.settings 檔案夾中,并遵循以下結構

- pipeline.id: my-pipeline_1 path.config: "/etc/path/to/p1.config" pipeline.workers: 3 - pipeline.id: my-other-pipeline path.config: "/etc/different/path/p2.cfg" queue.type: persisted

該檔案以YAML格式化,并包含字典清單,其中每個字典描述一個pipeline,每個鍵/值對指定該 pipeline 的設定。該示例顯示了由它們的ID和配置路徑描述的兩個不同的管道。對于第一個管道,pipeline.workers 的值設定為3,而在另一個管道中,啟用持久隊列特性。未在pipelines.yml 檔案中顯式設定的設定值将傳回到logstash.yml設定檔案中指定的預設值。

如果目前配置的事件流不共享相同的輸入/過濾器和輸出,并且使用标記和條件彼此分離,則使用多個管道尤其有用。

在單個執行個體中具有多個 pipeline 還允許這些事件流具有不同的性能和持久性參數(例如,針對 pipeline 工作者和持久隊列的不同設定)。這種分離意味着一個管道中的阻塞輸出不會在另一個管道中施加背壓。

也就是說,考慮到預設值針對單個管道進行調整,考慮管道之間的資源競争非常重要。是以,例如,考慮減少每個 pipeline 使用的 pipeline 123456

工作者的數量,因為預設情況下,每個流水線每個CPU核心将使用一個工作者。

持久隊列和死信隊列在每個管道上被隔離,它們的位置由 pipeline.id 值隔開。

jvm.options:

log4j2.properties:

Logstash在其操作期間發出内部日志,這些日志被放置在 LS_HOME/logs (或者 /var/log/logstash用于DEB/RPM)中。預設的日志記錄級别是INFO。Logstash的日志記錄架構基于 Log4j 2 架構,并且其大部分功能都直接向使用者公開。

您可以為特定的子系統、子產品或插件配置日志記錄。

當需要調試問題時,特别是插件的問題時,請考慮将日志記錄級别提高到DEBUG以獲得更多的詳細消息。例如,如果正在調試Elasticsearch Output的問題,則可以僅針對該元件增加日志級别。這種方法減少了過度日志記錄的噪音,并幫助關注問題區域。

startup.options:

繼續閱讀