利用高级监控仪表板解决常见数据库问题
在生产环境中,数据库系统的监控是不可或缺的。了解部署的健康状况是避免中断或快速解决问题的关键。 ClickHouse 深知这一点,因此默认提供了一组预配置的高级监控仪表板。高级仪表板是一款轻量级工具,可深入分析 ClickHouse 系统及其运行环境,帮助您提前识别性能瓶颈、系统故障以及低效操作,从而保持系统高效运行。 无论您是处理高查询负载的数据工程师,还是保障 ClickHouse 高可用性的站点稳定性工程师 (SRE),高级仪表板都能为您提供高效的监控和故障排查能力。该工具支持 ClickHouse OSS(开源软件)和 ClickHouse Cloud 环境。 高级仪表板无需额外安装即可使用。根据您的运行环境,可能需要启用指标日志和异步指标日志来生成默认的可视化效果。如果您使用的是 ClickHouse Cloud,这些功能已默认启用,无需额外配置。 若需手动启用,请参考全球设置文档,修改服务器配置文件 /etc/clickhouse-server/config.d/metric_log.xml:
启动 ClickHouse 服务器后,您可以通过以下地址访问高级监控仪表板: 默认情况下,您可以使用系统的默认用户登录访问仪表板。但为了安全起见,建议为此专门创建一个独立的用户。 要正常运行默认的可视化功能,该用户需要具备以下表的读取权限:
同时,用户还需要以下两个特殊权限:CREATE TEMPORARY TABLE ON *.* 和 REMOTE ON *.*。 下面,我们为实验创建一个仪表板专用用户:
您可以通过在 URL 中添加用户名参数的方式访问,例如: 登录时,输入创建仪表板用户时设置的密码。 在页面顶部的导航栏中,您可以查看应用程序加载仪表板定义时使用的 SQL 查询。
仪表板的查询过滤器默认设置为 "Overview"。不同的仪表板集适用于不同的场景:默认的 "Overview" 仪表板适合本地部署,而 "Cloud Overview" 则针对云部署环境进行了优化。 高级仪表板内置了一系列默认图表,能够为您提供 ClickHouse 系统的实时运行状况和性能洞察。为了便于查看,这些图表被分为三类,分别对应不同的使用场景。 ClickHouse 专用指标 这些图表专注于监控 ClickHouse 实例的运行状况和性能表现:
系统健康状况相关指标 除了 ClickHouse 本身,底层系统的状态同样至关重要。这些图表帮助您监控相关的系统资源:
ClickHouse Cloud 专用指标 ClickHouse Cloud 采用对象存储(如 S3 类型)保存数据。以下图表可帮助您检测相关接口的性能:
在高级仪表板中,每个可视化图表都由一个关联的 SQL 查询驱动,这些查询负责提供图表的数据内容。您可以通过点击图表上的铅笔图标来修改相关查询。 在编辑界面中,您可以根据需求调整查询内容。此外,您还可以通过点击“添加图表 (Add chart)”按钮新增自定义图表,并在新图表中编辑对应的查询。例如,我们可以新增一个图表来跟踪主键的内存使用情况。以下是为该图表提供支持的 SQL 查询:
需要注意,通过 Web 应用程序添加的图表是以查询参数的形式编码的,这使得它们可以方便地添加到书签中。 如果您需要一种更稳定的方式,可以将自定义图表直接存储到 ClickHouse 数据库中。操作步骤如下: 1. 创建一个与默认表 system.dashboards 架构一致的新表。
2. 将您的自定义可视化内容插入到新表中。
通过这种方式,您可以将自定义数据库中的仪表板定义与 Web 应用程序中默认的定义合并,从而实现扩展和优化。
最后,请确保仪表板用户具备访问自定义数据库所需的权限。例如,用户需要对相关表拥有读取和修改的权限,以便正确加载和管理仪表板内容。 实时监控 ClickHouse 服务的运行状况,可以帮助您在问题影响业务之前及时发现和解决问题。以下是利用高级仪表板可以识别的一些常见问题。 未批量插入的数据问题 根据最佳实践文档的建议,在 ClickHouse 中插入数据时应尽量使用批量插入。 合理的批量大小可以显著减少数据写入过程中创建的部分数量,从而优化磁盘写入效率,并降低合并操作的频率。 要判断插入操作是否优化,可以关注以下两个关键指标:每秒插入行数 (Inserted Rows/sec) 和每个分区的最大部分数 (Max Parts for Partition)。 如上图所示,从 13 点到 14 点之间,每秒插入行数和每个分区的最大部分数出现了两次峰值。这表明数据摄取速度是合理的。 然而,16 点之后,我们注意到每个分区的最大部分数急剧上升,但每秒插入行数却很低。这表明数据分区的大小可能未得到有效优化。 资源密集型查询问题 某些 SQL 查询可能会占用大量资源(如 CPU 或内存)。监控这些查询的资源消耗情况,对于保障系统整体性能至关重要。 如果资源使用量突然增加,而查询吞吐量并未显著变化,则可能是某些高成本查询导致的。这种现象可以通过高级仪表板快速发现。 以下是一个 CPU 使用率达到峰值,但每秒执行的查询数量未发生显著变化的示例: 主键设计问题 高级仪表板还可以帮助识别主键设计不当的问题。根据文档,针对具体使用场景选择合适的主键,能够显著提升查询性能,因为这样可以减少 ClickHouse 在查询过程中需要读取的行数。 您可以通过监控“每秒选中行数 (Selected Rows/sec)”指标来判断主键设计是否需要优化。选中行数的突然激增,可能意味着查询吞吐量的增加,也可能表明某些查询需要选中大量行来执行操作。 通过时间戳过滤条件,您可以在 system.query_log 表中找到峰值时间段内执行的查询。 例如,我们可以运行以下查询,查看上午 11:20 到 11:30 之间执行的所有查询,以找出哪些查询读取了过多的行。
|
版权声明:本文为 clickhouse 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。