• 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

  • 相关阅读:
    3(翻译)如何在cocos2d里面使用动画和spritesheet
    Objectivec2.0 每种数据类型定义属性的方法
    cocos2d 入门必备4个基本概念
    如何在Mac上搭建自己的服务器——Nginx
    JN_0001:在微信朋友圈分享时长大于10s的视频
    JN_0002:Win10禁止U盘拷贝文件的方法
    abstract class 和 interface区别
    ref和out
    .Net配置错误页
    Unity3d 物体沿着正七边形轨迹移动
  • 原文地址:https://www.cnblogs.com/yb38156/p/13054004.html
Copyright © 2020-2023  润新知