2021 iThome 鐵人賽 - DAY23 MongoDB 免費監控工具

2021 iThome 鐵人賽 MongoDB披荊斬棘之路


DAY23 MongoDB 免費監控工具

產品或服務上線最重要的當然是穩定度,大一點的團隊會設置監控部門,而人少的團隊更需要做好監控自動化,減少沒有警告或是誤警的發生率。


MongoDB 其實很佛心的讓你可以簡單幾個指令查到當前狀態,甚至有基礎的免費雲端監控服務,我們馬上來看看。

取得目前監控狀態

  • db.getFreeMonitoringStatus()
1
2
ith2021> db.getFreeMonitoringStatus()
{ state: 'undecided', ok: 1 }

這個是資料庫啟動後查詢的結果,狀態不是官網說的 enableddisabled,但只要經過修改後就不會是這個 undecided 了。

ok 則是代表這個 getFreeMonitoringStatus 操作有成功執行。


啟用監控服務

  • db.enableFreeMonitoring()
1
2
3
4
5
6
7
8
ith2021> db.enableFreeMonitoring()
{
state: 'enabled',
message: 'To see your monitoring data, navigate to the unique URL below. Anyone you share the URL with will also be able to view this page. You can disable monitoring at any time by running db.disableFreeMonitoring().',
url: 'https://cloud.mongodb.com/freemonitoring/cluster/JOSEFCUM5XXXXXXEIA3WA4DBWELSSY',
userReminder: '',
ok: 1
}
  • state: 可以看到狀態已經是回傳 enabled
  • message: 這幾乎是固定的訊息,告訴你可以在任何時間下啟用或關閉免費的監控服務。下面提供的 url 則是免費的雲端監控網址,任何人都可以直接透過這個網址查看所有內容。
  • userReminder: 系統給予的額外資訊,但我是沒有看過有特別內容過。

啟動後我們還不急著看監控內容,再次取得監控狀態看會發生甚麼事

1
2
3
4
5
6
7
8
9
ith2021> db.getFreeMonitoringStatus()
{
state: 'enabled',
message: 'To see your monitoring data, navigate to the unique URL below. Anyone you share the URL with will also be able to view this page. You can disable monitoring at any time by running db.disableFreeMonitoring().',
url: 'https://cloud.mongodb.com/freemonitoring/cluster/JOSEFCUM5XXXXXXEIA3WA4DBWELSSY',
userReminder: 'Free Monitoring URL:\n' +
'https://cloud.mongodb.com/freemonitoring/cluster/JOSEFCUM5XXXXXXEIA3WA4DBWELSSY',
ok: 1
}

再次取用基本上就是一樣的訊息,啊~userReminder有內容了,還是個程式沒寫好的重複內容XD


如何關閉自動監控

  • db.disableFreeMonitoring()
1
2
ith2021> db.disableFreeMonitoring()
{ ok: 1 }

嗯,毫無反應,就是給你一個執行的結果而已。


免費雲端監控內容

d23-1
Banner 頁面版本資訊和幫助文件,下面四個主要的數據,分別是

  • CPU 使用量
  • 讀取操作的執行時間
  • 查詢目標:查詢效率,指的是查詢需要掃描的文件數量,若超過一千則認為是不好的查詢
  • 每秒鐘的讀取操作數量

這邊擷取另一張使用 replication 的圖片,可以看到每個項目有三張折線圖,上方有著 P (Primary) 與兩個 S (Secondary)。

https://ithelp.ithome.com.tw/upload/images/20210917/20140504Dr5wjwsghO.png

預設的粒度如果覺得太大,可以透過匡選放大粒度,並透過右上的 reset 按鈕恢復成預設的大小。


注意事項

首先要強調一點,這些內容都是來自這個指令 db.serverStatus(),所以你也能自己做到這樣、甚至更好的服務。

既然是免費的,肯定背後有一些目的了,我想動機也很單純,推廣 MongoDB 的雲端服務,MongoDB Atlas。免費監控的網頁很諸多限制,我個人也是只建議在測試環境使用。

  • 沒有權限控管,只要知道這個網址的人,都能夠看到你的資料庫狀態
  • 監控資料只會保留最近的 24 小時
  • 監控功能較為陽春
  • 監控範圍只有 單一節點 或是 Replication,sharding 是沒有提供監控的
  • 需要連著對外網路 (暴露危險)

其實沒有登入與權限控管,大概就不用上到正式環境了。且只有24小時的資料尚不足以分析趨勢,特別是活動期間或是週末這種尖峰時刻差異,因此是否自建監控與維護 MongoDB 還是直接採用 MongoDB Atlas 服務非常值得評估。