jianmu.telemetry¶
适用对象:平台维护者 / 可观测性集成者 / 调试者
是否必读:按需
相关模块:jianmu.engine, jianmu.swarm
1. 模块职责¶
jianmu.telemetry 汇总日志、流式输出、trace 事件和 usage 统计的公开入口。
它主要服务于调试、观测和运行分析,而不是业务流程编排本身。
2. 适合查什么¶
- 日志配置:
configure_logging() - 流式输出:
ConsoleStreamSink - trace:
emit()、span()、subscribe() - usage:
UsageAggregationSink
3. 使用建议¶
- 想快速观察本地运行过程时,先看
ConsoleStreamSink - 想接自定义 trace 路由或埋点,再使用 trace 相关函数
4. 注意事项¶
- 这里更偏运行观测层,而不是业务编排层
- 如果只是想让 agent 正常执行,通常不需要先接 telemetry
- trace 订阅和路由更适合平台集成或调试场景
5. 最小示例¶
from jianmu.telemetry import ConsoleStreamSink, emit, register_sink
printer = ConsoleStreamSink()
register_sink(printer)
emit("custom.event", {"phase": "start"})
6. 常见入口¶
- 想打印或消费流式输出:看
ConsoleStreamSink - 想打点:看
emit() - 想包裹 trace span:看
span() - 想订阅 trace 事件:看
subscribe()
7. API 参考¶
Hub 与事件流¶
TelemetryHub
¶
TelemetryHub(
*,
sample_rate: float = 1.0,
max_per_sec: int = 200,
event_sample_rates: dict[str, float] | None = None,
always_events: set[str] | None = None,
safe_mode: bool = True,
log_enabled: bool = False,
)
Thread-safe event hub for typed telemetry events.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
_listeners |
list[Callable[[TelemetryEvent], None]]
|
In-process listener callbacks invoked for each event. |
_sinks |
list[TelemetrySink]
|
Registered telemetry sinks consuming emitted events. |
_lock |
Lock protecting listeners, sinks, and config updates. |
|
_rate_lock |
Lock protecting rate-limiting windows. |
|
_rate_windows |
dict[str, tuple[float, int]]
|
Per-scope rate-limiting counters. |
_sample_rate |
Default sample rate for events. |
|
_max_per_sec |
Per-scope maximum emitted events per second. |
|
_event_sample_rates |
Event-specific sampling overrides. |
|
_always_events |
Events that bypass sampling and rate limiting. |
|
_safe_mode |
Whether payloads are safe-serialized before emission. |
|
_log_enabled |
Whether emitted events are mirrored to debug logs. |
源代码位于: jianmu/telemetry/hub.py
subscribe
¶
Register a listener callback invoked for each emitted event.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
callback
|
Callable[[TelemetryEvent], None]
|
Callback invoked by the operation. |
必需 |
unsubscribe
¶
Remove a previously registered listener callback if present.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
callback
|
Callable[[TelemetryEvent], None]
|
Callback invoked by the operation. |
必需 |
源代码位于: jianmu/telemetry/hub.py
register_sink
¶
Register a sink that consumes emitted telemetry events.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
sink
|
TelemetrySink
|
Telemetry sink to register or remove. |
必需 |
unregister_sink
¶
Remove a previously registered telemetry sink if present.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
sink
|
TelemetrySink
|
Telemetry sink to register or remove. |
必需 |
源代码位于: jianmu/telemetry/hub.py
reset
¶
configure
¶
configure(
*,
sample_rate: float | None = None,
max_per_sec: int | None = None,
event_sample_rates: dict[str, float] | None = None,
always_events: set[str] | None = None,
safe_mode: bool | None = None,
log_enabled: bool | None = None,
) -> None
Update hub sampling, throttling, and serialization configuration.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
sample_rate
|
float | None
|
The |
None
|
max_per_sec
|
int | None
|
The |
None
|
event_sample_rates
|
dict[str, float] | None
|
Collection of event sample rate values. |
None
|
always_events
|
set[str] | None
|
Collection of always event values. |
None
|
safe_mode
|
bool | None
|
The |
None
|
log_enabled
|
bool | None
|
The |
None
|
源代码位于: jianmu/telemetry/hub.py
emit
¶
Emit an event to registered sinks and listeners if sampling allows it.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
str
|
Event name or payload to process. |
必需 |
payload
|
dict[str, Any] | None
|
Payload data for the operation. |
None
|
源代码位于: jianmu/telemetry/hub.py
emit
¶
Emit an event through the default hub.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
str
|
Event name or payload to process. |
必需 |
payload
|
dict[str, Any] | None
|
Payload data for the operation. |
None
|
subscribe
¶
Register one listener on the default hub.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
callback
|
Callable[[TelemetryEvent], None]
|
Callback invoked by the operation. |
必需 |
unsubscribe
¶
Remove one listener from the default hub.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
callback
|
Callable[[TelemetryEvent], None]
|
Callback invoked by the operation. |
必需 |
register_sink
¶
Register one sink on the default hub.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
sink
|
TelemetrySink
|
Telemetry sink to register or remove. |
必需 |
unregister_sink
¶
Remove one sink from the default hub.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
sink
|
TelemetrySink
|
Telemetry sink to register or remove. |
必需 |
Trace 上下文¶
current_context
¶
Return the active trace context.
返回:
| 类型 | 描述 |
|---|---|
TraceContext | None
|
The resolved value, or |
set_context
¶
Install a trace context and return the reset token.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
trace_id
|
str | None
|
Identifier for trace. |
None
|
**metadata
|
Any
|
The |
{}
|
返回:
| 类型 | 描述 |
|---|---|
Token
|
The resulting |
源代码位于: jianmu/telemetry/context.py
reset_context
¶
Restore the previous trace context.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
token
|
Token | None
|
The |
必需 |
span
¶
Context manager and decorator for tracing execution spans.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
name |
Span name emitted to the telemetry hub. |
|
metadata |
Structured metadata attached to the emitted span. |
|
span_obj |
Span | None
|
Active span object created on entry. |
token |
Token | None
|
Context token used to restore the prior trace context. |
源代码位于: jianmu/telemetry/context.py
Sink¶
ConsoleStreamSink
¶
Print stream delta events to stdout.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
enabled |
Whether console streaming output is active. |
|
flush |
Whether stdout is flushed after each printed delta. |
源代码位于: jianmu/telemetry/sinks.py
handle
¶
Print streamed LLM delta content to stdout when enabled.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
TelemetryEvent
|
Event name or payload to process. |
必需 |
源代码位于: jianmu/telemetry/sinks.py
set_enabled
¶
DebugLogSink
¶
Mirror telemetry events to loguru debug output.
handle
¶
Write the event name and payload to the debug logger.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
TelemetryEvent
|
Event name or payload to process. |
必需 |
JsonlFileSink
¶
Append telemetry events to a JSONL file.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
path |
Target JSONL file path. |
|
_lock |
Lock protecting concurrent file appends. |
源代码位于: jianmu/telemetry/sinks.py
handle
¶
Append the event payload as one JSON line to the configured file.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
TelemetryEvent
|
Event name or payload to process. |
必需 |
源代码位于: jianmu/telemetry/sinks.py
UsageAggregationSink
dataclass
¶
Aggregate normalized usage by trace id.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
totals |
dict[str, dict[str, int]]
|
Aggregated token counters keyed by trace id. |
handle
¶
Accumulate usage counters from llm.usage telemetry events.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
event
|
TelemetryEvent
|
Event name or payload to process. |
必需 |
源代码位于: jianmu/telemetry/sinks.py
snapshot
¶
Return aggregated token counters for one trace or the global bucket.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
trace_id
|
str | None
|
Identifier for trace. |
None
|
返回:
| 类型 | 描述 |
|---|---|
dict[str, int]
|
The resulting mapping value. |
源代码位于: jianmu/telemetry/sinks.py
reset
¶
Clear aggregated usage for one trace or for all traces.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
trace_id
|
str | None
|
Identifier for trace. |
None
|
源代码位于: jianmu/telemetry/sinks.py
类型与日志¶
TelemetryEvent
dataclass
¶
TelemetryEvent(
name: str,
ts: float,
trace_id: str | None = None,
span_id: str | None = None,
payload: dict[str, Any] = dict(),
)
One emitted telemetry event.
属性:
| 名称 | 类型 | 描述 |
|---|---|---|
name |
str
|
Event name. |
ts |
float
|
Event timestamp in seconds since epoch. |
trace_id |
str | None
|
Optional trace identifier associated with the event. |
span_id |
str | None
|
Optional active span identifier associated with the event. |
payload |
dict[str, Any]
|
Structured event payload. |
configure_logging
¶
Configure the shared Loguru logger.
参数:
| 名称 | 类型 | 描述 | 默认 |
|---|---|---|---|
level
|
str
|
Logging level as a string. Defaults to "INFO". |
'INFO'
|
colorize
|
bool
|
Whether log output should be colorized. Defaults to True. |
True
|
force
|
bool
|
Force configuration update if already configured. Defaults to False. |
False
|