1. 概述编辑
1.1 版本
FineBI 版本 |
---|
5.0 |
1.2 功能简介
为了加强对 FineBI 工程的管理,随时监控其运行状态,可在平台中开启日志记录,如下图所示:
注:平台日志的设置仅影响系统日志的输出,不影响操作日志。
2. LogDB编辑
LogDB 是 FineBI 日志监控开启之后,用于保存日志的内置数据库,那么 FineBI 日志都包含哪些内容呢?
下面来介绍一下,LogDB 中各个数据表的含义以及字段的含义。数据库 LogDB 中表的实际应用可以参考:LogDB 的实际应用场景
2.1 连接 LogDB 数据库
1)以管理员身份进入数据决策系统,点击管理系统>数据连接>数据连接管理>新建数据连接,如下图所示:
2)数据连接方式选择其他>其他 JDBC,如下图所示:
3)如下图配置好数据连接信息,点击保存即可。
配置项 | 内容 |
---|---|
数据连接名称 | LogDB |
驱动 | com.fr.swift.jdbc.Driver |
数据连接 URL | jdbc:swift:emb://default |
2.2 查询 LogDB 数据表
注:使用 SQL 语句查询 LogDB 数据表时,不支持 实时数据
1)以管理员身份进入数据决策系统,点击管理系统>数据连接>服务器数据集>创建数据集>SQL 数据集,如下图所示:
2)输入数据库查询语句,点击预览按钮即可查询 LogDB 中的数据表。如下图所示:
2.3 数据表和字段对应的含义
那么 LogDB 数据库中各个数据表和表字段其含义到底是怎么样的呢?
2.3.1 fine_record_execute
BI 执行表:报表访问/导出/打印日志,即如果报表访问/导出/打印的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
id | 主键 |
tname | 仪表板存放路径 |
displayName | 仪表板的实际名称,非 目录管理 中仪表板的名称 |
type | 报表访问方式,具体列举在下面的表格中(范围0~105,目前已使用33个编码) |
param | 2020-08-04 及之后的 JAR 该字段有值 记录被分享节点名称。如果被分享节点为多层级部门,则记录形式为:1层节点/2层节点/节点。每次分享记录一行数据,仅记录,但不导出 |
ip | 操作者 IP ,仅记录,但不导出 |
username | 执行报表的用户 |
userrole | 执行报表的用户角色 |
consume | 执行耗时,包括 SQL 执行时间和报表计算时间 |
time | 日志开始时间 |
sql | SQL 语句 |
sqlTime | SQL 执行的总时间。FR 有效字段,BI 模板为 0,BI 未使用该字段 |
browser | 客户端访问报表所用的浏览器版本 |
memory | 报表占用内存,单位 B 。FR 有效字段,BI 模板为 0,BI 未使用该字段 |
reportId | 模板编号 |
userId | 用户 ID |
complete | 是否计算完成。FR 有效字段,BI 为 0,BI 未使用该字段 |
source | 访问方式。FR 有效字段,BI 为空,BI 未使用该字段 |
sessionID | 会话 ID,用于与性能埋点表中(fine_intelli_consume_point)的前端渲染耗时相关埋点进行关联 |
字段 type 具体含义:
编码 | 类型 | markString |
---|---|---|
0 | 分页预览 | page |
1 | 在线分析 | view |
2 | 填报预览 | write |
3 | 决策报表预览 | form |
4 | 行式引擎 | layer |
5 | 在线编辑 | edit |
6 | 新填报 | write_plus |
10 | Excel 分页导出 | excel |
11 | Excel 原样导出 | excelO |
12 | Excel 整页导出 | excelL |
13 | Excel 分页分 sheet 导出 | excelS |
14 | PDF 导出 | |
15 | Word 导出 | word |
16 | SVG 导出 | svg |
17 | CSV 导出 | csv |
18 | 文本导出 | text |
19 | JPG 图片导出 | jpg |
20 | PNG 图片导出 | png |
21 | GIF 图片导出 | gif |
22 | BMP 图片导出 | bmp |
23 | WBMP 图片导出 | wbmp |
24 | 内置数据集导出模板 | cpt |
25 | HTML 导出 | html |
26 | 填报 HTML 导出 | write_html |
27 | BI 导出 Excel | |
30 | Flash 打印 | flash |
31 | PDF 打印 | |
32 | Applet 打印 | applet |
33 | 零客户端打印 | |
34 | 本地软件打印 | |
101 | BI 模板预览 | |
102 | BI 模板编辑 | |
103 | BI 模板分享 | |
104 | 记录创建的公共链接操作 | |
105 | 记录公共链接访问情况 | |
106 | BI 模板全局导出 PDF | |
107 | BI 模板全局导出 Excel | |
108 | BI 组件导出 Excel | |
201 | 关闭浏览器或者 Tab 页(BI) |
2.3.2 fine_record_login
登录表:用户登录日志,用于记录用户的登录信息。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
time | 登录时间 |
ip | 登录 IP 地址 |
username | 登录的用户 |
userrole | 登录的用户角色 |
2.3.3 fine_record_logout
登出表:用户登出日志,用于记录用户的登出信息。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
time | 用户退出平台时间 |
ip | 登出 IP 地址 |
username | 登出平台的用户名 |
userrole | 登出平台的用户角色 |
2.3.4 fine_record_email
邮件表:邮件发送日志(只包含工具栏中的“邮件”),即如果报表发送邮件的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
receiver | 收件人用户名 |
收件人邮箱 | |
ip | 发送邮件的 IP 地址 |
username | 发送邮件的用户 |
tname | 仪表板存放路径 |
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
content | 邮件内容 |
time | 发送时间 |
result | 是否发送成功 |
detail | 详情 |
2.3.5 fine_record_write
填报表:记录填报日志信息,即如果报表进行填报的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
username | 填报报表的用户 |
tname | 仪表板存放路径 |
time | 填报时间 |
sql | SQL 语句 |
sqlTime | SQL 执行的总时间 |
result | 是否填报成功 |
ip | 填报报表的 IP 地址 |
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
detail | 详情 |
browser | 客户端访问报表所用的浏览器版本 |
consume | 执行耗时,包括 SQL 执行时间,报表计算时间 |
2.3.6 fine_record_error
执行出错日志表:即如果报表执行的过程中报错的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录,记录全部 error 和 fatal 级别的报错信息。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
displayName | 挂载到平台的目录名称(全路径),如果直接访问链接则为空 |
ip | 执行报表的 IP 地址 |
msg | 错误信息 |
time | 出错记录时间 |
tname | 出错仪表板的存放路径 |
trace | 错误路径 |
username | 执行报表的用户 |
userrole | 执行报表的用户角色 |
errorcode | 错误码(无错误码时记为空) |
platformDisplay | 是否在平台中显示(1为是,0为否) 记录规则为:有记录到此表的错误日志,此字段记为1,反之此字段记为0 |
注1:在平台日志的错误日志中过滤展示,只展示 platformDisplay=1 的记录。
注2:如果不是模板出错,则 tname 记录为“非模板触发错误”。
2.3.7 fine_record_param
常用参数组合表:记录常用参数组合日志信息。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
templateid | 模板 ID |
username | 用户 |
pgroup | 参数,值以数组形式展示: {参数 1:参数值,参数 2:参数值} 注:2020-04-03 及之后的 JAR ,pgroup 字段值加密显示 |
time | 记录时间 |
2.3.8 fine_record_sms
短信发送表:记录短信发送日志信息,即如果发送短信的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录.。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
receiver | 收件人用户名 |
mobile | 接收人手机号 |
content | 邮件内容 |
time | 发送时间 |
result | 是否发送成功 |
detail | 详情 |
sender | 发件人用户名 |
2.3.9 fine_record_operate
管理日志表:即用户对模块进行操作的时候,将会在该表中添加一条记录,并在相应字段中填写其对应的信息记录。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
type | 模块(存国际化的 key) |
item | 设置项 |
resource | 被访问资源 |
operation | 操作 |
username | 用户名 |
ip | 用户 IP 地址 |
time | 用户操作时间 |
detail | 详情 |
requestParam | 请求参数 |
2.3.10 fine_record_sql
SQL 执行表:记录 SQL 的执行情况。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
columns | 数据集规模(列) |
dsname | 数据集的名称 |
executeid | 执行表 ID |
rows | 数据集规模(行) |
sqltime | SQL 执行时间,单位毫秒 |
connection | 数据连接名 |
connectionID | 数据连接标识ID:作用是与功能埋点表(fine_intelli_focus_point)中的数据源连接相关埋点进行关联,生成规则要与数据源连接埋点记录的数据连接标识相同 |
2.3.11 fine_intelli_focus_point
功能埋点表:用来保存所有公共的埋点信息。
其各个字段对应的含义如下表所示:
字段 | 含义 |
---|---|
id | 埋点 ID 编号。所有埋点均以 E 开头 |
text | 记录的主要内容 |
source | 埋点来源 -1 表示没有定义来源(UNDEFINED) 1 是内置 JAR 包的功能点(EMBED) 2 是插件功能点(PLUGIN) 4 是 FineReport 的功能点(REPORT) 8 是 FineBI 的功能点(BI) |
time | 时间 |
username | 用户名,转码处理,超管用户为 0 |
ip | 出发埋点的 IP |
title | 标题,埋点是什么 |
body | 一个 JSON 数据结构,根据功能点 ID 里面存放不同功能点的信息(次要信息,可能为空) |
字段 id 格式说明:
例如:FR-F1001
FR前缀,表示是FR的埋点。
第一位字母表示功能/性能:F-功能、P-性能。
第二位数字表示分类:1-数据源、2-前台、3-报错、4-智能运维、5-设计器。
2.3.12 fine_real_time_usage
应用实时情况表:记录应用实时情况。
其各个字段对应的含义如下表所示:
字段 | 含义 | 备注 |
---|---|---|
node | 节点名 | |
cpu | CPU 利用率 | |
memory | 当前 JVM 内存情况 | |
time | 记录时间,每分钟一条 | |
sessionNum | 存活会话数 | |
onlineNum | 系统在线人数 | |
pid | 进程 PID | |
templateRequest | 正在计算的模板请求数 | |
httpRequest | 总的正在处理的 http 请求数 | |
sessionRequest | 正在处理的带 sessionid 的请求数 | |
fineIO | fineIO 占用堆外内存大小,单位 KB | 2020-08-04 及之后 JAR 新增字段 |
NIO | NIO 占用堆外内存大小,单位 KB | 2020-08-04 及之后 JAR 新增字段 |
bufferMemUse | 堆外使用总内存,directMem「nio」 和mappedMem,单位 KB | 2020-08-04 及之后 JAR 新增字段 |
physicalMemUse | 物理内存已使用空间,单位 KB | 2020-08-04 及之后 JAR 新增字段 |
physicalMemFree | 物理内存空闲空间,单位 KB | 2020-08-04 及之后 JAR 新增字段 |
2.3.13 fine_intelli_consume_point
性能信息表:记录性能相关信息。
其各个字段对应的含义如下表所示:
字段 | 说明 | 备注 |
---|---|---|
id | 埋点 id 编号 | BI 为 X961 |
source | 埋点来源 | Original 类里面 embed 表示当前系统的,plugin 表示插件的埋点,undefined 表示没有定义来源 |
time | 时间 | 开始时间 |
finish | 结束时间 | FR 有效字段、BI 为 0,BI 未使用该字段 |
consume | 耗时 单位 ms | |
memory | 内存大小 单位 byte | FR 有效字段、BI 为 0,BI 未使用该字段 |
username | 操作者 | |
ip | 操作 IP | |
title | 资源 ID | 可以是模板 ID,分析表 ID,表 ID 等 |
text | 资源内容 | 可以是模板名字,分析表名字等。BI 未使用该字段 |
type | 操作类型 | 可以表明是进行了哪种操作。BI 未使用该字段 |
comment | 资源备注 | 可以是可以是更具体一些的信息,需要直接分析的数据。BI未使用该字段 |
body | 埋点具体信息 | 一个 JSON 数据结构,根据不同的埋点里面存放不同的信息 |
2.3.14 fine_record_gc
GC 记录表:记录系统的 GC 信息。
其各个字段对应的含义如下表所示:
字段 | 数据类型 & 单位 | 说明 |
---|---|---|
gcStartTime | long | GC 开始时间 |
gcType | String | GC 类型 |
gcCause | String | GC 的原因 |
pid | String | 进程 pid |
node | String | 用户命名的节点名,单机下记为空 |
duration | long ms | GC 持续时间 |
youngBeforeUsed | long KB | 年轻代 GC 前使用内存 |
youngBeforeCommitted | long KB | 年轻代 GC 前申请内存 |
youngAfterUsed | long KB | 年轻代 GC 后使用内存 |
youngAfterCommitted | long KB | 年轻代 GC 后申请内存 |
oldBeforeUsed | long KB | 老年代 GC 前使用内存 |
oldBeforeCommitted | long KB | 老年代 GC 前申请内存 |
oldAfterUsed | long KB | 老年代 GC 后使用内存 |
oldAfterCommitted | long KB | 老年代 GC 后申请内存 |
metaspaceBeforeUsed | long KB | metaspace GC 前使用内存 |
metaspaceBeforeCommitted | long KB | metaspace GC 前申请内存 |
metaspaceAfterUsed | long KB | metaspace GC 后使用内存 |
metaspaceAfterCommitted | long KB | metaspace GC 后申请内存 |
heapBeforeUsed | long KB | GC 前堆使用内存 |
heapBeforeCommitted | long KB | GC 后堆申请内存 |
heapAfterUsed | long KB | GC 前堆使用内存 |
heapAfterCommitted | long KB | GC 后堆申请内存 |
balancePromoterScore | int 分「分值的分」 | 中止分值 |
releasePromoterScore | 同上 | 释放分值 |
loadScore | 同上 | 整体负载分值 |
3. 查询语法编辑
3.1 明细查询
SQL 语句示例:
1)select * from fine_record_execute
2)select tname, displayName, consume from fine_record_execute
3.2 group by 查询
GROUP BY 查询,有 SUM,COUNT, MAX, MIN, AVG 这五种聚合方式,如果什么都不写,会默认 COUNT
SQL 语句示例:
1)select sum(consume) from fine_record_execute group by tname, displayName
2)select consume from fine_record_execute group by tname, displayName
3)select min(consume), max(consume) from fine_record_execute group by tname, displayName
3.3 where 过滤条件
简单的 WHERE 过滤条件,支持 AND, OR, =,<>,>,>=, <,<=, in, isnull
SQL 语句示例:
1)select * from fine_record_execute where consume > 10
2)select sum(consume) from fine_record_execute where consume > 10 and consume < 100 group by tname, displayName
3)select consume from fine_record_execute where tname = `doc/Advanced/Chart/GraphSwitching/多图表实现统一切换.frm`
4)select sum(consume) from fine_record_execute where tname in (`doc/Advanced/Chart/GraphSwitching/多图表实现统一切换.frm`, `doc/Advanced/Chart/Combination/柱形-面积组合图.cpt`) group by tname, displayName
3.4 todate() 将时间戳转换为普通的日期类型
todate() 结果的日期格式为:2018-12-18 10:15:26
SQL 语句示例:
1) select todate(time) from fine_record_execute
2) select * from fine_record_execute where todate(time)<'2018-12-18 10:15:26' and todate(time)>'2018-12-17 10:15:26'
3.5 like 模糊查询
只支持前后‘%’的用法
注1:支持使用 like 进行模糊查询,不支持 not like 用法 。
注2:目前只支持 '%',暂不支持通配符 ‘_’,需要更新 2019-06-14 以后的 JAR。
SQL 语句示例:
1)select * from fine_record_execute where tname like '%demo%'
4. 注意事项编辑
4.1 LogDB 中添加表后更新失败
问题描述:
在 LogDB 数据库中添加表后,更新失败。平台报错:更新失败,请联系管理员查看报错信息。如下图所示:
原因分析:
编辑过的 基础表 更新会嵌套,但目前 swift 不支持嵌套。
所以,FineBI 目前暂不支持本节「问题描述」中的操作。
4.2 browser 字段说明
LogDB 数据库fine_record_execute表中 browser 字段一般记录客户端访问报表所用的浏览器版本,例如:CHROME/83.0.,当 browser 字段值如下所示时:
{'Browser':'webkit','Version':'537.36','Agent':'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/81.0.4044.138 safari/537.36','BoxModel':true,'terminal':'null'}
记录的是浏览器请求头user agent(用户代理字符串)的值,user agent相当于浏览器的唯一标识。
4.3 一个模板编号对应多个模板名称
问题描述:
LogDB 数据库fine_record_execute表中,一个 reportId 对应多个 tname ,如下图所示:
原因分析:
仪表板被多次重命名,每次重命名后都对仪表板进行访问/导出/打印操作,所以 fine_record_execute 表中一个模板编号会对应多个模板名称。