梅州终端信息采集

xzc b8dde7f56d second commit 1 年之前
V1 b8dde7f56d second commit 1 年之前
V2 b8dde7f56d second commit 1 年之前
README.md b8dde7f56d second commit 1 年之前
compose.yaml b8dde7f56d second commit 1 年之前

README.md

梅州电网IT终端行为采集分析

环境

docker 23.02
python 3.7
rocketmq 5.1.4
rocketmq-client-python 2.0.0
dmPython 2.5.5

数据库安装

docker load -i dm8_20230808_rev197096_x86_rh6_64_single.tar

docker run -d -p 30236:5236 \
    --name dm8_test \
    --privileged=true \
    -e PAGE_SIZE=16 \
    -e LD_LIBRARY_PATH=/opt/dmdbms/bin \
    -e EXTENT_SIZE=32 \
    -e BLANK_PAD_MODE=1 \
    -e LOG_SIZE=1024 \
    -e UNICODE_FLAG=1 \
    -e LENGTH_IN_CHAR=1 \
    -e INSTANCE_NAME=dm8_test \
    -v /data/dm8_test:/opt/dmdbms/data \
    dm8_single:dm8_20230808_rev197096_x86_rh6_64

原则:

  1. 浏览器插件数据传到服务器前存在缓存时间,日志记录的时间以前端记录时间为准

  2. 时间片最小单位为 1s(单个用户在一秒内操作的频率不大于一)

  3. 时间片内的多次网络请求可以合并为一个用户操作(由原则一推理得出)

  4. 用户操作不可划分(由原则二推理得出)

  5. 业务操作由多个用户操作组成

  6. 底级菜单不完全等于业务操作

流式日志

用户操作的域(完成)

根据 Host 判断

用户操作菜单(完成)

根据 current_Url 切分判断 根据 form_data 切分判断

判断用户登录系统起始时间和结束时间

如果当前 url 在 10 分钟内变化率小于 5,则判断为登出状态 如果 tSession 变化,则判断为登出状态

判断业务进入和完成时间

判断当前 url 和 target_url

一般页面跳转条件判断: 1、设定全局 Url 2、当前 current_Url 与全局 Url 不一致 3、日志中找到最近一条 请求地址 和当前 current_Url 相同的日志 4、该日志为页面跳转点击时间发生记录 无法判断的情况: 1、Ajax页面请求,URL不变 2、请求的url和最终显示的url不完全相同(去除session,去除cookie,如何判断是否可删?) 3、去除query不可行,页面的区分度就为query字段

业务项起始条件判断: 1、可以判断请求业务目录的起始时间(由请求参数解析),但无法判断是否开始执行具体业务 2、期间多次页面跳转发生 3、URL三级标题发生变化,业务目录终止 无法判断的情况: 1、Ajax页面的业务目录由表单体现,无法完成页面跳转判断 2、前端插件暂时无法判断请求是否由人工点击按钮产生(判断表单是否是人工提交困难,行为路径需判断人工提交表单的标志)

用户操作流程

根据 业务进入和完成时间 的结果进行统计

用户其他设备操作(暂无技术方案)

FROM python:3.8.10-alpine

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories

RUN apk add linux-headers build-base cmake automake autoconf libtool bzip2-dev zlib-dev boost-dev 

ADD 2.1.0.tar.gz /workspace

WORKDIR /workspace

RUN ./build.sh
FROM python:3.8.10-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk add build-base py3-grpcio