查看源代码 Phoenix.LiveDashboard (LiveDashboard v0.8.4)

LiveDashboard 为 Phoenix 开发人员提供实时性能监控和调试工具。它提供以下模块

  • 首页 - 查看系统的一般信息

  • 操作系统数据 - 查看操作系统的一般信息,例如 CPU、内存和磁盘使用情况

  • 指标 - 通过使用实时图表可视化 :telemetry 事件,查看您的应用程序在不同条件下的性能

  • 请求日志 - 查看特定请求的所有日志信息

  • 应用程序 - 查看、过滤和搜索当前节点中的应用程序,并在监督树中查看它们的进程

  • 进程 - 查看、过滤和搜索当前节点中的进程

  • 端口 - 查看、过滤和搜索当前节点中的端口(负责 I/O)

  • 套接字 - 查看、过滤和搜索当前节点中的套接字(负责 tcp/udp)

  • ETS - 查看、过滤和搜索当前节点中的 ETS 表(内存存储)

  • Ecto 统计信息 - 显示有关底层 Ecto Repo 存储的索引、表格和一般使用情况

仪表板也跨节点工作。如果您的节点通过分布式 Erlang 连接,那么您可以在节点 A 上访问仪表板时访问节点 B 的信息。

screenshot

安装

要开始使用 LiveDashboard,您需要三个步骤

  1. 添加 phoenix_live_dashboard 依赖项
  2. 配置 LiveView
  3. 添加仪表板访问权限

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 文档

总结

函数

指向此函数的链接

extract_datapoint_for_metric(metric, measurements, metadata, time \\ nil)

查看源代码
@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 事件中的 measurementsmetadata,以及可选的 time,并返回一个提取的数据点,或者如果事件不是指标的一部分,则返回 nil

请注意,预计事件名称已作为指标的一部分进行验证。