CAUTION: 从 Prometheus 3.0 开始,控制台模板和库不再与 Prometheus 捆绑提供。如果你希望使用控制台模板,必须通过指定 --web.console.templates 和 --web.console.libraries 命令行标志来提供自己的模板和库。本文档页面保留用于历史参考和展示控制台模板的功能。请注意,Prometheus 2.x 分支中引用的任何控制台库不再维护,可能包含已知的安全漏洞(CVE)。
在仪表盘上尽可能多地展示数据是很有诱惑力的,尤其是当像 Prometheus 这样的系统能够对应用程序进行如此丰富的监控时。然而这可能导致控制台因信息过多而变得难以理解,即使是系统专家也难以从中获取有用信息。
与其试图展示你拥有的每一项数据,不如在运维控制台中思考最可能的故障模式是什么,以及你将如何使用控制台来区分它们。利用服务的结构。例如,如果你有一个在线服务系统中的大型服务树,下层服务的延迟是一个典型问题。与其将所有服务的信息显示在一个大型仪表盘上,不如为每个服务构建单独的仪表盘,包含它们与之通信的每个服务的延迟和错误信息。然后你可以从顶层开始,逐步向下定位问题服务。
我们发现以下准则非常有效:
- 控制台上的图表不超过 5 个。
- 每个图表上的曲线(线条)不超过 5 条。如果是堆叠/面积图,可以适当多一些。
- 使用提供的控制台模板示例时,右侧表格中的条目不要超过 20-30 个。
如果你发现自己超出了这些限制,将不太重要的信息降低可见度可能是有意义的,比如将某些子系统拆分到新的控制台中。例如,你可以图形化地展示聚合数据而非细分数据,将其移至右侧表格,甚至完全移除不常用的数据——你总是可以在表达式浏览器中查看它!
最后,一组控制台很难同时满足多种需求。值班时你想知道的(什么出了问题?)与开发功能时你想知道的(有多少人遇到了边界情况 X?)往往非常不同。在这种情况下,两组独立的控制台会很有用。