【Graylog】比较常用的pipeline规则
毫秒转换为yyyy-MM-dd HH:mm:ss日志格式
rule "receiveDate_alignment"
whenhas_field("receiveDate")
thenlet m = parse_unix_milliseconds(to_long($message.receiveDate),"CST");let n = format_date(m,"yyyy-MM-dd HH:mm:ss","Asia/Shanghai");set_field("ORG_EVENT_TIME",n);
end
时间格式化及时区格式化
rule "parse_log"
whencontains(value: to_string($message.message), search: "ERROR", ignore_case: false)
thenset_field("raw_message", to_string($message.message));set_field("message", concat("警告:匹配到深证通程序日志有异常关键字,请注意查看!",to_string(format_date(to_date($message.timestamp,"CST"),"yyyy-MM-dd HH:mm:ss","Asia/Shanghai"))));
end
format_date(to_date($message.timestamp,"CST"),"yyyy-MM-dd HH:mm:ss","Asia/Shanghai")
2022-03-03T06:46:26.354Z => 2022-03-03 14:46:26
特殊时间格式对其(filebeat指标)
rule "time_duiqi2"
whentrue
thenlet m = regex("(\\S+)\\+",to_string($message.message));set_field("timestamp",parse_date(replace(to_string(m["0"]),"T"," "),"yyyy-MM-dd HH:mm:ss.SSS","locale.US","Asia/Shanghai"));
end
filebeat日志时间格式为2022-09-16T13:56:39.278+0800,由于中间带T操作时解析总无法实现,把T替换掉为空格即可
判断条件的跃进
rule "test rule"
when//可以进行数值判断to_long($message.alert_level) > 3
thenset_field("test_field", "test succ");
end
根据Pri分析出Facility和Level字段值
//把22解析成pri
<22>Jul 13 17:25:01 localhost postfix/qmgr[1915]: CB3FF60AF6F5: removed
rule "conv"
whentrue
thenlet m = expand_syslog_priority_as_string(to_string($message.pri));set_fields({facility: m.facility, level:m.level});
end
查询表(lookuptable)功能使用csv适配器实现多值
csv文件格式如下
"http_response_code"|"multivalue"
"200"|"中国#测试"
规则如下:
rule "parse_lookuptable_multivalue"
whenhas_field("http_response_code")
thenlet lookup_multivalue = lookup("csv_test",to_string($message.http_response_code));let multivalue = split("#",to_string(lookup_multivalue.value));set_field("localte",to_string(multivalue[0]));set_field("desc",to_string(multivalue[1]));
end
效果如下:
JSON格式解析
rule "parse_json"
whentrue
thenlet m = parse_json(to_string($message.message));set_fields(to_map(m));
end
json格式解析(大json解析指定数据)
rule "parse"
whentrue
thenlet m = regex(".*?(\\{.*)",to_string($message.message));let x = parse_json(to_string(m["0"]));let new_fields = select_jsonpath(x,{load1: "$.monitoring.metrics.system.load.1",load5: "$.monitoring.metrics.system.load.5",load15: "$.monitoring.metrics.system.load.15"});set_fields(new_fields);end
可以从以下json中获取load相关指标
2022-09-15T11:06:53.451+0800 INFO [monitoring] log/log.go:145 Non-zero metrics in the last 30s {"monitoring": {"metrics": {"beat":{"cpu":{"system":{"ticks":1450,"time":{"ms":3}},"total":{"ticks":3160,"time":{"ms":25},"value":3160},"user":{"ticks":1710,"time":{"ms":22}}},"handles":{"limit":{"hard":65536,"soft":65536},"open":14},"info":{"ephemeral_id":"0aed24ea-c8cd-429a-ae16-b701558bebdb","uptime":{"ms":3870086}},"memstats":{"gc_next":23807808,"memory_alloc":12150784,"memory_total":160990448},"runtime":{"goroutines":43}},"filebeat":{"events":{"added":1,"done":1},"harvester":{"files":{"041fdc0c-82ad-495a-9244-54966725bfe5":{"last_event_published_time":"2022-09-15T11:06:29.727Z","last_event_timestamp":"2022-09-15T11:06:29.727Z","read_offset":1231,"size":1231}},"open_files":1,"running":1}},"libbeat":{"config":{"module":{"running":0}},"output":{"events":{"acked":1,"batches":1,"total":1}},"outputs":{"kafka":{"bytes_read":60,"bytes_write":1124}},"pipeline":{"clients":2,"events":{"active":0,"published":1,"total":1},"queue":{"acked":1}}},"registrar":{"states":{"current":2,"update":1},"writes":{"success":1,"total":1}},"system":{"load":{"1":0.09,"15":0.29,"5":0.27,"norm":{"1":0.0113,"15":0.0363,"5":0.0338}}}}}}
嵌套json解析
json示例
{"host":{"host":"192.168.100.12","name":"B-BJ-HW-S5720-03_04"},"groups":["Templates/Network devices","DT_network","网络设备","路由器"],"applications":["Interface GigabitEthernet1/0/2()"],"itemid":67697,"name":"Interface GigabitEthernet1/0/2(): Bits 接收","clock":1672724928,"ns":434058026,"value":46440,"type":3}
解析规则
rule "Data Parsing"
whentrue
thenlet msg = parse_json(to_string($message.message));let prop = select_jsonpath(msg, {host: "$.host"});set_field("host_string", to_string(prop.host));let props = parse_json(to_string($message.host_string));set_fields(to_map(props),"host_");set_fields(to_map(msg));
end
思路: 由于graylog4删减了部分函数,比如好用的nesting_parse_json()用于解析嵌套函数,所以通过社区找到一个案例照着改了一下。
大概的实现过程是这样的,首先先把所有的json外层解析出来,然后针对内层的host字段进行二次解析,解析后的内层host为了防止字段名称冲突导致覆盖或字段类型不同,在set_fields时加上前缀。
【Graylog】比较常用的pipeline规则相关推荐
- vue验证整数_前端Vue中常用rules校验规则
前端Vue中常用rules校验规则 1.是否合法IP地址 export function validateIP(rule, value,callback) {if(value==''||value== ...
- Nginx伪静态配置和常用Rewrite伪静态规则集锦
伪静态是一种可以把文件后缀改成任何可能的一种方法,如果我想把php文件伪静态成html文件,这种相当简单的,下面我来介绍nginx 伪静态配置方法 nginx里使用伪静态是直接在nginx.conf ...
- dw中css目标规则命名,css 常用样式命名规则
大家在写css的时候,对一些html标签起一个合适的名字是个很头疼的事情,现在给大家分享项目中常用的名字供参考. 外套:wrap --用于最外层 头部:header --用于头部 主要内容:mai ...
- MyCat分片规则(全局表,ER分片表,多对多关联,主键分片VS非主键分片),MyCat常用的分片规则(15中分片规则),自定义MyCat分片规则,其它术语
1 MyCat分片规则 数据切分中重要的几条原则,其中有几条数据冗余,表分组(Table Group). 1.1全局表 如果你的业务中有些数据类似于数据字典,比如配置文件的配置,常用业务的配置或数据量 ...
- Wireshark抓包工具使用教程以及常用抓包规则
Wireshark是一个非常好用的抓包工具,当我们遇到一些和网络相关的问题时,可以通过这个工具进行分析,不过要说明的是,这只是一个工具,用法是非常灵活的,所以今天讲述的内容可能无法直接帮你解决问题,但 ...
- Mock生成随机数据常用的类型规则
我们一般在模拟数据时都希望生成一些随机的数据,mock中内置了很多种不同类型的随机数据,我们可以使用它们生成各种类型的随机数据: Type Method 基本类型 boolean, natural, ...
- 25个常用的防火墙规则
本文将给出25个iptables常用规则示例,这些例子为您提供了些基本的模板,您可以根据特定需求对其进行修改调整以达到期望. 格式 iptables [-t 表名] 选项 [链名] [条件] [-j ...
- 常用正则表达式及其规则
常用规则: 1. ^行开始 $行结束 ^ab 以ab开头 ab$ 以ab结尾 2. \将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符. 例如:\( 匹 ...
- 外汇交易市场策略:简单最常用的四周规则与七种交易策略
简单常用四周规则 随着越来越复杂.越来越富于想象力的外汇交易系统和外汇指标的出现,外汇投资者们往往忽视了那些简单.基本的工具,而它们的效果相当好,经受住了时间的考验.今天,为大家分享其中一种最简便的外 ...
最新文章
- 静态页面和动态页面的区别
- java获取mysql表结构
- 灰度图像阈值化分割常见方法总结及VC实现
- Spring的核心思想,总结得非常好!
- RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践
- 每天一道LeetCode-----在给定数组中找到一个子数组,使得这个子数组的元素乘积最大
- 关于 php mysql pdo cannot find driver 解决方案
- Java中的证书透明度验证
- python 拟合圆心_OpenCV:将单个圆拟合到图像(在Python中)
- 代码英雄:波澜壮阔的操作系统之战(音频+长文)
- 前端开发者如何利用 CSS 实现酷炫的变色方案?
- 二次型在一点的_EP型隐形车衣除胶剂的使用方法,为什么不建议用柏油清洗剂...
- Java 实战项目坦克大战,一小时学会制作
- win7计算机无法右键,win7系统电脑右键菜单失灵无法弹出的解决方法
- 闹钟Android实验报告,单片机实验报告(闹钟).doc
- 全球搜索引擎Top10 可惜很多人只用过第四个
- vue使用vue-pdf
- Enigma密码机初级解析
- 小狗AI自动建站系统
- Apache Doris ODBC Mysql外表在centos下的使用方法及配置