Opserver Monitoring SQL Server

Posted on 2015-10-04

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 MVC
  • Opserver.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,之後有機會的話再更新相關的內容