《MongoDB權威指南》學習整理----MongoDB安裝與監控

MongoDB爲我們提供了較爲簡單的管理方式,下面我們對MongoDB的管理進行簡單的講解。

安裝

MongDB的安裝非常輕量級,甚至可以稱之爲不是安裝的安裝:

1,從MongoDB的官網下載適合於本地平臺的壓縮包

2,解壓安裝包(下文中我們將解壓的目錄以MONGO_HOME代替)

上面這兩步就完成了MongoDB的安裝

啓動和停止

從命令行啓動

執行MONGO_HOME/bin目錄下的mongod.sh/mongod.exe--dbpath mongoDB存儲數據的數據目錄位置。

使用命令行啓動可以有多個選項,可以使用mongod --help命令查看所有選項的意義。

主要執行選項解釋

  • --dbpath

指定存儲MongoDB數據的目錄,默認值是/data/db/(Windows下是C:\data\db)。每個MongoDB進程都需要獨立的數據目錄,每個MongoDB進程都會在其所擁有的數據目錄中創建mongo.lock文件放置其他MongoDB進程訪問此數據目錄

  • --port

指定服務器監聽的端口號,默認是27017。如果運行多個MongoDB進程那麼需要對不同的MongoDB指定不同端口號

  • --fork

以守護進程的方式運行MongoDB,創建服務器進程。

  • --logpath

指定日誌輸出路徑,而不是命令行。每次啓動MongoDB的時候,MongoDB都會自動將歷史的log重命名保存,不會覆蓋歷史日誌。

  • --config

指定配置文件,可方便的在配置文件中批量的設置啓動選項,減少啓動時的工作量。

配置文件

MongoDB爲了減輕我們的工作量提供了配置文件中讀入啓動選項的功能,主要用於配置選項非常多或者自動化啓動MongoDB進程使用。

常見的配置文件格式:

Mongo.conf

port =xxx

logpath=xxx

配置文件都是以key(選項)=value(選項值)的形式,每一行都是一個選項值。注意以下事項:

  • #開頭的是註釋
  • 文件內容區分大小寫,所以選項的key一定要和--help的大小寫一致
  • 開關選項的值要設爲true/false

停止MongoDB

正確的停止能夠保證下次正確的啓動。

當MongoDB以前臺命令行窗口的方式運行,那麼在命令行中使用Ctrl+C可以保證停止。

如果是以後臺進程的方式,那麼可以使用kill -2 進程號或kill 進程號的方式停止。

也可以使用mongoSehell中的db.shutdownServer()命令停止,這個命令必須在admin庫下運行,即useadmin切換到admin庫後執行該命令。

監控

對於日常的開發管理人員,我們做的最多的事情就是對MongoDB運行情況的監控,保證其狀態和性能。MongoDB爲我們考慮好了這些。

使用管理接口

默認情況下,MongoDB爲我們提供了一個Web界面接口用來監控(該web接口的默認端口是28017,即mongoDB啓動端口+1000)。在使用web端管理接口的時候,需要MongoDB進程在啓動的時候提供--rest選項或配置文件中:rest=true

如果不想開啓MongoDB的Web管理接口,可以在啓動MongoDB進程時使用--nohttpinterface或在配置文件中使用nohttpinterface=true。

也可以使用db.runCommand({'serverStatus':1})來得到當前流程實例名稱

狀態說明

當使用Web接口或serverStatus命令查看系統狀態的時候,系統會返回一個格式化好的系統狀態的文檔,下面對一些重要的鍵進行說明:、

  • globalLock

表示全局寫入鎖佔用了服務器多少時間,微秒爲單位

  • mem

包含服務器內存映射了多少數據,服務器進程的虛擬內存和常住內存的佔用情況

  • indexCounters

表示B樹在磁盤索引('misses')和內存檢索('hits')的次數。如果該比值過高就需要添加內存了。

  • backgroudFlushing

表示後臺做了多少次fsync以及用了多長時間

  • opcounters

包含了每種主要操作的次數

  • asserts

統計了斷言的次數

 

上邊說到的計數器都是從服務進程啓動開始計算,如果數量達到計數器上限,那麼asserts中的rollovers會增加,同時計數器置0。

使用mongostat命令

serverState雖然可以比較全面的顯示當前進程的狀態,但是由於是靜態的,即每次只能監控當前的狀態無法跟蹤顯示mongoDB進程運行的動態信息,所以MongoDB還爲我們提供了mongostat命令來動態的監控進程運行狀態(類似Linux下more和tail -t -n 200的區別(尾部遊標))。

mongostat的參數

mongostat命令和mongod、mongo命令屬於同一級別命令,都在mongo_home/bin目錄中。常見的命令參數:

  • --help

help大家都懂得,就是得到這個命令的幫助、使用信息

  • --verbose/-v

增加命令行返回的內部報告數量。可以通過設置多個v來使得數據更加詳細,例如-vvvvvv

  • --version

顯示當前mongodbstat命令版本

  • --host

指定mongostat要監測的mongo實例的ip:port,默認情況下鏈接localhost:27017端口的MongoDB實例。如果要連接的是一個集合,那麼可以按如下方式連接:

集合名/IP:PORT,IP1:PORT2…

  • --port

如果MongoDB運行在默認的27017端口,那麼不需要指定該端口。如果不是運行在27017端口,那麼就需要使用該參數指明端口。

  • --ipv6

啓用IPv6支持,默認情況下,MongoDB實例沒有開啓IPv6網絡連接。

  • --ssl

2.4版本的mongostat新加入的命令參數,支持mongostat通過SSL連接MongoDB實例。默認情況下,MongoDB實例不支持SSL連接,需要設置MongoDB支持SSL連接,才能讓mongostat通過SSL連接MongoDB

  • --rowcount number,-n number

控制數據輸出行數。number的值設定了輸出的數據行數,即監聽幾次,當number爲0的時候,那麼就是無限次輸出行數。

該參數配合sleeptime參數一起使用可以實現,監聽number次,每次監聽間隔sleeptime秒。

  • --sleeptime

sleeptime參數使用的時候不需要前置參數,數字即可。例如:

mongostatsleeptime

其他參數詳見:

http://docs.mongodb.org/manual/reference/program/mongostat/

mongostat返回列說明

mongostat返回的是一個表格形式,下面對返回的值的形式、列做出說明:

  • Inserts

顯示每秒插入到數據庫中對象數量,如果後邊跟着一個*,那麼就說明該次是一個複製操作。

  • Query

每秒執行的查詢操作數。

  • Update

每秒執行的更新操作數。

  • Delete

每秒執行的刪除操作數。

  • Getmore

每秒執行的get more(cursor相關操作)操作的數量。

  • Command

每秒執行的命令數。當在從屬節點和輔助節點上執行mongostat命令的時候,這列會以  本地數|複製數  的方式展示。

  • Flushes

每秒系統執行的從內存同步到硬盤的數量。

  • Mapped

映射的數據總量,以M爲單位。這個數據在每次調用mongostat時刷新。

  • Size

虛擬內存在最後調用mongostat時,進程使用的兆字節的數量。

  • non-mapped

虛擬內存不包括在最後調用mongostat時所有映射的內存總量,以M爲單位。

  • Res

駐留在內存中的,在最後調用mongostat時,進程使用的兆字節的數量。

  • Faults

每秒的頁面故障數。

  • Locked

全局寫入鎖所佔的百分比。

  • locked db

時間在每個數據庫上下文特定的鎖的百分比。此值列出的數據庫過度花費在全局鎖的時間鎖定狀態量。正因爲如此,取樣方法,您可能會看到大於100%的一些值。

  • idx miss

索引嘗試訪問數據時,錯誤頁面的造成失敗的百分比。

  • Qr

等待從MongoDB實例讀取數據的客戶端隊列長度。

  • Qw

等待向MongoDB實例寫入數據的客戶端隊列長度。

  • Ar

執行讀取操作的活動客戶端的數量。

  • Aw

執行寫入操作的活動客戶端的數量。

  • netIn

由MongoDB實例接收的網絡通信量,以字節爲單位。這包括mongostat命令產生的流量。

  • netOut

由MongoDB實例輸出的網絡通信量,以字節爲單位。這包括mongostat命令產生的流量。

  • Conn

所有打開的連接數量。

  • Set

該集合副本的名稱,如果使用纔會出現。

  • Repl

當前集羣成員的複製狀態。

Value

Replication Type

M

主節點

SEC

備份節點

REC

恢復節點

UNK

位置狀態

SLV

從屬節點

 

  • Time

mongostat命令執行的服務器時間。

第三方MongoDB監控

Nagios、Munin、Ganglia(可以監控Hadoop),Cacti。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章