#可观测性 #分析 #遥测

micromegas

Micromegas 是一个可扩展的可观测性解决方案

8 个版本

新版本 0.1.7 2024 年 8 月 21 日
0.1.6 2024 年 8 月 10 日
0.1.5 2024 年 7 月 19 日
0.1.4 2024 年 6 月 13 日
0.1.0 2024 年 3 月 15 日

#21 in #遥测

Download history 277/week @ 2024-04-29 20/week @ 2024-05-06 12/week @ 2024-05-20 98/week @ 2024-06-10 9/week @ 2024-06-17 24/week @ 2024-07-01 110/week @ 2024-07-15 8/week @ 2024-07-22 46/week @ 2024-07-29 97/week @ 2024-08-05 24/week @ 2024-08-12

每月 177 次下载

Apache-2.0

355KB
9K SLoC

Micromegas

Micromegas 是一个统一且可扩展的可观测性堆栈。它可以帮助您收集和查询日志、指标和跟踪。


lib.rs:

Micromegas 是一个统一且可扩展的可观测性堆栈。它可以帮助您收集和查询日志、指标和跟踪。

非常高层次的架构

┌─────────────────┐       
│ rust application│──────▶
└─────────────────┘       ┌─────────┐     ┌───────┐     ┌─────────┐     ┌──────────┐
                          │ingestion│────▶│pg & S3│◀────│analytics│◀────│python API│
┌─────────────────┐       └─────────┘     └───────┘     └─────────┘     └──────────┘
│ unreal engine   │──────▶
└─────────────────┘      

Rust 仪表化

对于 Rust 应用程序,使用 micromegas::tracing 以最小开销。默认情况下还启用了与 tokio tracing 的日志互操作性。

虚幻仪表化

MicromegasTracing 应该添加到虚幻的 Core 模块,MicromegasTelemetrySink 可以添加到游戏或高级插件中。请参阅 https://github.com/madesroches/micromegas/tree/main/unreal 以获取实现细节。已在多个平台上的编辑器、客户端和服务器构建中进行了测试。

遥测摄取服务器

https://github.com/madesroches/micromegas/blob/main/rust/telemetry-ingestion-srv/src/main.rs

分析服务器

https://github.com/madesroches/micromegas/blob/main/rust/analytics-srv/src/main.rs

Lakehouse 守护进程

https://github.com/madesroches/micromegas/blob/main/rust/telemetry-admin-cli/src/telemetry_admin.rs (带有 crond 参数)

Python API

https://pypi.ac.cn/project/micromegas/

本地开发者配置

为了测试目的,您可以在您的本地工作站上运行整个堆栈。

环境变量

  • MICROMEGAS_DB_USERNAMEMICROMEGAS_DB_PASSWD:由数据库配置脚本使用
  • export MICROMEGAS_TELEMETRY_URL=https://127.0.0.1:9000
  • export MICROMEGAS_SQL_CONNECTION_STRING=postgres://{uname}:{passwd}@localhost:5432
  • export MICROMEGAS_OBJECT_STORE_URI=file:///some/local/path
  1. 克隆 GitHub 仓库 git clone https://github.com/madesroches/micromegas.git

  2. 启动本地 PostgreSQL 实例(需要 Docker 和 Python)

初始化环境变量

> cd micromegas/local_test_env/db
> ./run.py
  1. 在新 shell 中,启动摄取服务器
> cd micromegas/rust
> cargo run -p telemetry-ingestion-srv -- --listen-endpoint-http 127.0.0.1:9000
  1. 在新 shell 中,启动分析服务器
> cd micromegas/rust
> export MICROMEGAS_TELEMETRY_URL=https://127.0.0.1:9000
> cargo run -p analytics-srv
  1. 在新 shell 中,启动守护进程
> cd micromegas/rust
> export MICROMEGAS_TELEMETRY_URL=https://127.0.0.1:9000
> cargo run -p telemetry-admin -- crond
  1. 在 Python 解释器中,查询分析服务
# local connection test
import datetime
import micromegas
BASE_URL = "https://127.0.0.1:8082/"
client = micromegas.client.Client(BASE_URL)
now = datetime.datetime.now(datetime.timezone.utc)
begin = now - datetime.timedelta(days=1)
end = now
sql = """
SELECT *
FROM log_entries
ORDER BY time DESC
LIMIT 10
;"""
client.query_view("log_entries", "global", begin, end, sql)

依赖项

~98MB
~2M SLoC