Logstash 容器化

鏡像

官方鏡像地址 ,包含了 ELK 三個組件 和 Fielbeat

docker pull docker.elastic.co/logstash/logstash:6.5.2

管道配置

如果您不向Logstash提供管道的配置,它將使用最小配置運行,該配置偵聽來自Beats輸入插件的消息 并輸出到stdout

1. 可以將本地的含有配置文件的整個目錄以 bind-mounts 的方式和容器內(nèi)的目錄 /usr/share/logstash/pipeline/ 進行映射。

docker run --rm -it --mount type=bind,src=/logstash/pipeline/,dst=/usr/share/logstash/pipeline/ docker.elastic.co/logstash/logstash:6.5.2

2. 也可以將具體的管道配置文件映射到容器中。

以下示例顯示的是,如何配置Logstash以偵聽本機的 5044 端口來獲取由任何 Beats 插件(比如: filebeat)發(fā)送來的事件,并輸出到標準輸出的。

logstash_stdout.conf

input {
  beats {
    port => 5044             # 監(jiān)聽的端口
    host => "0.0.0.0"      # 監(jiān)聽的本地 ip 地址,這里是全部地址
  }
}
output {
  stdout { codec => rubydebug }
}

運行容器

docker run -it --rm --name=logstash65 --mount type=bind,src=$(pwd)/logstash_stdout.conf,dst=/usrl/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:6.5.2

添加自定義的配置文件

1. 也可以掛載整個目錄

docker run --rm -it -v ~/settings/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:6.5.2

2. 同樣可以掛載單個文件

docker run --rm -it -v ~/settings/logstash.yml:/usr/share/logstash/config/logstash.yml docker.elastic.co/logstash/logstash:6.5.2

3. 也可以使用自定義鏡像的方式進行配置

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

4. 配置文件中的默認值

下面是 Docker 容器的默認值

key value
http.host 0.0.0.0
xpack.monitoring.elasticsearch.url http://elasticsearch:9200

日志配置

Logstash 容器默認會把日志輸出到標準輸出。

要想輸出到指的文件,掛載覆蓋掉容器里的這個文件

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

配置日志的方式

Logstash 默認日志記錄級別為INFO。Logstash的日志框架基于 Log4j 2框架

您可以對特定子系統(tǒng),模塊或插件進行的日志記錄的配置。

您可以使用該log4j2.properties文件或Logstash API 配置日志記錄。

  • log4j2.properties文件。
    通過該log4j2.properties 文件所做的更改要求您重新啟動Logstash以使更改生效。更改將 在后續(xù)重新啟動時保留。
    -Loging API。
    通過Logging API進行的更改可立即生效,無需重新啟動。重新啟動Logstash后,更改不會保留。

1.Log4j2 文件的方式配置

配置日志級別和輸出名字示例

logger.elasticsearchoutput.name = logstash.outputs.elasticsearch
logger.elasticsearchoutput.level = debug

2. Loging API 的方式配置

可以通過日志記錄API動態(tài)更新日志記錄級別。這些設(shè)置立即生效,無需重啟。

a. 查看日志配置信息
curl -XGET 'localhost:9600/_node/logging?pretty'
b. 更新日志級別
curl -XPUT 'localhost:9600/_node/logging?pretty' -H 'Content-Type: application/json' -d'
{
    "logger.logstash.outputs.elasticsearch" : "DEBUG",
    "logger.logstash.codecs.rubydebug" : "DEBUG"
}
'
c. 重置日志級別

要重置可能已通過日志記錄API動態(tài)更新的任何日志記錄級別,請發(fā)送PUT請求 _node/logging/reset。所有日志記錄級別都將恢復(fù)為log4j2.properties文件中指定的值。

curl -XPUT 'localhost:9600/_node/logging/reset?pretty'

日志文件位置

您可以使用--path.logs設(shè)置指定日志文件位置。

慢日志

Logstash的Slowlog添加了對通過管道時在特定事件上花費了異常時間記錄的功能。就像普通的應(yīng)用程序日志一樣,您可以在--path.logs目錄中找到slowlogs 。

logstash.yml 可以使用以下選項在設(shè)置文件中配置Slowlog :

slowlog.threshold.warn (default: -1)
slowlog.threshold.info (default: -1)
slowlog.threshold.debug (default: -1)
slowlog.threshold.trace (default: -1)

默認情況下禁用Slowlog。默認閾值設(shè)置 -1nanos為表示無限閾值。不會調(diào)用slowlog。

啟用慢日志

這些slowlog.threshold字段使用時間值格式,可以實現(xiàn)各種觸發(fā)間隔。您可以使用以下時間單位指定范圍:

  • nanos(納秒)
  • micros(微秒)
  • ms(毫秒)
  • s (秒)
  • m(分鐘)
  • h(小時)
  • d(天)。

當您提高日志級別時,Slowlog 會變得更加敏感并記錄更多事件。

Example:

slowlog.threshold.warn: 2s
slowlog.threshold.info: 1s
slowlog.threshold.debug: 500ms
slowlog.threshold.trace: 100ms

在這個例子中:

  • 如果日志級別設(shè)置為warn,則日志顯示處理時間超過2秒的事件。
  • 如果日志級別設(shè)置為info,則日志顯示要處理的時間超過1秒的事件。
  • 如果日志級別設(shè)置為trace,則日志顯示要處理的時間超過100毫秒的事件。
  • 如果日志級別設(shè)置為debug,則日志顯示處理時間超過500毫秒的事件。

日志包括導致速度緩慢的完整事件和過濾器配置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容