嘴巴会说(情商)比技术有时候更重要!

水平有限,希望你看完有所收获!

背景

1,filebeat直连Elasticsearch,需要对massage提取一些特定的字段。

2,如果你对数据需要处理的比较多还是建议用logstash,logstash更强大一些。

pipeline 简单介绍

pipeline 我最开始了解的时候是使用jenkins的时候,即交付流水线。

平时写的jenkinsfile就是用的pipeline。

我理解的pipeline就是把你在界面上配置的自动化变成代码脚本。即Pipeline as Code。

一、原始massage

原始的日志内容如下,

我需要提取:4975481caf96a734bdb300acc118b5b5

2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|1623934239.079|20003|user service error|/var/www/html/vendor/mdp/java-client/src/JavaClientResponse.php

二、操作

想要使用filebeat提取massage字段

1,得先在es里面创建一个pipeline脚本。

2,配置filebeat使用es的pipeline脚本。

2.1 创建pipeline.json文件

就是随便在linux目录创建一个文件。

文件名称随便起,后期能找到就行。方便以后做更改。
vim extract-traceid-pipeline.json
{
"description" : "extract-traceid-pipeline", # 描述,可以描述一下这个pipeline的作用
"processors" : [
{
"grok" :{ # grok 语法
"field" : "message", # 需要对你采集的信息的哪个字段进行处理。其实就是filebeat采集完一条日志之后 来执行这个处理。你可以对采集的任何字段的值进行处理
"patterns" : ["ERROR\\|%{DATA:trace_id}\\|"] # 这个就是从message信息中提取信息的语法了。
}
}
]
} # [""] 这个是固定写法,里面的才是正则
# 2021-06-17 20:50:39|ERROR|4975481caf96a734bdb300acc118b5b5|1623934239.079......
# 提取4975481caf96a734bdb300acc118b5b5,可以看到这段数据之前的是ERROR|
# 那我前面就写ERROR\\| |需要转义但是es也需要转义一层,所以就是两个\\
# %{} 这个是固定的写法,就是你想要提取哪个信息然后 使你提取出来的信息成为一个字段key:value。
# DATA 是grok的语法,内置字段类型,比如
DATE:表示你提取的信息是日期
NUMBER:表示为数值
DATA:表示为字符串
IP:表示为一个ip地址
你在这标识的类型会在kibana上面把key的类型标识出来。
# :trace_id 这个表示你给 你提取出来的信息定义一个Key的名称,比如
trace_id:4975481caf96a734bdb300acc118b5b5
到时候你收集到的这条日志信息里面就会多出这一个字段
你在kibana就能搜索到。
这个名称你随便定义就行。

2.2 将json文件传到es

在你json文件所在的目录执行
curl -H "Content-Type: application/json" -XPUT 'http://192.168.31.61:9200/_ingest/pipeline/extract-traceid-pipeline' -d@extract-traceid-pipeline.json # extract-traceid-pipeline 这个名称你可以随便起,但是在filebeat配置的时候需要写这个名称
# extract-traceid-pipeline.json 这个就是你自己的json文件

2.3 查看pipeline脚本

可以看到es里面有我们上传的pipeline规则了

访问:http://192.168.31.61:9200/_ingest/pipeline,我没安装google浏览器json插件。安装一个就格式化了。

还有就是可以用kibana的开发工具看到:

2.4 filebeat配置

# 编辑filebeat.yml配置文件

output.elasticsearch:
hosts: ["192.168.31.61:9200","192.168.31.62:9200","192.168.31.63:9200"]
pipelines: # pipelines 就是你下面可以放多个pipeline
- pipeline: "extract-traceid-pipeline" # 这个名称就是你curl put到es里面 你后面写的那个名称
when.contains: # 这里是一个filebeat的配置语法,可以看看filebeat的官方文档,大致的意思就是if 条件判断
log_topics: "php-errlogs" # 就是当log_topics:"php-errlogs" 的时候才用这个pipeline # when 就是if
# contains 就是 包含的意思 还有其他的比如:and,or,not,equals(必须相等)

2.5 查看数据

可以直接查看es数据,也可以去kibana上面看。收集的数据里面就会多出一个字段。

三、grok在线调试工具

https://www.5axxw.com/tools/v2/grok.html

filebeat 提取获取massage字段 利用pipeline grok 7.12的更多相关文章

  1. java对象的内存布局(二):利用sun.misc.Unsafe获取类字段的偏移地址和读取字段的值

    在上一篇文章中.我们列出了计算java对象大小的几个结论以及jol工具的使用,jol工具的源代码有兴趣的能够去看下.如今我们利用JDK中的sun.misc.Unsafe来计算下字段的偏移地址,一则验证 ...

  2. Filebeat Nginx Module 自定义字段

    Filebeat Nginx Module 自定义字段 一.修改/usr/local/nginx/conf/nginx.conf中 log_format access '$remote_addr - ...

  3. resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found.

    resultset 对象获取行字段数据时报:java.sql.SQLException: Column 'id' not found. 代码: String sql="SELECT d.co ...

  4. sql 根据指定条件获取一个字段批量获取数据插入另外一张表字段中+MD5加密

    /****** Object: StoredProcedure [dbo].[getSplitValue] Script Date: 03/13/2014 13:58:12 ******/ SET A ...

  5. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"> <ItemTemplate> <asp:Label ID ...

  6. SharePoint 获取Lookup 字段的值

    获取某个List里的Lookup字段的值是很普遍的事,那么我们将它封装起来 获取Lookup字段值的方法: /// <summary> /// To get lookup field Id ...

  7. thinkphp获取特定字段的两种方法

    thinkphp getField( )和field( ) 2014年10月05日 ⁄ 综合 ⁄ 共 1509字 ⁄ 字号 小 中 大 ⁄ 评论关闭 做数据库查询的时候,比较经常用到这两个,总是查手册 ...

  8. 浏览器中上传Excel文件,服务器获取Excel字段。写入的数据库中。操作Excel的方式jxl和poi。

    从Excel中获取字段,官方给我们提供了方法,地址https://poi.apache.org/components/spreadsheet/quick-guide.html#CellContents ...

  9. sql server 获取数据字段(表的字段和类型信息)

    获取数据字段(表的字段和类型信息) SELECT 表名= then d.name else '' end, 表说明= then isnull(f.value,'') else '' end, 字段序号 ...

随机推荐

  1. C语言风格的 for 循环(SHELL的循环写法 已验证20200517)

    C语言风格的 for 循环 C语言风格的 for 循环的用法如下: for((exp1; exp2; exp3))do    statementsdone 几点说明: exp1.exp2.exp3 是 ...

  2. centos 6 x64 yum(sohu)

    centos 6 x64 yum(sohu) weixin_34405354 2012-08-23 10:07:35 24 收藏 文章标签: 运维 版权 [base] name=Base baseur ...

  3. Linux巡检常用命令

    # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostn ...

  4. [转发]PotPlayer 无损截取视频片段

    PotPlayer 无损截取视频片段 2019-03-29 21:04:21 ForeverStrong 阅读数 2928  收藏 更多 分类专栏: 视频图像编辑   PotPlayer 无损截取视频 ...

  5. 3.socket编程示例

    #block_server.py 非阻塞IO示例#有个疑惑:下面的connfd的blockind要设置为True,不然会出错,待解决from socket import *from time impo ...

  6. 第七章 DevOps工具链

    DevOps工具生态圈 协同开发工具 敏捷开发 可视化 加强团队沟通协作 数据分析 协同开发 持续集成工具 Jenkins 自动化编译 自动化测试 自动化部署 丰富的插件库 版本管理工具 Git 简介 ...

  7. docker-ce 安装

    配置源 确认版本 添加镜像加速器 https://docs.docker.com/engine/release-notes/19.03/ for centos wget -O /etc/yum.rep ...

  8. F5 BIG-IQ 8.0 发布 - 借助一个统一的管理平台,管理您的所有 BIG-IP 设备和服务

    针对完整可见性和控制的 BIG-IQ 集中式管理 BIG-IP 设备和服务的端到端控制 高效管理(编排.可见性和合规性)依赖于跨本地和云部署中始终如一的应用服务和安全策略.利用独立统一的管理平台实现对 ...

  9. 如何保证mq不丢消息

    1.消息的发送流程 一条消息从生产到被消费,将会经历3个阶段 生产阶段,Producer 新建消息,然后通过网络将消息投递给MQ Broker 存储阶段,消息将会存储在Broker端磁盘中 消费阶段, ...

  10. React-setState的那些事儿

    关于setState,使用过react的人应该再熟悉不过了,在hooks还不那么普及的时候,除了使用函数式组件,我们使用最多的应该就是类创建react的组件了,而在类组件中我们通常会使用state来管 ...