Zabbix應用八:Zabbix監控MongoDB


利用Zabbix監控MongoDB

 

一、首先介紹mongodb采集到的數據含義:

1、狀態采集命令:

>db.serverStatus();

2、輸出內容:

{
    "host" : "localhost",
    "version" : "2.2.6",
    "process" : "mongod",  
    "pid" : 55123,
    "uptime" : 18654536,
    "uptimeMillis" : NumberLong("18654536224"),
    "uptimeEstimate" : 18407100,
    "localTime" : ISODate("2017-07-10T08:06:17.628Z"),
    "locks" : {
        "." : {
            "timeLockedMicros" : {
                "R" : NumberLong(1203), #所有庫全局讀鎖總微秒數
                "W" : NumberLong(1607)  #所有全庫局寫鎖總微妙數
            },
            "timeAcquiringMicros" : {
                "R" : NumberLong(168),  #所有庫全局讀鎖的鎖等待總微秒數
                "W" : NumberLong(41)    #所有庫全局寫鎖的鎖等待總微秒數
            }
        },
        "admin" : {
            "timeLockedMicros" : {      
                
            },
            "timeAcquiringMicros" : {
                
            }
        },
        "local" : {
            "timeLockedMicros" : {
                "r" : NumberLong(4118711),
                "w" : NumberLong(0)
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(2191541),
                "w" : NumberLong(0)
            }
        },
        "org_center" : {
            "timeLockedMicros" : {
                "r" : NumberLong("13835793898"),
                "w" : NumberLong("20466120642")
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(352664878),
                "w" : NumberLong("29283950076")
            }
        },
        "org_centr" : {
            "timeLockedMicros" : {
                "r" : NumberLong(124236),
                "w" : NumberLong(180)
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(10119),
                "w" : NumberLong(10)
            }
        },
        "shopProduct" : {
            "timeLockedMicros" : {
                "r" : NumberLong(134997),
                "w" : NumberLong(0)
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(14241),
                "w" : NumberLong(0)
            }
        },
        "tb_shop" : {
            "timeLockedMicros" : {
                "r" : NumberLong(1405192),
                "w" : NumberLong(0)
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(146122),
                "w" : NumberLong(0)
            }
        },
        "test" : {
            "timeLockedMicros" : {
                "r" : NumberLong(3090622),
                "w" : NumberLong(2170)
            },
            "timeAcquiringMicros" : {
                "r" : NumberLong(414040),
                "w" : NumberLong(130)
            }
        }
    },
    "globalLock" : {
        "totalTime" : NumberLong("18654536224000"),
        "lockTime" : NumberLong(1607),
        "currentQueue" : {
            "total" : 0,
            "readers" : 0,
            "writers" : 0
        },
        "activeClients" : {
            "total" : 0,
            "readers" : 0,
            "writers" : 0
        }
    },
    "mem" : {
        "bits" : 64,         #64位操作系統
        "resident" : 238,    #共占用屋里內存M
        "virtual" : 448,     #占用虛擬內存
        "supported" : true,
        "mapped" : 256       #映射內存
    },
    "connections" : {
        "current" : 16,      #當前活躍連接數
        "available" : 803    #剩余空閑連接數
    },
    "extra_info" : {
        "note" : "fields vary by platform",
        "heap_usage_bytes" : 30607592,
        "page_faults" : 200
    },
    "indexCounters" : {
        "btree" : {
            "accesses" : 24067164,  #索引被訪問次數
            "hits" : 24067164,      #索引命中量
            "misses" : 0,
            "resets" : 0,
            "missRatio" : 0
        }
    },
    "backgroundFlushing" : {
        "flushes" : 310905,                   #數據庫刷新寫到磁盤的次數
        "total_ms" : 214212,                  #數據庫刷新數據到磁盤花費的微秒數
        "average_ms" : 0.688995030636368,     #執行單次刷新花費的平均微秒數
        "last_ms" : 5,
        "last_finished" : ISODate("2017-07-10T08:05:26.598Z")
    },
    "cursors" : {
        "totalOpen" : 0,
        "clientCursors_size" : 0,
        "timedOut" : 60
    },
    "network" : {
        "bytesIn" : 5150258135,       #流入數據庫總量
        "bytesOut" : 10535203727,     #從數據庫流出總量
        "numRequests" : 32203604      #數據庫總請求數
    },
    "opcounters" : {
        "insert" : 6010564,       #總insert數據量
        "query" : 7507450,        #總query數據量
        "update" : 573085,        #總update數據量
        "delete" : 2563194,       #總delete數據量
        "getmore" : 308,          #游標調用的getMore總次數
        "command" : 16077462      #執行命令的總次數
    },
    "asserts" : {
        "regular" : 0,
        "warning" : 0,
        "msg" : 0,
        "user" : 37,
        "rollovers" : 0
    },
    "writeBacksQueued" : false,
    "recordStats" : {
        "accessesNotInMemory" : 0,
        "pageFaultExceptionsThrown" : 0,
        "org_center" : {
            "accessesNotInMemory" : 0,
            "pageFaultExceptionsThrown" : 0
        },
        "tb_shop" : {
            "accessesNotInMemory" : 0,
            "pageFaultExceptionsThrown" : 0
        },
        "test" : {
            "accessesNotInMemory" : 0,
            "pageFaultExceptionsThrown" : 0
        }
    },
    "ok" : 1
}

 zabbix監控頁面的主要數據開源就是這里。 

 3、利用zabbix用戶自定義監控功能 userparameter 來監控MongoDB:

   3.1、修改zabbix_agentd.conf,允許接受自定義參數:

UnsafeUserParameters=1

  3.2、定義數據采集命令:

UserParameter=MongoDB.status[*],/bin/echo "db.serverStatus().$1" |/data/mongodb/bin/mongo admin | grep "$2" | awk -F ':' '{print $$2}' | awk -F ',' '{print $$1}'

  注意:不同環境,請注意主機ip和端口號等。

4、zabbix監控頁面新建監控模版、添加監控項、生成圖形:

創建模版:Template App MongoDB(已經手動創建完畢,並創建監控項,需要者可自行下載)

由於監控項眾多,本例只貼出其中一個監控項的配置,如下圖:

需要注意的是 鍵值 項,需和 UserParameter 中定義的格式一致。

5、模版創建完成后,套用到被監控的主機即可。

最終效果如下圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM