Graylog Pipeline配置

📚概述

graylogpipeline的功能还是比较常用的,可以对字段进行处理,日志删除等操作。

🎨原理

Pipeline位于Stream之后,可以对Stream中的消息进行处理。
实际使用过程中,分流到Stream的规则中可能会用到pipeline清晰后的字段,那么该如何处理呢?
Graylog 接收的所有消息最初都会路由到“All messges”流中。可以将此流用作pipeline处理的入口点,从而允许将传入消息路由到更多流并随后进行处理。也就是说所有消息的过滤、字段变动可以先针对All messages进行,然后在到达其他stream时数据已经被清理一次了。

📗pipeline配置与使用

📐pipeline规则配置

点击System/pipelines -> Manage rules -> Create Rule
image.png
根据具体的需求配置合适的规则即可。
image.png

例如:对filebeat_fields字段重命名

rule "app_name rename"
when
  has_field("filebeat_fields_app_name")
then
   //rename_field(old_field, new_field)
   rename_field("filebeat_fields_app_name","app_name");
end

删除无用字段

rule "delete useless filed"
when
  has_field("filebeat_collector_node_id") 
then
  remove_field("filebeat_@metadata_version");
  remove_field("filebeat_@metadata_beat");
  remove_field("beats_type");
  remove_field("filebeat_@metadata_type");
  remove_field("filebeat_@timestamp");
  remove_field("filebeat_offset");
  remove_field("filebeat_prospector_type");
  remove_field("filebeat_beat_version");
end
🎫规则配置结果

image.png

🧩pipeline配置

点击System/pipelines -> Manage pipelines -> Add new pipeline

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQtEbmsr-1669204646977)(https://cdn.nlark.com/yuque/0/2022/png/2642424/1667968229982-712f01fc-3904-42be-a5de-5fe39d97636a.png)]

  1. 填写名称信息

image.png

  1. 关联connections,点击edit connections,选择All messages。这里是全局配置,所以选择了All messages,如果需要对单独的Stream进行数据处理,配置指定的Stream即可。

image.png

  1. 配置stage,点击Add new stage,可以在一个stage中配置上述所有规则

image.png
![image.png](https://img-blog.csdnimg.cn/img_convert/0e045fd7e1f44bedd31ce0a8d79d9e82.png#averageHue=#fafaf9&clientId=u81abf24e-c8f4-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=363&id=u3fa8a1d1&margin=[object Object]&name=image.png&originHeight=363&originWidth=1869&originalType=binary&ratio=1&rotation=0&showTitle=false&size=51669&status=done&style=none&taskId=ueea99cd9-b4fa-4d2e-8d3f-d455fccdbad&title=&width=1869)

stage中有具体的处理流程,配置的顺序、以及条件都会影响最终的消息。

📙常用的pipeline

debug日志不入库

rule "discard debug messages"
when
	// debug 日志不入库
  to_long($message.level) > 6
then
  drop_message();
end

日志级别说明
级别(从低到高):ALLTRACEDEBUGINFOWARNERRORFATALOFF
slf4j中就只有tracedebuginfowarnerror

level_namelevel
DEBUG7
INFO6
WARN4
ERROR3

有些日志中并没有level字段,上述规则就无效了。

时间格式对齐

修改timestamp时间为日志中的时间。日志产生时间和日志推送的时间是不一致的,对日志查询存在一定的影响。如下图所示:
image.png
日志示例:

2022-11-23 15:12:38.332 [http-nio-8081-exec-5] INFO  c.a.g.controller.LogGenerateController - info级别177951 info code

需要把上述日志格式中的时间解析为timestamp字段

rule "timestamp del"
when
  true
then
  let m = regex("([0-9]{4}-[0-9]{2}-[0-9]{2}\\s[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3})",to_string($message.message));
  
  set_field("timestamp",parse_date(to_string(m["0"]),"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
end

注意:如果已经对有日志了,那么timestamp的时间格式为yyyy-MM-dd'T'HH:mm:ss.SSS'Z',这里格式化的时间格式必须是yyyy-MM-dd'T'HH:mm:ss.SSS'Z',否则日志不能正常存储

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过以下步骤在Jenkins上使用Pipeline配置SonarQube: 1. 首先,您需要在Jenkins上安装SonarQube插件。在Jenkins的管理界面中,选择“插件管理”,搜索“SonarQube Scanner”并安装。 2. 在SonarQube服务器上创建一个项目,并获取项目的“Project Key”和“Project Token”。 3. 在Jenkins的管理界面中,选择“全局工具配置”,并配置SonarQube Scanner。输入您的SonarQube服务器URL、SonarQube服务器版本、SonarQube Scanner的名称等信息。在“高级”选项卡下,选择“添加”,并添加SonarQube服务器的证书(如果需要)。 4. 在Jenkins中创建一个Pipeline项目,在Pipeline脚本编辑器中输入以下代码: ``` node { stage('Checkout') { //检出代码 } stage('SonarQube analysis') { withSonarQubeEnv('SonarQube服务器名称') { //运行SonarQube扫描 } } } ``` 5. 在“SonarQube analysis”阶段中,使用“withSonarQubeEnv”方法来指定SonarQube服务器的名称。然后运行SonarQube扫描,使用“sh”命令(如果您使用的是Linux系统)或“bat”命令(如果您使用的是Windows系统)来运行SonarQube Scanner。 6. 在运行SonarQube扫描之前,您需要在代码库的根目录下添加一个名为“sonar-project.properties”的文件,并在其中设置SonarQube项目的配置信息,包括“sonar.projectKey”和“sonar.projectToken”。 7. 最后,保存并运行Pipeline项目。Jenkins将自动运行SonarQube扫描并将结果上传到SonarQube服务器。您可以在SonarQube服务器上查看分析结果。 希望这能帮助您配置Jenkins和SonarQube!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值