本文介绍AWR详细使用说明。包括输出和查看Global AWR报告,连接Grafana查看实时数据等。

生成和查看Global AWR报告

  • 打印快照

    与Oracle AWR类似,PolarDB PostgreSQL版(兼容Oracle)支持显式触发性能数据的快照。不同的是PolarDB PostgreSQL版(兼容Oracle)Global AWR本身支持例行采集,并且为不同类型的数据设置了不同的采集间隔,无需定期触发快照也可生成性能报告。各项采集及其间隔请参见数据解析

    • 打印快照
      SELECT polar_gawr_collection.snapshot();
      显示结果如下:
       snapshot
      ----------
              2
      (1 row)
      说明 打印快照为异步触发,触发后最多等待10秒即可生成完整快照。
    • 查看快照列表
      SELECT polar_gawr_collection.list_snapshots();
      显示结果如下:
                list_snapshots
      ----------------------------------
       (1,"2021-08-11 07:06:53.678668")
       (2,"2021-08-11 11:18:12.747412")
      (2 rows)
  • 输出报告
    • 语法
      psql -Aqtc "SELECT polar_gawr_report.make_report()" > index.html
    • 输出方式
      推荐使用psql客户端进行操作,并在执行命令时添加以下参数。
      • -A,--no-align:输出结果紧凑,不做对齐。
      • -q,--quiet:不输出查询结果以外的内容。
      • -t,--tuples-only:只显示结果行,不显示列名。
      • -c,--command=COMMAND:只执行单条SQL并退出。
    • 输出函数
      所有输出报告的相关函数均定义在postgres库中的polar_gawr_report模式下,以下介绍3个重载的make_report函数。
      • 默认打印当前实例在begin_timeend_time之间的性能报告。
        polar_gawr_report.make_report(
              begin_time TIMESTAMP WITH TIME ZONE,
              end_time TIMESTAMP WITH TIME ZONE, 
              ins_id TEXT DEFAULT '', 
              comment TEXT DEFAULT '')
        RETURNS TEXT
      • 打印当前实例在最近time_range时间范围内的性能报告,time_range默认为1小时。
        polar_gawr_report.make_report(
              ins_id TEXT DEFAULT '', 
              time_range INTERVAL DEFAULT '1 hour'::INTERVAL, 
              comment TEXT DEFAULT '')
        RETURNS TEXT
      • 打印两个指定snapshot id间的性能报告,snapshot为异步触发,在生成报告时会将结束时间默认延后五分钟,以便获取到完整的数据。
        polar_gawr_report.make_report(
            begin_snapshot_no INTEGER, end_snapshot_no INTEGER,
            end_snapshot_delta_time INTERVAL DEFAULT '5 min',
            ins_id TEXT DEFAULT '', comment TEXT DEFAULT '')
        RETURNS TEXT
      AWR提供各种参数来控制报告显示的内容并跟踪报告输出过程,下表列出几个重要的参数,所有参数均通过SET命令设置其参数值。
      表 1. 更多参数说明
      参数默认值说明
      polar_gawr_report.enable_role_rooff同时打印RO节点的报告信息。
      polar_gawr_report.log_full_erroroff显示报告打印过程中完整的错误信息。
      polar_gawr_report.log_error_sqloff显示与错误相关的SQL。
      polar_gawr_report.log_timingoff显示输出报告过程中每一个查询SQL的耗时时间。
    • 示例
      目前仅介绍使用psql客户端打印性能报告的方法。
      • 基本模式:默认打印RW节点最近一小时的性能报告。
        SELECT polar_gawr_report.make_report()
      • 打印RW节点指定时间段报告。
        SELECT polar_gawr_report.make_report(begin_time => '2021-08-12 19:00:00', end_time => '2021-08-12 19:30:00')"
      • 打印RW节点和RO节点的报告信息:打印报告默认不带RO,需要通过参数显式打开。
        SET polar_gawr_report.enable_role_ro='on'; SELECT polar_gawr_report.make_report()
  • 查看Global AWR报告
    使用Global AWR生成的报告为HTML文件,可以使用浏览器(建议使用Google Chrome)打开文件,或者开启一个HTTP服务远程访问此文件。简单的HTTP服务远程访问HTML文件方式如下:
     # 在index.html所在目录下执行如下命令, 提供访问端口为7070的HTTP服务
    nohup python -m SimpleHTTPServer 7070 &

连接Grafana查看实时数据

  1. 下载并安装Grafana。

    详情请参见Download Grafana,建议使用8.1.2或以上版本。

  2. 添加数据源。

    根据实际情况将PolarDB PostgreSQL版(兼容Oracle)数据库实例添加为PostgreSQL数据源。

    1. 打开Grafana,在左侧导航栏中单击Configuration > Data sources
    2. 在打开的Data sources页面,单击右侧Add data source添加数据源。导入数据库实例
  3. 导入Dashboard配置文件。
    1. 在左侧导航栏中单击+ > Import
    2. 在打开的Import页面,单击Upload JSON file导入配置文件。导入JSON文件
      说明 dashboard配置文件压缩包请参见dashboard配置文件。配置文件下载后解压缩即可使用。