
您是否已经 设置 amppackager 服务器 来提供打包为 Signed Exchanges 的 AMP 页面?如果是,那就太好了!这意味着当从 Google 搜索访问时,浏览器会 显示您的域名。
任何在生产环境中运行的服务都可能遇到问题,amppackager 也不例外。以下是此类问题的几个示例
- 运行 amppackager 的实例可能宕机。
- 底层 AMP 页面服务器可能宕机。
- 未签名的 AMP 页面可能不是有效的 AMP 页面,或者大于 4MB,或者违反了 amppackager 的其他一些 要求。
您可以通过监控 amppackager 的运行状况和性能来尽早发现这些问题,甚至可以防止这些问题。服务器的 /healthz 端点允许您进行一次性手动运行状况检查。截至 2020 年 8 月,服务器还提供了 /metrics 端点,该端点会生成详细的指标。后一个端点支持 Prometheus 框架,让您可以设置自动检查和警报。
快速运行状况检查:/healthz 端点
让我们首先检查 /healthz 端点,以确保 amppackager 运行状况良好,这意味着它正在运行并且拥有最新有效的证书。
在 amppackager 的实例上运行以下命令(如果需要,调整端口)
$ curl https://localhost:8080/healthz
ok
Code language: Bash (bash)
如果运行状况不佳,服务器将提供错误消息
$ curl https://localhost:8080/healthz
not healthy: Cannot find issuer certificate in CertFile.
Code language: Bash (bash)
你可以通过几种方式使用 /healthz 端点
- 在你刚刚安装或重新安装 amppackager 时检查它。
- 在任何故障排除方案中将其作为第一步进行检查。
- 将检查与控制平面工具集成,例如使用 Docker HEALTHCHECK 或 Kubernetes readiness probes。
详细统计信息:/metrics 端点
该 /metrics 端点提供大量指标,具体包括
- 已处理的请求计数,
- 错误率,
- 延迟分布,
- 文档大小分布(让你注意到何时接近 4MB 限制),
- 以及 其他统计信息。
该端点提供 amppackager 服务器的统计信息,还提供底层 AMP 页面服务器的统计信息。
下面的示例命令检查自启动以来 amppackager 已处理了多少个请求。
$ curl https://127.0.0.1:8080/metrics | grep total_requests_by_code_and_url
# HELP total_requests_by_code_and_url Total number of requests by HTTP code and URL.
# TYPE total_requests_by_code_and_url counter
total_requests_by_code_and_url{code="200",handler="healthz"} 3
total_requests_by_code_and_url{code="200",handler="validityMap"} 5
total_requests_by_code_and_url{code="200",handler="signer"} 6
total_requests_by_code_and_url{code="502",handler="signer"} 4
total_requests_by_code_and_url{code="404",handler="handler_not_assigned"} 1
Code language: Bash (bash)
该命令通过 /metrics 端点获取所有可用的指标。然后,它 grep 报告以查找 total_requests_by_code_and_url,即所讨论的指标。
报告以 # HELP 部分开头,解释该指标,然后是 # TYPE 部分,其中包含指标的 类型,然后是实际统计信息。
这些统计数据按响应 HTTP 代码和处理请求的内部 amppackager 模块(处理程序)细分。以上统计数据报告了对 healthz 处理程序的 3 个请求,该请求获得了 200 响应(正常),对 signer 处理程序的 4 个请求,该请求获得了 502 响应(错误网关),依此类推。
查阅 文档,了解其他 可用指标、更多 使用示例,以及有关如何解释统计数据(包括处理程序、标签、按处理程序和响应代码细分的统计数据,以及解释分布类型指标,又称摘要(例如延迟分布))的详细信息。
利用 Prometheus:可视化并自动化您的监控
正如我们在上面看到的 /metrics 是可通过命令行访问的自给自足的端点。
最重要的是,该端点与 Prometheus 兼容。它是一个强大的监控框架,您可以将其集成以可视化统计数据并设置自动通知。
以下是我们推荐的设置顺序
- 探索 amppackager 提供的 指标。选择您想要监控的指标。
- 设置 Prometheus 服务器.
- 将所有 amppackager 副本设置为 Prometheus 服务器的目标。使用 多目标导出器模式。
- 尝试 查询 您选择的指标。
- 通过 grafana 可视化指标。
- 设置 警报,以便在出现异常行为时通知您(例如延迟超过 60 秒 - 查看更多 示例)。
结论
amppackager 提供了多种工具,用于监控您的监控并确保您提供的已签名交换服务的可用性和稳定性处于较高水平。从通过 Prometheus 进行快速的手动运行状况检查到复杂的自动化,我们鼓励您选择适合您的设置,并将监控作为您流程的一部分。
作者:Michael Rybak,软件工程师,Google,AMP 项目