OpenClaw xuất chẩn đoán thông qua Plugin diagnostics-otel chính thức
bằng OTLP/HTTP (protobuf). Nhật ký cũng có thể được ghi dưới dạng stdout JSONL cho
các pipeline nhật ký container và sandbox. Mọi collector hoặc backend chấp nhận
OTLP/HTTP đều hoạt động mà không cần thay đổi mã. Để biết nhật ký tệp cục bộ và cách đọc chúng,
xem Ghi nhật ký.
Cách các thành phần khớp với nhau
- Sự kiện chẩn đoán là các bản ghi có cấu trúc, trong tiến trình, do
Gateway và các Plugin đi kèm phát ra cho lượt chạy mô hình, luồng tin nhắn, phiên, hàng đợi,
và exec.
- Plugin
diagnostics-otel đăng ký nhận các sự kiện đó và xuất chúng dưới dạng
metrics, traces, và logs của OpenTelemetry qua OTLP/HTTP. Nó cũng có thể
sao chép các bản ghi nhật ký chẩn đoán sang stdout JSONL.
- Lệnh gọi provider nhận header W3C
traceparent từ ngữ cảnh span lệnh gọi mô hình
đáng tin cậy của OpenClaw khi transport của provider chấp nhận header tùy chỉnh.
Ngữ cảnh trace do Plugin phát ra không được truyền tiếp.
- Exporter chỉ được gắn khi cả bề mặt chẩn đoán và Plugin đều
được bật, nên chi phí trong tiến trình mặc định gần như bằng không.
Bắt đầu nhanh
Với bản cài đặt đóng gói, hãy cài Plugin trước:
openclaw plugins install clawhub:@openclaw/diagnostics-otel
{
plugins: {
allow: ["diagnostics-otel"],
entries: {
"diagnostics-otel": { enabled: true },
},
},
diagnostics: {
enabled: true,
otel: {
enabled: true,
endpoint: "http://otel-collector:4318",
protocol: "http/protobuf",
serviceName: "openclaw-gateway",
traces: true,
metrics: true,
logs: true,
sampleRate: 0.2,
flushIntervalMs: 60000,
},
},
}
Bạn cũng có thể bật Plugin từ CLI:
openclaw plugins enable diagnostics-otel
protocol hiện chỉ hỗ trợ http/protobuf. grpc bị bỏ qua.
Tín hiệu được xuất
| Tín hiệu | Nội dung bên trong |
|---|
| Metrics | Counter và histogram cho mức dùng token, chi phí, thời lượng chạy, failover, mức dùng skill, luồng tin nhắn, sự kiện Talk, lane hàng đợi, trạng thái/khôi phục phiên, thực thi công cụ, payload quá lớn, exec, và áp lực bộ nhớ. |
| Traces | Span cho mức dùng mô hình, lệnh gọi mô hình, vòng đời harness, mức dùng skill, thực thi công cụ, exec, xử lý webhook/tin nhắn, lắp ráp ngữ cảnh, và vòng lặp công cụ. |
| Logs | Bản ghi logging.file có cấu trúc được xuất qua OTLP hoặc stdout JSONL khi diagnostics.otel.logs được bật; thân nhật ký được giữ lại trừ khi tính năng ghi lại nội dung được bật rõ ràng. |
Bật/tắt traces, metrics, và logs độc lập. Trace và metric
mặc định bật khi diagnostics.otel.enabled là true. Log mặc định tắt và
chỉ được xuất khi diagnostics.otel.logs được đặt rõ ràng thành true. Xuất log
mặc định sang OTLP; đặt diagnostics.otel.logsExporter thành stdout để có JSONL trên
stdout, hoặc both để gửi từng bản ghi nhật ký chẩn đoán tới OTLP và stdout.
Tham chiếu cấu hình
{
diagnostics: {
enabled: true,
otel: {
enabled: true,
endpoint: "http://otel-collector:4318",
tracesEndpoint: "http://otel-collector:4318/v1/traces",
metricsEndpoint: "http://otel-collector:4318/v1/metrics",
logsEndpoint: "http://otel-collector:4318/v1/logs",
protocol: "http/protobuf", // grpc is ignored
serviceName: "openclaw-gateway",
headers: { "x-collector-token": "..." },
traces: true,
metrics: true,
logs: true,
logsExporter: "otlp", // otlp | stdout | both
sampleRate: 0.2, // root-span sampler, 0.0..1.0
flushIntervalMs: 60000, // metric export interval (min 1000ms)
captureContent: {
enabled: false,
inputMessages: false,
outputMessages: false,
toolInputs: false,
toolOutputs: false,
systemPrompt: false,
toolDefinitions: false,
},
},
},
}
Biến môi trường
| Biến | Mục đích |
|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Ghi đè diagnostics.otel.endpoint. Nếu giá trị đã chứa /v1/traces, /v1/metrics, hoặc /v1/logs, giá trị đó được dùng nguyên trạng. |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT / OTEL_EXPORTER_OTLP_METRICS_ENDPOINT / OTEL_EXPORTER_OTLP_LOGS_ENDPOINT | Ghi đè endpoint theo từng tín hiệu, được dùng khi khóa cấu hình diagnostics.otel.*Endpoint tương ứng chưa được đặt. Cấu hình theo từng tín hiệu thắng env theo từng tín hiệu, và env theo từng tín hiệu thắng endpoint dùng chung. |
OTEL_SERVICE_NAME | Ghi đè diagnostics.otel.serviceName. |
OTEL_EXPORTER_OTLP_PROTOCOL | Ghi đè giao thức truyền dẫn (hiện nay chỉ http/protobuf được áp dụng). |
OTEL_SEMCONV_STABILITY_OPT_IN | Đặt thành gen_ai_latest_experimental để phát ra hình dạng span suy luận GenAI thử nghiệm mới nhất, bao gồm tên span {gen_ai.operation.name} {gen_ai.request.model}, loại span CLIENT, và gen_ai.provider.name thay cho gen_ai.system kế thừa. Metric GenAI luôn dùng các thuộc tính ngữ nghĩa có cardinality thấp, có giới hạn. |
OPENCLAW_OTEL_PRELOADED | Đặt thành 1 khi một preload khác hoặc tiến trình host đã đăng ký SDK OpenTelemetry toàn cục. Khi đó Plugin bỏ qua vòng đời NodeSDK của chính nó nhưng vẫn nối listener chẩn đoán và tôn trọng traces/metrics/logs. |
Quyền riêng tư và ghi lại nội dung
Nội dung mô hình/công cụ thô không được xuất theo mặc định. Span mang các
định danh có giới hạn (channel, provider, model, danh mục lỗi, id yêu cầu chỉ dạng hash,
nguồn công cụ, chủ sở hữu công cụ, và tên/nguồn skill) và không bao giờ bao gồm văn bản prompt,
văn bản phản hồi, đầu vào công cụ, đầu ra công cụ, đường dẫn tệp skill, hoặc khóa phiên.
Bản ghi log OTLP mặc định giữ lại mức độ nghiêm trọng, logger, vị trí mã, ngữ cảnh trace đáng tin cậy,
và các thuộc tính đã được làm sạch, nhưng thân thông điệp log thô chỉ được xuất
khi diagnostics.otel.captureContent được đặt thành boolean true. Các khóa con
captureContent.* chi tiết không bật thân log. Nhãn trông giống
khóa phiên agent có phạm vi sẽ được thay bằng unknown.
Metric Talk chỉ xuất metadata sự kiện có giới hạn như chế độ, transport,
provider, và loại sự kiện. Chúng không bao gồm bản chép lời, payload âm thanh,
id phiên, id lượt, id cuộc gọi, id phòng, hoặc token bàn giao.
Yêu cầu mô hình gửi đi có thể bao gồm header W3C traceparent. Header đó
chỉ được tạo từ ngữ cảnh trace chẩn đoán do OpenClaw sở hữu cho lệnh gọi mô hình
đang hoạt động. Header traceparent do caller hiện có cung cấp sẽ bị thay thế, nên Plugin hoặc
tùy chọn provider tùy chỉnh không thể giả mạo quan hệ tổ tiên trace xuyên dịch vụ.
Chỉ đặt diagnostics.otel.captureContent.* thành true khi collector và
chính sách lưu giữ của bạn đã được phê duyệt cho văn bản prompt, phản hồi, công cụ, hoặc system-prompt.
Mỗi khóa con được bật riêng:
inputMessages - nội dung prompt của người dùng.
outputMessages - nội dung phản hồi của mô hình.
toolInputs - payload đối số công cụ.
toolOutputs - payload kết quả công cụ.
systemPrompt - prompt hệ thống/nhà phát triển đã lắp ráp.
toolDefinitions - tên, mô tả, và schema công cụ mô hình.
Khi bất kỳ khóa con nào được bật, span mô hình và công cụ nhận các thuộc tính
openclaw.content.* có giới hạn, đã biên tập cho riêng lớp đó. Chỉ dùng boolean
captureContent: true cho các lần ghi chẩn đoán rộng khi thân thông điệp log OTLP
cũng đã được phê duyệt để xuất.
Nội dung toolInputs/toolOutputs được ghi lại cho các lần thực thi công cụ của runtime agent tích hợp sẵn
(openclaw.content.tool_input trên span hoàn tất/lỗi,
openclaw.content.tool_output trên span hoàn tất). Lệnh gọi công cụ của harness bên ngoài
(Codex, Claude CLI) phát ra span tool.execution.* mà không có payload nội dung.
Nội dung được ghi lại đi qua một channel đáng tin cậy, chỉ listener và không bao giờ được đặt
trên bus sự kiện chẩn đoán công khai.
Lấy mẫu và flush
- Dấu vết:
diagnostics.otel.sampleRate (chỉ root-span, 0.0 loại bỏ tất cả,
1.0 giữ lại tất cả).
- Chỉ số:
diagnostics.otel.flushIntervalMs (tối thiểu 1000).
- Nhật ký: Nhật ký OTLP tuân theo
logging.level (mức nhật ký tệp). Chúng dùng
đường dẫn biên tập log-record chẩn đoán, không dùng định dạng console. Các bản
cài đặt có lưu lượng cao nên ưu tiên lấy mẫu/lọc tại OTLP collector thay vì lấy mẫu cục bộ.
Đặt diagnostics.otel.logsExporter: "stdout" khi nền tảng của bạn đã
chuyển stdout/stderr tới bộ xử lý nhật ký và bạn không có OTLP logs
collector. Bản ghi stdout là một đối tượng JSON trên mỗi dòng với ts, signal,
service.name, mức độ nghiêm trọng, nội dung, thuộc tính đã biên tập, và các trường dấu vết tin cậy
khi có.
- Tương quan nhật ký tệp: Nhật ký tệp JSONL bao gồm các trường cấp cao nhất
traceId,
spanId, parentSpanId, và traceFlags khi lời gọi nhật ký mang ngữ cảnh dấu vết
chẩn đoán hợp lệ, cho phép bộ xử lý nhật ký nối các dòng nhật ký cục bộ với
các span đã xuất.
- Tương quan yêu cầu: Các yêu cầu HTTP của Gateway và khung WebSocket tạo một
phạm vi dấu vết yêu cầu nội bộ. Nhật ký và sự kiện chẩn đoán bên trong phạm vi đó
mặc định kế thừa dấu vết yêu cầu, còn các span chạy agent và lời gọi mô hình
được tạo làm con để các header
traceparent của provider vẫn nằm trên cùng dấu vết.
- Tương quan lời gọi mô hình: Các span
openclaw.model.call mặc định bao gồm kích thước
thành phần prompt an toàn và bao gồm thuộc tính token theo từng lời gọi khi
kết quả provider cung cấp thông tin sử dụng. openclaw.model.usage vẫn là span hạch toán
cấp lượt chạy cho chi phí tổng hợp, ngữ cảnh, và dashboard kênh; nó vẫn
nằm trên cùng dấu vết chẩn đoán khi runtime phát ra có ngữ cảnh dấu vết tin cậy.
Chỉ số đã xuất
Mức sử dụng mô hình
openclaw.tokens (bộ đếm, thuộc tính: openclaw.token, openclaw.channel, openclaw.provider, openclaw.model, openclaw.agent)
openclaw.cost.usd (bộ đếm, thuộc tính: openclaw.channel, openclaw.provider, openclaw.model)
openclaw.run.duration_ms (histogram, thuộc tính: openclaw.channel, openclaw.provider, openclaw.model)
openclaw.context.tokens (histogram, thuộc tính: openclaw.context, openclaw.channel, openclaw.provider, openclaw.model)
gen_ai.client.token.usage (histogram, chỉ số quy ước ngữ nghĩa GenAI, thuộc tính: gen_ai.token.type = input/output, gen_ai.provider.name, gen_ai.operation.name, gen_ai.request.model)
gen_ai.client.operation.duration (histogram, giây, chỉ số quy ước ngữ nghĩa GenAI, thuộc tính: gen_ai.provider.name, gen_ai.operation.name, gen_ai.request.model, error.type tùy chọn)
openclaw.model_call.duration_ms (histogram, thuộc tính: openclaw.provider, openclaw.model, openclaw.api, openclaw.transport, cộng thêm openclaw.errorCategory và openclaw.failureKind trên các lỗi đã phân loại)
openclaw.model_call.request_bytes (histogram, kích thước byte UTF-8 của payload yêu cầu mô hình cuối cùng; không có nội dung payload thô)
openclaw.model_call.response_bytes (histogram, kích thước byte UTF-8 của các payload phân đoạn phản hồi được stream; văn bản tần suất cao, suy nghĩ, và delta lời gọi công cụ chỉ tính các byte delta tăng thêm; không có nội dung phản hồi thô)
openclaw.model_call.time_to_first_byte_ms (histogram, thời gian đã trôi qua trước sự kiện phản hồi stream đầu tiên)
openclaw.model.failover (bộ đếm, thuộc tính: openclaw.provider, openclaw.model, openclaw.failover.to_provider, openclaw.failover.to_model, openclaw.failover.reason, openclaw.failover.suspended, openclaw.lane)
openclaw.skill.used (bộ đếm, thuộc tính: openclaw.skill.name, openclaw.skill.source, openclaw.skill.activation, openclaw.agent tùy chọn, openclaw.toolName tùy chọn)
Luồng tin nhắn
openclaw.webhook.received (bộ đếm, thuộc tính: openclaw.channel, openclaw.webhook)
openclaw.webhook.error (bộ đếm, thuộc tính: openclaw.channel, openclaw.webhook)
openclaw.webhook.duration_ms (histogram, thuộc tính: openclaw.channel, openclaw.webhook)
openclaw.message.queued (bộ đếm, thuộc tính: openclaw.channel, openclaw.source)
openclaw.message.received (bộ đếm, thuộc tính: openclaw.channel, openclaw.source)
openclaw.message.dispatch.started (bộ đếm, thuộc tính: openclaw.channel, openclaw.source)
openclaw.message.dispatch.completed (bộ đếm, thuộc tính: openclaw.channel, openclaw.outcome, openclaw.reason, openclaw.source)
openclaw.message.dispatch.duration_ms (histogram, thuộc tính: openclaw.channel, openclaw.outcome, openclaw.reason, openclaw.source)
openclaw.message.processed (bộ đếm, thuộc tính: openclaw.channel, openclaw.outcome)
openclaw.message.duration_ms (histogram, thuộc tính: openclaw.channel, openclaw.outcome)
openclaw.message.delivery.started (bộ đếm, thuộc tính: openclaw.channel, openclaw.delivery.kind)
openclaw.message.delivery.duration_ms (histogram, thuộc tính: openclaw.channel, openclaw.delivery.kind, openclaw.outcome, openclaw.errorCategory)
Trò chuyện
openclaw.talk.event (bộ đếm, thuộc tính: openclaw.talk.event_type, openclaw.talk.mode, openclaw.talk.transport, openclaw.talk.brain, openclaw.talk.provider)
openclaw.talk.event.duration_ms (histogram, thuộc tính: giống openclaw.talk.event; được phát ra khi một sự kiện Trò chuyện báo cáo thời lượng)
openclaw.talk.audio.bytes (histogram, thuộc tính: giống openclaw.talk.event; được phát ra cho các sự kiện khung âm thanh Trò chuyện báo cáo độ dài byte)
Hàng đợi và phiên
openclaw.queue.lane.enqueue (bộ đếm, thuộc tính: openclaw.lane)
openclaw.queue.lane.dequeue (bộ đếm, thuộc tính: openclaw.lane)
openclaw.queue.depth (histogram, thuộc tính: openclaw.lane hoặc openclaw.channel=heartbeat)
openclaw.queue.wait_ms (histogram, thuộc tính: openclaw.lane)
openclaw.session.state (bộ đếm, thuộc tính: openclaw.state, openclaw.reason)
openclaw.session.stuck (bộ đếm, thuộc tính: openclaw.state; được phát ra cho sổ sách phiên cũ có thể khôi phục)
openclaw.session.stuck_age_ms (histogram, thuộc tính: openclaw.state; được phát ra cho sổ sách phiên cũ có thể khôi phục)
openclaw.session.turn.created (bộ đếm, thuộc tính: openclaw.agent, openclaw.channel, openclaw.trigger)
openclaw.session.recovery.requested (bộ đếm, thuộc tính: openclaw.state, openclaw.action, openclaw.active_work_kind, openclaw.reason)
openclaw.session.recovery.completed (bộ đếm, thuộc tính: openclaw.state, openclaw.action, openclaw.status, openclaw.active_work_kind, openclaw.reason)
openclaw.session.recovery.age_ms (histogram, thuộc tính: giống bộ đếm khôi phục tương ứng)
openclaw.run.attempt (bộ đếm, thuộc tính: openclaw.attempt)
Đo từ xa trạng thái sống của phiên
diagnostics.stuckSessionWarnMs là ngưỡng tuổi không có tiến triển cho chẩn đoán
trạng thái sống của phiên. Một phiên processing không tính tuổi tới ngưỡng này
trong khi OpenClaw quan sát thấy tiến triển runtime về trả lời, công cụ, trạng thái, khối, hoặc ACP.
Typing keepalive không được tính là tiến triển, nên một mô hình hoặc harness im lặng
vẫn có thể bị phát hiện.
OpenClaw phân loại phiên theo công việc mà nó vẫn có thể quan sát:
session.long_running: công việc nhúng đang hoạt động, lời gọi mô hình, hoặc lời gọi công cụ
vẫn đang tiến triển. Các lời gọi mô hình có chủ sở hữu im lặng quá
diagnostics.stuckSessionWarnMs cũng báo cáo là chạy lâu trước
diagnostics.stuckSessionAbortMs để provider mô hình chậm hoặc không stream
không trông giống phiên gateway bị treo khi chúng vẫn có thể quan sát hủy bỏ.
session.stalled: có công việc đang hoạt động, nhưng lượt chạy đang hoạt động chưa báo cáo
tiến triển gần đây. Các lời gọi mô hình có chủ sở hữu chuyển từ session.long_running sang
session.stalled tại hoặc sau diagnostics.stuckSessionAbortMs; hoạt động
mô hình/công cụ cũ không có chủ sở hữu không được xem là công việc chạy lâu vô hại.
Các lượt chạy nhúng bị đình trệ ban đầu vẫn chỉ quan sát, rồi hủy bỏ-xả sau
diagnostics.stuckSessionAbortMs khi không có tiến triển để các lượt đã xếp hàng phía sau
lane có thể tiếp tục. Khi chưa đặt, ngưỡng hủy bỏ mặc định là cửa sổ mở rộng an toàn hơn
tối thiểu 5 phút và 3 lần
diagnostics.stuckSessionWarnMs.
session.stuck: sổ sách phiên cũ không có công việc đang hoạt động, hoặc một phiên
đã xếp hàng đang nhàn rỗi với hoạt động mô hình/công cụ cũ không có chủ sở hữu. Điều này giải phóng
lane phiên bị ảnh hưởng ngay sau khi các cổng khôi phục đạt yêu cầu.
Khôi phục phát ra các sự kiện có cấu trúc session.recovery.requested và
session.recovery.completed. Trạng thái phiên chẩn đoán chỉ được đánh dấu là nhàn rỗi
sau một kết quả khôi phục có thay đổi (aborted hoặc released) và chỉ khi
cùng thế hệ xử lý vẫn còn hiện hành.
Chỉ session.stuck phát ra bộ đếm openclaw.session.stuck,
histogram openclaw.session.stuck_age_ms, và span openclaw.session.stuck.
Các chẩn đoán session.stuck lặp lại sẽ lùi nhịp trong khi phiên vẫn
không đổi, nên dashboard nên cảnh báo trên các mức tăng kéo dài thay vì từng
tick Heartbeat. Để biết núm cấu hình và giá trị mặc định, xem
Tham chiếu cấu hình.
Cảnh báo trạng thái sống cũng phát ra:
openclaw.liveness.warning (bộ đếm, thuộc tính: openclaw.liveness.reason)
openclaw.liveness.event_loop_delay_p99_ms (histogram, thuộc tính: openclaw.liveness.reason)
openclaw.liveness.event_loop_delay_max_ms (histogram, thuộc tính: openclaw.liveness.reason)
openclaw.liveness.event_loop_utilization (histogram, thuộc tính: openclaw.liveness.reason)
openclaw.liveness.cpu_core_ratio (histogram, thuộc tính: openclaw.liveness.reason)
Vòng đời harness
openclaw.harness.duration_ms (histogram, thuộc tính: openclaw.harness.id, openclaw.harness.plugin, openclaw.outcome, openclaw.harness.phase trên lỗi)
Thực thi công cụ
openclaw.tool.execution.duration_ms (histogram, thuộc tính: gen_ai.tool.name, openclaw.toolName, openclaw.tool.source, openclaw.tool.owner, openclaw.tool.params.kind, cộng thêm openclaw.errorCategory trên lỗi)
openclaw.tool.execution.blocked (bộ đếm, thuộc tính: gen_ai.tool.name, openclaw.toolName, openclaw.tool.source, openclaw.tool.owner, openclaw.tool.params.kind, openclaw.deniedReason)
Exec
openclaw.exec.duration_ms (histogram, thuộc tính: openclaw.exec.target, openclaw.exec.mode, openclaw.outcome, openclaw.failureKind)
Nội bộ chẩn đoán (bộ nhớ và vòng lặp công cụ)
openclaw.payload.large (bộ đếm, thuộc tính: openclaw.payload.surface, openclaw.payload.action, openclaw.channel, openclaw.plugin, openclaw.reason)
openclaw.payload.large_bytes (histogram, thuộc tính: giống openclaw.payload.large)
openclaw.memory.heap_used_bytes (histogram, thuộc tính: openclaw.memory.kind)
openclaw.memory.rss_bytes (histogram)
openclaw.memory.pressure (bộ đếm, thuộc tính: openclaw.memory.level)
openclaw.tool.loop.iterations (bộ đếm, thuộc tính: openclaw.toolName, openclaw.outcome)
openclaw.tool.loop.duration_ms (histogram, thuộc tính: openclaw.toolName, openclaw.outcome)
Span đã xuất
openclaw.model.usage
openclaw.channel, openclaw.provider, openclaw.model
openclaw.tokens.* (input/output/cache_read/cache_write/total)
gen_ai.system theo mặc định, hoặc gen_ai.provider.name khi đã chọn dùng các quy ước ngữ nghĩa GenAI mới nhất
gen_ai.request.model, gen_ai.operation.name, gen_ai.usage.*
openclaw.run
openclaw.outcome, openclaw.channel, openclaw.provider, openclaw.model, openclaw.errorCategory
openclaw.model.call
gen_ai.system theo mặc định, hoặc gen_ai.provider.name khi đã chọn dùng các quy ước ngữ nghĩa GenAI mới nhất
gen_ai.request.model, gen_ai.operation.name, openclaw.provider, openclaw.model, openclaw.api, openclaw.transport
openclaw.errorCategory và openclaw.failureKind tùy chọn khi có lỗi
openclaw.model_call.request_bytes, openclaw.model_call.response_bytes, openclaw.model_call.time_to_first_byte_ms
openclaw.model_call.prompt.input_messages_count, openclaw.model_call.prompt.input_messages_chars, openclaw.model_call.prompt.system_prompt_chars, openclaw.model_call.prompt.tool_definitions_count, openclaw.model_call.prompt.tool_definitions_chars, openclaw.model_call.prompt.total_chars (chỉ kích thước thành phần an toàn, không có văn bản prompt)
openclaw.model_call.usage.* và gen_ai.usage.* khi kết quả lệnh gọi mô hình mang thông tin sử dụng của nhà cung cấp cho lệnh gọi riêng lẻ đó
openclaw.provider.request_id_hash (hàm băm dựa trên SHA có giới hạn của id yêu cầu từ nhà cung cấp upstream; id thô không được xuất)
- Với
OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental, span lệnh gọi mô hình dùng tên span suy luận GenAI mới nhất {gen_ai.operation.name} {gen_ai.request.model} và loại span CLIENT thay vì openclaw.model.call.
openclaw.harness.run
openclaw.harness.id, openclaw.harness.plugin, openclaw.outcome, openclaw.provider, openclaw.model, openclaw.channel
- Khi hoàn tất:
openclaw.harness.result_classification, openclaw.harness.yield_detected, openclaw.harness.items.started, openclaw.harness.items.completed, openclaw.harness.items.active
- Khi có lỗi:
openclaw.harness.phase, openclaw.errorCategory, openclaw.harness.cleanup_failed tùy chọn
openclaw.tool.execution
gen_ai.tool.name, openclaw.toolName, openclaw.errorCategory, openclaw.tool.params.*
openclaw.exec
openclaw.exec.target, openclaw.exec.mode, openclaw.outcome, openclaw.failureKind, openclaw.exec.command_length, openclaw.exec.exit_code, openclaw.exec.timed_out
openclaw.webhook.processed
openclaw.channel, openclaw.webhook
openclaw.webhook.error
openclaw.channel, openclaw.webhook, openclaw.error
openclaw.message.processed
openclaw.channel, openclaw.outcome, openclaw.reason
openclaw.message.delivery
openclaw.channel, openclaw.delivery.kind, openclaw.outcome, openclaw.errorCategory, openclaw.delivery.result_count
openclaw.session.stuck
openclaw.state, openclaw.ageMs, openclaw.queueDepth
openclaw.context.assembled
openclaw.prompt.size, openclaw.history.size, openclaw.context.tokens, openclaw.errorCategory (không có nội dung prompt, lịch sử, phản hồi hoặc khóa phiên)
openclaw.tool.loop
openclaw.toolName, openclaw.outcome, openclaw.iterations, openclaw.errorCategory (không có thông điệp vòng lặp, tham số hoặc đầu ra công cụ)
openclaw.memory.pressure
openclaw.memory.level, openclaw.memory.heap_used_bytes, openclaw.memory.rss_bytes
Khi tính năng ghi nhận nội dung được bật rõ ràng, các span mô hình và công cụ cũng có thể
bao gồm các thuộc tính openclaw.content.* có giới hạn và đã được biên tập cho những lớp
nội dung cụ thể mà bạn đã chọn dùng.
Danh mục sự kiện chẩn đoán
Các sự kiện bên dưới hỗ trợ các chỉ số và span ở trên. Plugin cũng có thể đăng ký nhận
trực tiếp các sự kiện này mà không cần xuất OTLP.
Mức sử dụng mô hình
model.usage - token, chi phí, thời lượng, ngữ cảnh, nhà cung cấp/mô hình/kênh,
id phiên. usage là kế toán theo nhà cung cấp/lượt để tính chi phí và telemetry;
context.used là ảnh chụp nhanh prompt/ngữ cảnh hiện tại và có thể thấp hơn
usage.total của nhà cung cấp khi có đầu vào được lưu trong bộ nhớ đệm hoặc các lệnh gọi vòng lặp công cụ.
Luồng thông điệp
webhook.received / webhook.processed / webhook.error
message.queued / message.processed
message.delivery.started / message.delivery.completed / message.delivery.error
Hàng đợi và phiên
queue.lane.enqueue / queue.lane.dequeue
session.state / session.long_running / session.stalled / session.stuck
run.attempt / run.progress
diagnostic.heartbeat (bộ đếm tổng hợp: webhook/hàng đợi/phiên)
Vòng đời harness
harness.run.started / harness.run.completed / harness.run.error -
vòng đời theo từng lần chạy cho harness tác nhân. Bao gồm harnessId, pluginId
tùy chọn, nhà cung cấp/mô hình/kênh và id lần chạy. Hoàn tất sẽ thêm
durationMs, outcome, resultClassification tùy chọn, yieldDetected,
và số đếm itemLifecycle. Lỗi thêm phase
(prepare/start/send/resolve/cleanup), errorCategory và
cleanupFailed tùy chọn.
Exec
exec.process.completed - kết quả cuối, thời lượng, đích, chế độ, mã thoát
và loại lỗi. Văn bản lệnh và thư mục làm việc không được bao gồm.
exec.approval.followup_suppressed - lượt theo dõi phê duyệt cũ bị bỏ sau
khi một phiên bật lại. Bao gồm approvalId, reason (session_rebound),
phase (direct_delivery hoặc gateway_preflight) và dấu thời gian của dispatcher.
Khóa phiên, tuyến và văn bản lệnh không được bao gồm.
Không có exporter
Bạn có thể giữ cho các sự kiện chẩn đoán khả dụng với Plugin hoặc sink tùy chỉnh mà không cần
chạy diagnostics-otel:
{
diagnostics: { enabled: true },
}
Để xuất debug có mục tiêu mà không tăng logging.level, hãy dùng các cờ chẩn đoán.
Cờ không phân biệt chữ hoa chữ thường và hỗ trợ ký tự đại diện (ví dụ telegram.* hoặc
*):
{
diagnostics: { flags: ["telegram.http"] },
}
Hoặc dưới dạng ghi đè env dùng một lần:
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
Đầu ra cờ đi vào tệp nhật ký tiêu chuẩn (logging.file) và vẫn được
biên tập bởi logging.redactSensitive. Hướng dẫn đầy đủ:
Cờ chẩn đoán.
Tắt
{
diagnostics: { otel: { enabled: false } },
}
Bạn cũng có thể bỏ diagnostics-otel khỏi plugins.allow, hoặc chạy
openclaw plugins disable diagnostics-otel.
Liên quan