OpenObserve API Usage Guide for Log Management

OpenObserve API Usage Guide for Audit Log Management

1. 概述

1.1 目标

本文档旨在详细介绍 OpenObserve 的 API 使用方法,帮助用户通过 API 实现日志管理功能,包括日志摄入、查询、模糊匹配(类似 SQL 的 LIKE)、stream 管理等。文档基于 test stream 的审计日志场景,解决之前遇到的模糊匹配问题。

1.2 OpenObserve API 简介

OpenObserve 是一个开源的 observability 平台,支持日志、指标和追踪数据。API 是与 OpenObserve 交互的主要方式,支持以下功能:

  • 日志摄入:通过 API 批量摄入日志数据。
  • 日志查询:支持 SQL-like 语法查询日志,支持模糊匹配。
  • Stream 管理:创建、更新、删除 stream,以及管理 stream 设置(如 full_text_search_keys)。
  • 用户和组织管理:管理组织、用户和权限。
  • 告警和仪表盘:配置告警规则和创建仪表盘。

1.3 认证

OpenObserve API 使用 HTTP Basic Authentication,所有请求必须包含 Authorization 头。认证信息是用户 ID 和密码的 Base64 编码。

生成 Authorization 头
  • 用户 ID:admin@admin.com
  • 密码:admin
  • Base64 编码:echo -n "admin@admin.com:admin" | base64 -> YWRtaW5AYWRtaW4uY29tOmFkbWlu
示例
-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu"

2. API 端点和使用方法

以下是 OpenObserve 的主要 API 端点及其使用方法,基于 OpenObserve 文档。

2.1 日志摄入 API

端点
  • POST /api/{organization}/{stream}/_json
功能

批量摄入日志数据到指定 stream。OpenObserve 会根据数据自动推断 schema。

请求
  • Content-Typeapplication/json
  • Body:JSON 数组,每个元素是一条日志记录。
示例

摄入 3 条审计日志到 test stream:

curl -X POST \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '[{"user": "test_user_create","path": "/test/path","category": "File Management","event": "Create Document","date": "2025-04-28 17:01:00","comment": "Created a new document","ip": "192.168.1.1"},{"user": "admin_user","path": "/admin/path","category": "User Management","event": "Update User","date": "2025-04-28 17:02:00","comment": "Updated user profile","ip": "192.168.1.2"},{"user": "create_team_lead","path": "/team/path","category": "Team Management","event": "Create Team","date": "2025-04-28 17:03:00","comment": "Created a new team","ip": "192.168.1.3"}]' \http://localhost:5080/api/default/test/_json
响应
{"code": 200,"status": [{"name": "test","successful": 3,"failed": 0}]
}
注意事项
  • 如果 test stream 不存在,OpenObserve 会自动创建。
  • 确保字段类型一致(例如 date 应始终为字符串格式)。

2.2 日志查询 API

端点
  • POST /api/{organization}/{stream}/_search
功能

使用 SQL-like 语法查询日志,支持模糊匹配、聚合等操作。

请求
  • Content-Typeapplication/json
  • Body
    • query.sql:SQL 查询语句。
    • query.start_timequery.end_time:查询时间范围(微秒)。
    • fromsize:分页参数。
示例 1:基本查询

查询 test stream 的最新 10 条记录:

curl -X POST \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '{"query": {"sql": "SELECT * FROM test","start_time": 0,"end_time": 999999999999999,"from": 0,"size": 10}}' \http://localhost:5080/api/default/test/_search
响应
{"took": 10,"hits": {"total": 3,"hits": [{"user": "test_user_create","path": "/test/path","category": "File Management","event": "Create Document","date": "2025-04-28 17:01:00","comment": "Created a new document","ip": "192.168.1.1"},{"user": "admin_user","path": "/admin/path","category": "User Management","event": "Update User","date": "2025-04-28 17:02:00","comment": "Updated user profile","ip": "192.168.1.2"},{"user": "create_team_lead","path": "/team/path","category": "Team Management","event": "Create Team","date": "2025-04-28 17:03:00","comment": "Created a new team","ip": "192.168.1.3"}]}
}
示例 2:模糊匹配查询

使用 str_match 实现模糊匹配(类似 LIKE '%create%'),查找 user 字段包含 “create” 的记录:

curl -X POST \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '{"query": {"sql": "SELECT * FROM test WHERE str_match(user, '\''create'\'')","start_time": 0,"end_time": 999999999999999,"from": 0,"size": 10}}' \http://localhost:5080/api/default/test/_search
响应
{"took": 10,"hits": {"total": 2,"hits": [{"user": "test_user_create","path": "/test/path","category": "File Management","event": "Create Document","date": "2025-04-28 17:01:00","comment": "Created a new document","ip": "192.168.1.1"},{"user": "create_team_lead","path": "/team/path","category": "Team Management","event": "Create Team","date": "2025-04-28 17:03:00","comment": "Created a new team","ip": "192.168.1.3"}]}
}
示例 3:全局全文搜索

使用 match_all 在所有字段中查找 “create”:

curl -X POST \-H "Authorization: Basic YWRtaW5AYWRmiW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '{"query": {"sql": "SELECT * FROM test WHERE match_all('\''create'\'')","start_time": 0,"end_time": 999999999999999,"from": 0,"size": 10}}' \http://localhost:5080/api/default/test/_search
响应
{"took": 10,"hits": {"total": 3,"hits": [{"user": "test_user_create","path": "/test/path","category": "File Management","event": "Create Document","date": "2025-04-28 17:01:00","comment": "Created a new document","ip": "192.168.1.1"},{"user": "admin_user","path": "/admin/path","category": "User Management","event": "Update User","date": "2025-04-28 17:02:00","comment": "Updated user profile","ip": "192.168.1.2"},{"user": "create_team_lead","path": "/team/path","category": "Team Management","event": "Create Team","date": "2025-04-28 17:03:00","comment": "Created a new team","ip": "192.168.1.3"}]}
}
注意事项
  • str_match 不需要字段在 full_text_search_keys 中,但如果启用全文搜索,查询效率可能更高。
  • match_all 依赖 full_text_search_keys,否则可能无法匹配。

2.3 Stream 管理 API

端点 1:列出所有 Streams
  • GET /api/{organization}/streams
功能

列出组织中的所有 stream,包括 schema 和设置。

示例
curl -X GET \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \http://localhost:5080/api/default/streams
响应
[{"name": "test","storage_type": "disk","stream_type": "logs","stats": {"doc_num": 3,"storage_size": 0.0003},"schema": [{"name": "_timestamp", "type": "Int64"},{"name": "category", "type": "Utf8"},{"name": "comment", "type": "Utf8"},{"name": "date", "type": "Utf8"},{"name": "event", "type": "Utf8"},{"name": "ip", "type": "Utf8"},{"name": "path", "type": "Utf8"},{"name": "user", "type": "Utf8"}],"settings": {"full_text_search_keys": [],"data_retention": 0}}
]
端点 2:更新 Stream 设置
  • PUT /api/{organization}/streams/{stream}/settings
功能

更新 stream 的设置,例如 full_text_search_keys

示例

尝试启用 user 字段的全文搜索:

curl -X PUT \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '{"full_text_search_keys": ["user"]}' \http://localhost:5080/api/default/streams/test/settings
响应
{"code": 200,"message": "Settings updated successfully for stream test"
}
注意事项
  • 之前尝试更新 full_text_search_keys 失败(Json deserialize error),建议通过 UI 手动设置,或者联系 OpenObserve 社区解决。
端点 3:删除 Stream
  • DELETE /api/{organization}/streams/{stream}
功能

删除指定 stream 及其数据。

示例
curl -X DELETE \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \http://localhost:5080/api/default/streams/test
响应
{"code": 200,"message": "Stream test deleted successfully"
}

2.4 告警 API

端点
  • POST /api/{organization}/alerts
功能

创建告警规则,例如当 event 字段包含 “Error” 时触发告警。

示例

创建告警,当 event 包含 “Error” 时触发:

curl -X POST \-H "Authorization: Basic YWRtaW5AYWRtaW4uY29tOmFkbWlu" \-H "Content-Type: application/json" \-d '{"name": "error_alert","stream": "test","query": "SELECT * FROM test WHERE str_match(event, '\''Error'\'')","condition": "num > 0","threshold": 1,"frequency": "5m","destination": "email","email": "admin@example.com"}' \http://localhost:5080/api/default/alerts
响应
{"code": 200,"message": "Alert created successfully"
}

3. 总结

OpenObserve 的 API 提供了强大的日志管理功能,支持摄入、查询、模糊匹配和 stream 管理。通过 str_match 可以实现类似 LIKE 的模糊匹配,满足审计日志场景的需求。建议进一步优化 full_text_search_keys 设置,并关注 OpenObserve 的版本更新以获取更多功能支持(如 REGEXPLIKE)。

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

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

相关文章

消防岗位技能竞赛流程方案策划

一、比赛目的: 为大力倡导“11.9”全国消防安全活动月,紧紧围绕“人人参与消防,共创平安和谐”的活动主题,结合公司实际情况,特开展一次消防技能竞赛活动。开展一场比思想、比工作作风、比消防业务技能、比业余文化生…

DAY9-USF4.0技术文档笔记

目录 1.概述 2.参考协议标准 3.术语与定义 4.引言 5.UFS架构 6.UFS电气特性:时钟、复位、信号与电源 7.复位、加电升压和断电降压 8. M-PHY 9.UniPro 10.UTP 11.SCSI 12.UFS安全 13.UFS功能描述 14.描述符、标志与属性 15.UFS机械标准 SCSI 查询命令 1.重要产品…

安装kubernetes 1.33版本

一、环境准备 1、内核升级 #升级内核: yum -y install kernel-ml-5.10.3-1.el7.elrepo.x86_64.rpm kernel-ml-devel-5.10.3-1.el7.elrepo.x86_64.rpm# 查询可用内核版本 # awk -F\ $1"menuentry " {print i " : " $2} /etc/grub2.cfg# 调整默…

【IPMV】图像处理与机器视觉:Lec8 Image Pyramid 图像金字塔

【IPMV】图像处理与机器视觉 本系列为2025年同济大学自动化专业**图像处理与机器视觉**课程笔记 Lecturer: Rui Fan、Yanchao Dong Lec0 Course Description Lec3 Perspective Transformation Lec7 Image Filtering Lec8 Image Pyramid 持续更新中 文章目录 【IPMV】图像处…

产品经理.产品设计.产品设计工具

一、 产品经理常用工具 1. 业务流程图---系统流程图 业务流程图,面向用户调研,描述业务的流转和数据的处理要求,跟用户和业务方确认;---业务角色的泳道流程图。 系统流程图,面向产品需求设计, prd系描述各…

6轴、智能、低功耗惯性测量单元BMI270及其OIS接口

BOSCH惯性传感器IMUs 芯片代码 通过00寄存器读回的芯片编码可以判断芯片型号,BMI270为(0x24) ,如不是该值,则说明不是BMI270。 型号芯片代码BMI085CHIP_ID ( 0x1F)BMI088CHIP_ID ( 0x1E)BMI160CHIP_ID (0xD1)BMI270CHIP_ID (0x24)BMI323CHIP_ID (0x004…

【文献速递】邻位连接技术(PLA)在细胞器相互作用中的应用

在神经科学研究领域,细胞死亡机制一直是关注的重点,尤其是与神经退行性疾病相关的细胞死亡形式。荷兰格罗宁根大学的研究人员在2025年发表了“Regulation of calcium signaling prevents neuronal death mediated by NIST DEP in xenoferroptotic cell d…

六.割草机技术总结--6.RTK定位精度分析

六.割草机技术总结–6.RTK定位精度分析 6.1 1cm+1ppm 中的ppm是什么意思? 精度 RTK 位置精度(在 RTK 时)1 cm + 1 ppm ( 水 平 ) 1 . 5 cm + 1 ppm ( 垂 直 ),其中的ppm是什么意思? 在RTK(实时动态定位)技术中,ppm表示 Parts Per Million(百万分之一),是一种与距离…

MCP的基础知识

一、了解MCP的基础知识 1.函数调用Function Calling Function Calling是openai在2023年推出的一个非常重要的概念:Function Calling(函数调用)本质上就是提供了大模型与外部系统的交互能力,类似于给大模型安装了一个“外挂工具箱…

量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解

量化交易之数学与统计学基础2.4——线性代数与矩阵运算 | 矩阵分解 第二部分:线性代数与矩阵运算 第4节:矩阵分解:奇异值分解(SVD)在数据压缩和风险分解的应用 一、奇异值分解(SVD)基础&#xf…

极简主义在 UI 设计中的应用与实践:打造简洁高效界面

极简主义理念:简洁不简单​ 极简主义起源于 20 世纪初的包豪斯运动,它不仅是一种设计风格,更代表着一种生活态度与价值观。其核心理念 “少即是多”,并非简单地削减元素,而是在精简中追求极致,将设计简化到…

2025年“深圳杯”数学建模挑战赛C题-分布式能源接入配电网的风险分析

布式能源接入配电网的风险分析 小驴数模 背景知识: 随着我国双碳目标的推进,可再生分布式能源在配电网中的大规模应用不可避免,这对传统配电网运行提出挑战。为了量化分析配电网中接入分布式能源的风险,需要对其进行建模与分析…

《解锁LibTorch:开启C++深度学习新征程》

《解锁LibTorch:开启C++深度学习新征程》 深度学习与 LibTorch 在当今数字化时代,深度学习已成为人工智能领域的核心驱动力,广泛应用于计算机视觉、自然语言处理、语音识别等诸多领域,深刻改变着我们的生活和工作方式。它的发展历程充满了创新与突破,从最初的理论探索到如…

理想药用植物的特征综述-理想中药材”的系统定义-文献精读125

Decoding and designing: Promising routes to tailor-made herbs 解码与设计:定制化草药的潜力路径 摘要 理想药用植物的特征可归纳为高次生代谢产物含量、高抗逆性、理想的形态以及高产量。本研究提出了两种策略,用于解析中药活性成分的生物合成与质…

如何在Dify沙盒中安装运行pandas、numpy

如何在Dify沙盒中安装运行pandas、numpy 1. 创建python-requirements.txt文件2. 创建config.yaml文件3. 重启 docker-sandbox-14. 为什么要这样改的一些代码解析(Youtube视频截图) 1. 创建python-requirements.txt文件 在 Dify 的 Docker 目录下面&…

深度卷积模型:案例研究

1 为什么要进行案例研究? 过去,计算机视觉中的大量研究都集中在如何将卷积层、池化层以及全连接层这些基本组件组合起来,形成有效的卷积神经网络。 找感觉的最好方法之一就是去看一些示例,就像很多人通过看别人的代码来学习编程一…

RabbitMQ Linux 安装教程详解

RabbitMQ Linux 安装教程详解 在 Linux 系统上安装 RabbitMQ 并确保其稳定运行,对于构建可靠的分布式消息系统至关重要。本文将详细介绍如何在 Linux 系统上安装 RabbitMQ,并提供关键的注意事项,帮助您避免常见的坑点,确保安装过…

Godot笔记:入门索引

文章目录 前言游戏引擎软件界面关键概念GDScript导出成品创建非游戏应用后记 前言 最近对游戏引擎这块感兴趣,特别是因为游戏引擎自带的很多工具,作为图形化软件的开发应该也不错。 Godot 是一款这几年比较流行的开源游戏引擎。这里记录下入门学习使用 …

[C语言]猜数字游戏

文章目录 一、游戏思路揭秘二、随机数生成大法1、初探随机数:rand函数的魔力2、随机数种子:时间的魔法3、抓住时间的精髓:time函数 三、完善程序四、游戏成果1、游戏效果2、源代码 一、游戏思路揭秘 猜数字游戏,这个听起来就让人…

LeetCode392_判断子序列

LeetCode392_判断子序列 标签:#双指针 #字符串 #动态规划Ⅰ. 题目Ⅱ. 示例 0. 个人方法官方题解一:双指针官方题解二:动态规划 标签:#双指针 #字符串 #动态规划 Ⅰ. 题目 给定字符串 s 和 t ,判断 s 是否为 t 的子序…