zoukankan      html  css  js  c++  java
  • logstash系列-入门整理

    定位:采集日志源和解析处理日志事件

    一、理解input,queue,pipline运行的线程模型

     

    简述:

    (1)每个Input启动一个线程,从对应数据源获取数据

    (2)Input会将数据写入一个队列:默认为内存中的有界队列(意外停止会导致数据丢失)。为了防止数丢失Logstash提供了两个特性:

    Persistent Queues:通过磁盘上的queue来防止数据丢失

    Dead Letter Queues:保存无法处理的event(仅支持Elasticsearch作为输出源) 

    (3)Logstash会有多个pipeline worker, 每一个pipeline worker会从队列中取一批数据,然后执行filter和output(worker数目及每次处理的数据量由配置确定)

    二、Persistent Queue说明

    https://www.elastic.co/guide/en/logstash/current/persistent-queues.html

    提供at-least-once保证消息不丢失,但不保证不重复

    局限性:tcp,udp,ZeroMQ,以及没有ack机制的input类型,无法保证数据不丢失;持久化硬盘损坏,故障情况无法处理

    三、配置处理三阶段

    四、Reload过程

    https://www.elastic.co/guide/en/logstash/current/reloading-config.html

    命令:bin/logstash -f xxx.config --config.reload.automatic,(reload和-e命令不能同时使用)

    可选参数:--config.reload.interval <interval>:指定检查时间间隔(单位s,参数值中需要带上单位s),logstash默认每3秒检查一次配置参数变化

    如果启动logstash时未启用reload,在运行中想强制reload,可以使用SIGHUP(signal hangup)参数执行如下命令:

      kill -SIGHUP <pid>   

    原理:

    • 检测到配置文件变化
    • 通过停止所有输入停止当前pipline
    • 用新的配置创建一个新的管道
    • 校验配置文件语法是否正确
    • 校验所有的输入和输出是否可以初始化
    • 校验成功使用新的pipeline替换当前的pipeline,
    • 校验失败,使用旧的继续工作,将校验信息输出到控制台

    在重载过程中,jvm不会重启

    备忘:syslog的重载配置文件会崩溃

    五、4类插件

    Inputs:file,syslog,kafka,beats,log4j,jdbc 等

    Filters:处理数据如格式转换,数据派生等,常见:grok, mutate, drop, clone等

    Outputs:kafka, elastcisearch,file,

    Codecs:Codecs不是一个单独的流程,而是在输入和输出等插件中用于数据转换的模块,用于对数据进行编码处理,常见的如json,multiline

  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/yb38156/p/13054004.html
Copyright © 2011-2022 走看看