查看源代码 Phoenix.LiveDashboard (LiveDashboard v0.8.4)
LiveDashboard 为 Phoenix 开发人员提供实时性能监控和调试工具。它提供以下模块
首页 - 查看系统的一般信息
操作系统数据 - 查看操作系统的一般信息,例如 CPU、内存和磁盘使用情况
指标 - 通过使用实时图表可视化
:telemetry
事件,查看您的应用程序在不同条件下的性能请求日志 - 查看特定请求的所有日志信息
应用程序 - 查看、过滤和搜索当前节点中的应用程序,并在监督树中查看它们的进程
进程 - 查看、过滤和搜索当前节点中的进程
端口 - 查看、过滤和搜索当前节点中的端口(负责 I/O)
套接字 - 查看、过滤和搜索当前节点中的套接字(负责 tcp/udp)
ETS - 查看、过滤和搜索当前节点中的 ETS 表(内存存储)
Ecto 统计信息 - 显示有关底层 Ecto Repo 存储的索引、表格和一般使用情况
仪表板也跨节点工作。如果您的节点通过分布式 Erlang 连接,那么您可以在节点 A 上访问仪表板时访问节点 B 的信息。
安装
要开始使用 LiveDashboard,您需要三个步骤
- 添加
phoenix_live_dashboard
依赖项 - 配置 LiveView
- 添加仪表板访问权限
1. 添加 phoenix_live_dashboard
依赖项
将以下内容添加到您的 mix.exs
中,然后运行 mix deps.get
def deps do
[
{:phoenix_live_dashboard, "~> 0.7"}
]
end
2. 配置 LiveView
LiveDashboard 建立在 LiveView 之上。如果您已经在应用程序中安装了 LiveView,请随时跳过此部分。
如果您计划将来在应用程序中使用 LiveView,我们建议您遵循 官方安装说明。本指南仅涵盖 LiveDashboard 本身运行所需的最低步骤。
首先,更新您的端点配置以包含一个签名盐。您可以通过运行 mix phx.gen.secret 32
生成一个签名盐(请注意,Phoenix v1.5+ 应用程序已经具有此配置)。
# config/config.exs
config :my_app, MyAppWeb.Endpoint,
live_view: [signing_salt: "SECRET_SALT"]
然后将 Phoenix.LiveView.Socket
声明添加到您的端点中
socket "/live", Phoenix.LiveView.Socket
您现在就可以开始使用了!
3. 添加仅限开发的仪表板访问权限
安装完成后,更新您的路由器配置,将请求转发到具有您选择的唯一 name
的 LiveDashboard
# lib/my_app_web/router.ex
use MyAppWeb, :router
import Phoenix.LiveDashboard.Router
...
if Mix.env() == :dev do
scope "/" do
pipe_through :browser
live_dashboard "/dashboard"
end
end
就是这样。运行 mix phx.server
并访问 "/dashboard" 以配置必要的模块。
额外:在所有环境(包括生产环境)中添加仪表板访问权限
如果您想在生产环境中使用 LiveDashboard,您应该将其置于某种身份验证后面,并只允许管理员访问。如果您的应用程序还没有管理员专区,您可以使用 Plug.BasicAuth
设置一些基本的身份验证,只要您也使用 SSL(无论如何您都应该使用 SSL)
# lib/my_app_web/router.ex
use MyAppWeb, :router
import Phoenix.LiveDashboard.Router
...
pipeline :admins_only do
plug :admin_basic_auth
end
scope "/" do
pipe_through [:browser, :admins_only]
live_dashboard "/dashboard"
end
defp admin_basic_auth(conn, _opts) do
username = System.fetch_env!("AUTH_USERNAME")
password = System.fetch_env!("AUTH_PASSWORD")
Plug.BasicAuth.basic_auth(conn, username: username, password: password)
end
如果您在代理或 Web 服务器后面运行您的应用程序,您还需要确保它们已配置为允许 WebSocket 升级。例如,这里有一篇文章介绍如何使用 Phoenix 和 WebSockets 配置 Nginx。
最后,您还需要配置您的 config/prod.exs
并使用您的域名在 check_origin
配置下
check_origin: ["//myapp.com"]
然后您就可以开始使用了!
使用 PLDS 从命令行使用
您可以使用 LiveDashboard,而无需将其作为应用程序的依赖项添加,或者在您没有安装 Phoenix 的情况下。 PLDS
是一个命令行工具,它提供了一个包含了一些内置功能的独立版本的 LiveDashboard。
您可以使用以下命令安装它
$ mix escript.install hex plds
并使用以下命令连接到正在运行的节点
$ plds server --connect mynode --open
有关更多详细信息,请查看 PLDS 文档。
总结
函数
@spec extract_datapoint_for_metric( Telemetry.Metric.t(), map(), map(), pos_integer() | nil ) :: %{label: binary(), measurement: number(), time: pos_integer()} | nil
提取给定指标的数据点。
接收一个 Telemetry.Metric
作为 metric
,以及 Telemetry 事件中的 measurements
和 metadata
,以及可选的 time
,并返回一个提取的数据点,或者如果事件不是指标的一部分,则返回 nil
。
请注意,预计事件名称已作为指标的一部分进行验证。