14個開源免費數(shù)據(jù)庫監(jiān)控工具,MySQL、Oracle、Postgres或MSSQL
在信息系統(tǒng)項目中,UI、業(yè)務(wù)邏輯、數(shù)據(jù)庫操作、文件操作、網(wǎng)絡(luò)、API調(diào)用等許多環(huán)節(jié)都有可能產(chǎn)生性能問題,其中,數(shù)據(jù)庫讀寫是最為常見的操作,我們也發(fā)現(xiàn)其實許多項目中的大部分瓶頸多來自于數(shù)據(jù)庫操作。因此,在做性能優(yōu)化的過程中,我們總是特別關(guān)注持久層的代碼、數(shù)據(jù)庫的設(shè)計和數(shù)據(jù)庫的物理環(huán)境。
除了架構(gòu)設(shè)計和代碼質(zhì)量的優(yōu)劣以外,數(shù)據(jù)庫的監(jiān)控對于確保數(shù)據(jù)庫的最佳性能和健康至關(guān)重要。以下是讓必須重視數(shù)據(jù)庫的幾個原因:
- 有助于性能優(yōu)化:數(shù)據(jù)庫監(jiān)控有助于識別性能瓶頸。通過監(jiān)控關(guān)鍵指標(biāo),管理員和開發(fā)人員可以優(yōu)化查詢語句,找出效率低下的原因,并提高數(shù)據(jù)庫的整體性能。
- 有助于問題檢測和診斷:實時監(jiān)控能夠為異常、錯誤或潛在問題提供警報和通知,使管理員能夠采取主動措施并在影響數(shù)據(jù)庫功能之前解決問題。
- 有助于規(guī)劃存儲容量:數(shù)據(jù)庫監(jiān)控通過提供對資源利用率(如:CPU、內(nèi)存和存儲)的深入了解來幫助DBA進行容量規(guī)劃、分析趨勢、預(yù)測未來需求,并就可擴展性和基礎(chǔ)架構(gòu)改進要求做出決策。
- 有助于數(shù)據(jù)安全合規(guī):監(jiān)控有助于確保數(shù)據(jù)庫的安全性和合規(guī)性。通過跟蹤監(jiān)控數(shù)據(jù)庫訪問、檢測未經(jīng)授權(quán)的活動、審計數(shù)據(jù)庫操作。有助于保持數(shù)據(jù)完整性并滿足安全、法規(guī)要求。
俗話說“無監(jiān)控、不運維”,尤其是現(xiàn)代DevOps團隊的工作,更需要用監(jiān)控工具來武裝自己,避免成為“瞎子”,也能確保系統(tǒng)穩(wěn)定高效運行。數(shù)據(jù)庫的監(jiān)控更是重中之重。
本文收集了一些適合用于MySQL、Postgres、Oracle或MSSQL等數(shù)據(jù)庫的開源免費數(shù)據(jù)庫監(jiān)控工具,供參考。
1.Netdata
GitHub(65.9K):https://github.com/netdata/netdata
Netdata是一個開源的數(shù)據(jù)庫、系統(tǒng)、容器和應(yīng)用程序監(jiān)控項目,能夠收集指標(biāo),并將信息美觀地呈現(xiàn)在儀表盤中。它可以運行在物理機、虛擬服務(wù)器、云平臺、Kubernetes集群或者邊緣設(shè)備上。它支持多種數(shù)據(jù)庫引擎、虛擬機、應(yīng)用程序指標(biāo)。
2.Prometheus
GitHub(50.6K):https://github.com/prometheus/prometheus
Prometheus能夠按時間序列捕獲數(shù)據(jù)。可以使用Prometheus捕獲MySQL的查詢性能的指標(biāo)和有關(guān)MySQL的統(tǒng)計數(shù)據(jù)。
使用Prometheus監(jiān)控MySql,需要安裝一個MySQL exporter,用于從MySQL實例中收集指標(biāo),并匯聚到Prometheus服務(wù)器。
Prometheus只提供了一個非?;镜目梢暬瘜?。因此,它通常需要與Grafana一起使用,Grafana是一種用于創(chuàng)建圖表和指標(biāo)的可視化工具。
3.signoz
GitHub(15.2K):https://github.com/signoz/signoz
SignNoz是一個開源的APM工具,可以用于監(jiān)控MySQL數(shù)據(jù)庫??梢员O(jiān)控整個軟件系統(tǒng),跟蹤應(yīng)用程序指標(biāo)以及基礎(chǔ)架構(gòu)指標(biāo)。SignNoz特別適合監(jiān)控基于微服務(wù)和無服務(wù)器架構(gòu)的現(xiàn)代云原生應(yīng)用程序。
在分布式系統(tǒng)上,使用多個數(shù)據(jù)庫實例為不同微服務(wù)提供數(shù)據(jù)層支撐。作為一個監(jiān)控所有服務(wù)的APM工具,SignNoz可以監(jiān)控來自每個服務(wù)的數(shù)據(jù)庫調(diào)用的性能。SigNoz提供了一個指標(biāo)構(gòu)建器,可以使用它來創(chuàng)建自定義的儀表盤,用于監(jiān)控MySQL數(shù)據(jù)庫。監(jiān)控MySQL數(shù)據(jù)庫的主機的運行狀況和性能。
4.MySQLTuner-perl
GitHub(8.3K):https://github.com/major/MySQLTuner-perl
MySQLTuner是一個用Perl編寫的腳本庫,支持速查看MySQL安裝過程,并進行調(diào)整以提高性能和穩(wěn)定性。檢索當(dāng)前配置變量和狀態(tài)數(shù)據(jù),并以簡短的格式提供一些基本性能優(yōu)化建議。
5.Anemometer
慢SQL查詢監(jiān)控
GitHub(1.4K):https://github.com/box/Anemometer
Anemometer是一個用于可視化慢Sql監(jiān)控工具,支持用于MySQL數(shù)據(jù)庫的慢查詢分析。SQL查詢有時難以捉摸。Anemometer能夠分析數(shù)據(jù)庫的查詢語句,識別可優(yōu)化的機會,跟蹤性能趨勢。
Anemometer依靠Percona Toolkit進行高效地收集慢速查詢?nèi)罩?。并利用pt-query-digest來解析慢查詢?nèi)罩荆⑺鼈儫o縫地記錄到數(shù)據(jù)庫中,以形成全面的報告。
使用Anemometer,可以生成跨越各種時間段的圖形和統(tǒng)計數(shù)據(jù),支持查看時間段范圍內(nèi)的查詢過程。此外,它提供了直觀的界面以及實時動態(tài)信息,可通過點擊或者拖動輕松地查看感興趣內(nèi)容。
6.Swiple
GitHub:https://github.com/Swiple/swiple
Swiple是一個自動化數(shù)據(jù)監(jiān)控平臺,可幫助數(shù)據(jù)團隊無縫監(jiān)控數(shù)據(jù)質(zhì)量。通過自動化的數(shù)據(jù)分析和分析、調(diào)度和警報,團隊可以在數(shù)據(jù)質(zhì)量問題影響關(guān)鍵任務(wù)資源之前解決這些問題。
發(fā)現(xiàn)問題之后,Swiple可以通過電子郵件、Slack、Microsoft Teams、OpsGenie、PagerDuty等系統(tǒng)通知管理員。
功能特征:
- 評估SQL查詢、表或視圖的數(shù)據(jù)質(zhì)量。
- 使用自動數(shù)據(jù)分析生成數(shù)據(jù)預(yù)期。
- 以任意重復(fù)間隔運行驗證計劃。
- 數(shù)據(jù)文檔自動化。
- 為數(shù)據(jù)添加SLA。
- 當(dāng)數(shù)據(jù)質(zhì)量發(fā)生變化時,發(fā)送通知。
支持的數(shù)據(jù)庫:
- MySQL
- Athena
- PostgreSQL
- Trino
- Snowflake
- BigQuery
- Redshift
7.DBA Dash、SQL Server監(jiān)控工具
GitHub:https://github.com/trimble-oss/dba-dash
DBA Dash是一款面向SQL Server DBA的工具,可進行日常檢查、性能監(jiān)控和變更跟蹤。它提供的功能包括:每日DBA檢查、操作系統(tǒng)性能監(jiān)控、自定義指標(biāo)性能監(jiān)控、跟蹤配置、代理作業(yè)監(jiān)控,還可通過S3存儲桶監(jiān)控隔離環(huán)境中的實例。
8.Dolphie
MySQL監(jiān)控工具
GitHub:https://github.com/charles-001/dolphie
Dolphie是一個強大的終端應(yīng)用程序,能夠?qū)崟r監(jiān)控MySQL數(shù)據(jù)庫。提供直觀的用戶界面和豐富的功能,能夠毫不費力地跟蹤、分析MySQL數(shù)據(jù)庫的性能。不論是監(jiān)控查詢執(zhí)行、分析服務(wù)器指標(biāo)還是識別潛在的瓶頸,對它來說都不在話下。通過Dolphie提供的全面監(jiān)控功能,可隨時了解MySQL環(huán)境。
9.pgDoctor
GitHub:https://github.com/thumbtack/pgdoctor
pgDoctor是一個免費的開源的輕量級Web服務(wù),用于對PostgreSQL實例執(zhí)行運行狀況檢查。
10.pg_Insights
GitHub:
https://github.com/lob/pg_insights
pg_insights是一個方便的SQL工具,用于監(jiān)視Postgres數(shù)據(jù)庫的健康狀況。這個倉庫的靈感來自Heroku的pg_extras倉庫。它提供了一個SQL查詢集合,用于監(jiān)視Postgres數(shù)據(jù)庫的健康狀況。
11.Blip MySQL Monitor
GitHub:https://github.com/cashapp/blip
Blip是一個強大的MySQL監(jiān)控器,可以無縫地收集MySQL的基本指標(biāo),并準確地報告給其他監(jiān)控平臺(如:Datadog)。它完全兼容MySQL 5.7和8.0的所有發(fā)行版。其靈活的插件架構(gòu)允許與任何監(jiān)控平臺輕松集成,如:Datadog、Splunk和Chronosphere等流行平臺。
12.Soda Core
GitHub:https://github.com/sodadata/soda-core
Soda Core是一個開源Python庫,主要用于SQL、Spark和Pandas中的數(shù)據(jù)質(zhì)量檢測。它允許在工作流中進行數(shù)據(jù)質(zhì)量測試,并執(zhí)行檢查以識別無效或異常數(shù)據(jù)。
13.oracle-db-appdev-monitoring
GitHub:https://github.com/oracle/oracle-db-appdev-monitoring
oracle-db-appdev-monitoring項目用于監(jiān)控Oracle數(shù)據(jù)庫指標(biāo)和問題診斷,支持與Spring Boot等框架集成。該項目支持云平臺和本地數(shù)據(jù)庫,也包括Kubernetes和容器中的數(shù)據(jù)庫。
14.pg-Index-Health-SQL
GitHub:https://github.com/mfvanek/pg-index-health-sql
pg-index-health-sql是一個SQL集合,用于分析和維護PostgreSQL數(shù)據(jù)庫中索引和表的健康狀況。它可以幫助檢測各種問題,如:無效、重復(fù)、未使用的索引、沒有關(guān)聯(lián)索引的外鍵、具有空值的索引、缺少索引、沒有主鍵的表、索引和表膨脹、沒有描述的表和列、JSON類型的列、以及序列類型的非主鍵列等。