用户访问日志设置

场景描述

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

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

操作步骤

访问数据说明

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

设置日志插件

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

设置分库分表

  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}

补充说明

平台使用的是4.11版本的ShardingSphere

分库分表的分片算法(新版本)参考 https://github.com/apache/shardingsphere/blob/master/docs/document/content/user-manual/common-config/builtin-algorithm/sharding.cn.md

本文档示例代码中,表策略tableStrategy中的justep是在4.11版本上实现了时间范围分片算法INTERVAL,ShardingSphere 4.11版本支持的策略和算法都可以直接使用

results matching ""

    No results matching ""

    results matching ""

      No results matching ""