推薦一款關於MongoDB日誌分析的工具--Mtools

来源:https://www.cnblogs.com/xuliuzai/archive/2019/01/24/10317421.html
-Advertisement-
Play Games

一. 需求背景 MongoDB資料庫的強大的文檔模型使其成為處理數據的最佳方式。文檔適用於廣泛的流行數據模型,支持各種各樣的場景。文檔模型可以包含鍵值、關係數據集和圖形數據集,當然,還可以包含父子關係、列表/數組以及其他層次關係,它們比傳統的關係型資料庫技術(表格)具有更大的靈活性。由於文檔模型與主 ...


一. 需求背景

MongoDB資料庫的強大的文檔模型使其成為處理數據的最佳方式。文檔適用於廣泛的流行數據模型,支持各種各樣的場景。文檔模型可以包含鍵值、關係數據集和圖形數據集,當然,還可以包含父子關係、列表/數組以及其他層次關係,它們比傳統的關係型資料庫技術(表格)具有更大的靈活性。由於文檔模型與主流面向對象編程語言中的對象直接對應,因此開發人員可以根據現實世界中實體之間的自然關係存儲和組織數據,從而將重點放在以最有意義的方式構建應用程式上,而不是圍繞其資料庫的局限性開展工作。因此,使用文檔模型顯著提高了開發人員的生產效率,使組織機構能夠更快地進行創新。MongoDB CEO 兼總裁Dev Ittycheria稱之為: 文檔即未來。

但是MongoDB通用的監控工具有限,其中又有一部分還是要收費的,通過工具 Percona Monitoring and Management 進行監控,是個不錯的選擇。但在慢查詢收集方面,需要開啟Profiling,對性能方面會有一些侵害,另外,更細粒度的監控項維護起來也不容易。如果不想不開啟Profiling,我們還可以通過收集分析mongodb的運行log來來進行性能監控,並且通過運行日誌還可以獲取更多的運行狀態相關的信息。

今天介紹的就是一款專門用來讀取、分析MongoDB運行日誌的工具--Mtools。

 二. Mtools 的介紹

 Mtools的工具包和功能可以通過下麵的List來描述。

工具包 工具 功能概覽 實現功能 執行的命令(案例)
mtools Mlogfilter mlogfileter可以簡單理解為日誌的過濾器 列出日誌文件中所有的slow log(以json格式輸出)  mlogfilter mongod.log --slow 100 --json
通--from 和 --to 參數限定搜索範圍 mlogfilter mongod.log --slow 100 --from 2018-12-10T09:32:26 --to 2018-12-10T09:58:26
上面命令限定範圍 也通過 to 來指定時間段,例如監控10min內的數據 mlogfilter mongod.log  --from 2018-12-10T09:32:26 --to +10min
通過mlogfilter查詢日誌中某個表的slow log(超過100ms的) mlogfilter --namespace xxx.xx --slow 100 mongod.log
mloginfo mloginfo可以過濾總結出slow query的情況,以及為日誌中各類最常常出現情況進行統計 通過mloginfo統計日誌中connections的來源情況 mloginfo mongod.log --connections
通過mloginfo查看日誌中所記錄的複製集狀態變更(如果有的話) mloginfo mongod.log --rsstate
通過mloginfo統計查看日誌中慢查詢的分類 mloginfo --queries mongod.log
通過mloginfo統計日誌中各類信息的distinct mloginfo mongod.log --distinct
mplotqueries 用不同類型的圖將日誌文件可視化(需要安裝matplotlib) 通過mplotqueries進行慢查詢散點分佈圖繪製 mplotqueries mongod.log --output-file slow01-2.png
通過mplotqueries進行慢查詢散點分佈圖繪製,且只返回前10個 mplotqueries mongod.log --output-file slow01-4.png --logscale --group-limit 10
僅看日誌中某一個表的慢查詢散點分佈情況 mlogfilter mongod.log --namespace xx.xxx |mplotqueries --output-file slow01-5.png
通過mplotqueries來對日誌中的慢查詢進行操作類型分佈 mplotqueries mongod.log --group operation --output-file slow01-6.png
查看每小時的insert情況 mlogfilter mongod.log --operation insert | mplotqueries --type histogram --bucketsize 3600 --output-file 01-11.png

註:mongod.log 是MonogoDB 運行時產生的日誌文件名字,也可以是其它日誌文件名。 

三. Mtools安裝的詳細步驟

很多同學抱怨安裝比較麻煩,錯誤很多,在這兒,把安裝的詳細步驟梳理如下。

Step 1  下載pip程式包

wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb"

Step 2 解析下載的文件

 Step 3 安裝 python setup.py install

 此時報錯,提示錯誤信息如截圖

Step 4  針對上述錯誤,需安裝setuptools,python下的setuptools。此程式包帶有一個easy_install的工具,在安裝python的每三方模塊、工具時很有用,。

下載 

wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-12.0.3.tar.gz#md5=f07e4b0f4c1c9368fcd980d888b29a65

解壓 

Step 5 轉到解析後的文檔中,再次安裝 python setup.py install

安裝成功。

 Step 6 安裝 yum -y install python-pip

 

如果提示錯誤 

No package python-pip available.

Error: Nothing to do

請看後面的附註

Step 7  安裝  mtools

 執行命令  pip install mtools

 

Step 8 安裝效果驗證

使用其中的mlogfileter命令,查看日誌超過100ms的慢查詢。

通過mloginfo統計日誌中connections的來源情況

 驗證工具安裝OK。

安裝後,工具包所在的文檔位於 /usr/lib/python2.7/site-packages/mtools 下 (自動生成) 

 

 四 附錄

A:解決 No package python-pip available的問題

此錯誤的原因主要是沒有安裝epel。索引, 運行以下命令,安裝epel

 安裝 epel-release後,再次安裝 python-pip,不再報錯。

 

 B:運行 mplotqueries 工具 需安裝 python-matplotlib 包,和修改mplotqueries.py文件

否則報錯,具體信息如下:

安裝命令 yum install python-matplotlib

到此,還沒結束,還會報錯,我們還需要修改 /usr/lib/python2.7/site-packages/mtools/mplotqueries/mplotqueries.py 執行文件。

添加 以下指令

import matplotlib as mpl
mpl.use('Agg')

添加前

 添加後

再次執行 mplotqueries 命令後,看出生成了我們想要的 01-2.png 統計文件

 

 

本文版權歸作者所有,未經作者同意不得轉載,謝謝配合!!!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文收錄在容器技術學習系列文章總目錄 1、認識kubernetes資源 1.1 常用資源/對象 workload工作負載型資源:pod,ReplicaSet,Deployment,StatefulSet,daemonset,job... 伺服器發現及均衡:Service,Lngress... 配置與 ...
  • Windows下編輯腳本上傳到Linux後遇到^M,導致腳本無法執行,原因是因為Linux與Windows對 “回車鍵” 編碼不同 解決方法如下: 在使用UE->文件->轉換->DOS轉換UNIX 轉換完成後下麵狀態欄中會顯示DOS已經變成了UNIX,再上傳到Linux上面就不會有^M問題了。 ...
  • 觸摸屏使用過程: 1、按下,產生中斷 2、在中斷處理程式中,啟動ADC轉換 3、ADC結束,產生ADC中斷 4、在ADC中斷處理函數裡面,上報(input_event),啟動定時器, 5、定時器時間到,再次回到2,可以處理長按、滑動。 6、鬆開。 為了省電,內核在啟動時,把不是必要的模塊不使能,在使 ...
  • 一.Linux以及Windows系統的優缺點對比 二.Linux以及Windows系統的區別 2.1 Linux的速度快,安全性比Windows好。 2.2 很多軟體只能在Windows中運行,與Linux相容的軟體還在開發中。 2.3 Linux的操作複雜,相比而言Windows操作簡單的多。 2 ...
  • 一 Ansible命令用法 Ansible命令行執行方式有:Ad-Hoc、Ansible-playbook兩種,Web方式其官方提供付費產品Tower。Ad-Hoc主要用於臨時命令的執行,Ansible-playbook相當於Ad-Hoc的集合,通過一定的規則編排在一起執行。 1.1 免密鑰 提示: ...
  • 恢復內容開始 Linux預設是允許Ping響應的,系統是否允許Ping由2個因素決定的:A、內核參數,B、防火牆,需要2個因素同時允許才能允許Ping,2個因素有任意一個禁Ping就無法Ping。 具體的配置方法如下: A、內核參數設置 1、允許PING設置 A.臨時允許PING操作的命令為:#ec ...
  • 1、查看防火牆狀態,哪些埠開放了 /etc/init.d/iptables status 2、配置防火牆 vi /etc/sysconfig/iptables ###################################### # Firewall configuration writt ...
  • DECLARE @Y1002 varchar(200),@A0100 varchar(200),@C0103 datetime ----定義變數 DECLARE Police_Department CURSOR FOR --定義游標 SELECT Y1002,A0100,C0103... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...