Pipeline 助您轻松驾驭海量数据!

news2024/11/24 17:47:28

前言

数据治理在当今信息时代变得至关重要。随着数据量的不断增长和多样化,组织需要有效地管理和利用这些数据,以支持业务决策和创新发展。不论是做数据分析还是数据解析,利用 Pipeline 可以帮助组织实现数据治理的自动化和规范化;为组织提供更清晰、更可操作的数据视图,从而有力支持数据治理。

Pipeline

Pipeline 是一个自然语言处理工具,可用于大规模数据下的文本处理,提供文本解析、处理、转换的能力,可以将格式各异的数据转换成可观测性数据。在观测云中,用户能够利用 Pipelines 进行数据解析,通过定义解析规则,将各种数据类型切割成符合我们要求的结构化数据,得到的字段可以作为属性字段,更方便进行数据查询及关联分析。

开启 Pipeline 巧用之旅

您可以在观测云工作空间管理 > Pipelines 统一管理或新建 Pipeline 文件;当然您也可以在指标、日志、用户访问、应用性能、基础设施、安全巡检功能目录快捷入口进行创建。

前提条件:安装 DataKit (版本 >= 1.5.0),详情参见:主机安装 - 观测云文档

步骤一:基础设置

观测云支持对丰富的数据类型进行 Pipeline 文本处理,包括日志、指标、用户访问监测、应用性能监测、基础对象、自定义对象、网络、安全巡检,并支持您多选数据来源。

当然,您可以自定义 Pipeline 文件名,并选择是否需要将该文件设置为默认 Pipeline,需要注意的是,每个数据类型只能设置一个「默认 Pipeline」,若当前数据类型在匹配 Pipeline 处理时,未匹配到其他的 Pipeline 脚本,则数据会按照默认 Pipeline 脚本的规则处理。

步骤二:定义解析规则

过滤出所需的数据范围后,您就可以基于观测云提供的 50+ 的脚本函数定义不同来源数据的解析规则。您可以通过页面的列表直接查看所有内置函数的语法格式、说明和示例,快速了解并取用。

步骤三:样本解析测试

定义解析规则后,若您需要确定输入的解析规则是否正确有效,可以根据已选择的数据类型输入对应的数据,并基于配置的解析规则进行测试。

您可以自由选择一键获取样本测试手动输入样本测试两种方式填入测试样本数据。

一键获取样本测试

点击「一键获取样本」,观测云会自动从已采集上报的数据中,按照筛选的数据范围选取最新的一条数据作为样本填入。需要注意的是,该方式每次只会查询最近6小时内的数据,若最近6小时无数据上报,则无法自动获取到。

手动输入样本测试

当您手动输入样本数据时,日志数据可在样本解析测试中直接输入 message 内容进行测试。但其他数据类型需要先将内容转换成“行协议”格式,示例如下图所示:

除此之外,您还可以通过终端编写 Pipeline 脚本来测试解析规则。

场景示例

以上我们详细介绍了创建配置 Pipeline 文件的过程,下面将以 DataWay 日志数据处理为例,帮助您更加充分理解使用 Pipeline 实现数据处理的高效性和必然性。

您可以通过 Pipeline 自定义切割出所需结构的日志数据,还可以将切割出来的字段作为属性使用。通过属性字段,我们可以快速筛选相关日志、进行数据关联分析,帮助我们快速去定位问题并解决问题。

Pipeline 官方库

观测云为日志数据提供了标准的 Pipeline 官方库,帮助您快速结构化日志数据,从而高效进行数据检索和分析。

在观测云工作空间日志 > Pipelines 中,您可以查看「Pipeline 官方库」中内置标准的 Pipeline 文件,包括 nginx、apache、redis、elasticsearch、mysql 等。您可以直接克隆后,进行自定义修改解析规则再使用。

日志 Pipeline 使用示例

开启日志采集器后,我们就可以在观测云查看和分析 Dataway 日志,确定需要日志切割出的字段,如日志产生的时间、日志的生成地址、日志状态以及日志的内容等。

我们在观测云工作空间日志 > Pipelines,创建一个新的 Pipeline 文件。日志来源选择 “dataway”,根据所选日志来源自动生成同名 Pipeline。我们可以自定义解析规则,编写 Pipeline 脚本如下:

 #%{YEAR}-%{MONTHNUM}-%{MONTHDAY}T%{HOUR}:%{MINUTE}:%{SECOND}%{INT}
#2021/10/25 - 06:48:07
#[GIN] 2021/10/25 - 06:48:07 | 200 |   30.890624ms |  114.215.200.73 | POST     "/v1/write/logging?token=tkn_5c862af92c4f49289e775d49234255b4"
add_pattern("TOKEN", "tkn_\\w+")
add_pattern("GINTIME", "%{YEAR}/%{MONTHNUM}/%{MONTHDAY}%{SPACE}-%{SPACE}%{HOUR}:%{MINUTE}:%{SECOND}")
grok(_,"\\[GIN\\]%{SPACE}%{GINTIME:timestamp}%{SPACE}\\|%{SPACE}%{NUMBER:dataway_code}%{SPACE}\\|%{SPACE}%{NOTSPACE:cost_time}%{SPACE}\\|%{SPACE}%{NOTSPACE:client_ip}%{SPACE}\\|%{SPACE}%{NOTSPACE:method}%{SPACE}%{GREEDYDATA:http_url}")

# gin 日志
if cost_time != nil {

  if http_url != nil  {
    grok(http_url, "%{TOKEN:token}")
    cover(token, [5, 15])
    replace(message, "tkn_\\w{0,5}\\w{6}", "****************$4")
    replace(http_url, "tkn_\\w{0,5}\\w{6}", "****************$4")
  }


  group_between(dataway_code, [200,299], "info", status)
  group_between(dataway_code, [300,399], "notice", status)
  group_between(dataway_code, [400,499], "warning", status)
  group_between(dataway_code, [500,599], "error", status)

  if status == 'info' ||
    dataway_code == '404' {
    drop()
    exit()
  }

  parse_duration(cost_time)
  duration_precision(cost_time, "ns", "ms")
  add_key(__type, "gin")
  set_measurement(__type, true)
  set_tag(service,"dataway")

  exit()
}

# 非 gin 日志
if cost_time == nil {
  # access log
  grok(_,"%{TIMESTAMP_ISO8601:timestamp}%{SPACE}%{NOTSPACE:level}%{SPACE}%{NOTSPACE:module}%{SPACE}%{NOTSPACE:code}%{SPACE}%{GREEDYDATA:msg}")
  if level == nil {
    grok(message,"Error%{SPACE}%{DATA:errormsg}")
    if errormsg != nil {
       add_key(status,"error")
       drop_key(errormsg)
    }
  }
  lowercase(level)
  group_in(level, ["error", "panic", "dpanic", "fatal","err","fat"], "error", status)
  group_in(level, ["info", "debug", "inf", "bug"], "info", status)
  group_in(level, ["warn", "war"], "warning", status)  

  if msg != nil {
    grok(msg, "%{TOKEN:token}")
    cover(token, [5, 15])
    replace(message, "tkn_\\w{0,5}\\w{6}", "****************$4")
    replace(msg, "tkn_\\w{0,5}\\w{6}", "****************$4")
  }

  add_key(__type, "dataway-log")
  set_measurement(__type, true)
  set_tag(service,"dataway-log")
  exit()
}

现在我们可以输入日志样本进行解析规则测试,验证所配置的解析规则是否正确。可以输入样本为:

通过上述 Pipeline 脚本切割,返回结果为:

确定解析规则正确后,观测云将保存该 Pipeline 文件,您就可以在日志查看器中选择“ DataWay ”的日志,并在日志详情页中查看切割后的所有字段。

您可以利用切割后的字段信息在查看器做数据的快速筛选,也可以设置所需的显示列;不仅帮助您提高数据查询的效率,也让使用体验得到优化。

另外,生成的字段可以作为属性字段帮助您与其他模块进行联动,例如,利用上图中的 container_id 在基础设施 > 容器查看器中搜索该容器的相关数据并进行联动分析,帮助我们快速排障并解决。

当然,您也可以在管理 > Pipelines 统一管理所有 Pipeline 文件,进行批量导出、删除等操作,提高工作效率。

结语

本文深入探讨了如何利用 Pipeline 功能完成数据治理,并分享了实际案例展示如何通过定义解析规则实现数据的结构化和标签化,并高效进行更多数据查询和分析;从而帮助您更好地理解和应用 Pipeline 功能,轻松提升数据治理的效率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 20.04 prometheus prometheus-process-exporter

prometheus-process-exporter 监控系统架构方案 https://blog.csdn.net/weixin_45801289/article/details/126922395 sudo apt install prometheus-process-exporter prometheus-process-exporter_0.4.0ds-1_amd64.deb service prometheus-process-exporter status netstat …

【数据结构和算法】移动零

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:双指针 2.2 方法二:两次遍历 2.3 方法三:一次遍历 三、…

vue_域名部署无法访问后端

前言 目前部署的比较另类,因为服务器为windows,目前还不是很会nginx,所以现在就只能在服务器上安装nodejs,然后直接使用npm run dev命令行的方式运行项目 遇到的坑 使用ip访问前端的时候,就可以访问,但是…

户外用品网站搭建的效果如何

近几年户外运动成为热门话题,户外装备品牌也逐渐出现在人们眼前,新老企业都在用自己的方式提升品牌形象,包括帐篷、登山用具、钓鱼品、滑雪品等,在市场都有很高需求。 而在实际经营中,户外用品品牌也面临一些难题&…

【postgresql】PSQLException: An I/O error occurred while sending to the backend.

org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. 发送到后端时发生I/O错误。 java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 34284 尝试将超出范围的整数作为2字节值发送:34284 pos…

基于单片机的视力保护及身姿矫正器设计(论文+源码)

1. 系统设计 在本次设计中,其系统整个框图如图2-1所示。其主要的核心控制模块由超声波模块,光敏电阻,按键模块,复位电路,红外模块,LCD显示等组成。其包括自动模式,手动模式。自动模式&#xff…

天猫数据分析-天猫查数据软件-11月天猫平台饮料市场品牌及店铺销量销额数据分析

今年以来,饮料是快消品行业中少数保持稳定增长的品类之一。 11月份,饮料市场同样呈现较好的增长态势。根据鲸参谋电商数据分析平台的相关数据显示,今年11月份,天猫平台上饮料市场的销量为2700万,环比增长约42%&#xf…

Linux本地搭建StackEdit Markdown编辑器结合内网穿透实现远程访问

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保…

CentOS7安装Docker及添加阿里云镜像加速详细教程

Docker官方安装教程网站:Install Docker Engine on CentOS | Docker Docs 具体流程如下: 1.确定你是CentOS7及以上版本 cat /etc/redhat-release 2.yum安装gcc相关 yum -y install gcc yum -y install gcc-c 3.安装需要的软件包 3.1安装docker引擎…

Python:发送qq邮箱只需几行代码轻松搞定

一、前言 在日常业务中,经常会遇到需要程序发邮件提醒自己的情况。例如数据异常、工作任务进度完成情况、今日天气、今日股票行情等各种场景。如果引入发送邮箱以推进预期进度的功能,那将大大优化我们的日常。我也是近期在写国债逆回购的监控脚本时想起…

chatchat知识库对话接口修改成sse流式输出方案

在chatchat结合chatGLM搭建的私有化知识库中,使用原生的webUI画面是可以流式输出的,而直接调用api接口,不管stream为true还是false,都是阻塞式输出的,也就是一口气返回给接口。 我们的解决方案是修改StreamingRespons…

32位MCU极致性价比高速风筒方案特点--【其利天下技术】

近年来,伴随着人们消费升级及现代工业技术水平的提升,电吹风市场已经步入了绿色节能、高效多功能化的发展阶段。人们对电吹风的需求和要求都在不断增加。然而,传统电吹风采用交流电机,使用寿命有限,维护不方便&#xf…

C++1114新标准——Lambdas,decltype

系列文章目录 C11&14新标准——Variadic templates(数量不定的模板参数) C11&14新标准——Uniform Initialization(统一初始化)、Initializer_list(初始化列表)、explicit C11&14新标准—— d…

【Python数据分析系列】一文搞懂二维数组中的排列组合(案例源码)

一、问题场景 在工作中,我们经常会碰到这样的问题场景,有一个4行5列的二维数组(4个波段,5个采样点),一行(一个一维数组)代表一个波段,我想知道数组中任意两个波段的差&am…

ESP32 连接阿里云 MQTT 报错MQTT Connect err:2

解决方法 跳转到 这个头文件<PubSubClient.h>里 MQTT_MAX_PACKET_SIZE 把这个的大小从原来的256 改为1024 MQTT_KEEPALIVE 把这个大小从原来的15 改为65 修改后再次连接即可成功 如下图&#xff1a;

下一代实时数据库:Apache Doris 【六】数据划分

3.4 数据划分 3.4.1 列定义3.4.2 分区与分桶3.4.3 PROPERTIES3.4.4 ENGINE3.4.5 其他后记 3.4 数据划分 以 3.3.2 的建表示例来理解。 3.4.1 列定义 以 AGGREGATE KEY 数据模型为例进行说明。更多数据模型参阅 Doris 数据模型。 列的基本类型&#xff0c; 可以通过在 mysql-cli…

【vSphere | VM】虚拟机自定义规范Ⅳ —— 使用虚拟机自定义规范创建 Linux 和 Windows VM

目录 5. 使用虚拟机自定义规范创建VM5.1 Linux 虚拟机示例Rocky Linux 9.2&#xff08;1&#xff09;克隆虚拟机&#xff08;2&#xff09;模板部署虚拟机 5.2 Windows 虚拟机示例Windows 10&#xff08;1&#xff09;克隆虚拟机&#xff08;2&#xff09;模板部署 Windows 10 …

Unity Meta Quest 一体机开发(十一):【手势追踪】远距离抓取

文章目录 &#x1f4d5;教程说明&#x1f4d5;玩家配置 DistanceHandGrabInteractor&#x1f4d5;物体配置 DistanceHandGrabInteractable&#x1f4d5;调整物体飞向手部的速度&#x1f4d5;调整探测物体的范围⭐HandFrustumNarraw⭐HandFrustumWide⭐HeadFrustum 此教程相关的…

高德地图画线,适用于在地图上画出各种道路

addPolyline() {let AMap this.AMaplet polyline new AMap.Polyline({// map: this.map,// polyline 路径path: [new AMap.LngLat("119.368904", "30.913423"),new AMap.LngLat("119.382122", "30.901176"),],strokeColor: #F3D930,…

MapReduce基础编程

文章目录 第1关&#xff1a;合并去重第2关&#xff1a;整合排序第3关&#xff1a;信息挖掘 第1关&#xff1a;合并去重 编程要求 对于两个输入文件&#xff0c;即文件A和文件B&#xff0c;请编写MapReduce程序&#xff0c;对两个文件进行合并&#xff0c;并剔除其中重复的内容…