最新历史版本 :平台日志同步到其他数据库插件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

报表服务器版本平台日志同步到其他数据库插件
11.0
V1.0.0

1.2 应用场景

  • 目前 LogDB 数据库不支持迁移,用户如果想对日志数据进行一些复杂分析时较为麻烦,希望日志数据可以迁移到自己的数据库中进行管理和分析。

  • 用户希望把各个系统的日志都放在同一个地方运维管理。

1.3 功能简介

安装「平台日志同步到其他数据库」插件后,用户可以通过设置将 LogDB 中的部分表数据定期同步到其他数据库中。

2. 插件介绍编辑

2.1 安装插件

插件下载请点击:平台日志同步到其他数据库插件

设计器插件安装方法请参见:设计器插件管理

服务器安装插件方法请参见:服务器插件管理

2.2 支持迁移到的数据库

数据库类型JAR 包版本支持数据库版本
MySQL不限
5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16
SQL Server不限
2000、2005、2008、2012、2014、2016
2019-02-282017
Oracle不限
10g、11g、12c

2.3 日志同步

插件安装成功后,点击「管理系统>智能运维>平台日志」,平台日志界面新增「日志同步」Tab,如下图所示:

2.png

3. 示例编辑

3.1 选择所要同步的日志

1)以管理员身份进入数据决策系统,点击「管理系统>智能运维>平台日志」,在「日志同步」Tab 页中点击「设置日志同步任务」,如下图所示:

2.png

2)在日志同步设置中,选择「同步日志起始时间」,勾选需要同步的日志,点击「下一步」。如下图所示:

支持同步的日志表包括:

  • 报表执行日志 fine_record_execute

  • 登录日志 fine_record_login

  • 登出日志 fine_record_logout

  • 邮件发送日志 fine_record_email

  • 填报日志 fine_record_write

  • 常用参数组合 fine_record_param

  • 短信发送日志 fine_record_sms

  • 管理行为日志 fine_record_operate

  • SQL 执行情况 fine_record_sql

  • 应用实时情况 fine_real_time_usage

  • gc日志 fine_record_gc

  • conf_entity 配置信息 fine_record_conf

  • 用户锁定日志 fine_record_lock

  • 模板属性 fine_tpl_info

  • 容器信息日志 fine_container_entity

  • 功能点信息日志 fine_function_process

  • 云端运维操作日志fine_operation_process_log

  • 信号量信息 fine_operation_shutdown_record

  • 插件使用信息记录 fine_plugin_usage

  • 定时任务执行日志 fine_schedule_record

  • 功能使用情况 fine_intelli_focus_point

  • 性能信息日志 fine_intelli_consume_point

3.2 配置数据库信息

填写日志数据将要迁移到的数据库相关信息,点击「确定」,如下图所示:

1598239612331686.png

4. 效果查看编辑

4.1 同步状态

注:1、插件每 3 分钟同步一次

       2、最多同步 24 个小时跨度的数据(2021-3-23之前最多同步3小时跨度的数据)。

例:2021-08-02 13:00:00 ~ 2021-08-03 13:00:00,有30条数据,那这次同步就最多同步这30条数据。

同步成功后,同步状态如下图所示:

7.png

4.1.1 同步失败时,通知管理员

若勾选「同步失败时,通知管理员」按钮,同步失败时,管理员会收到平台消息。如下图所示:

1598250793260794.png

4.1.2 暂停同步

可点击「暂停」按钮,暂停同步。如下图所示:

8.png

4.1.3 编辑同步设置

暂停同步或同步失败时,可点击「编辑」按钮,重新编辑同步任务。如下图所示:

23.png

「起始时间生效对象」设置说明:

  • 若希望所有被勾选的表都从用户设置的「同步日志起始时间」开始同步,则“起始时间生效对象”设置为“所有同步的日志”;

  • 若希望只有新增加的表从「同步日志起始时间」的设置值开始同步,其余已有在同步的表延着之前同步到的地方继续同步,则“起始时间生效对象”设置为“仅对本次变动的日志生效”。

4.1.4 查看同步详情

点击「查看同步详情」按钮,可查看同步详情。如下图所示:

注:同步触发后的一段时间内,由于系统在搜寻数据库中有没有数据,“最近一次同步数据量”会显示为0,请耐心等待即可。

17.png

只展示上次同步任务的运行状态。各字段说明如下表所示:

字段名称说明
同步表所选择的同步日志
同步日志截止时间最近一次执行结束的同步任务中,入库日志的最晚时间,表示在「同步日志起始时间」到此时间点之间的日志都已经入库了
最近一次同步时间最近一次执行结束同步任务的开始执行时间
最近一次同步数据量最近一次执行结束同步任务同步的日志记录数
最近一次同步耗时最近一次执行结束同步任务执行的耗时
运行结果

成功/失败

运行结果为「失败」情况下,可以点击查看具体报错

4.2 日志数据同步到数据库

日志数据同步到设置的数据库中。如下图所示:

注:字段中内容过长可以入库,但是超过 255 字符的内容会被截断。

1599185626318069.png

同步后的表,新增了自增长主键(syncID),增加了时间戳字段(storageTime),示例如下图所示:

1599185951990922.png

字段名使用数据库保留名时,为了能够兼容各个版本,针对保留名做别名处理。改名处理的具体字段如下所示:


原字段名称迁移后字段名称
FINE_RECORD_OPERATEtypeoperateType
resourceoperateResource
statusoperateStatus
FINE_RECORD_EXECUTEtypeexecuteType
sqlquery
sqlTimequeryTime
FINE_RECORD_WRITEsqlquery
sqlTimequeryTime

5. 常见问题编辑

5.1 同步逻辑

内容
说明
同步逻辑目前平台日志同步逻辑是插入提交,多次同步同个时段的数据就会重复提交。
同步频率

同步插件会以用户设置的同步开始时间为起点,按照时间顺序分批将日志同步到第三方数据库中,插件每3分钟同步一次,每张表每次最多同步数据3W 条。

如果本次同步的数据不足3W 条,那最多同步 24 个小时跨度的数据(2021-3-23之前最多同步3小时跨度的数据)。

同步字段长度字段中内容过长可以入库,但是超过 255 字符的内容会被截断,仅提交255字符长度内的内容。
同步状态插件处显示的同步状态实际是指的插件运行状态,并非同步状态。

5.2 数据库问题

同步失败,可排查以下数据库问题。

排查步骤
说明
检查数据库版本支持的数据库类型和版本请参考2.2节。
检查数据库信息

检查数据库驱动、模式、密码是否正确,可在数据连接处先尝试是否能正常连接。

数据库重启会导致日志同步中断,同步终止后要在平台上重新启动任务。

检查数据库用户权限

检查数据库用户是否有创建表和插入数据的权限。

用户最好需要具备 create、delete、alter、update、select、insert 权限。

检查数据库编码

MySQL5数据库编码建议为utf8,不支持 utf8mb4 编码。

若为阿里云rds mysql ,还需要确认引擎是否为innodb。

5.3 插件问题

同步失败,出现三种现象时,可排查以下插件问题。

问题描述:

1)fanruan.log中报错有重复的插件包

2)平台日志同步界面显示空白

3)平台日志同步界面显示英文

排查步骤
说明
检查插件安装

检查是否重复安装了插件

若重复安装了,删除插件,重启服务器,重新安装插件

检查websocket端口检查websocket端口是否正常,可参考:WebSocket连接失败

5.4 常见报错

同步出现问题,可查看fanruan.log,报错信息中包含「com.fr.plugin.sync」,可根据报错信息定位问题。

报错信息原因分析及解决方案

SyncLog: getConfigInstance failed!, retry to getConfigInstance!

java.lang.AssertionError: com.fr .plugin.sync.config.status.IsStart has the same tableName with com.fr .plugin.sync.config.status.IsStart

1)安装了不同版本的平台日志同步插件,需要在plugins中将插件文件删除干净,重启服务器,再次安装。

2)同时安装了「日志数据同步」 插件和「平台日志同步到其他数据库」插件,需将旧版本「日志数据同步」 插件删掉。

Can not set int field com.fr .plugin.sync.db.entity.Schedule.logType to java.lang.LonglogDB不支持int型,需要将int改为long。更新插件至1.1.2及以上版本。
SyncLog: get logs failed from XXX

同步的XXX表太大,swift中止查询,导致查询失败。

平台日志同步插件无法支持特别大数据量的日志同步,建议适当清理表数据再同步。

SyncLog: sync failed: com.fr.third.org.hibernate.StaleStateException: 

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1。

hibernate偶发保存数据失败。更新插件至1.0.8及以上版本。
java.sql.SQLException: Incorrect string value: '/xE4/xB8/xB4/xE6/x97/xB6...' for column 'userrole' at row 1

数据库或表的字符集有问题。

MySQL5数据库编码建议为utf8,不支持 utf8mb4 编码。

若为阿里云rds mysql ,还需要确认引擎是否为innodb。

QueryTimeoutException- could not extract ResultSet

数据库可能有未提交的事务,导致数据提交失败。

检查是否存在没提交的事务,若存在,处理后再尝试同步。

could not execute statement检查数据库的模式和编码类型

MySQL5数据库编码建议为utf8,不支持 utf8mb4 编码。

若为阿里云rds mysql ,还需要确认引擎是否为innodb。

Oracle模式填thin就会报错,将改成用户名即可。