格式化日志提取模拟写入Elasticsearch

2023-05-16

1.目标

任务场景和目标:

  • 已有服务的格式化日志.
  • 利用Ingest Pipeline提取
  • 通过Simulate Pipeline API模拟写入Elasticesearch

目的是对Pipeline文件进行验证。

日志格式如下:

行号|时间戳|进程ID|线程ID|日志级别|消息内容

示例:

2|2018-11-28,10:50:06.792978|6719|140737353873600|WARN|***DKDD

2.步骤

操作步骤如下:

  • 创建Ingest Pipeline文件
  • 提交(put)到Elasticsearch
  • 创建日志文档
  • 验证结果

2.1创建pipeline文件

保存以下内容为文件,如/home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug/pipeline.json

{
    "description": "test-pipeline",
    "processors": [{
        "grok": {
            "field": "message",
            "patterns": ["%{NUMBER:lineno}\\|%{MY_TIMESTAMP:my_timestamp}\\|%{PID:pid}\\|%{TID:tid}\\|%{LOGLEVEL:log_level}\\|%{GREEDYDATA:message}"],
            "pattern_definitions": {
                "DATE_ZH": "%{YEAR}-%{MONTHNUM2}-%{MONTHDAY}",
                "TIME_MS": "%{TIME}.\\d{6}",
                "MY_TIMESTAMP": "%{DATE_ZH},%{TIME_MS}",
                "PID": "%{NUMBER}",
                "TID":"%{NUMBER}"
            }
        }
    }]
}

patterns:日志匹配模式

pattern_definitions: 自定义模式. DATE_ZH为"yyyy-MM-dd"格式的日期,TIMES_MS为时间格式.

 

2.2提交pipeline

curl -H'Content-Type: application/json' -XPUT 'http://localhost:9200/_ingest/pipeline/test-pipeline' -d@/home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug/pipeline.json

http://localhost:9200为Elasticsearch主机端口.

test-pipeline为创建的Pipeline名称.

-d@后面为pipeline文件名称.

 

2.3创建文档

创建上述日志内容的文档.

curl -H'Content-Type: application/json' -XPOST 'http://localhost:9200/_ingest/pipeline/test-pipeline/_simulate' -d'
{
	"docs": [{
		"_index": "my-test-log",
		"_type": "log",
		"_id": "AVpsUYR_du9kwoEnKsSA",
		"_score": 1,
		"_source": {
			"@timestamp": "2017-03-31T18:22:25.981Z",
			"beat": {
				"hostname": "my think",
				"name": "RestReviews",
				"version": "5.1.1"
			},
			"input_type": "log",
			"message": "2|2018-11-28,10:50:06.792978|6719|140737353873600|WARN|***DKDD",
			"offset": 3,
			"source": "/home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug/1.log",
			"tags": [
				"debug",
				"reviews"
			],
			"type": "log"
		}
	}]
}'

写入的索引名称为my-test-log.

message与pipeline的field对应,内容为日志信息.

 

2.4验证结果

返回内容如下:

{
    "docs": [{
        "doc": {
            "_index": "my-test-log",
            "_type": "log",
            "_id": "AVpsUYR_du9kwoEnKsSA",
            "_source": {
                "offset": 3,
                "my_timestamp": "2018-11-28,10:50:06.792978",
                "input_type": "log",
                "log_level": "WARN",
                "pid": "6719",
                "source": "/home/liujg/dev/crush-backend-cpp/crush/gateway/bin/Debug/1.log",
                "message": "***DKDD",
                "type": "log",
                "tid": "140737353873600",
                "tags": ["debug", "reviews"],
                "@timestamp": "2017-03-31T18:22:25.981Z",
                "lineno": "2",
                "beat": {
                    "name": "RestReviews",
                    "version": "5.1.1",
                    "hostname": "my think"
                }
            },
            "_ingest": {
                "timestamp": "2018-12-04T09:24:27.236Z"
            }
        }
    }]
}

提取出的结构化数据有:

  • lineno:行号
  • my_timestamp:时间戳
  • pid:进程id
  • tid:线程id
  • log_level:日志级别
  • message:日志正文


3.资料

Parsing csv files with Filebeat and Elasticsearch Ingest Pipelines
https://www.objectrocket.com/blog/how-to/elasticsearch-ingest-csv/

grok模式

https://github.com/logstash-plugins/logstash-patterns-core/blob/master/patterns/grok-patterns

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格式化日志提取模拟写入Elasticsearch 的相关文章

随机推荐

  • 《LeetCode零基础指南》(第七讲) 二维数组

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 矩阵的定义 2 矩阵的水平翻转 3 矩阵的垂直翻转 4 矩阵的顺时针旋转 5 矩阵的逆时针旋转 6 矩阵的转置 7 二维数组 8 二维数组的索
  • 《LeetCode零基础指南》(第五讲) 排序API

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 排序简介 2 qsort 简介 3 qsort 调用 4 比较函数 1 函数原型 2 函数定义 3 简化写法 5 更多比较函数 二 题目分析
  • 《LeetCode零基础指南》(第三讲) 一维数组

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 顺序存储2 存储方式3 长度和容量4 数组的索引5 数组的函数传参 二 题目分析1 数组的查找2 数组的最小值3 斐波那契数列4 绝对值为 k 的数对5
  • js拼字符串,显示在页面上,出现undefined字样处理办法

    首先 xff0c 你需要明白为什么会出现undefined xff0c 这个东西是什么 xff1f undefined是说明你所使用的对象未定义 xff0c 为什么会未定义 xff1f 例如 xff1a var str str 61 str
  • 《LeetCode零基础指南》导读

    文章目录 一 出该专栏的目的 二 本专栏适宜人群 三 本专栏涉及的知识点 四 本专栏收费模式 五 付费玩家专属福利 六 专栏阅读须知 七 配套赠送福利 一 出该专栏的目的 由于之前的 算法零基础100讲 为很多真正零基础的同学造成了困扰 他
  • 《LeetCode零基础指南》(第一讲) 函数

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 函数简介2 函数的基本概念3 函数的基本结构4 返回类型5 函数名6 参数列表7 函数体8 返回值 二 题目分析1 整数乘法2 整数除法3 次幂函数4
  • 《算法零基础100讲》导读

    文章目录 一 为什么要学算法 二 本专栏适宜人群 三 本专栏涉及的算法 四 本专栏收费模式 五 收费玩家专属福利 六 专栏阅读须知 七 配套赠送福利 一 为什么要学算法 如果你只是想学会写代码 或许 算法与数据结构 并不是那么重要 但是 想
  • 《LeetCode零基础指南》(第二讲) 循环

    文章目录 零 了解网站1 输入输出2 刷题步骤3 尝试编码4 调试提交 一 概念定义1 语法规则2 简单应用3 初始化表达式1 xff09 初始化表达式外置2 xff09 初始化表达式内置 4 条件表达式5 执行表达式 二 题目分析1 2
  • 《LeetCode零基础指南》(第四讲) 指针

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 1 指针即地址 2 指针的定义 3 定义指针变量 4 取地址 5 数组的地址 6 解引用 7 内存申请 8 返回数组 9 范式 10 概念总结 二
  • 《LeetCode零基础指南》(第六讲) 贪心

    文章目录 零 了解网站 1 输入输出 2 刷题步骤 3 尝试编码 4 调试提交 一 概念定义 二 题目分析 1 最大乘积差 2 三角形的最大周长 3 数组拆分 I 4 救生艇 5 摆动排序 II 6 分发饼干 7 最少操作使数组递增 8 有
  • 关于我,一个35岁的老程序员的心路历程

    打工十余年 xff0c 从盛大 网易 电魂 再到字节 xff0c 再到 130w粉 的知识博主 xff0c 我都经历了什么 xff1f 如果你现在正为是否要在 编程行业 深耕下去而头疼 xff0c 那么可以看一下我的故事 xff0c 希望可
  • 【英雄算法联盟】新人指引

    文章目录 一 知识交流1 发布笔记2 阅读笔记1 xff09 搜索栏2 xff09 星球标签 3 自我介绍4 交流群 二 精选专栏1 九日集训2 31天学会算法3 每日八股文 三 学习指导1 向我提问 四 免费资源 欢迎成为 英雄算法联盟
  • 球友的一个帖子,半夜三点给我整睡不着了……

    文章目录 一 起因二 建议1 括号和缩进2 仔细审题3 独立思考4 早起的好办法5 chatgpt会代替人类吗 xff1f 三 解决1 数据结构2 初始化3 判定 一 起因 事情的起因源自于星球里面一位球友的帖子 xff0c 本来三点醒来上
  • 夜深人静写算法(一)- 搜索入门

    新地址 xff1a 夜深人静写算法 xff08 一 xff09 搜索入门
  • FEC功能是什么?有哪些配置注意事项

    一 FEC功能产生的背景 光纤通信的两个重要发展方向是提高传输速率和延长传输距离 随着传输速率的提高 xff0c 信号传输过程中限制传输距离的因素变得更多 xff0c 比如色度色散 非线性效应 偏振模色散等 xff0c 影响两者的同时提升
  • ❤️粉丝专属福利❤️

    粉丝专属福利 语言入门 xff1a 光天化日学C语言 示例代码 语言训练 xff1a C语言入门100例 试用版 数据结构 xff1a 画解数据结构 源码 算法入门 xff1a 算法入门 指引 算法进阶 xff1a 夜深人静写算法 算法模板
  • 夜深人静写算法(四十三)- 线段树

    目录 一 引例 nbsp nbsp nbsp nbsp 1 区间最值 nbsp nbsp nbsp nbsp
  • 夜深人静写算法(九)- Dancing Links X(跳舞链)

    目录 nbsp nbsp 一 引例 nbsp nbsp nbsp nbsp nbsp nbsp 1 买点彩票压压惊 二 精确覆盖 nbsp nbsp nbsp nbsp nbsp nbsp 1 精确覆盖的定义
  • Redis底层详解(一) 哈希表和字典

    一 哈希表概述 首先简单介绍几个概念 xff1a 哈希表 xff08 散列表 xff09 映射 冲突 链地址 哈希函数 哈希表 xff08 Hash table xff09 的初衷是为了将数据映射到数组中的某个位置 xff0c 这样就能够通
  • 格式化日志提取模拟写入Elasticsearch

    1 目标 任务场景和目标 xff1a 已有服务的格式化日志 利用Ingest Pipeline提取通过Simulate Pipeline API模拟写入Elasticesearch 目的是对Pipeline文件进行验证 日志格式如下 xff