下载GaussDB错误日志和慢日志
GaussDB提供慢日志和错误日志的下载功能,慢日志可以帮助您定位SQL语句执行慢的问题,错误日志可查看集群的日志信息。
注意事项
- 实例CN与DN节点没有异常。
- 实例所有节点与OBS网络连接正常。
- 底层网络正常。
慢日志
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 ,进入云数据库 GaussDB信息页面。
- 在“实例管理”页面,选择指定的实例,单击实例的名称,进入 页面。
- 单击左侧导航栏中的“日志分析”,进入“日志分析”页面。
- 在日志分析页面,系统自动查询最近五分钟内是否存在慢日志任务,如果不存在则生成下载慢日志任务。单击“慢日志”,选中状态为“准备完成”的日志,单击操作列的“下载”,即可下载慢日志文件。
下载完成后,可在本地进行分析。
图1 慢日志下载
慢日志文件采集最近12小时内的日志。
慢日志包含的字段如表1所示。表1 慢日志字段 字段名称
类型
描述
message_version
String
日志格式版本,当前为固定值V1。
db_name
name
数据库名称。
schema_name
name
schema名称。
origin_node
integer
节点名称。
user_name
name
用户名。
application_name
text
用户发起的请求的应用程序名称。
client_addr
text
用户发起的请求的客户端地址。
client_port
integer
用户发起的请求的客户端端口。
unique_query_id
bigint
归一化SQL ID。
debug_query_id
bigint
唯一SQL ID。部分语句存在不唯一的情况,如Parse报文、DCL和TCL等语句的debug_query_id值为0。
query
text
归一化SQL(仅在CN上有值),track_stmt_parameter参数开启时,显示完整SQL。
start_time
timestamp with time zone
语句启动的时间。
finish_time
timestamp with time zone
语句结束的时间。
slow_sql_threshold
bigint
语句执行时慢SQL的标准。
transaction_id
bigint
事务ID。
thread_id
bigint
执行线程ID。
session_id
bigint
用户session id。
n_soft_parse
bigint
软解析次数, n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。
n_hard_parse
bigint
硬解析次数, n_soft_parse + n_hard_parse可能大于n_calls,因为子查询未计入n_calls。
query_plan
text
语句执行计划。
n_returned_rows
bigint
SELECT返回的结果集行数。
n_tuples_fetched
bigint
随机扫描行。
n_tuples_returned
bigint
顺序扫描行。
n_tuples_inserted
bigint
插入行。
n_tuples_updated
bigint
更新行。
n_tuples_deleted
bigint
删除行。
n_blocks_fetched
bigint
buffer的块访问次数。
n_blocks_hit
bigint
buffer的块命中次数。
db_time
bigint
有效的DB时间花费,多线程将累加(单位:微秒)。
cpu_time
bigint
CPU时间(单位:微秒)。
execution_time
bigint
执行器内执行时间(单位:微秒)。
parse_time
bigint
SQL解析时间(单位:微秒)。
plan_time
bigint
SQL生成计划时间(单位:微秒)。
rewrite_time
bigint
SQL重写时间(单位:微秒)。
pl_execution_time
bigint
plpgsql上的执行时间(单位:微秒)。
pl_compilation_time
bigint
plpgsql上的编译时间(单位:微秒)。
data_io_time
bigint
IO上的时间花费(单位:微秒)。
net_send_info
text
通过物理连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,CN与CN、CN与客户端以及CN与DN之间都是通过物理连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
net_recv_info
text
通过物理连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,CN与CN、CN与客户端以及CN与DN之间都是通过物理连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
net_stream_send_info
text
通过逻辑连接发送消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,不同分片的DN之间通过逻辑连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
net_stream_recv_info
text
通过逻辑连接接收消息的网络状态,包含时间(微秒)、调用次数、吞吐量(字节)。在分布式数据库中,不同分片的DN之间通过逻辑连接进行通信,通过该字段可以分析SQL在分布式系统下的网络开销。例如:{"time":xxx, "n_calls":xxx, "size":xxx}。
lock_count
bigint
加锁次数。
lock_time
bigint
加锁耗时。
lock_wait_count
bigint
加锁等待次数。
lock_wait_time
bigint
加锁等待耗时。
lock_max_count
bigint
最大持锁数量。
lwlock_count
bigint
轻量级加锁次数(预留)。
lwlock_wait_count
bigint
轻量级等锁次数。
lwlock_time
bigint
轻量级加锁时间(预留)。
details
bytea
等待事件和语句锁事件的列表。
记录级别的值>=L0时,开始记录等待事件的列表。显示当前节点wait event的相关统计信息。关键的事件信息请参见表 等待状态列表、表 轻量级锁等待事件列表、表 I/O等待事件列表和表 事务锁等待事件列表,或从视图wait_event_info中查看系统中所有的事件列表。关于每种事务锁对业务的影响程度,请参考LOCK语法小节的详细描述。
记录级别的值是L2时,开始记录语句锁事件的列表。该列表按时间顺序记录事件。记录的数量受参数track_stmt_details_size的影响。
该字段为二进制,需要借助解析函数pg_catalog.statement_detail_decode读取,见(表 statement_detail_decode参数说明)。
事件包括:
- 加锁开始
- 加锁结束
- 等锁开始
- 等锁结束
- 放锁开始
- 放锁结束
- 轻量级等锁开始
- 轻量级等锁结束
is_slow_sql
boolean
该SQL是否为Slow SQL。
- t(true):表示是。
- f(false):表示不是。
lwlock_wait_time
bigint
轻量级等锁时间。
错误日志
- 登录管理控制台。
- 单击管理控制台左上角的,选择区域和项目。
- 在页面左上角单击,选择 ,进入云数据库 GaussDB信息页面。
- 在“实例管理”页面,选择指定的实例,单击实例的名称,进入 页面。
- 单击左侧导航栏中的“日志分析”,进入“日志分析”页面。
- 在日志分析页面,单击“错误日志”,开启“错误日志采集”,单击状态为“准备完成”的操作列的“下载”,即可下载错误日志文件。下载完成后,可在本地进行分析。
错误日志在gs_log目录下,日志的命名规则为gaussdb-创建时间.log。每一行日志内容的默认格式为日期+时间+节点名称+用户名称+数据库名称+IP地址+会话ID+事务ID+应用程序名称+日志级别+日志内容。
表2 错误日志参数 字段名称
字段含义
日期
日志生成的日期,格式:yyyy-mm-dd。
时间
日志生成的时间,格式:hh:mm:ss.ms。
节点名称
表示指定错误上报的节点。
用户名称
当前触发生成日志的数据库用户的用户名。
数据库名称
当前触发生成日志的数据库的数据库名。
IP地址
当前触发生成日志的客户端的IP地址。
线程ID
线程ID。
会话ID
当前触发生成日志的session的session id。
事务ID
事务ID(0表示没有分配事务ID)。
线程名
线程名。
查询ID
query_id,用户发起query时,后台记录此query的id。
模块名称
模块名称。
日志级别
日志的级别,不同级别表示的严重程度不一样,有FATAL,ERROR,LOG等级别。
日志内容
日志内容。