logstash 原理(含部署)

1、ES原理

原理 使⽤filebeat来上传⽇志数据,logstash进⾏⽇志收集与处理,elasticsearch作为⽇志存储与搜索引擎,最后使⽤kibana展现⽇志的可视化输出。所以不难发现,⽇志解析主要还 是logstash做的事情

从上图中可以看到,logstash主要包含三⼤模块:

1、INPUTS: 收集所有数据源的⽇志数据([源有file、redis、beats等,filebeat就是使⽤了beats源*);

2、FILTERS: 负责数据处理与转换、解析、整理⽇志数据(常⽤:grok、mutate、drop、clone、geoip)

3、OUTPUTS: 将解析的⽇志数据输出⾄存储器([elasticseach、file、syslog等);

通过配置Logstash的管道(pipeline),你可以定义数据的收集、处理和输出过程。每个管道由输入插件、过滤器插件和输出插件组成,它们一起协作来实现特定的数据流转

filters常用的过滤器插件如下:

  1. grok 过滤器: 场景:解析包含时间戳、日志级别和消息的日志行。

     rubyCopy codegrok {match => {"message" => "\[%{TIMESTAMP_ISO8601:time}\] \[%{WORD:level}\] %{GREEDYDATA:msg}"}}
  2. mutate 过滤器: 场景:清理字段,将 IP 地址字段重命名为 "client_ip"。

     rubyCopy codemutate {rename => { "ip" => "client_ip" }}
  3. date 过滤器: 场景:将时间戳字段转换为可操作的日期类型。

     rubyCopy codedate {match => ["timestamp", "yyyy-MM-dd HH:mm:ss"]target => "log_date"}
  4. json 过滤器: 场景:解析包含嵌套 JSON 数据的日志消息。

     rubyCopy codejson {source => "message"target => "parsed_json"}
  5. kv 过滤器: 场景:解析 HTTP 查询字符串中的参数。

     rubyCopy codekv {field_split => "&"value_split => "="source => "query_string"}
  6. xml 过滤器: 场景:解析包含 XML 数据的日志消息。

     rubyCopy codexml {source => "message"store_xml => falsexpath => ["//user/name/text()", "username","//user/age/text()", "user_age"]}
  7. translate 过滤器: 场景:将日志中的状态码映射为更可读的状态描述。

     rubyCopy codetranslate {field => "status_code"dictionary => ["200", "OK","404", "Not Found","500", "Internal Server Error"]}
  8. useragent 过滤器: 场景:解析用户代理字符串,提取浏览器和操作系统信息。

     rubyCopy codeuseragent {source => "user_agent"target => "user_agent_info"}
  9. geoip 过滤器: 场景:将 IP 地址解析为地理位置信息。

     rubyCopy codegeoip {source => "client_ip"target => "geoip"}
  10. multiline 过滤器: 场景:合并多行堆栈跟踪日志成单个事件。

     rubyCopy codemultiline {pattern => "^\s"negate => truewhat => "previous"}

2.Logstash性能优化主要体现在以下几个方面:

1.多pipeline配置

多pipeline配置。可以将不同的输入分割到不同的pipeline,每个pipeline有独立的过滤器和输出,这可以提高处理效率。pipeline之间的数据交互可以通过队列实现。

 ruby# 管道1:接收日志输入input { stdin { } }  ​filter { grok { } }output { stdout { } }​# 管道2:从Kafka读取数据input { kafka { } }​filter { json { } } output { elasticsearch { } }

2.Grok过滤器配置

 rubyfilter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }add_field => { "timestamp" => "%{DATE:timestamp}" }}}

3.Elasticsearch输出配置

 ruby  output {elasticsearch { hosts => ["http://localhost:9200"]index => "logstash-%{+YYYY.MM.dd}"}}

4.Redis队列配置

 rubyoutput {redis { host => "127.0.0.1"port => 6379db   => 0key  => "logstash" }}

5.batching编辑模式配置

 rubyinput {file {path => "/var/log/messages"start_position => "beginning" sincedb_path => "/dev/null"codec => "json"mode => "batch"    # 配置batching模式batch_size => 1000 # 每1000条记录批量读取}}

6.调整JVM内存配置在 jvm.options文件中配置,例如:

 -Xms2g-Xmx2g

7.并行处理配置 在 logstash.yml中配置:

 yml
pipeline.workers: 2  #配置工作线程数为2
pipeline.output.workers: 2 #输出线程也配置为2

logstash 配置文件

logstash 配置文件配置

vim  logstash.conf 

input {
  kafka {
    bootstrap_servers => ["192.168.190.159:9092"]
    topics_pattern  => ["hwb\.test|ywyth-sc|zj_test"]
    consumer_threads => 5
    codec => json
    auto_offset_reset => latest
    group_id => "hwb"
  }
}

filter {
        ruby {
        code => "event.timestamp.time.localtime"
        }
        mutate {
        remove_field => ["beat"]
        }
        mutate {
                split => ["message"," "]
                add_field => { "level" => "%{[message][3]}" }
        }
        mutate {
        add_field => {
            "index_name" => "hwb.test,%{[ywyth-sc]}"
                }
        }
        grok {
             match => {"message" => "\[(?<time>\d+-\d+-\d+\s\d+:\d+:\d+)\] \[(?<level>\w+)\] (?<thread>[\w|-]+) (?<class>[\w|\.]+) (?<lineNum>\d+):(?<msg>.+)"
             }
        }
}

output {
   elasticsearch {
         hosts => ["192.168.190.161:9200"]
         index => "%{[fields][log_topic]}"
         codec => "json"
   }
}
 

启动logstash

nohup ./logstash -f  ../config/logstash.conf & 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/92439.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机第一季:零基础13——AD和DA转换

1&#xff0c;AD转换基本概念 51 单片机系统内部运算时用的全部是数字量&#xff0c;即0 和1&#xff0c;因此对单片机系统而言&#xff0c;无法直接操作模拟量&#xff0c;必须将模拟量转换成数字量。所谓数字量&#xff0c;就是用一系列0 和1 组成的二进制代码表示某个信号大…

winform中嵌入cefsharp, 并使用selenium控制

正常说&#xff0c; 需要安装的包 下面是所有的包 全部代码 using OpenQA.Selenium.Chrome; using OpenQA.Selenium; using System; using System.Windows.Forms; using CefSharp.WinForms; using CefSharp;namespace WindowsFormsApp2 {public partial class Form1 : Form{//…

【Python】Web学习笔记_flask(5)——会话cookie对象

HTTP是无状态协议&#xff0c;一次请求响应结束后&#xff0c;服务器不会留下对方信息&#xff0c;对于大部分web程序来说&#xff0c;是不方便的&#xff0c;所以有了cookie技术&#xff0c;通过在请求和响应保温中添加cookie数据来保存客户端的状态。 html代码&#xff1a; …

数据统计与可视化的Dash应用程序

在数据分析和可视化领域&#xff0c;Dash是一个强大的工具&#xff0c;它结合了Python中的数据处理库&#xff08;如pandas&#xff09;和交互式可视化库&#xff08;如Plotly&#xff09;以及Web应用程序开发框架。本文将介绍如何使用Dash创建一个简单的数据统计和可视化应用程…

使用 BERT 进行文本分类 (02/3)

​ 一、说明 在使用BERT&#xff08;1&#xff09;进行文本分类中&#xff0c;我向您展示了一个BERT如何标记文本的示例。在下面的文章中&#xff0c;让我们更深入地研究是否可以使用 BERT 来预测文本是使用 PyTorch 传达积极还是消极的情绪。首先&#xff0c;我们需要准备数据…

冉冉升起的星火,再度升级迎来2.0时代!

文章目录 前言权威性评测结果 星火大模型多模态功能插件功能简历生成文档问答PPT生成 代码能力 福利 前言 前几天从技术群里看到大家都在谈论《人工智能大模型体验报告2.0》里边的内容&#xff0c;抱着好奇和学习的态度把报告看了一遍。看完之后瞬间被里边提到的科大讯飞的星火…

PHP实现在线年龄计算器

1. 输入日期查询年龄 2. php laravel框架实现 代码 /*** 在线年龄计算器*/public function ageDateCal(){// 输入的生日时间$birthday $this->request(birthday);// 当前时间$currentDate date(Y-m-d);// 计算周岁$age date_diff(date_create($birthday), date_create($…

SQL Server基础之游标

一&#xff1a;认识游标 游标是SQL Server的一种数据访问机制&#xff0c;它允许用户访问单独的数据行。用户可以对每一行进行单独的处理&#xff0c;从而降低系统开销和潜在的阻隔情况&#xff0c;用户也可以使用这些数据生成的SQL代码并立即执行或输出。 1.游标的概念 游标是…

LiveDataBus 其中的一个库LiveEventBus库的源码解析

EventBus事件通知的框架我们用了很久了&#xff0c;随着LiveData的出现&#xff0c;出现了LiveDataBus来替代EventBus,因为LiveDataBus 会考虑生命周期&#xff0c;EventBus你可能要注意在生命周期结束的时候unregister的&#xff0c;否则会有内存泄漏等问题&#xff0c;而Live…

采用pycharm在虚拟环境使用pyinstaller打包python程序

一年多以前&#xff0c;我写过一篇博客描述了如何虚拟环境打包&#xff0c;这一次有所不同&#xff0c;直接用IDE pycharm构成虚拟环境并运行pyinstaller打包 之前的博文&#xff1a; 虚拟环境venu使用pyinstaller打包python程序_伊玛目的门徒的博客-CSDN博客 第一步&#xf…

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘

【深入了解PyTorch】PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘1. 引言2. 梯度可视化3. 特征重要性分析4. 结论PyTorch模型解释性和可解释性:探索决策过程与预测结果的奥秘 在机器学习和深度学习…

临床试验设计-平行设计、析因设计、交叉设计

平行设计、析因设计、交叉设计是临床试验中最重要的三种设计方法。 平行设计&#xff1a;最常见 交叉设计&#xff1a;生物等效性试验 析因设计&#xff1a;药物配伍 一、平行设计 双臂试验&#xff08;two-arm study&#xff09;&#xff08;两组&#xff09;&#xff1a;试验…

Steam 灵感的游戏卡悬停效果

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Steam 灵感的游戏卡悬停效果</title><style>* {margin: …

【IMX6ULL驱动开发学习】04.应用程序和驱动程序数据传输和交互的4种方式:非阻塞、阻塞、POLL、异步通知

一、数据传输 1.1 APP和驱动 APP和驱动之间的数据访问是不能通过直接访问对方的内存地址来操作的&#xff0c;这里涉及Linux系统中的MMU&#xff08;内存管理单元&#xff09;。在驱动程序中通过这两个函数来获得APP和传给APP数据&#xff1a; copy_to_usercopy_from_user …

【Docker】Docker network之bridge、host、none、container以及自定义网络的详细讲解

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前学习C/C、算法、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL&…

分布式定时任务系列5:XXL-job中blockingQueue的应用

传送门 分布式定时任务系列1&#xff1a;XXL-job安装 分布式定时任务系列2&#xff1a;XXL-job使用 分布式定时任务系列3&#xff1a;任务执行引擎设计 分布式定时任务系列4&#xff1a;任务执行引擎设计续 Java并发编程实战1&#xff1a;java中的阻塞队列 引子 这篇文章的…

二.net core 自动化发布到docker (Jenkins安装之后向导)

目录 ​​​​​​​​​​​​​​ 参考资料&#xff1a;https://www.jenkins.io/doc/book/installing/docker/#setup-wizard Post-installation setup wizard.(安装后安装向导) 基于上一篇文章安装&#xff0c;在安装并运行Jenkins&#xff08;不包括使用Jenkins Opera…

日志采集分析ELK

这里的 ELK其实对应三种不同组件 1.ElasticSearch&#xff1a;基于Java&#xff0c;一个开源的分布式搜索引擎。 2.LogStash&#xff1a;基于Java&#xff0c;开源的用于收集&#xff0c;分析和存储日志的工具。&#xff08;它和Beats有重叠的功能&#xff0c;Beats出现之后&a…

6.3 社会工程学攻击

数据参考&#xff1a;CISP官方 目录 社会工程学攻击概念社会工程学攻击利用的人性 “弱点”典型社会工程学攻击方式社会工程学攻击防护 一、社会工程学攻击概念 什么是社会工程学攻击 也被称为 "社交工程学" 攻击利用人性弱点 (本能反应、贪婪、易于信任等) 进…

Reis过期删除策略

介绍 在Redis中&#xff0c;我们可以为键值对设置有效期&#xff0c;现在面临一个问题&#xff0c;如果一个键值对过期了&#xff0c;那么我们应该怎么删除呢&#xff1f; 我们目前有三种方案&#xff1a; 定时删除&#xff1a;在设置键的过期时间的同时&#xff0c;为此键设…