logstash 原理(含部署)

news2024/11/23 11:12:22

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 => false
       xpath => [
         "//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 => true
       what => "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过滤器配置

 ruby
 filter {
   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队列配置

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

5.batching编辑模式配置

 ruby
 input {
   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.coloradmin.cn/o/883121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音视频技术开发周刊 | 306

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 人工智能研究人员声称&#xff0c;通过Zoom音频检测击键的准确率为93% 通过记录按键并训练深度学习模型&#xff0c;三位研究人员声称&#xff0c;基于单个按键的声音特征…

前后端分离------后端创建笔记(11)用户删除

B站视频&#xff1a;30-用户删除&结束语_哔哩哔哩_bilibili 1、现在我们要做一个删除的功能 1.1 首先做一个删除的功能接口&#xff0c;第一步先来到后端&#xff0c;做一个删除的接口 2、删除我们用Delete请求 3、方法名我给他改一下 3.1这里给他调一下删除方法&#xf…

【Vue-Router】导航守卫

前置守卫 main.ts import { createApp } from vue import App from ./App.vue import {router} from ./router // import 引入 import ElementPlus from element-plus import element-plus/dist/index.css const app createApp(App) app.use(router) // use 注入 ElementPlu…

《算法竞赛·快冲300题》每日一题:“圆内的最短距离”

《算法竞赛快冲300题》将于2024年出版&#xff0c;是《算法竞赛》的辅助练习册。 所有题目放在自建的OJ New Online Judge。 用C/C、Java、Python三种语言给出代码&#xff0c;以中低档题为主&#xff0c;适合入门、进阶。 文章目录 题目描述题解C代码Java代码Python代码 “ 圆…

第五章 Opencv图像处理框架实战 5-10 文档扫描OCR识别

一、整体流程演示 上一篇我们进行了银行卡数字识别,这次我们利用opnecv等基础图像处理方法实现文档扫描OCR识别,该项目可以对任何一个文档,识别扫描出该文档上所有的文字信息。 为了方便后续程序运行,大家可以在Run->Edit Configuration中配置相关参数,选择相应编译器…

使用PostgreSQL构建强大的Web应用程序:最佳实践和建议

PostgreSQL是一个功能强大的开源关系型数据库,它拥有广泛的用户群和活跃的开发社区。越来越多的Web应用选择PostgreSQL作为数据库 backend。如何充分利用PostgreSQL的特性来构建健壮、高性能的Web应用?本文将给出一些最佳实践和建议。 一、选择合适的PostgreSQL数据类型 Pos…

CentOS系统环境搭建(三)——Centos7安装DockerDocker Compose

centos系统环境搭建专栏&#x1f517;点击跳转 Centos7安装Docker&Docker Compose 使用 yum 安装Docker 内核 [rootVM-4-17-centos ~]# uname -r 3.10.0-1160.88.1.el7.x86_64Docker 要求 CentOS 系统的内核版本高于 3.10 更新 yum yum update安装需要的软件包&#x…

Kubernetes Pod控制器

Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启策略无效&#xf…

Field injection is not recommended

文章目录 1. 引言2. 不推荐使用Autowired的原因3. Spring提供了三种主要的依赖注入方式3.1. 构造函数注入&#xff08;Constructor Injection&#xff09;3.2. Setter方法注入&#xff08;Setter Injection&#xff09;3.3. 字段注入&#xff08;Field Injection&#xff09; 4…

并发编程系列-CompletableFuture

利用多线程来提升性能&#xff0c;实质上是将顺序执行的操作转化为并行执行。仔细观察后&#xff0c;你还会发现在顺序转并行的过程中&#xff0c;一定会牵扯到异步化。举个例子&#xff0c;现在下面这段示例代码是按顺序执行的&#xff0c;为了优化性能&#xff0c;我们需要将…

管家婆软件被删除了怎样恢复?

一、使用了云服务器 使用了云服务器&#xff0c;数据不会丢失&#xff0c;只需要重新安装就好了。 1、如果使用的是B/S架构的&#xff0c;比如ERP等&#xff0c;我们可以直接把网址复制到浏览器&#xff0c;访问即可。 2、如果使用的是C/S架构的&#xff0c;比如辉煌2&#x…

每天一道leetcode:剑指 Offer 34. 二叉树中和为某一值的路径(中等图论深度优先遍历递归)

今日份题目&#xff1a; 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例1 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu…

三维直方图

三维直方图更直观&#xff0c;借助matlab的bar3&#xff0c;可以绘制三维直方图。 clc; clearvars; cimread(lena.jpg); width 0.8; %默认值是0.8&#xff0c;根据需要修改。 % hbar3(c,width,r); hbar3(c); set(h,EdgeColor,r) % set(h,facecolor,b) % set(h(1),facecolor…

提速 40%,融云基于 QUIC 深度优化通信协议

8 月 17 日&#xff08;本周四&#xff09;&#xff0c;融云直播课从排查问题到预警风险&#xff0c;社交产品如何更好保障体验、留住用户&#xff1f;欢迎点击报名~ 各分位&#xff08;P99、P95、P50&#xff09;连接速度提升 30%~50%&#xff1b;关注【融云全球互联网通信云】…

macOS CLion 使用 bits/stdc++.h

macOS 下 CLion 使用 bits/stdc.h 头文件 terminal运行 brew install gccCLion里配置 -D CMAKE_CXX_COMPILER/usr/local/bin/g-11

Microsoft ISA服务器配置及日志分析

Microsoft ISA 分析器工具&#xff0c;可分析 Microsoft ISA 服务器&#xff08;或 Forefront 威胁管理网关服务器&#xff09;的日志并生成安全和流量报告。支持来自 Microsoft ISA 服务器组件的以下日志&#xff1a; 数据包过滤器ISA 服务器防火墙服务ISA 服务器网络代理服务…

【0基础学爬虫】爬虫基础之网络请求库的使用

大数据时代&#xff0c;各行各业对数据采集的需求日益增多&#xff0c;网络爬虫的运用也更为广泛&#xff0c;越来越多的人开始学习网络爬虫这项技术&#xff0c;K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章&#xff0c;为实现从易到难全方位覆盖&#xff0c;特设【0基础学…

Qt5开发环境-银河麒麟V10ARM平台

目录 前言1.源码下载2.编译安装2.1 安装依赖2.2 编译2.3 遇到的问题2.4 安装 3.编译qtwebengine3.1 安装依赖库3.2 编译3.3 遇到的问题3.4 安装 4.配置开发环境5.测试6.程序无法输入中文的问题总结 前言 近期因参与开发的某个软件需要适配银河麒麟v10arm 平台&#xff0c;于是…

算法与数据结构(五)--二叉树入门

符号表的增删查操作&#xff0c;随着元素个数N的增多&#xff0c;其耗时也是线性增多的&#xff0c;时间复杂度都是O(n)&#xff0c;为了提高运算效率&#xff0c;我们学习树这种数据结构。 目录 一.树的基本定义 二.树的相关术语 三.二叉树的基本定义 四.二叉树的链表实现…

mysql-5.5.62-win32安装与使用

1.为啥是这个版本而不是当前最新的8.0&#xff1f; 因为我要用32位。目前mysql支持win32的版本最新只到5.7.33。 首先&#xff0c;到官网MySQL :: MySQL Downloads 然后选 选一个自己喜欢的版本就好。我这里是如标题版本。下载32位的zip。然后回来解压。 完了创建系统环境变…