- Published on
Opserver Monitoring SQL Server
在 twMVC 的 活動 上看到 阿砮
介紹 Opserver
,就覺得是個很神奇的監控程式,所以就稍微測試一下,隨手記錄。
Opserver 是 Stackoverflow 所開發,用來監控自家的 Server、DB 的一個網站,後來被 Stackoverflow 開源出來放在 Github
目前可以作到的監控有
- servers
- SQL clusters/instances
- redis
- elastic search
- exception logs
- haproxy
- ... and more as we go
下面就來看怎麼使用它..
1、下載專案
在這裡直接使用 git clone 來下載,或是到 Github 的網頁下載也可以
git clone https://github.com/opserver/Opserver.git
2、執行專案
因為 Opserver 只是網站的專案,所以執行上相當的簡單
Github 的相關說明
使用 VS 開啟下載後的專案檔,打開後會有兩個 Project
Opserver
是主要網站 Project,使用 ASP.NET MVCOpserver.Core
是核心處理資料的 Project
如果什麼都不作,直接執行 (ctrl + F5
) 的話,會發生找不到 Config 的錯誤
其實 Opserver 用了很多 Config 來配制,可以看到 Config 資料夾下面有很多相關的 Config
而第一個需要作的是設置 SecuritySettings.config
3、設置 SecuritySettings.config
Github 的相關說明
因為在自已本機測試,所以就不使用預設的 AD
認證,直接使用 alladmin
注意:因為監視 DB 或是 Server 時,會有些比較 Detail 的資訊,真正要使用時還是需要考慮 User 權限的問題
Build
一下重新執行就可以看到 Opserver 的登入畫面
目前的設定為 alladmin
, 所以不用打帳號和密碼直接 Login 就好了,不過因為還沒有設定相關監控的 Config 所以會發生沒有 Configuration 的錯誤
4、About 頁面
如果連到 about 頁面的話,可以看到整個網站的情況
5、設置 SQLSettings.json
Github 的相關說明
注意:除了 SecuritySettings.config 是
XML
外,其餘的設定檔都是json
格式
SQLSettings.json.example
裡面可以看到有分成三個區塊
defaultConnectionString
預設的連線字串,會自己去抓每個 SQL Server 的master DB
,不用修改- clusters 如果 DB 有設定 clusters 的話可以設置在這裡
- instances 其它的 DB 設置在這裡
有兩種設定 DB 的方式
- 直接給 Instance 的名稱,就不用給 connectionString
- 給 connectiongString,在給它一個名稱 (不一定要和 Instance 或是 DB Name 一樣),DB 的話看要連那一個都可以
它其實會透過 master DB 去達到監控的效果,所以只給 Instance Name 也可以,或都是給它一個 DB 的 connectionString 也是可以,不過還是建議使用 connectionString 的方式,比較好作權限的管理
在這裡很簡單的設定,就去抓本機的 SQLExpress 的 Northwind
重新執行程式就可以看到有 SQL Server 的資料
注意:因為這個網站有 Cache 的機制 (可以從 about 頁面裡面看到),所以有可以改完了之後重新執行,畫面不一定會變
設置完了 SQLServer,再看一次 about 頁面,就可以看到多出了 SQL Server 的部份
6, SQL Server Dashboard
預設的 nav bar 停在 all servers
的位置,可以看到所有 SQL Instance 的資料
而點選 all servers
裡面其中一個 Instance 的連接和 點選其它 nav bar 的意思是差不多的,只差在一個需要再選擇 Instance,一個已經先選好了
下面列出 all servers (左邊) 和 nav bar (右邊) 的對應
- Name => instance
- CPU => active
- Databases => databases
- Conns/ Sess => connections
instance
可以看到 SQL Server 的相關資訊,下面就簡單的介紹一下可點連結的內容
點選 Databases
,和點選 nav bar 的 top 一樣
點選 Jobs
,會跳出一個視窗顯示目前的所有的 SQL Server jobs
注意:這裡可以把 job 停止或是啟動
點選 View Configuration,會跳出一個視窗顯示 SQL Server 相關的屬性資料
點選 CPU
,和點選 nav bar 的 top 一樣
這個部份等後面講 databases 的時候在看
點選 Memory
,會跳出一個視窗顯示目前 SQL Server 使用記憶體的詳細情況
點選 Connections
,會跳出一個視窗顯示 SQL Server 登入情況和做了幾個動作 (Connection)
點選視窗右上角的 View Detail,和點選 nav bar 的 connections 一樣
點選 Volumes
,會跳出一個視窗顯示 SQL Server 相關的檔案情況
不過點選視窗右上角的 View Detail 的話,不知道為什麼會找不到頁面,還沒有仔細的研究
top
不知道為什麼裡面沒有資料,之後研究出來再更新
active
如果執行時發生 sp_WhoIsActive
錯誤的話,請參考這個網頁的解法 sp_whoisactive and Azure SQL Database,就會出現頁面了
其實這個頁面是看 Deadlock 的狀態,如果自己製造一個 Deadlock 就可以看到資料了
connections
可以看到所有 connection
的情況
點選一筆的話,會跳出視窗顯示詳細的 Query 內容
而且還可以看到執行計畫,滑鼠移上去也會顯示詳細內容,和在 SSMS 裡面看到的差不多喔 !!
不過有的時候點選會出現問題,目前還沒有研究為什麼會出錯
databases
顯示每個 DB 的目前情況
點選其中一筆的話會跳出一個視窗顯示 DB 詳細的內容,不過不知道為什麼我只可以點選 Tables
,其它的內容就等研究出來再更新
總結
雖然還沒有玩的很深入,有些呈現的內容不太確定代表什麼意思,不過還是可以看的出來是個蠻不錯的 Solution,之後有機會的話再更新相關的內容