美文网首页
Logstash 容器化

Logstash 容器化

作者: 运维开发_西瓜甜 | 来源:发表于2018-12-08 05:41 被阅读306次

    镜像

    官方镜像地址 ,包含了 ELK 三个组件 和 Fielbeat

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

    管道配置

    如果您不向Logstash提供管道的配置,它将使用最小配置运行,该配置侦听来自Beats输入插件的消息 并输出到stdout

    1. 可以将本地的含有配置文件的整个目录以 bind-mounts 的方式和容器内的目录 /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)发送来的事件,并输出到标准输出的。

    logstash_stdout.conf

    input {
      beats {
        port => 5044             # 监听的端口
        host => "0.0.0.0"      # 监听的本地 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框架

    您可以对特定子系统,模块或插件进行的日志记录的配置。

    您可以使用该log4j2.properties文件或Logstash API 配置日志记录。

    • log4j2.properties文件。
      通过该log4j2.properties 文件所做的更改要求您重新启动Logstash以使更改生效。更改将 在后续重新启动时保留。
      -Loging API
      通过Logging API进行的更改可立即生效,无需重新启动。重新启动Logstash后,更改不会保留。

    1.Log4j2 文件的方式配置

    配置日志级别和输出名字示例

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

    2. Loging API 的方式配置

    可以通过日志记录API动态更新日志记录级别。这些设置立即生效,无需重启。

    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动态更新的任何日志记录级别,请发送PUT请求 _node/logging/reset。所有日志记录级别都将恢复为log4j2.properties文件中指定的值。

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

    日志文件位置

    您可以使用--path.logs设置指定日志文件位置。

    慢日志

    Logstash的Slowlog添加了对通过管道时在特定事件上花费了异常时间记录的功能。就像普通的应用程序日志一样,您可以在--path.logs目录中找到slowlogs 。

    logstash.yml 可以使用以下选项在设置文件中配置Slowlog :

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

    默认情况下禁用Slowlog。默认阈值设置 -1nanos为表示无限阈值。不会调用slowlog

    启用慢日志

    这些slowlog.threshold字段使用时间值格式,可以实现各种触发间隔。您可以使用以下时间单位指定范围:

    • 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
    

    在这个例子中:

    • 如果日志级别设置为warn,则日志显示处理时间超过2秒的事件。
    • 如果日志级别设置为info,则日志显示要处理的时间超过1秒的事件。
    • 如果日志级别设置为trace,则日志显示要处理的时间超过100毫秒的事件。
    • 如果日志级别设置为debug,则日志显示处理时间超过500毫秒的事件。

    日志包括导致速度缓慢的完整事件和过滤器配置。

    相关文章

      网友评论

          本文标题:Logstash 容器化

          本文链接:https://www.haomeiwen.com/subject/asqzcqtx.html