1. 概述编辑
1.1 版本
FineBI 版本 | 平台日志同步到其他数据库插件 |
---|---|
6.0 | V1.0.0 |
1.2 应用场景
目前 LogDB 数据库不支持迁移,用户如果想对日志数据进行一些复杂分析时较为麻烦,希望日志数据可以迁移到自己的数据库中进行管理和分析。
用户希望把各个系统的日志都放在同一个地方运维管理。
1.3 功能简介
安装「平台日志同步到其他数据库」插件后,用户可以通过设置将 LogDB 中的部分表数据定期同步到其它数据库中。
2. 插件介绍编辑
2.1 安装插件
插件下载请点击:平台日志同步到其他数据库插件
插件安装方法参见:插件管理
2.2 支持迁移到的数据库
数据库类型 | 支持数据库版本 |
---|---|
MySQL | 5.1.73、5.5.31、5.5.46、5.5.56、5.6.22、5.6.31、5.7.16 |
SqlServer | 2000、2005、2008、2012、2014、2016 |
Oracle | 10g、11g、12c |
2.3 日志同步
插件安装成功后,点击「管理系统>智能运维>平台日志」,平台日志界面新增「日志同步」Tab,如下图所示:
3. 示例编辑
3.1 选择所要同步的日志
1)以管理员身份进入数据决策系统,点击「管理系统>智能运维>平台日志」,在「日志同步」Tab 页中点击「设置日志同步任务」,如下图所示:
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 配置数据库信息
填写日志数据将要迁移到的数据库相关信息,点击「确定」,如下图所示:
4. 效果查看编辑
4.1 同步状态
注:插件每 3 分钟同步一次,每张表每次最多同步数据 3W 条。如果本次同步的数据不足 3W 条,那最多同步 3 个小时跨度的数据。
例如2021-08-02 13:00:00~16:00:00,有30条数据,那这次同步就最多同步这30条数据。
同步成功后,同步状态如下图所示:
4.1.1 同步失败时,通知管理员
若勾选「同步失败时,通知管理员」按钮,同步失败时,管理员会收到平台消息。如下图所示:
4.1.2 暂停同步
可点击「暂停」按钮,暂停同步。如下图所示:
4.1.3 编辑同步设置
暂停同步或同步失败时,可点击「编辑」按钮,重新编辑同步任务。如下图所示:
“起始时间生效对象”设置说明:
若希望所有被勾选的表都从用户设置的「同步日志起始时间」开始同步,则“起始时间生效对象”设置为“所有同步的日志”;
若希望只有新增加的表从「同步日志起始时间」的设置值开始同步,其余已有在同步的表延着之前同步到的地方继续同步,则“起始时间生效对象”设置为“仅对本次变动的日志生效”。
4.1.4 查看同步详情
点击「查看同步详情」按钮,可查看同步详情。如下图所示:
只展示上次同步任务的运行状态。各字段说明如下表所示:
字段名称 | 说明 |
---|---|
同步表 | 所选择的同步日志 |
同步日志截止时间 | 最近一次执行结束的同步任务中,入库日志的最晚时间,表示在「同步日志起始时间」到此时间点之间的日志都已经入库了 |
最近一次同步时间 | 最近一次执行结束同步任务的开始执行时间 |
最近一次同步数据量 | 最近一次执行结束同步任务同步的日志记录数 |
最近一次同步耗时 | 最近一次执行结束同步任务执行的耗时 |
运行结果 | 成功/失败 运行结果为「失败」情况下,可以点击查看具体报错 |
4.2 日志数据同步到数据库
日志数据同步到设置的数据库中。如下图所示:
注1:字段中内容过长可以入库,但是超过 255 字符的内容会被截断。
注2:日志清理 不会影响到已迁移到外接数据库中的日志数据。
同步后的表,新增了自增长主键(syncID),增加了同步时间戳字段(storageTime),示例如下图所示:
字段名使用数据库保留名时,为了能够兼容各个版本,针对保留名做别名处理。改名处理的具体字段如下表所示:
表 | 原字段名称 | 迁移后字段名称 |
---|---|---|
FINE_RECORD_OPERATE | type | operateType |
resource | operateResource | |
status | operateStatus | |
FINE_RECORD_EXECUTE | type | executeType |
sql | query | |
sqlTime | queryTime | |
FINE_RECORD_WRITE | sql | query |
sqlTime | queryTime |
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.Long | logDB不支持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就会报错,将改成用户名即可。 |