用户访问日志设置

场景描述

1、提供基于服务网关记录用户的登录、注销、页面访问、服务API访问等数据,数据包括用户访问时的IP地址、用户名、访问时间、访问接口、客户端类型等,并提供统一的访问日志查询和访问统计功能

2、访问日志数据量达到上千万级别,数据库磁盘消耗高,QPS响应慢,需要通过分库分表来优化

开启记录访问日志后,可以在门户的用户使用情况中进行查询

操作步骤

访问日志说明

  1. 访问日志数据是access_log插件生成的,access_log插件不会自动安装,需要从新控制台手工加

设置日志插件

  1. 租户在使用时需要开启日志插件
  2. 点击服务操作里的网关,打开插件配置页面
  3. 点击下拉列表,选择所有应用服务
  4. 选择access_log插件,点击开关按钮开启插件
  5. 点击设置插件参数,打开参数设置页面进行参数设置
    1. 日志接收服务地址中,需要修改xxx为租户名
    2. 其他参数根据实际需求进行设置即可
    3. 对于特别关心的接口设置,点击新增配置内容
    4. 如图为登录接口,API访问路径以^符号开始,$符号结束

一个简单的案例

只记录所有对cs1应用dingdanzb数据表的请求,请求url为/cs1/main/dbrest/dingdanzb,记录每个请求的请求体和返回体

  • 选中“是否记录请求体”、“是否记录返回体”
  • 设置“最大请求体大小”、“最大返回体大小”
  • 在“需要包含请求查询的地址”中,添加请求url
  • 第一个“日志接收概率”设置为0,表示只记录用户关心接口的请求

请求的记录结果如下图所示

日志数据存储

访问日志存储在门户应用的日志数据库的opm_user_access_log表中

设置分库分表

  1. 在应用服务管理中,选择门户,点击配置
  2. 打开日志数据库连接参数
  3. 在分库分表配置属性中设置参数,参数内容说明如下
#数据库连接参数,数据库名称(可以与数据库中的库名不一致)
   dataSources: 
  ds_0: !!com.zaxxer.hikari.HikariDataSource
    driverClassName: com.mysql.jdbc.Driver
    jdbcUrl: jdbc:mysql://192.168.10.22:3306/20211215092308b6haeogn?useServerPrepStmts=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false
    username: b6haeogn_131
    password: SbFb_4616096
#分表策略 
shardingRule:
  tables:
    opm_user_access_log:  逻辑表名
      actualDataNodes: ds_0.opm_user_access_log_login, ds_0.opm_user_access_log_20220${1..9}, ds_0.opm_user_access_log_2022${10..12}   #需要手工创建,数据库物理表名
      tableStrategy:
        justep:
          shardingType: 3    #1:根据flogtype字段值分表   2:根据faccesstime字段值分表  3:前面两种支持,优先级1>2
          shardingColumnString: flogtype 
          shardingColumnDatetime: faccesstime
          shardingFieldValueTableNameMap: login:opm_user_access_log_login  #flogtype字段值存到哪个表里: 值:表名
          shardingDatetimeSuffixPattern: MM   #月份
          datetimeValuePattern: yyyy-MM-dd HH:mm:ss  #faccesstime值格式
          datetimeLower: 2021-01-01 00:00:00    #faccesstime起始时间
          datetimeUpper: 2023-01-01 00:00:00    #faccesstime终止时间
          datetimeIntervalUnit: Months       #单位
          datetimeIntervalAmount: 1          #计算步长
  defaultTableStrategy:
    none:
  1. 根据上面设置,效果如下,在opm_user_access_log_login 表里记录的是登录接口访问日志,其他的记录按月记录在这些表中:opm_user_access_log_20220${1..9}, ds_0.opm_user_access_log_2022${10..12}

results matching ""

    No results matching ""

    results matching ""

      No results matching ""