logstash的ruby模块怎么用
发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,今天小编给大家分享一下logstash的ruby模块怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我
千家信息网最后更新 2024年09月21日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更改成参数传递解决.最终生产配置如下:
uby中String和json转换关系如下: 定义方法如下:
今天小编给大家分享一下logstash的ruby模块怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
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"]
}
}
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安全错误
数据库的锁怎样保障安全
网络技术学习目的是什么
坦克世界服务器崩了吗
问责条款 网络安全事故
八八八网络技术有限公司
服务器中密码管理
天津市网络安全事故
四大工作站服务器
如何新建ftp服务器
深圳市火链互联网科技有限公司
炉石服务器ip
重庆亿购网互联网科技有限公司
开票软件数据库索引失败
学校网络安全活动周主题班刊
if重复数据库
王牌战争怎么开服务器里面的商店
国内知名数据库的检索方法
确诊人数数据库
海贝互联网科技有限公司
长治市互邦软件开发公司
税务网络安全保护工作
计算机网络技术与应用读后感
电脑上网络安全培训课程
自己开虚拟机怎么连接数据库
冀州区网络安全委员会
华为x86服务器培训ppt
数据库去掉导航按钮
计算机网络技术论文选题原因
软件开发各方责任
邵阳计算机网络技术
关于网络安全的古诗有哪些