千家信息网

logstash的ruby模块怎么用

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,今天小编给大家分享一下logstash的ruby模块怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2025年02月04日logstash的ruby模块怎么用

今天小编给大家分享一下logstash的ruby模块怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

可以执行任意ruby代码.可是真正去实现的时候踩了不少吭,诸多报错. 第一步调用ruby脚本的时候就一直提示"Script does not define a filter! Please ensure that you have defined a filter method!,根本不加载指定的函数.翻阅logstash-filter-ruby源码得知

其方法中必须有filter函数,固将函数名称更改成filter后解决,但是后续提示没有定义event ,继续翻阅源码看到这个

在调用自定义ruby脚本的时候将event传递过去了.于是将event更改成参数传递解决.最终生产配置如下:
filter{  #执行解析逻辑  ruby{     id=>"ls133"        path =>"./rubyLogParse.rb"  }
#格式化日期 date{ match=>["requestTime","yyyy-MM-dd HH:mm:ss"] target =>"@timestamp" locale=>"en" timezone =>"+00:00" } #删除多余字段,减少es的存储空间 mutate{ remove_field => ["@version","offset","message","beat","input","prospector"] }}

uby中String和json转换关系如下:

String--->JSON JSON.parse String

JSON--->String JSON.to_json

定义方法如下:
 #解析json格式日志 def parseJsonLog(event,logdata)    #获取日志内容    loginfo=logdata[(logdata.index('] ')+2)...(logdata.rindex('}')+1)]    #转成json对象    logInfoJson=JSON.parse loginfo    #获取流水号    event.set('transactionID',logInfoJson['transactionID'])    #获取业务账号    event.set('businessNumber',logInfoJson['businessNumber'])    #获取省份编码    event.set('provinceCode',logInfoJson['provinceCode'])    #获取执行耗时    event.set('callTime',logInfoJson['callTime'])    #获取接口编码    event.set('serverCode',logInfoJson['serverCode'])    #获取请求ip    event.set('reqIp',logInfoJson['reqIp'])    #获取渠道    event.set('channle',logInfoJson['reqMessage']['channel'])    #获取返回报文    event.set('respMessage',logInfoJson['respMessage'].to_json)    #获取请求报文    event.set('reqMessage',logInfoJson['reqMessage'].to_json)    if(loginfo.include?'errorInfo')      event.set('errorInfo',logInfoJson['errorInfo'])    end    #设置标示位    event.set('tags','log_success')  end
#解析xml格式日志 def parseXmlLog(event,logdata) #截取流水号字段 if (logdata.include?'transactionID') && (logdata.include?'businessNumber') transactionID=logdata[(logdata.index('transactionID')+16)...(logdata.index('businessNumber')-3)] event.set('transactionID',transactionID) #根据流水号判断渠道 if(logdata.include?'Channel') channle=logdata[(logdata.index('')+9)...(logdata.index(''))] event.set('channle',channle) end #截取返回报文 if (logdata.include?'respMessage') respMessage=logdata[(logdata.index('respMessage')+14)...(logdata.index('reqMessage')-3)] event.set('respMessage',respMessage) end 省略部分代码 ................ #设置标示位 event.set('tags','log_success') end end
def filter(event) #取出日志信息 logdata=event.get('message') #如果日志不是短信日志,缓存监控日志,缓存日志 Access nodechanged if (logdata.include?'reqMessage' ) #解析日志级别和请求时间,并保存到event对象中 logleve=logdata[(logdata.index('[')+1)...logdata.index(']')] event.set('logleve',logleve) event.set('requestTime',logdata[0,logdata.index(' - [')]) #如果是rest接口json日志 if(logdata.include?'restJson') parseJsonLog event,logdata else parseXmlLog event,logdata end end return [event] end

以上就是"logstash的ruby模块怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

日志 知识 篇文章 内容 函数 报文 时候 格式 流水 流水号 模块 代码 字段 对象 接口 方法 渠道 源码 缓存 编码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 如果有人攻击服务器要不要报警 lol某个区一直无法连接服务器 淮南定制软件开发 激战2目前有几个服务器 2021杭州网络安全大赛 电脑做服务器为什么不能上网 和田网络安全培训 东丽区电子网络技术答疑解惑 如何设计简单的服务器机房 前端服务器也是web服务吗 卫星互联网应用黑科技 河北学生网络技术开发建议 怎么在编辑器中修改数据库 哪些数据库有科普知识 电脑连接天路云打印服务器 怎么给服务器硬盘扩容 籽岷我的世界基岩版生存服务器 浦东新区无线网络技术产品 如何配置asp服务器 无线网络安全实践 优化管理做好服务器 网络技术的未来职业规划 内蒙古专业软件开发价钱 乌鲁木齐服务器批发 创梦互联网科技有限公司 软件开发定制有限公司 前端服务器也是web服务吗 南京品质联想服务器安装 应用层网络安全措施 刺客信条服务器进不去
0