在信息系统项目中,UI、业务逻辑、数据库操作、文件操作、网络、API调用等许多环节都有可能产生性能问题,其中,数据库读写是最为常见的操作,我们也发现其实许多项目中的大部分瓶颈多来自于数据库操作。因此,在做性能优化的过程中,我们总是特别关注持久层的代码、数据库的设计和数据库的物理环境。
除了架构设计和代码质量的优劣以外,数据库的监控对于确保数据库的最佳性能和健康至关重要。以下是让必须重视数据库的几个原因:
俗话说“无监控、不运维”,尤其是现代DevOps团队的工作,更需要用监控工具来武装自己,避免成为“瞎子”,也能确保系统稳定高效运行。数据库的监控更是重中之重。
本文收集了一些适合用于MySQL、Postgres、Oracle或MSSQL等数据库的开源免费数据库监控工具,供参考。
Github(65.9K):https://github.com/netdata/netdata
Netdata是一个开源的数据库、系统、容器和应用程序监控项目,能够收集指标,并将信息美观地呈现在仪表盘中。它可以运行在物理机、虚拟服务器、云平台、Kubernetes集群或者边缘设备上。它支持多种数据库引擎、虚拟机、应用程序指标。
GitHub(50.6K):https://github.com/prometheus/prometheus
Prometheus能够按时间序列捕获数据。可以使用Prometheus捕获MySQL的查询性能的指标和有关MySQL的统计数据。
使用Prometheus监控MySql,需要安装一个MySQL exporter,用于从MySQL实例中收集指标,并汇聚到Prometheus服务器。
Prometheus只提供了一个非常基本的可视化层。因此,它通常需要与Grafana一起使用,Grafana是一种用于创建图表和指标的可视化工具。
GitHub(15.2K):https://github.com/signoz/signoz
SignNoz是一个开源的APM工具,可以用于监控MySQL数据库。可以监控整个软件系统,跟踪应用程序指标以及基础架构指标。SignNoz特别适合监控基于微服务和无服务器架构的现代云原生应用程序。
在分布式系统上,使用多个数据库实例为不同微服务提供数据层支撑。作为一个监控所有服务的APM工具,SignNoz可以监控来自每个服务的数据库调用的性能。SigNoz提供了一个指标构建器,可以使用它来创建自定义的仪表盘,用于监控MySQL数据库。监控MySQL数据库的主机的运行状况和性能。
GitHub(8.3K):https://github.com/major/MySQLTuner-perl
MySQLTuner是一个用Perl编写的脚本库,支持速查看MySQL安装过程,并进行调整以提高性能和稳定性。检索当前配置变量和状态数据,并以简短的格式提供一些基本性能优化建议。
慢SQL查询监控
GitHub(1.4K):https://github.com/box/Anemometer
Anemometer是一个用于可视化慢Sql监控工具,支持用于MySQL数据库的慢查询分析。SQL查询有时难以捉摸。Anemometer能够分析数据库的查询语句,识别可优化的机会,跟踪性能趋势。
Anemometer依靠Percona Toolkit进行高效地收集慢速查询日志。并利用pt-query-digest来解析慢查询日志,并将它们无缝地记录到数据库中,以形成全面的报告。
使用Anemometer,可以生成跨越各种时间段的图形和统计数据,支持查看时间段范围内的查询过程。此外,它提供了直观的界面以及实时动态信息,可通过点击或者拖动轻松地查看感兴趣内容。
GitHub:https://github.com/Swiple/swiple
Swiple是一个自动化数据监控平台,可帮助数据团队无缝监控数据质量。通过自动化的数据分析和分析、调度和警报,团队可以在数据质量问题影响关键任务资源之前解决这些问题。
发现问题之后,Swiple可以通过电子邮件、Slack、Microsoft Teams、OpsGenie、PagerDuty等系统通知管理员。
功能特征:
支持的数据库:
GitHub:https://github.com/trimble-oss/dba-dash
DBA Dash是一款面向SQL Server DBA的工具,可进行日常检查、性能监控和变更跟踪。它提供的功能包括:每日DBA检查、操作系统性能监控、自定义指标性能监控、跟踪配置、代理作业监控,还可通过S3存储桶监控隔离环境中的实例。
MySQL监控工具
GitHub:https://github.com/charles-001/dolphie
Dolphie是一个强大的终端应用程序,能够实时监控MySQL数据库。提供直观的用户界面和丰富的功能,能够毫不费力地跟踪、分析MySQL数据库的性能。不论是监控查询执行、分析服务器指标还是识别潜在的瓶颈,对它来说都不在话下。通过Dolphie提供的全面监控功能,可随时了解MySQL环境。
GitHub:https://github.com/thumbtack/pgdoctor
pgDoctor是一个免费的开源的轻量级Web服务,用于对PostgreSQL实例执行运行状况检查。
GitHub:
https://github.com/lob/pg_insights
pg_insights是一个方便的SQL工具,用于监视Postgres数据库的健康状况。这个仓库的灵感来自Heroku的pg_extras仓库。它提供了一个SQL查询集合,用于监视Postgres数据库的健康状况。
GitHub:https://github.com/cashApp/blip
Blip是一个强大的MySQL监控器,可以无缝地收集MySQL的基本指标,并准确地报告给其他监控平台(如:Datadog)。它完全兼容MySQL 5.7和8.0的所有发行版。其灵活的插件架构允许与任何监控平台轻松集成,如:Datadog、Splunk和Chronosphere等流行平台。
GitHub:https://github.com/sodadata/soda-core
Soda Core是一个开源Python/ target=_blank class=infotextkey>Python库,主要用于SQL、Spark和Pandas中的数据质量检测。它允许在工作流中进行数据质量测试,并执行检查以识别无效或异常数据。
GitHub:https://github.com/oracle/oracle-db-appdev-monitoring
oracle-db-appdev-monitoring项目用于监控Oracle数据库指标和问题诊断,支持与Spring Boot等框架集成。该项目支持云平台和本地数据库,也包括Kubernetes和容器中的数据库。
GitHub:https://github.com/mfvanek/pg-index-health-sql
pg-index-health-sql是一个SQL集合,用于分析和维护PostgreSQL数据库中索引和表的健康状况。它可以帮助检测各种问题,如:无效、重复、未使用的索引、没有关联索引的外键、具有空值的索引、缺少索引、没有主键的表、索引和表膨胀、没有描述的表和列、JSON类型的列、以及序列类型的非主键列等。