@egeria-systems/可观察性
设定业务事件和限制误诊合同,为生成的应用程序注入交货界限.
该软件包具有零运行时间依赖性. 它不导入框架,平台SDK,浏览器API,或Node.js runtime API. 应用程序注入时钟,结构化的日志编写器,HTTP请求,以及浏览器发送器的构成根.
API 表面
@egeria-systems/observability创建不可变的策略2.0.0允许列出事件和有界限的错误报告.OperationalSink仅接收安全事件;DiagnosticSink明确选择限制性诊断。 两种调度路径都含有遥测故障.@egeria-systems/observability/server提供注射式结构-对象记录,加上明显的安全和受限制的更好的Stack HTTP适配器。 精确的 HTTP202这是唯一的成功状态.@egeria-systems/observability/browser发出不同的方案2.0.0operational-event财务报告和审定财务报表error-report信封 信封 信封 错误报告被确定为最多为8 192 UTF-8字节,并使用注入式同源运输.@egeria-systems/observability/testing提供安全和诊断的内存汇,并作出内容安全的断言.
import {
createOperationalEvent,
dispatchOperationalEvent,
} from "@egeria-systems/observability";
import { createMemorySink } from "@egeria-systems/observability/testing";
const created = createOperationalEvent(
{
name: "example.application.ready",
kind: "application.lifecycle",
runtime: "server",
severity: "info",
context: {
eventId: "example-event",
correlationId: "example-operation",
service: "web",
},
},
{ clock: { now: () => new Date() } },
);
if (created.ok) {
const memory = createMemorySink();
await dispatchOperationalEvent(created.value, [memory.sink]);
}
意外错误使用单独的报告和汇合同 :
import {
createOperationalErrorReport,
createOperationalEvent,
dispatchOperationalErrorReport,
} from "@egeria-systems/observability";
const errorEvent = createOperationalEvent(
{
name: "example.application.error",
kind: "application.error",
runtime: "server",
severity: "error",
context: { eventId: "example-error", service: "web" },
errorCategory: "unexpected",
},
{ clock: { now: () => new Date() } },
);
const report = errorEvent.ok
? createOperationalErrorReport(
errorEvent.value,
new Error("example failure"),
{ mechanism: "selected-catch", handled: true },
{},
)
: undefined;
if (report?.ok) {
await dispatchOperationalErrorReport(report.value, {
operationalSinks: [workersLogsSink],
diagnosticSinks: [approvedDiagnosticSink],
});
}
示例汇变量是应用程序自有的注入边界. 软件包没有发现提供者或证书.
隐私和失败合同
事件名称,上下文符号,和字符串属性使用受约束的符号词汇. 属性是平面平面平面的数值,只能通过明确的允许列表被接受. 被禁的私人数据密钥,不安全的字符串,嵌入值,非无限数字,原始错误,消息,堆栈,原因,请求数据,任意对象都被排除在安全事件分级之外.
错误报告只读取已知的类似错误的字段 。 他们将消息绑定到2,048个UTF-8字节,堆叠到16,384个UTF-8字节和64行,导致两个链接,并取代了常见的秘密,证书,令牌,电子邮件,IP,URL-detail,以及绝对路径形状. 这些报告是有限的业务数据。 基于Regex的校正可以减少明显的暴露,但并不是隐私保障. 供应商的准入、区域、保留、删除和操作者处理需要单独的审查和认证.
Better Stack 边界只接受验证 betterstackdata.com 摄取主机和有限制的服务器持有的无记名符号。 它从不暴露配置,提供者的响应内容,请求有效载荷,或者将出错的内容扔入结果. 顶级诊断记录使用点化提供者密钥;其 exception.cause 值保留了递归 ExceptionDiagnostics 有骆驼的线形 exceptionType 财务报告和审定财务报表 exceptionStacktrace当同一经核准的“更好堆栈”标识器收到内容丰富的诊断报告时,安全错误的交付就会被抑制,从而避免重复的提供者记录。 浏览器表面没有提供者的令牌,存储,回放,行为捕捉,分析,或控制台截取.
每个水槽都返回一个限定的交付类别. 调度器尝试每个槽并包含抛出,拒绝,或错误的结果,因此可观察性不能成为应用程序失败路径.
分析仍然是一个独立的能力。 导入此软件包后, Cloudflare Web Analytics 或其他访问者- 分析提供者将无法使用 。 犬类所有权边界记录在 软件包所有权。 。 。 .
兼容性和释放状态
源候选人从 schema 中推进事件和浏览器信封 1.0.0 改为 2.0.0时,需要 eventId 财务报告和审定财务报表 service,并制作 correlationId 选项。 其表现为: 0.3.0 发布候选人, 且与已公布的不相容 0.2.0 合同。 版本实事求是并不授权出版;现场登记验证,准确的终极核准,整合,推倒,出版仍然是单独的出入口.
运行 pnpm run verify 在此软件包中构建声明和 JavaScript, 插入严格的源, 运行行为测试, 以及类型检查软件包 .
来源和执照
软件包来源是 packages/observability。它根据 阿帕奇 - 2.0。 。 。 .