【分布式技术】Elastic Stack部署,实操logstash的过滤模块常用四大插件

目录

一、Elastic Stack,之前被称为ELK Stack

完成ELK与Filebeat对接

步骤一:安装nginx做测试

 步骤二:完成filebeat二进制部署

步骤三:准备logstash的测试文件filebeat.conf

步骤四:完成实验测试

二、logstash拥有强大的过滤功能,常用四种插件

1、grok

 步骤一:现在logstash的conf文件中进行filter模块的修改,添加grok插件

步骤二:完成语法测试,先测试完成

步骤三:filebeat与logstash对接  logstash与ES进行对接

​编辑

2、multiline

步骤一:准备测试日志文件

 步骤二:准备logstash的conf文件,在filter模块中配置multiline插件

步骤三:语法测试并启动logstash与ES对接

步骤五:查看kibana 进行验证

3、date

步骤一:先完成logstash的conf文件编写,完成语法检测以及启动

​编辑

步骤二:kibana前端界面验证

4、mutate数据修改插件

步骤一:准备测试文件filebeat.conf 

步骤二:完成语法检测和启动对接

​编辑步骤三: 刷新nginx访问页面 在kibana页面验证效果


一、Elastic Stack,之前被称为ELK Stack

完成ELK与Filebeat对接

步骤一:安装nginx做测试

 

 步骤二:完成filebeat二进制部署

步骤三:准备logstash的测试文件filebeat.conf

input{beats {port => "5044"}
}#filter{}output{elasticsearch{hosts => ["192.168.20.10:9200","192.168.20.8:9200","192.168.20.18:9200"]index => "%{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{+yyyy.MM.dd}"}stdout {  ##表示测试的时候,如果屏幕输出内容了,那么表示logstash与ES对接成功,如果没有输出内容,那么可能filebeat与logstash对接失败codec => rubydebug}
}

[root@nginx-test conf.d]#logstash -f filebeat.conf -t
##语法检测

 

步骤四:完成实验测试

[root@filebeat-test /usr/local/filebeat]#./filebeat -e -c filebeat.yml 
##完成filebeat与logstash对接 注意命令的位置

 

[root@nginx-test conf.d]#logstash -f filebeat.conf
##完成logstash与ES集群对接

 

 

实验完成

 

二、logstash拥有强大的过滤功能,常用四种插件

1、grok

grok可以将大文本字段分片成若干的小字段,如刚刚的日志文件,一行的信息太多,需要将message这个大文本字段给分片成若干的小字段如访问ip、请求方法、URL、状态码等

grok有两种格式(并且支持混用)

内置正则匹配格式:%{内置正则表达式:自定义的小字段名称}
自定义正则匹配格式:(?<自定义的小字段名称>自定义的正则表达式)

同时可以先在kibana的开发工具上做测试

192.168.20.1 - - [19/Jan/2024:17:08:24 +0800] "GET /123.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" "-"%{IP:client_addr}.*\[(?<quest_time>.*)\] "%{WORD:quest_method} %{URIPATHPARAM:url_method} .*" (?<response_code>\d+) .* "(?<referer_url>.*)" "(?<agent>.*)".*##实际就是用正则表达式,表达这一整行的内容

完成logstash测试

 步骤一:现在logstash的conf文件中进行filter模块的修改,添加grok插件

[root@nginx-test conf.d]#cat filebeat.conf 
input{beats {port => "5044"}
}filter{grok{match => { "message" => "%{IP:client_addr}.*\[(?<quest_time>.*)\] \"%{WORD:quest_method} %{URIPATHPARAM:url_method} .*\" (?<response_code>\d+) .* \"(?<referer_url>.*)\" \"(?<agent>.*)\".*" }}
}output{elasticsearch{hosts => ["192.168.20.10:9200","192.168.20.8:9200","192.168.20.18:9200"]index => "%{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{+yyyy.MM.dd}"}
}

步骤二:完成语法测试,先测试完成

[root@nginx-test conf.d]#logstash -f filebeat.conf -t

步骤三:filebeat与logstash对接  logstash与ES进行对接

 

2、multiline

通常来讲,日志中一条信息以一行记录,但是有的java应用的日志会分为多行记录

那么multiline作用是将多行日志内容合并成一整行  

  • pattern:用来匹配文本的表达式,也可以是grok表达式
  • negate:是否对pattern的结果取反。false:不取反,是默认值。true:取反。将多行事件扫描过程中的行匹配逻辑取反(如果pattern匹配失败,则认为当前行是多行事件的组成部分)
  • what:如果pattern匹配成功的话,那么匹配行是归属于上一个事件,还是归属于下一个事件。previous: 归属于上一个事件,向上合并。next: 归属于下一个事件,向下合并

举例实操

现在有java日志在/opt/java.log中,如图

步骤一:准备测试日志文件

 步骤二:准备logstash的conf文件,在filter模块中配置multiline插件

[root@nginx-test conf.d]#cat java.conf 
input{file {path => "/opt/java.log"start_position => "beginning"sincedb_path => "/etc/logstash/sincedb_path/log_progress"}
}filter {multiline {pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"negate => truewhat => "previous"}
}
output{elasticsearch {hosts => ["192.168.20.10:9200","192.168.20.8:9200","192.168.20.18:9200"]index => "java-%{+yyyy.MM.dd}"}
}

步骤三:语法测试并启动logstash与ES对接

步骤五:查看kibana 进行验证

3、date

用于分析字段中的日期,然后使用该日期或时间戳作为事件的logstash时间戳。

痛点:

毕竟我这个url是静态的 相对动态请求比较快 而且字节数比较小。就这样的情况下 logstash接收时间与日志时间也是会有延迟的那么对于 生产中的 比如除 查询 当然是想统一一个标准 以日志时间为时间戳那么就需要用到date插件

比如还是刚刚的filebeat采集的nginx日志,现在想要实现访问的日志时间与logstash的时间一致

步骤一:先完成logstash的conf文件编写,完成语法检测以及启动

[root@nginx-test conf.d]#cat filebeat.conf 
input{beats {port => "5044"}
}filter{grok{match => { "message" => ".*\[(?<quest_time>.*)\].*" }}date{match => ["quest_time", "dd/MMM/YYYY:HH:mm:ss Z"]target => "@timestamp"timezone => "Asia/Shanghai"} 
}output{elasticsearch{hosts => ["192.168.20.10:9200","192.168.20.8:9200","192.168.20.18:9200"]index => "%{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{+yyyy.MM.dd}"}
}

步骤二:kibana前端界面验证

 

4、mutate数据修改插件

提供了丰富的基础类型数据处理能力。可以重命名,删除,替换和修改事件中的字段

//Mutate 过滤器常用的配置选项

add_field   向事件添加新字段,也可以添加多个字段
remove_field 从事件中删除任意字段,只能删掉logstash添加的字段 如果是filebeat设置的则不能删除
add_tag   向事件添加任意标签,在tag字段中添加一段自定义的内容,当tag字段中超过一个内容的时候会变成数组  
remove_tag   从事件中删除标签(如果存在)
convert   将字段值转换为另一种数据类型
id   向现场事件添加唯一的ID
lowercase   将字符串字段转换为其小写形式
replace   用新值替换字段
strip   删除开头和结尾的空格
uppercase   将字符串字段转换为等效的大写字母
update   用新值更新现有字段
rename   重命名事件中的字段
gsub   通过正则表达式替换字段中匹配到的值
merge   合并数组或hash事件
split通过指定的分隔符分割字段中的字符串为数组
rename                重命名事件中的字段
gsub                通过正则表达式替换字段中匹配到的值
merge                合并数组或 hash 事件
split               通过指定的分隔符分割字段中的字符串为数组

步骤一:准备测试文件filebeat.conf 

[root@nginx-test conf.d]#cat filebeat.conf 
input{beats {port => "5044"}
}filter{grok{match => { "message" => "%{IP:client_addr}.*\[(?<quest_time>.*)\] \"%{WORD:quest_method} %{URIPATHPARAM:url_method} .*\" (?<response_code>\d+) .* \"(?<referer_url>.*)\" \"(?<agent>.*)\".*" }}mutate{remove_field => ["message","@version","beat.name"]add_field => {"f1" => "one""f2" => "two"}rename => {"source" => "log_path"}replace => { "agent" => "computer" }gsub => ["response_code", "", "状态码" ]}date{match => ["quest_time", "dd/MMM/YYYY:HH:mm:ss Z"]target => "@timestamp"timezone => "Asia/Shanghai"} 
}output{elasticsearch{hosts => ["192.168.20.10:9200","192.168.20.8:9200","192.168.20.18:9200"]index => "%{[fields][server_name]}-%{[fields][log_type]}-%{[fields][from]}-%{+yyyy.MM.dd}"}
}

步骤二:完成语法检测和启动对接

步骤三: 刷新nginx访问页面 在kibana页面验证效果

拓展 

 

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

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

相关文章

时序分解 | Matlab实现CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵计算

时序分解 | Matlab实现CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算 目录 时序分解 | Matlab实现CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算效果一览基本介绍程序设计参考资料 效果一览 基本介绍 CEEMDANPE自适应噪声完备集合经验模态分解排列熵计算 运行环境m…

云轴科技ZStack 助力广西某地级市建设市级警务云视频系统

某市属于广西壮族自治区辖地级市&#xff0c;省域副中心城市&#xff0c;选择云轴科技ZStack 超融合解决方案支撑警务云视频监控联网管理系统&#xff08;警务云视频系统&#xff09;&#xff0c;实现了该市对各辖区视频资源统一管理&#xff1b;同时也满足了该市警务云视频系统…

Git教程学习:01 Git简介与安装

目录 1 版本控制1.1 什么是版本控制系统&#xff1f;1.2 本地版本控制系统1.3 集中式版本控制系统1.4 分布式版本控制系统 2 Git简史3 Git的安装3.1 在Linux上安装3.2 初次运行Git前的配置 1 版本控制 1.1 什么是版本控制系统&#xff1f; 版本控制系统(Version Control Syst…

2.【C语言】(函数指针||sizeof||笔试题)

0x01.函数指针 void test(const char* str) {printf("%s\n", str); }int main() {void (*pf)(const char*) test;//pf是函数指针变量void (*pfarr[10])(const char*);//pfarr是存放函数指针的数组void (*(*p)[10])(const char*) &pfarr;//p是指向函数指针数组…

时空预测 | 基于图神经网络的时空预测

引言 时间序列是用于记录动态系统测量的主要数据类型&#xff0c;由物理传感器和在线过程&#xff08;虚拟传感器&#xff09;大量生成。因此&#xff0c;时间序列分析对于解锁可用数据中隐含的信息财富至关重要。随着图神经网络&#xff08;GNNs&#xff09;的最新进展&#x…

根据基因名批量查找它的Uniprot编号

背景&#xff1a; 前几天老师交给我一个任务&#xff0c;给我一个基因列表&#xff0c;让我查找它们所编码的蛋白质的蛋白质序列。我上了一下uniprot数据库&#xff0c;发现这个任务可以分成两步&#xff1a; 找到这个基因在Uniprot数据库中所对应的蛋白质编码根据蛋白质编码…

聚铭入选“2023中国数字安全能力图谱(精选版)”安全运营领域

近日&#xff0c;国内权威数字安全领域第三方调研机构数世咨询正式发布《2023年度中国数字安全能力图谱&#xff08;精选版&#xff09;》。聚铭网络作为国内领先的安全运营商&#xff0c;凭借在细分领域突出优势&#xff0c;成功入选该图谱“安全运营”领域代表厂商。 据悉&a…

【Linux系统编程】程序地址空间

进程地址空间 进程地址空间是指每个进程在计算机内存中所占用的地址空间。地址空间是指能被访问的内存地址范围&#xff0c;它由若干个连续的内存块组成。每个进程都有自己的地址空间&#xff0c;这意味着每个进程都有自己的内存地址范围&#xff0c;不会与其他进程冲突。进程地…

品牌如何做好有效推广?真诚是关键

品牌推广是一项长期的任务&#xff0c;为了让推广内容达到理想效果&#xff0c;媒介盒子认为需要掌握一定的技巧&#xff0c;今天媒介盒子就从几个方面和大家聊聊品牌如何做好有效推广。 一、 深入了解消费者的需求和偏好 品牌只有真正了解消费者的需求&#xff0c;才有可能提…

C++_Lambda表达式的完整介绍

目录 1. 什么是Lambda表达式 1.1 四种表达式的含义 1.2 lambda表达式各个成员的解释 2. 捕获列表 3. 编译器如何看待Lambda表达式 参考文章 参考: C Lambda表达式的完整介绍 - 知乎 c在c11标准中引入了lambda表达式&#xff0c;一般用于定义匿名函数&#xff0c;使得代码…

云HIS为连锁医院机构提供统一医院管理解决方案

云HIS重建统一的信息架构体系&#xff0c;重构管理服务流程&#xff0c;重造病人服务环境&#xff0c;向不同类型的医疗机构提供SaaS化HIS服务解决方案。 云HIS优势 1、云端数据优势 在传统的HIS模式里&#xff0c;数据存于医院本身的服务器机组&#xff0c;一旦发生故障&…

Redis--Geo指令的语法和使用场景举例(附近的人功能)

文章目录 前言Geo介绍Geo指令使用使用场景&#xff1a;附近的人参考文献 前言 Redis除了常见的五种数据类型之外&#xff0c;其实还有一些少见的数据结构&#xff0c;如Geo&#xff0c;HyperLogLog等。虽然它们少见&#xff0c;但是作用却不容小觑。本文将介绍Geo指令的语法和…

竞赛保研 大数据疫情分析及可视化系统

文章目录 0 前言2 开发简介3 数据集4 实现技术4.1 系统架构4.2 开发环境4.3 疫情地图4.3.1 填充图(Choropleth maps)4.3.2 气泡图 4.4 全国疫情实时追踪4.6 其他页面 5 关键代码最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据疫…

Nestjs 图片下载

一、download直接下载 1、添加下载代码 uploadController.ts import { Controller, Get, Post, Body, Patch, Param, Delete, UseInterceptors, UploadedFile, Res } from nestjs/common; import { UploadService } from ./upload.service; import { CreateUploadDto } from…

【面试突击】硬件级别可见性问题面试实战(上)

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (56) | 卷积神经网络

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

谷达冠楠科技:抖音开网店新手小白可以卖的产品

随着互联网的发展&#xff0c;越来越多的人选择在网上开设自己的店铺。而抖音作为目前最火的短视频平台&#xff0c;也提供了开店的功能。那么&#xff0c;对于新手小白来说&#xff0c;抖音开网店可以卖哪些产品呢? 我们可以考虑的是服装类商品。抖音上有很多时尚博主&#x…

java httpclient Post

一、Maven引用httpclient <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.3</version> </dependency> 二、直接上代码 private void PostData(){CloseableHt…

基于Qt/C++的体质监测系统,体重秤,体脂秤,身体质量指数系统,Qt语音播报

目录导览 一、前言二、项目功能介绍三、源程序四、总结 一、前言 可以通过该项目练习的c、qt的知识&#xff0c;提高自己的项目实战经验。同时需要其他管理系统的&#xff0c;如超市购物系统&#xff0c;图书管理系统、实验设备管理系统、超市管理系统、学生管理系统、教师管理…

开发企业微信中的内嵌h5时如何开发与调试

前言&#xff1a; 在我们的项目中&#xff0c;开发企业微信内部的项目的话&#xff0c;分为两种&#xff0c;1种是直接开发企业微信的小程序&#xff0c;另一种则是企业微信内嵌我们的H5界面&#xff0c;我们这里讲一讲企业微信内嵌h5的方法与注意点。 1、开发h5项目 这点没有…