iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Software Development

MongoDB披荊斬棘之路系列 第 23

DAY23 MongoDB 免費監控工具

DAY23 MongoDB 免費監控工具

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


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

取得目前監控狀態

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

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

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


啟用監控服務

  • db.enableFreeMonitoring()
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: 系統給予的額外資訊,但我是沒有看過有特別內容過。

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

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()
ith2021> db.disableFreeMonitoring()
{ ok: 1 }

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


免費雲端監控內容


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

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

https://ithelp.ithome.com.tw/upload/images/20210917/201405045hjwSZweQ1.png

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

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

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


監控項目

想了一下,還是不要貼上所有的圖來介紹監控的項目,因為折線圖的數據對監控者以外的人意義不大,且這也是教學文章而已,重點應該還是放在這個工具能夠幫助到什麼。

  • Operation Execution Times: 平均每個操作類型的執行時間,指標有 Read, Write, Commands
  • Disk Utilization: 硬碟使用量,指標有 Max, Average
  • Documents: 每秒鐘平均文件數量,指標有 Insert, Update, Delete, Return
  • Memory: 記憶體使用量,指標有 Resident, Virtual, Mapped
  • Network Input/Output: 網路使用量,指標有 Input, Output
  • Opcounters: 每秒鐘的各種操作數量,指標有 Insert, Update, Delete, Query, GetMore, Command
  • Opcounters - Replication: 同上,但僅針對 Secondary 節點
  • Query Targeting: 同上面提到的
  • Queues: 等待被執行的指令數量,指標有 Read, Write, Total
  • Replication Lag: 覆寫機制延遲的時間(前面 Replication 文章有介紹)
  • System CPU Usage: 同上面提到的

注意事項

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

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

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

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


本系列文章會同步發表於我個人的部落格 Pie Note


上一篇
DAY22 MongoDB Profiler 幾個指令抓出拖垮系統的元兇
下一篇
DAY24 MongoDB Atlas (免費)雲端託管服務
系列文
MongoDB披荊斬棘之路30

尚未有邦友留言

立即登入留言