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.pswp.cn/pingmian/78902.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78902.shtml
英文地址,請注明出處:http://en.pswp.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 的子序…