位置: IT常识 - 正文

Logstash 入门实战(4)--filter plugin 介绍(logstash gsub)

编辑:rootadmin
本文主要介绍 Logstash 的一些常用过滤插件;相关的环境及软件信息如下:CentOS 7.9、Logstash 8.2.2。 1、grok 过滤插件 grok 是一种将行与正则表达式匹配,将行的特定部分映射到专用字段中以及根据此映射执行操作的方法。Logstash 中内置了超过 200 种 L ...

推荐整理分享Logstash 入门实战(4)--filter plugin 介绍(logstash gsub),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:logstash好用不,logstash-plain.log,logstash ui,logstash用法,logstash.yml,logstash教程,logstash gsub,logstash gsub,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要介绍 Logstash 的一些常用过滤插件;相关的环境及软件信息如下:CentOS7.9、Logstash 8.2.2。

1、grok 过滤插件

grok 是一种将行与正则表达式匹配,将行的特定部分映射到专用字段中以及根据此映射执行操作的方法。Logstash 中内置了超过 200 种Logstash 模式,用于过滤单词、数字和日期等。 如果找不到所需的模式,可以自定义模式。 还有多个匹配模式的选项,可简化表达式的编写以捕获日志数据。

Logstash grok 过滤插件的基本语法格式:

%{PATTERN:FieldName}

grok 可以非结构化的数据转变为结构化数据,非常适用于各类系统日志;下面使用Grok 来处理 Nginx访问日志。

一行 Nginx 访问日志:

10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://10.49.196.11:8066/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"

配置 Logstash:

input { stdin { }}filter { grok { match => { "message" => "%{IP:ip} - %{USER:remoteUser} \[%{HTTPDATE:accessTimeStr}\] \"%{WORD:method} %{URIPATHPARAM:path} %{WORD:protocal}/%{NUMBER:version}\" %{INT:status} %{INT:bytes} \"%{DATA:referer}\" \"%{DATA:userAgent}\""} }}output { stdout { }}

运行 Logstash 后输入日志信息:

10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://10.49.196.11:8066/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"{ "method" => "GET", "host" => { "hostname" => "pxc2" }, "accessTimeStr" => "27/Sep/2022:10:16:15 +0800", "userAgent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36", "referer" => "http://10.49.196.11:8066/", "ip" => "10.49.196.1", "message" => "10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] \"GET /favicon.ico HTTP/1.1\" 404 555 \"http://10.49.196.11:8066/\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"", "@timestamp" => 2022-09-27T02:31:13.852428Z, "bytes" => "555", "remoteUser" => "-", "@version" => "1", "event" => { "original" => "10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] \"GET /favicon.ico HTTP/1.1\" 404 555 \"http://10.49.196.11:8066/\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"" }, "path" => "/favicon.ico", "status" => "404", "version" => "1.1", "protocal" => "HTTP"}

可以看到各字段信息都解析出来了。

各正则表达式定义的详细信息,可以参考https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns,如:

IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?IPV4 (?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])IP (?:%{IPV6}|%{IPV4})2、dissect 过滤插件Logstash 入门实战(4)--filter plugin 介绍(logstash gsub)

基于分隔符原理解析数据,解决grok解析时消耗过多cpu资源的问题。使用分隔符将非结构化事件数据提取到字段中。 解剖过滤器不使用正则表达式,速度非常快。 但是,如果数据的结构因行而异,grok 过滤器更合适。dissect 的应用有一定的局限性:主要适用于每行格式相似且分隔符明确简单的场景。

dissect 语法比较简单,有一系列字段(field)和分隔符(delimiter)组成

%{}字段%{}之间是分隔符

使用 Dissect 处理 Nginx 访问日志:

input { stdin { }}filter { dissect { mapping => { "message" => '%{ip} - %{remoteUser} [%{accessTimeStr} %{+accessTimeStr}] "%{method} %{path} %{protocal}/%{version}" %{status} %{bytes} "%{referer}" "%{userAgent}"'} }}output { stdout { }}

结果如下,与使用 grok 处理 Nginx 访问日志的结果一致:

10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://10.49.196.11:8066/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"{ "path" => "/favicon.ico", "status" => "404", "protocal" => "HTTP", "host" => { "hostname" => "pxc2" }, "bytes" => "555", "userAgent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36", "@version" => "1", "event" => { "original" => "10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] \"GET /favicon.ico HTTP/1.1\" 404 555 \"http://10.49.196.11:8066/\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"" }, "referer" => "http://10.49.196.11:8066/", "accessTimeStr" => "27/Sep/2022:10:16:15 +0800", "message" => "10.49.196.1 - - [27/Sep/2022:10:16:15 +0800] \"GET /favicon.ico HTTP/1.1\" 404 555 \"http://10.49.196.11:8066/\" \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36\"", "method" => "GET", "version" => "1.1", "@timestamp" => 2022-09-27T09:28:36.042881Z, "remoteUser" => "-", "ip" => "10.49.196.1"}

dissect 除了字段外面的字符串定位功能以外,还通过几个特殊符号来处理字段提取的规则:

%{+key}+代表该匹配值追加到 key 字段下%{ts} %{+ts} %{+ts}Apr 26 12:20:02{ "ts":"Apr 26 12:20:02"}%{+key/2}后面的数字代表拼接的次序%{+order/2} %{+order/3} %{+order/1} %{+order/4}two three one go{ "order": "one two three go"}%{} 表示一个空的跳过字段%{a} %{} %{b}1 2 3{"a":"1","b":"3"}%{?key} ?表示,这块只是一个占位,并不会实际生成捕获字段存到事件里面。%{?key} %{&key}当同样捕获名称都是string,但是一个?一个&的时候,表示这是一个键值对。%{?key1}=%{&key1}&%{?key2}=%{&key2}a=1&b=2{"a":"1","b":"2"}%{key->},表示忽略它右边的填充,否则右边的多余填充将拆分到下一个字段中。%{a} %{b->} %{c}1 2 3{"a":"1","b":"2","c":"3"}#去除->后,会把多余的空格匹配到 c 中%{a} %{b} %{c}1 2 3{"a":"1","b":"2","c":" 3"}3、date 过滤插件

date 过滤插件可以把字符串的日期字段转为日期类型。

input { stdin { codec => "json" }}filter { date { match => ["accessTimeStr", "dd/MMM/yyyy:HH:mm:ss Z"] target => "accessTime" }}output { stdout { }}

上述配置把 accessTimeStr 字段的值转成日期类型,并写入accessTime 字段(默认为 @timestamp 字段)。运行 Logstash:

{"accessTimeStr": "27/Sep/2022:10:16:15 +0800"}{ "event" => { "original" => "{\"accessTimeStr\": \"27/Sep/2022:10:16:15 +0800\"}\n" }, "host" => { "hostname" => "pxc2" }, "@timestamp" => 2022-09-27T07:21:00.181981Z, "accessTime" => 2022-09-27T02:16:15Z, "@version" => "1", "accessTimeStr" => "27/Sep/2022:10:16:15 +0800"}4、mutate 过滤插件

mutate 插件可以对字段进行重命名、删除、替换、更新等操作:

convert 类型转换gsub 字符串替换split 字符串分割join 数组合转为字符串merge 数组合并为数组rename 字段重命名update 字段内容更新,如果字段不存在,则不处理replace 字段内容替换,如果字段不存在,则新增字段input { stdin { codec => "json" }}filter { mutate { convert => {"a" => "integer"} gsub => ["b", "_", "|"] #"_"替换为"|" split => {"c" => ","} join => {"d" => ","} merge => {"e1" => "e2"} #数组e2的元素合并到e1数组中 rename => {"f" => "ff"} update => {"g" => "new value"} replace => {"h" => "new value"} }}output { stdout { }}

启动 Logstash 并在控制输入测试数据:

{"a":"1","b":"A_B_C","c":"X,Y,Z","d":[1,2,3],"e1":[1,2,3],"e2":[4,5,6],"f":"ABC","g":"123"}{ "d" => "1,2,3", "e1" => [ [0] 1, [1] 2, [2] 3, [3] 4, [4] 5, [5] 6 ], "e2" => [ [0] 4, [1] 5, [2] 6 ], "c" => [ [0] "X", [1] "Y", [2] "Z" ], "event" => { "original" => "{\"a\":\"1\",\"b\":\"A_B_C\",\"c\":\"X,Y,Z\",\"d\":[1,2,3],\"e1\":[1,2,3],\"e2\":[4,5,6],\"f\":\"ABC\",\"g\":\"123\"}\n" }, "ff" => "ABC", "@timestamp" => 2022-09-28T02:45:26.305729Z, "b" => "A|B|C", "@version" => "1", "host" => { "hostname" => "pxc2" }, "h" => "new value", "g" => "new value", "a" => 1}5、json 过滤插件

json 插件可以把内容为 json 字符串的字段转换为 json 格式数据。

input { stdin { }}filter { json { source => "message" target => "result" }}output { stdout { }}

启动 Logstash 并在控制输入测试数据:

{"a":"1","b":"2"}{ "message" => "{\"a\":\"1\",\"b\":\"2\"}", "event" => { "original" => "{\"a\":\"1\",\"b\":\"2\"}" }, "@version" => "1", "@timestamp" => 2022-09-28T03:20:35.827102Z, "result" => { "b" => "2", "a" => "1" }, "host" => { "hostname" => "pxc2" }}6、ruby 过滤插件

ruby 插件时最灵活的插件,可以使用 ruby 来随心所欲的修改 Logstash Event 对象。

input { stdin { codec = "json" }}filter { ruby { code => 'a = event.get("a");event.set("a", a + 123")' }}output { stdout { }}

启动 Logstash 并在控制输入测试数据:

{"a":"1","b":"2"}{ "host" => { "hostname" => "pxc2" }, "b" => "2", "a" => "1abc", "@version" => "1", "event" => { "original" => "{\"a\":\"1\",\"b\":\"2\"}\n" }, "@timestamp" => 2022-09-28T06:01:35.180939Z}

本文中介绍的插件只是 Logstash 输入插件的很小的一部分,可查看Logstash 官方文档了解更多信息。

本文链接地址:https://www.jiuchutong.com/zhishi/312918.html 转载请保留说明!

上一篇:DedeCMS安装完成 Deprecated: Function ereg_replace(dedecms下载)

下一篇:织梦如何修改中英文模板的当前位置(织梦如何使用)

  • 红米note8指纹解锁的位置在哪里(红米note8指纹解锁怎么不见了)

    红米note8指纹解锁的位置在哪里(红米note8指纹解锁怎么不见了)

  • 关注公众号会不会泄露个人信息(关注公众号会不会被盗号)

    关注公众号会不会泄露个人信息(关注公众号会不会被盗号)

  • oppofindx2pro机身尺寸是多少呢(oppofindx2pro rom)

    oppofindx2pro机身尺寸是多少呢(oppofindx2pro rom)

  • 佳能mg3080换墨盒步骤(佳能mg3080换墨盒还是加墨水好)

    佳能mg3080换墨盒步骤(佳能mg3080换墨盒还是加墨水好)

  • 华为mate20录屏不见了(华为mate20录屏不能录制耳机内的声音)

    华为mate20录屏不见了(华为mate20录屏不能录制耳机内的声音)

  • 小恩爱360天后能提现吗(小恩爱打卡360天领1520是真的吗)

    小恩爱360天后能提现吗(小恩爱打卡360天领1520是真的吗)

  • 苹果x快捷清理听筒灰尘的方法(iphonex内存清理快捷方式)

    苹果x快捷清理听筒灰尘的方法(iphonex内存清理快捷方式)

  • 开通情侣黄钻是不是两个人都有黄钻了(情侣黄钻开通要钱吗)

    开通情侣黄钻是不是两个人都有黄钻了(情侣黄钻开通要钱吗)

  • QQ手机电脑可以接两个语音么(手机qq电脑qq)

    QQ手机电脑可以接两个语音么(手机qq电脑qq)

  • 苹果8有面部解锁吗(苹果8面部解锁软件下载)

    苹果8有面部解锁吗(苹果8面部解锁软件下载)

  • 使用钉钉分屏会被发现吗(钉钉分屏会影响观看时长吗)

    使用钉钉分屏会被发现吗(钉钉分屏会影响观看时长吗)

  • xr声音小怎么设置(xr声音小怎么设置好听)

    xr声音小怎么设置(xr声音小怎么设置好听)

  • vivo x7plus上市时间(vivox7plus什么时候出来的)

    vivo x7plus上市时间(vivox7plus什么时候出来的)

  • 注销了的快手号能恢复吗(注销了的快手号还能找回吗)

    注销了的快手号能恢复吗(注销了的快手号还能找回吗)

  • p20pro用40w充电器有影响吗(华为p20pro能用40w充电头吗)

    p20pro用40w充电器有影响吗(华为p20pro能用40w充电头吗)

  • 桌面云备份可以删除吗(桌面云备份可以删了有影响吗)

    桌面云备份可以删除吗(桌面云备份可以删了有影响吗)

  • 微信运动推送时间会变吗(微信运动推送时间有9点的吗)

    微信运动推送时间会变吗(微信运动推送时间有9点的吗)

  • 计算机的应用领域有哪些(计算机的应用领域极为广泛但其应用最早的领域是)

    计算机的应用领域有哪些(计算机的应用领域极为广泛但其应用最早的领域是)

  • 怎么把大视频发给别人(怎么把大视频发给qq好友)

    怎么把大视频发给别人(怎么把大视频发给qq好友)

  • 杜甫诗圣的由来(诗仙 诗圣 诗佛 诗鬼)

    杜甫诗圣的由来(诗仙 诗圣 诗佛 诗鬼)

  • 微信视频中断是谁挂的(微信视频中断是对方正在忙吗)

    微信视频中断是谁挂的(微信视频中断是对方正在忙吗)

  • mate30和mate30pro区别(mate30和mate30 pro哪个好)

    mate30和mate30pro区别(mate30和mate30 pro哪个好)

  • 快手小店打不开怎么回事(快手小店打不开怎么办)

    快手小店打不开怎么回事(快手小店打不开怎么办)

  • 小黄车怎么取消自动续费(小黄车怎么取消实名认证)

    小黄车怎么取消自动续费(小黄车怎么取消实名认证)

  • 腾讯怎么切换微信账号(腾讯怎么切换微信号登录)

    腾讯怎么切换微信账号(腾讯怎么切换微信号登录)

  • 2010excel照相机功能(excel2016 照相机)

    2010excel照相机功能(excel2016 照相机)

  • drivespeed.exe是一款安全的进程吗 drivespeed进程的危险性分析(driver-e)

    drivespeed.exe是一款安全的进程吗 drivespeed进程的危险性分析(driver-e)

  • libev & libevent简介  IntelIOT  博客园

    libev & libevent简介 IntelIOT 博客园

  • 牛奶的增值税税率
  • 亏损属于什么科目
  • 国际反避税措施
  • 应交税费账目处理
  • 出口关税的计算基数
  • 企业增资的分录怎么写
  • 企业是否可以查员工亲属关系
  • 帮别人买交强险,受益人是我,有影响吗
  • 30万的车税可以抵多少
  • 增值税专用发票可以开电子发票吗
  • 没收逾期未退包装物押金收益,应计入( )科目
  • 不能抵扣的普通发票
  • 房租本月入账上月的怎么摊销?
  • 已认证未入账的分录
  • 餐费开专票有什么影响
  • 企业挂靠税收市收取的标准是什么
  • 年收入超过12万什么时候申报
  • 专家评审费如何报销费用
  • 税务局返还的代征代扣要交增值税吗
  • 出售自建厂房的税率
  • 计提工资需要工资表吗
  • 物业费的进项税额可以抵扣吗
  • 减税降费政策六税
  • 增值税普通发票几个点
  • 简述房地产开发企业设立的特殊规定
  • 研发失败的项目可以加计扣除吗
  • 建筑安装施工过程
  • 公司账户转账给个人账户有限额吗?
  • 长期应付款怎么冲减
  • 退税发票勾选后开红冲发票怎么申报
  • 固定资产折现率怎么算
  • win11电脑下载的软件桌面没有图标怎么办
  • 电脑开机硬盘自检怎么回事
  • 通过email发送歌曲放哪?
  • 购买增值税防伪税控系统专用设备
  • php日期时间函数
  • 增值税专用发票查询系统官方网站
  • 餐厅用的打包盒图片
  • f12开发者工具调试打不开
  • 加利福尼亚湾在哪
  • zendframework3
  • php是面向过程还是面向对象
  • 反斜杠python
  • 中国烟草资产负债表
  • 红冲费用如何处理
  • 可供分配利润是留存收益吗
  • okhttp3源码分析
  • 固定资产入账是税前还是税后
  • 经销商会议是什么意思
  • 小微企业所得税税率多少
  • mysql乱码问题怎么解决
  • 服务器配置mysql
  • 哪些情况下可以使用食品添加剂
  • 盈余公积年初和年末没有变化
  • 外出经营一定要开
  • 公司对公账户没钱了辞退员工
  • 兼营即征即退产品 增值税
  • 企业收到政府专项奖励
  • 新旧收入准则对比区别表
  • 查看linux服务器内存命令
  • centos7基本环境选哪个
  • chrome浏览器81.0
  • windows2003 64位注册码 序列号 激活码
  • ubuntu12.04 amd64系统中lamp环境搭建方法
  • windows7与xp
  • 怎么查看自己mac电脑有没有被人使用过
  • win7系统运行红警黑屏有声音
  • win8系统开启摄像头权限
  • Win7旗舰版电脑亮度怎么调节?
  • 如何设置win10默认程序
  • jquery删除所有class
  • jquery选择器总结
  • javascript数据结构与算法
  • 标箭头的手机软件
  • 民办非企业单位登记管理暂行条例
  • 社保当月减员当月还可以增加上吗
  • 贵州国家电子税务局登录入口
  • 上海市黄浦区有什么路
  • 外贸公司销售额可以10亿以上吗
  • 武汉代账公司一般怎么收费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设