檢視原始碼 Phoenix.LiveDashboard (LiveDashboard v0.8.4)

LiveDashboard 提供即時效能監控與除錯工具給 Phoenix 的開發人員。它提供了以下模組

  • 首頁 - 查看系統的一般資訊

  • 作業系統資料 - 查看作業系統的一般資訊,例如 CPU、記憶體和磁碟使用率

  • 指標 - 透過即時圖表來視覺化 :telemetry 事件,查看你的應用程式在不同狀況下的執行效能

  • 要求記錄 - 查看特定要求所記錄的一切內容

  • 應用程式 - 查看、篩選和搜尋目前節點中的應用程式,並在監督樹狀圖中查看它們的處理程序

  • 處理程序 - 查看、篩選和搜尋目前節點中的處理程序

  • 通訊埠 - 查看、篩選和搜尋目前節點中負責輸入輸出的通訊埠

  • 套接字 - 查看、篩選和搜尋目前節點中負責 tcp/udp 的套接字

  • ETS - 查看、篩選和搜尋目前節點中的 ETS 表格(記憶體儲存)

  • Ecto 統計資料 - 顯示底層 Ecto Repo 儲存的索引、表格和一般使用率

這個儀表板也能跨節點運作。如果你的節點透過 Distributed 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. 新增僅限開發時使用的儀表板存取權

安裝後,更新路由器設定,以將請求轉發至 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(這原本就應該做了)即可

# 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

如果您的應用程式是在代理伺服器或網路伺服器後方執行,您還必須確認它們已設定為允許 WebSocket 升級。例如,這篇文章說明如何將 Nginx 設定為與 Phoenix 和 WebSocket 搭配使用。

最後,您還想設定 config/prod.exs,並於 check_origin 設定下使用網域名稱

check_origin: ["//myapp.com"]

這樣就完成了

透過 PLDS 從命令行使用

在不將 LiveDashboard 新增為應用程式依賴項,或尚未安裝 Phoenix 的情況下,也可以使用 LiveDashboard。 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,如果事件不屬於指標。

請注意,預計事件名稱已驗證為指標的一部分。