檢視原始碼 Phoenix.LiveDashboard (LiveDashboard v0.8.4)
LiveDashboard 提供即時效能監控與除錯工具給 Phoenix 的開發人員。它提供了以下模組
首頁 - 查看系統的一般資訊
作業系統資料 - 查看作業系統的一般資訊,例如 CPU、記憶體和磁碟使用率
指標 - 透過即時圖表來視覺化
:telemetry
事件,查看你的應用程式在不同狀況下的執行效能要求記錄 - 查看特定要求所記錄的一切內容
應用程式 - 查看、篩選和搜尋目前節點中的應用程式,並在監督樹狀圖中查看它們的處理程序
處理程序 - 查看、篩選和搜尋目前節點中的處理程序
通訊埠 - 查看、篩選和搜尋目前節點中負責輸入輸出的通訊埠
套接字 - 查看、篩選和搜尋目前節點中負責 tcp/udp 的套接字
ETS - 查看、篩選和搜尋目前節點中的 ETS 表格(記憶體儲存)
Ecto 統計資料 - 顯示底層 Ecto Repo 儲存的索引、表格和一般使用率
這個儀表板也能跨節點運作。如果你的節點透過 Distributed 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. 新增僅限開發時使用的儀表板存取權
安裝後,更新路由器設定,以將請求轉發至 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 文件。
摘要
函式
@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
,如果事件不屬於指標。
請注意,預計事件名稱已驗證為指標的一部分。