天天看點

docker-部署logstach前言管道配置設定Docker預設日志配置

前言

logstach是一個采集日志的架構,本文介紹如何在docker上部署logstash系統。更多資訊請參考官方文檔。

管道配置

必須将管道配置放在Logstash可以找到的位置。預設情況下,容器将在/usr/share/logstash/pipeline/中查找管道配置檔案。

在本例中,我們使用綁定裝載的卷通過docker run指令提供配置:

然後,Logstash将解析主機目錄~/pipeline/中的每個檔案作為管道配置。

如果您不為Logstash提供配置,它将使用一個最小的配置來運作,該配置偵聽來自Beats輸入插件的消息,并将接收到的任何消息回報給stdout。在本例中,啟動日志将類似于以下内容:

Sending Logstash logs to /usr/share/logstash/logs which is now configured via log4j2.properties.
[2016-10-26T05:11:34,992][INFO ][logstash.inputs.beats    ] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
[2016-10-26T05:11:35,068][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2016-10-26T05:11:35,078][INFO ][org.logstash.beats.Server] Starting server on port: 5044
[2016-10-26T05:11:35,078][INFO ][logstash.pipeline        ] Pipeline main started
[2016-10-26T05:11:35,105][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
           

這是映像的預設配置,在

/usr/share/logstash/pipeline/logstash.conf

中定義。如果這是您觀察到的行為,請確定正确地選擇了您的管道配置,并且替換

logstash.conf

或整個

pipeline

目錄。

設定

該映像提供了幾種配置設定的方法。傳統的方法是提供一個定制的logstash。但是也可以使用環境變量來定義設定。

綁定裝載設定檔案

設定檔案也可以通過綁定挂載提供。Logstash希望在

/usr/share/logstash/config/

上找到它們。

有可能提供一個完整的目錄,包含所有需要的檔案:

或者,可以挂載單個檔案:

綁定裝載的配置檔案将在容器中保留與它們在主機系統上相同的權限和所有權。確定設定權限,使檔案具有可讀性,理想情況下,容器的logstash使用者(UID 1000)不可寫。

自定義鏡像

當然,綁定裝載的配置并不是唯一的選擇。如果你喜歡不可變的基礎設施的方法,你可以準備一個自定義鏡像包含你的配置使用Dockerfile像這樣:

FROM docker.elastic.co/logstash/logstash:7.9.2
RUN rm -f /usr/share/logstash/pipeline/logstash.conf
ADD pipeline/ /usr/share/logstash/pipeline/
ADD config/ /usr/share/logstash/config/
           

一定要替換或删除自定義映像中的logstash.conf,這樣就不會從基本映像保留示例配置。

環境變量配置

在Docker下,可以通過環境變量配置Logstash設定。當容器啟動時,一個助手程序檢查環境中可以映射到Logstash設定的變量。在環境中找到的設定将合并到logstash中。作為容器啟動。

為了與容器編排系統相容,這些環境變量都以大寫字母書寫,并以下劃線作為分隔符

下面是一些翻譯示例:

表1 Docker環境變量示例

環境變量 Logstash設定
PIPELINE_WORKERS pipeline.workers
LOG_LEVEL log.level
MONITORING_ENABLED monitoring.enabled

通常,設定文檔中列出的任何設定都可以使用這種技術配置。

使用環境變量定義設定會導緻logstash.yml需要在适當的地方修改。如果使用logstash.yml是從主機系統綁定裝載的,這種行為可能不受歡迎。是以,不建議将綁定挂載技術與環境變量技術結合使用。最好選擇一個定義Logstash設定的方法。

Docker預設

使用Docker鏡像時,以下設定有不同的預設值:

http.host 0.0.0.0
monitoring.elasticsearch.hosts http://elasticsearch:9200
設定monitoring.elasticsearch.hosts未在-oss鏡像中定義。

這些設定在預設的logstash.yml中定義。可以使用自定義logstash.yml或通過環境變量覆寫它們。

如果用自定義版本替換

logstash.yml

,請確定将上述預設值複制到自定義檔案中,如果您想保留它們的話。如果沒有,它們将被新檔案“屏蔽”。

日志配置

在Docker下,Logstash日志預設為标準輸出。要改變這種行為,請使用上面的任何技術替換

/usr/share/logstash/config/log4j2.properties

上的檔案。

繼續閱讀