log_alert_*

log_alert_* 表存储 pg_log 的错误和警告。

这里有三种 log_alert 表,所有的表都有相同的列:

  • log_alert_now 是一个外部表,其数据文件存在 $MASTER_DATA_DIRECTORY/gpperfmon/data 中。在从数据收集代理收集数据和自动提交到 log_alert_history 表之间的时段,当前的 pg_log 错误和警告存储在 log_alert_now 中。
  • log_alert_tail 是一个外部表,其数据文件存在 $MASTER_DATA_DIRECTORY/gpperfmon/data 中。这是一个过渡表,其中存放着已经从 log_alert_now 中清除但是还没有提交到 log_alert_history 的 pg_log 错误和警告。它通常只包含了几分钟的数据。
  • log_alert_history 是一个常规表,它存储数据库范围的历史错误和警告数据。它被预分区为每月的分区表。分区会根据需要进行两个月的增量添加。管理员必须要删除那些不再需要的月份的旧分区。
Column Type Description
logtime timestamp with time zone 此日志文件的时间戳
loguser text 查询的用户
logdatabase text 访问的数据库
logpid text 进程 ID
logthread text 线程数
loghost text 主机名或 IP 地址
logport text 端口号
logsessiontime timestamp with time zone 会话时间戳
logtransaction integer 事务IDTransaction id
logsession text 会话IDSession id
logcmdcount text 指令统计
logsegment text Segment 数量
logslice text 片数量
logdistxact text 分布事务
loglocalxact text 本地事务
logsubxact text 子事务
logseverity text 日志严重性
logstate text 状态
logmessage text 日志信息
logdetail text 详细信息
loghint text 提示信息
logquery text 执行查询
logquerypos text 查询位置
logcontext text 内容信息
logdebug text 调试
logcursorpos text 游标位置
logfunction text 函数信息
logfile text 源代码文件
logline text 源代码行
logstack text 栈追踪

日志处理和切换

HashData 数据系统日志记录器把警告日志写到 $MASTER_DATA_DIRECTORY/gpperfmon/logs 目录中。

代理进程(gpmmon)执行下面的步骤来合并日志文件然后将它们加载到 gpperfmon 数据库:

  1. 收集日志目录(除了最新的日志,它已被 syslogger 打开并且正被写入)下的所有 gpdb-alert-* 文件到单个文件 alert_log_stage 中。

  2. 装载 alert_log_stage 文件到 gpperfmon 数据库中的 log_alert_history 表。

  3. 清空 alert_log_stage 文件。

  4. 移除所有的 gp-alert-* 文件,除了最新的那个。

syslogger 每24小时或者当当前的日志文件大小超过 1M 时切换一次警告日志。如果有单个错误消息包含一个大型 SQL 语句或者大型的栈追踪,被轮转的日志文件可能会超过 1MB。此外,syslogger 以块的方式处理错误消息,每个日志进程都会有一个单独的块。块的大小取决于操作系统;比如,在 Red Hat Enterprise Linux 上,块的大小为 4096 字节。如果许多 HashData 数据库会话同时产生错误消息,那么在它大小被检查前以及日志选择被触发前,日志文件会显著地增大。

results matching ""

    No results matching ""