性能诊断

单个集群的性能诊断页面主要显示与该集群性能诊断相关的内容。默认显示 Top SQL 信息,用于展示该集群累计耗时时间最长的查询语句。并且支持用户通过“SQL 语句” 和“数据库名” 进行全文检索。另外,如果用户想查看更多的性能相关的信息,也可以选择 “更多诊断信息” 链接跳转到该集群的 dashboard 地址。请确认 TEM 浏览器所在的客户端能够访问到 TiDB 集群的 PD 节点。

Top SQL tab 页

Top SQL列表

该页面用于显示 TiDB 集群中累计耗时时间最长的 SQL 语句,用户可以通过点击列表中的“SQL 语句” 列中的 SQL 文本信息查看该 SQL 语句的详细执行计划信息和运行过程中的各种详细统计信息。 SQL 执行计划

慢查询 tab 页

集群详情页-慢查询tab页

这个 tab 页用于显示该集群的慢查询语句,其页面显示信息与 Top SQL 类似,展示的是集群的慢SQL信息,用户也可以点击列表中的SQL 语句查看该SQL语句的详细执行计划信息。

诊断报告 tab 页

性能报告列表 在上面的页面中,用户可以:

  • 根据“报告开始时间”选择诊断报告开始的时间,“区间长度” 指定性能报告包含的时间区间长度。
  • 如果需要以某个特定的时间段作为性能基线,则可以选择“与基线时间对比”。而如果没有基线性能报告,则用户技术选择了与“基线时间对比” 也可以产生性能报告,但是没有对比信息。
  • 开始按钮用于开始产生用户指定时间段的性能报告,并在页面的表格中显示。
  • 在页面表格中:
    • 报告名称:这是一个链接,用户点击可以看到详细的性能报告。报告名称规则为 perf-report-<开始时间>-<结束时间>。
    • 状态表示诊断报告的状态,支持的状态有:完成,异常,运行中
    • 报告开始时间表示诊断报告搜集信息开始的时间,结束时间表示诊断报告搜集的诊断数据的截止时间。
    • 基线报告的开始时间和结束时间,用于显示该集群定义的性能基线的开始和结束时间。如果集群没有设置,则显示空。

日志检索 tab 页 日志检索 在上面的页面中,用户可以:

  • 选择日志搜索的时间范围,日志信息的类型,搜索实例的范围,并指定搜索的关键字。
  • 之后在表格中显示搜索到的详细信息。

SQL 审计页 用户可以在该页面中启动 TiDB 集群的 SQL 审计特性,并查看产生的审计记录。由于 TiDB 社区版本和企业版的 SQL 审计特性产品形态不同,下面分别来介绍这两种不同的版本如何使用该特性:

  • 社区版本:默认情况下 TEM 不会为社区版集群安装 SQL 审计插件,只有在用户选择启用 SQL 审计特性时才会部署 SQL 审计插件。

启动 SQL 审计

对于社区版 TiDB 集群,由于 SQL 审计插件是以插件的形式提供的,用户需要手动下载该插件,并将审计插件使用的 audit-1.so 文件拷贝到 TEM 的各个节点的以下指定位置,并重命名成为 TEM 可以识别的名称:

<tem 部署路径>/tem-server-<端口>/bin/libs/audit-<tidb 集群版本>-linux-<CPU 架构>.so

示例:

 // X86 架构
 cp ./audit-1.so /tem-deploy/tem-server-8080/bin/libs/audit-v6.5.3-linux-x86_64.so

 //arm 架构
 cp ./audit-1.so /tem-deploy/tem-server-8080/bin/libs/audit-v6.5.3-linux-aarch64.so

之后,就可以在 SQL 审计页面点击安装审计插件,并重载集群使审计插件生效。重载集群后,可以连接到 tidb 节点上运行下面的命令查看审计插件的状态。

mysql> show plugins

最后,用户需要链接到 TiDB 集群中,向表 mysql.tidb_audit_table_access 中插入数据来指定需要审计的操作, 并在 TEM 上打开启用审计开关。 下面的示例中的 insert 语句表示审计访问 test 库 tab1 表的所有 SQL 语句

mysql> insert into mysql.tidb_audit_table_access (user, db, tbl, access_type) values (".*", 'test', ^tab1$, '');
mysql> flush tidb plugins audit;

 启用SQL 审计

在完成了上面页面中的操作之后,可以通过点击“SQL审计日志” 按钮查看产生的审计日志。

 SQL 审计日志

用户可以根据需要对审计日志进行过滤,并将 SQL 审计日志导出。

  • 企业版:TiDB 企业版的SQL 审计特性已经集成到了数据库内核当中,用户需要参考下面的页面启用 SQL 审计特性并指定审计日志的保留天数。

 企业版启用 SQL 审计

在启用了 SQL 审计特性之后,可以连接到 TiDB 节点并运行下面命令检查特性是否被启用了。

mysql>show variables like '%audit%';
+---------------------------------+----------------+
| Variable_name                   | Value          |
+---------------------------------+----------------+
| tidb_audit_enabled              | ON             |
......
| tidb_audit_log_reserved_days    | 2              |
+---------------------------------+----------------+

接下来,通过运行类似于下面的 SQL 语句来指定需要审计的事件和用户。下面的语句会审计所有用户执行的查询操作。

// 审计所有查询操作
mysql> select audit_log_create_filter('all_query', '{"filter":[{"class":["QUERY"]}]}');
mysql> select * from mysql.audit_log_filters;
+-------------+------------------------------------------------------+
| FILTER_NAME | CONTENT                                              |
+-------------+------------------------------------------------------+
| all_query   | {"filter":[{"class":["QUERY"]}]}                     |
+-------------+------------------------------------------------------+

//审计所有用户的查询操作
mysql>  SELECT audit_log_create_rule('%@%', 'all_query');

mysql> select * from mysql.audit_log_filter_rules;
+------+-------------+---------+
| USER | FILTER_NAME | ENABLED |
+------+-------------+---------+
| %@%  | all_query   |       1 |
+------+-------------+---------+

如果不再需要进行审计,可以使用类似下面的语句删除审计的过滤器。

mysql>  SELECT audit_log_remove_rule('%@%', 'all_query');
mysql>  select audit_log_remove_filter('all_query');

关于如何使用 TiDB 企业版的 SQL 审计功能,请参考 TiDB 企业版数据库用户手册。

© 2024 平凯星辰(北京)科技有限公司 all right reserved,powered by GitbookFile Modify: 2024-04-02 15:37:04

results matching ""

    No results matching ""