使用Cockroach DB控制台来观察和排除SQL故障

337 阅读4分钟

无论你是开发者还是操作者,我们都希望给你提供可观察性的工具来监控你的CockroachDB集群。这包括标准的工具,如日志Prometheus和健康端点等指标,以及警报。但是现代的可观察性需要的不仅仅是标准工具。

为了让你尽可能多地了解你的数据库,CockroachDB还提供了SQL命令、表格以及与每个二进制文件打包的本地DB控制台,为任何工作负载提供观察能力。DB Console让操作者和开发者能够访问重要的集群数据,包括指标、数据库、会话(CockroachDB 20.2的新内容)、交易(CockroachDB 20.2的新内容)、语句等等。

这篇文章的目的是让你了解监控CockroachDB的几种关键方式,并为你提供一个学习的地方。

Cockroach DB Console cluster overview

为什么操作员要使用DB控制台?

如果你是一个运营商,你就会知道,环境出问题不是一个问题,而是一个时间问题。我们通过评估节点状态(例如,活节点、可疑节点和死节点)、复制健康状况,以及评估CPU、内存和磁盘使用情况等关键指标,使运营商能够访问关键的集群健康信息。这使你能够防患于未然,或者在紧急情况下迅速发现问题的根源。

为什么开发人员要使用DB控制台?

如果你是一个开发人员,你知道变化是生产工作负载的唯一常量。新的业务需求会导致模式迁移和新的性能目标的交易。CockroachDB已经提供了零停机时间的迁移,以减少现代开发的影响。DB Console现在为你提供了一种观察工作负载以及组成这些负载的会话、事务和语句的方法。迭代是开发人员的一种生活方式,CockroachDB现在提供了一个工具,可以轻松评估模式和查询设计的变化对工作负载的影响。

让我们深入了解一下开发者如何使用DB Console。

会话页面

如果你注意到吞吐量下降或CPU使用率接近100%,你可能会怀疑一个错误的语句在你的数据库中的某个地方乱跑。你需要能够找到它并尽快取消它。在CockroachDB 20.2中引入的会话页面为你提供了对所有会话(即连接)和正在进行的事务和语句的实时访问。

Cockroach DB Console sessions overview

你可以根据会话年龄、事务年龄、语句年龄或内存使用情况进行排序,以找到任何有问题的活动会话。更重要的是,CockroachDB现在允许你取消有问题的会话和查询。

Cockroach DB Console - terminate session

你可以点击进入任何给定的会话,了解更多关于执行或重试的语句数量,以及了解内存使用情况。

Cockroach DB Console sessions and transactions page

现在通过CockroachDB 20.2,开发者可以灵活地找到并取消会话。通过我们的文档了解更多关于会话页面的信息。

交易页面

要理解一个复杂的、动态的工作负载所执行的事务并不容易。了解每个事务由哪些语句和表组成,以及事务的端到端延迟,是了解和管理工作负载吞吐量和终端用户延迟的关键输入。 CockroachDB 20.2在DB Console的新事务页面上增加了对事务指纹的可见性。与之前版本中引入的语句页面一样,交易页面显示了已经执行的交易和语句的历史信息。

Cockroach DB Console transactions overview

然而,与语句页不同的是,你现在可以看到构成一个特定事务的所有语句指纹。

Cockroach DB Console transactions details

你甚至可以深入到报表的详细页面来了解更多关于该指纹的信息。

通过我们的文档了解更多关于事务页面的信息。

更喜欢使用SQL shell?没问题!

我们使用SQL来驱动DB控制台中的会话、事务和语句页面。如果你想直接访问这些信息,你可以使用以下表格。

DB Console页面CockroachDB内部表
会话crdb_internal.node_sessions
交易crdb_internal.node_transaction_statistics
语句crdb_internal.node_statement_statistics

例如,这里有一个来自crdb_internal.node_statement_statistics 虚拟表的语句聚合的例子。

root@127.0.0.1:26257/movr> select * from crdb_internal.node_statement_statistics limit 1;
-[ RECORD 1 ]
node_id             | 1
application_name    | $ cockroach demo
flags               |
key                 | ALTER TABLE rides ADD FOREIGN KEY (city, rider_id) REFERENCES users (city, id)
anonymized          | ALTER TABLE _ ADD FOREIGN KEY (_, _) REFERENCES _ (_, _)
count               | 1
first_attempt_count | 1
max_retries         | 0
last_error          | NULL
rows_avg            | 0
rows_var            | NaN
parse_lat_avg       | 2.1e-05
parse_lat_var       | NaN
plan_lat_avg        | 0.000362
plan_lat_var        | NaN
run_lat_avg         | 0.002501
run_lat_var         | NaN
service_lat_avg     | 0.002923
service_lat_var     | NaN
overhead_lat_avg    | 3.899999999999954e-05
overhead_lat_var    | NaN
bytes_read_avg      | 0
bytes_read_var      | NaN
rows_read_avg       | 0
rows_read_var       | NaN
implicit_txn        | true
Time: 1ms total (execution 0ms / network 0ms)

你也可以通过下面的SQL SHOW命令查看正在进行的会话、事务和语句。

  • SHOW SESSIONS;
  • SHOW TRANSACTIONS;
  • SHOW QUERIES;

使用CockroachDB和CockroachCloud试用DB控制台

无论你是一个专注于使用数据库来迭代你的应用程序的开发者,还是一个专注于保持整个集群的操作者,CockroachDB 20.2都有你需要的工具来观察和解决任何问题。你今天就可以通过CockroachCloud的免费试用来开始

有什么可观察的功能是你希望我们支持的吗?我们很想知道它是什么。请在我们的社区Slack组的#product-feedback频道中给我们留言。