如何编写 Pipeline 脚本

Pipeline 编写较为麻烦,为此,DataKit 中内置了简单的调试工具,用以辅助大家来编写 Pipeline 脚本。

调试 grok 和 pipeline

指定 pipeline 脚本名称,输入一段文本即可判断提取是否成功

Pipeline 脚本必须放在 /pipeline 目录下。

提取失败示例(只有 message 留下了,说明其它字段并未提取出来):

如果调试文本比较复杂,可以将它们写入一个文件(sample.log),用如下方式调试:

更多 Pipeline 调试命令,参见 datakit help pipeline。

Grok 通配搜索

由于 Grok pattern 数量繁多,人工匹配较为麻烦。DataKit 提供了交互式的命令行工具 grokq(grok query):

Windows 下,请在 Powershell 中执行调试。

在处理一些调用栈相关的日志时,由于其日志行数不固定,直接用 GREEDYDATA 这个 pattern 无法处理如下情况的日志:

此处可以使用 GREEDYLINES 规则来通配,如(/usr/local/datakit/pipeline/test.p):

将上述多行日志存为 multi-line.log,调试一下:

得到如下切割结果:

在所有 Pipeline 切割出来的字段中,它们都是指标(field)而不是标签(tag)。由于行协议约束,我们不应该切割出任何跟 tag 同名的字段。这些 Tag 包含如下几类:

  • DataKit 中的全局 Tag
  • 日志采集器中自定义的 Tag

另外,所有采集上来的日志,均存在如下多个保留字段。我们不应该去覆盖这些字段,否则可能导致数据在查看器页面显示不正常。

字段名类型说明

string(tag) 日志来源

string(tag) 日志对应的服务,默认跟

一样

string(tag) 日志对应的等级

string(field) 原始日志

int 日志对应的时间戳

当然我们可以通过特定的 Pipeline 函数覆盖上面这些 tag 的值。

一旦 Pipeline 切割出来的字段跟已有 Tag 重名(大小写敏感),都会导致如下数据报错。故建议在 Pipeline 切割中,绕开这些字段命名。

这里以 DataKit 自身的日志切割为例。DataKit 自身的日志形式如下:

编写对应 pipeline:

这里引用了几个用户自定义的 pattern,如 _dklog_date、_dklog_level。我们将这些规则存放

注意,用户自定义 pattern 如果需要==全局生效==(即在其它 Pipeline 脚本中应用),必须放置在

现在 pipeline 以及其引用的 pattern 都有了,就能通过 DataKit 内置的 pipeline 调试工具,对这一行日志进行切割:

FAQ

Pipeline 为:

其报错如下:

A: 对于有特殊字符的变量,需将其用两个 ` 修饰一下:

命令如下:

A: 调试用的 Pipeline 脚本,需将其放置到 /pipeline 目录下。

在日常的日志中,因为业务的不同,日志会呈现出多种形态,此时,需写多个 Grok 切割,为提高 Grok 的运行效率,可根据日志出现的频率高低,优先匹配出现频率更高的那个 Grok,这样,大概率日志在前面几个 Grok 中就匹配上了,避免了无效的匹配。

在日志切割中,Grok 匹配是性能开销最大的部分,故避免重复的 Grok 匹配,能极大的提高 Grok 的切割性能。

在某些情况下,我们需要的只是日志==中间的几个字段==,但不好跳过前面的部分,比如

其中,我们只需要 44 这个值,它可能代码响应延迟,那么可以这样切割(即 Grok 中不附带 :some_field 这个部分):

大家在使用 add_pattern() 添加局部模式时,容易陷入转义问题,比如如下这个 pattern(用来通配文件路径以及文件名):

如果我们将其放到全局 pattern 目录下(即 pipeline/pattern 目录),可这么写:

如果使用 add_pattern(),就需写成这样:

<span class="code-snippet_outer">add_pattern(<span class="code-snippet__string">'source_file',&#xA0;<span class="code-snippet__string">'(/?[\\w_%!$@:.,-]?/?)(\\S+)?')</span></span></span>

即这里面反斜杠需要转义。

Original: https://www.cnblogs.com/littleguance/p/16791822.html
Author: 编程小专家
Title: 如何编写 Pipeline 脚本



相关阅读

Title: scrapyd部署_Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理

Scrapyd安装:

#&#x670D;&#x52A1;&#x7AEF;
pip install scrapyd
#&#x5BA2;&#x6237;&#x7AEF;
pip install scrapyd-client

打开命令行,输入scrapyd

访问127.0.0.1:6800即可看到可视化界面

部署scrapy项目

在scrapy项目目录下,有一个scrapy.cfg的配置文件:

demo 项目名

project 工程名

windows环境下配置:

python虚拟环境下找到 Scripts/scrapyd-deploy

新建scrapyd-deploy.bat

@echo of

"E:python_venvenvTestScriptspython.exe" "E:python_venvenvTestScriptsscrapyd-deploy" %1 %2 %3 %4 %5 %6 %7 %8 %9

注意修改成自己电脑python的环境

然后,进入到我们爬虫的根目录,运行scrapyd-deploy

scrapyd-deploy 项目名 -p 工程名

到这里我们的scrapy 项目就部署完成了。

注意scrapyd服务端的要开启

Gerapy安装

pip install gerapy
gerapy init
cd gerapy
gerapy migrate

在命令行中输入gerapy init,执行完毕后在当前目录下会生成一个名称为gerapy的文件夹,随后进入该文件夹,下输入gerapy migrate ,成功后在gerapy目录下生成一个sqlite数据库

创建管理员用户

gerapy createsuperuser

运行gerapy

gerapy runserver

访问 http://127.0.0.1:8000/ 就可以看到可视化管理界面

连接scrapyd 主机

scrapy项目上传

将写好的爬虫项目复制到gerapy下面的project中

Original: https://blog.csdn.net/weixin_34847632/article/details/112222301
Author: 夜半侃侃谈
Title: scrapyd部署_Scrapyd+Gerapy部署Scrapy爬虫进行可视化管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363497/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总