打造属于你的 PDS:自定义与指标

Lobsters Hottest 工具

摘要

AT Protocol 的参考 PDS 更新增加了账户管理和认证屏幕的可自定义品牌,以及用于追踪、指标和日志的 OpenTelemetry 支持。

<p><a href="https://lobste.rs/s/tykvbi/make_pds_your_own_customization_metrics">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/08/10 06:55

# 让 PDS 成为你的专属:定制化与指标 - AT Protocol 来源: https://atproto.com/blog/pds-customization-and-metrics 当我们在六月发布账户管理页面(https://atproto.com/blog/pds-account-management)时,我们在那篇文章的结尾许下承诺:今年夏天会带来更多参考 PDS 更新,包括可观测性工具。今天的发布兑现了承诺,而且还不止于此。 本次发布包含**四项**内容:账户管理界面的定制化、OpenTelemetry 支持、更大的默认 blob 大小,以及针对连接应用列表中的一个 bug 修复。 账户管理页面和 OAuth 登录界面是用户实际会看到的 PDS 部分。你此前已经可以在上面放置自己的名称、Logo、颜色和链接,但这些只是一次性开关,且文档不一致。 本次发布对此进行了整理:一套更小、更清晰的变量,全部都有恰当文档,外加一个全新功能:认证屏幕的背景图片。 如果你在标准 Docker 部署中运行参考 PDS,你可以从 `pds.env` 开始试验,然后重启。先从名称和 Logo 开始: `PDS_SERVICE_NAME` 默认是你的主机名后跟“PDS”,因此设置它是你能做的对品牌影响最大的单一改动。这两者也会流入你的 PDS 发送的事务邮件,因此重置密码邮件也会带有你的品牌。 颜色的设置方式相同。你最先会想用的是主色调,它驱动按钮、链接和强调色: 还有四个用于语义状态的颜色变量:`PDS_ERROR_COLOR`、`PDS_WARNING_COLOR`、`PDS_INFO_COLOR` 和 `PDS_SUCCESS_COLOR`。 所有这些都是可选的。绘制在主色调上方的文本颜色会为你自动推导,根据对比度选择黑色或白色中更易读的那个,因此无障碍的默认选择是自动的,无需你额外配置。 最后,你可以在页脚添加自己的链接: 下面是在配置了品牌化的部署上的登录步骤——这里用的是 Bluesky 自己的品牌,正是通过上述变量应用的: 未配置任何这些项的 PDS *不会*看起来像 Bluesky。默认是中性的,上面的品牌化是设置这些变量的结果,而不是你继承来的。 若要为认证屏幕设置背景图片(!),它位于登录卡片后方: 处于深色模式的用户会隐式获得深色布局,无需切换。图片以 `cover` 方式绘制,并居中在你的中性基础色上,而卡片保留其自身的不透明表面,因此无论图片多么杂乱,你的文字内容都保持清晰易读。 本次发布的另一半面向运营者而非用户。PDS 现在支持 OpenTelemetry(https://opentelemetry.io/),用于链路追踪、指标和日志。 遥测默认关闭,同样地,你可以通过在参考 PDS 上设置环境变量来选择启用: 一旦开启,你将获得针对 PDS 指标的自动插桩:入站和出站 HTTP、SQLite 层、S3 兼容的 blob 存储,以及 Node 运行时指标,如事件循环延迟和垃圾回收。 XRPC 请求会按方法归一化,因此 span 会以 `GET /xrpc/com.atproto.repo.getRecord` 的形式出现,而不是被扁平化为单一的 `/` 路由,并且 NSID 会作为属性附加。 除自动插桩外,PDS 还会为运营者关心的关键事件发射计数器: - `account.created` — 新账户,按注册是通过 OAuth 还是 XRPC 端点进行维度划分 - `session.created` — 登录,按来源维度划分 - `oauth.authorization` — 向应用颁发的 OAuth 授权 我们还将发布一个仪表盘来配合这一切。参考 PDS 仓库中的 `monitoring/`(https://github.com/bluesky-social/pds/tree/main/monitoring)目录拥有一套自包含的 Prometheus、Grafana 和 node_exporter 栈,外加一个现成的 **PDS Overview** 仪表盘,涵盖主机健康状态和 PDS 活动: 该栈中没有 OpenTelemetry Collector。Prometheus v3 可以直接接收 OTLP,因此 PDS 将指标直接推送给它。我们的示例仪表盘栈可以在不到 1GB 内存的情况下与 PDS 一同运行。 默认情况下,一切绑定到 localhost,因此你可以通过 SSH 隧道访问 Grafana。如果你已经在运行 Prometheus 和 Grafana,就完全不需要 compose 文件;你只需将 PDS 指向你自己的 OTLP 端点,并导入仪表盘 JSON。无论哪种方式,`monitoring/README.md`(https://github.com/bluesky-social/pds/blob/main/monitoring/README.md)都有逐步说明,包括仪表盘面板依赖哪些 `OTEL_*` 变量。 我们决定将默认最大 blob 大小提升到 300M。这主要是为了允许 Bluesky 上发布更长的视频,我上周已经发文说过此事: 反馈是积极的,因此我们继续并做了这个更改。 如果你已经在运行 PDS:这是安装程序写入 `pds.env` 的更改,因此新安装会采用,而已有安装则不会。要提升已在运行的 PDS 的限制,请自行设置并重启: 我们还使 PDS 能够通过 `describeServer` 通告其最大 blob 大小,这样客户端可以在需要时拆分或拒绝上传: 本次发布还修复了账户管理(https://atproto.com/guides/account-management)页面中连接应用列表的一个 bug。 此前,该列表只能可靠地显示最近刷新过的会话。如果你授权了一个应用,然后一段时间没有打开它,它可能会从列表中消失。 现在,无论会话上次刷新是什么时候,列表都是准确的。如果你一直在用账户管理页面审计已连接的应用,你可能会看到之前被隐藏的条目。 总而言之,这是参考 PDS 的一次重大发布,也完成了我们夏季 PDS 待办清单上的所有剩余项。如果你在标准 Docker 部署中运行参考 PDS,它会自动更新到最新版本。快来试试,告诉我们你的想法吧!

相似文章

从 uv 迁移到 PDM

Lobsters Hottest

开发者分享将 Python 项目从 uv 迁移到 PDM 的经验,强调 PDM 纯 Python 代码库、刚发布的 2.26.8 版带来的“相对时间依赖冷却”功能,以及更强大的项目管理特性。