新增syslog-collector-api 采集模块,通过api 方式采集天眼、微步的设备日志。
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
-- =====================================================================
|
||||
-- 设备API采集模块 建表 + 测试数据脚本
|
||||
-- 适用数据库: 达梦 DM8
|
||||
-- 说明:
|
||||
-- 1. 先执行建表语句(表已存在时请先删除或忽略 DDL 部分)
|
||||
-- 2. 再执行 INSERT 测试数据
|
||||
-- 3. id 均为自增字段(IDENTITY),INSERT 无需也不允许指定 id
|
||||
-- =====================================================================
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- 1. 建表: 设备API采集配置表
|
||||
-- ---------------------------------------------------------------------
|
||||
DROP TABLE IF EXISTS device_api_collect_log;
|
||||
DROP TABLE IF EXISTS device_api_config;
|
||||
|
||||
CREATE TABLE device_api_config (
|
||||
id BIGINT IDENTITY(1,1) PRIMARY KEY,
|
||||
device_id INT, -- 设备ID,关联 device_device.id
|
||||
device_type VARCHAR(50) NOT NULL, -- 设备类型: tianyan/weibu/xdr
|
||||
device_name VARCHAR(100) NOT NULL, -- 设备名称
|
||||
device_ip VARCHAR(200) NOT NULL, -- 设备IP地址
|
||||
host_api VARCHAR(200) NOT NULL, -- 设备API URL地址
|
||||
auth_config TEXT, -- 认证配置JSON
|
||||
data_types VARCHAR(500) NOT NULL, -- 数据类型: weblog,alarm / attack,info
|
||||
collect_interval_sec INT DEFAULT 300, -- 采集间隔(秒)
|
||||
enabled INT DEFAULT 1, -- 是否启用: 0-禁用, 1-启用
|
||||
remark VARCHAR(500), -- 备注
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
COMMENT ON TABLE device_api_config IS '设备API采集配置表';
|
||||
COMMENT ON COLUMN device_api_config.id IS '主键,自增';
|
||||
COMMENT ON COLUMN device_api_config.device_id IS '设备ID,关联 device_device.id';
|
||||
COMMENT ON COLUMN device_api_config.device_type IS '设备类型: tianyan/weibu/xdr';
|
||||
COMMENT ON COLUMN device_api_config.device_name IS '设备名称';
|
||||
COMMENT ON COLUMN device_api_config.device_ip IS '设备IP地址';
|
||||
COMMENT ON COLUMN device_api_config.host_api IS '设备API URL地址';
|
||||
COMMENT ON COLUMN device_api_config.auth_config IS '认证配置JSON';
|
||||
COMMENT ON COLUMN device_api_config.data_types IS '数据类型: weblog,alarm / attack,info';
|
||||
COMMENT ON COLUMN device_api_config.collect_interval_sec IS '采集间隔(秒)';
|
||||
COMMENT ON COLUMN device_api_config.enabled IS '是否启用: 0-禁用, 1-启用';
|
||||
COMMENT ON COLUMN device_api_config.remark IS '备注';
|
||||
COMMENT ON COLUMN device_api_config.create_time IS '创建时间';
|
||||
COMMENT ON COLUMN device_api_config.update_time IS '更新时间';
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- 2. 建表: 设备API采集执行日志表
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE device_api_collect_log (
|
||||
id BIGINT IDENTITY(1,1) PRIMARY KEY,
|
||||
device_id INT NOT NULL, -- 设备ID,关联 device_device.id
|
||||
device_type VARCHAR(50) NOT NULL, -- 设备类型
|
||||
data_type VARCHAR(50) NOT NULL, -- 数据类型
|
||||
start_time TIMESTAMP NOT NULL, -- 采集窗口开始时间
|
||||
end_time TIMESTAMP NOT NULL, -- 采集窗口结束时间
|
||||
total_count INT DEFAULT 0, -- 采集记录总数
|
||||
success_count INT DEFAULT 0, -- 成功写入数
|
||||
fail_count INT DEFAULT 0, -- 失败数
|
||||
cost_ms BIGINT DEFAULT 0, -- 耗时(毫秒)
|
||||
status VARCHAR(20) NOT NULL, -- 状态: SUCCESS/FAIL
|
||||
error_msg TEXT, -- 错误信息
|
||||
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
COMMENT ON TABLE device_api_collect_log IS '设备API采集执行日志';
|
||||
COMMENT ON COLUMN device_api_collect_log.id IS '主键,自增';
|
||||
COMMENT ON COLUMN device_api_collect_log.device_id IS '设备ID,关联 device_device.id';
|
||||
COMMENT ON COLUMN device_api_collect_log.device_type IS '设备类型';
|
||||
COMMENT ON COLUMN device_api_collect_log.data_type IS '数据类型';
|
||||
COMMENT ON COLUMN device_api_collect_log.start_time IS '采集窗口开始时间';
|
||||
COMMENT ON COLUMN device_api_collect_log.end_time IS '采集窗口结束时间';
|
||||
COMMENT ON COLUMN device_api_collect_log.total_count IS '采集记录总数';
|
||||
COMMENT ON COLUMN device_api_collect_log.success_count IS '成功写入数';
|
||||
COMMENT ON COLUMN device_api_collect_log.fail_count IS '失败数';
|
||||
COMMENT ON COLUMN device_api_collect_log.cost_ms IS '耗时(毫秒)';
|
||||
COMMENT ON COLUMN device_api_collect_log.status IS '状态: SUCCESS/FAIL';
|
||||
COMMENT ON COLUMN device_api_collect_log.error_msg IS '错误信息';
|
||||
COMMENT ON COLUMN device_api_collect_log.create_time IS '创建时间';
|
||||
|
||||
-- =====================================================================
|
||||
-- 3. 测试数据: 设备API采集配置表(id 自增,不插入)
|
||||
-- 覆盖: 天眼(启用/停用)、微步(启用)、XDR(暂缓停用)
|
||||
-- =====================================================================
|
||||
INSERT INTO device_api_config
|
||||
(device_id, device_type, device_name, device_ip, host_api, auth_config, data_types,
|
||||
collect_interval_sec, enabled, remark, create_time, update_time)
|
||||
VALUES
|
||||
-- 天眼-主设备(启用,采集 weblog+alarm)
|
||||
(35, 'tianyan', '天眼态势感知平台', '10.56.170.107',
|
||||
'https://10.56.170.107',
|
||||
'{"login_key":"QuJm4NwF3GMaXb2Z","username":"xxadmin","branch_id":"QbJK%2FsLHi"}',
|
||||
'weblog,alarm', 300, 1, '生产环境天眼主采集器',
|
||||
'2026-08-27 09:00:00', '2026-08-27 09:00:00'),
|
||||
-- 天眼-备设备(停用,仅测试)
|
||||
(102, 'tianyan', '天眼态势感知平台-备', '10.56.170.107',
|
||||
'https://10.56.170.107',
|
||||
'{"login_key":"QuJm4NwF3GMaXb2Z","username":"xxadmin","branch_id":"QbJK%2FsLHi"}',
|
||||
'weblog', 600, 0, '备用采集器,暂未启用',
|
||||
'2026-08-27 09:05:00', '2026-08-27 09:05:00'),
|
||||
-- 微步-TDP(启用,采集 attack+info)
|
||||
(36, 'weibu', '微步威胁感知平台', '10.56.171.164',
|
||||
'https://10.56.171.164',
|
||||
'{"api_key":"57d8fb2b556a471ea36b8b4441fa1c0c","secret":"9d967876f51d4e16bbf8bde069d12a9b"}',
|
||||
'attack,info', 300, 1, '生产环境微步采集器',
|
||||
'2026-08-27 09:10:00', '2026-08-27 09:10:00'),
|
||||
-- XDR(暂缓,联动码待联调)
|
||||
(104, 'xdr', '深信服XDR平台', '192.168.30.31',
|
||||
'https://192.168.30.31',
|
||||
'{"auth_code":"<待联调时填入14段联动码>"}',
|
||||
'alert', 300, 0, 'XDR采集暂缓,待联动码解码联调后启用',
|
||||
'2026-08-27 09:15:00', '2026-08-27 09:15:00');
|
||||
|
||||
-- =====================================================================
|
||||
-- 4. 测试数据: 设备API采集执行日志表(id 自增,不插入)
|
||||
-- 覆盖: 成功、失败、不同设备/类型
|
||||
-- =====================================================================
|
||||
INSERT INTO device_api_collect_log
|
||||
(device_id, device_type, data_type, start_time, end_time,
|
||||
total_count, success_count, fail_count, cost_ms, status, error_msg, create_time)
|
||||
VALUES
|
||||
-- 天眼 weblog 采集成功
|
||||
(101, 'tianyan', 'weblog',
|
||||
'2026-08-27 08:55:00', '2026-08-27 09:00:00',
|
||||
1280, 1280, 0, 3265, 'SUCCESS', NULL,
|
||||
'2026-08-27 09:00:00'),
|
||||
-- 天眼 alarm 采集成功
|
||||
(101, 'tianyan', 'alarm',
|
||||
'2026-08-27 08:55:00', '2026-08-27 09:00:00',
|
||||
36, 36, 0, 1240, 'SUCCESS', NULL,
|
||||
'2026-08-27 09:00:00'),
|
||||
-- 微步 attack 采集成功(含少量失败)
|
||||
(103, 'weibu', 'attack',
|
||||
'2026-08-27 08:55:00', '2026-08-27 09:00:00',
|
||||
520, 518, 2, 1890, 'SUCCESS', '2条消息Kafka推送失败',
|
||||
'2026-08-27 09:00:00'),
|
||||
-- 微步 info 采集失败(模拟接口超时)
|
||||
(103, 'weibu', 'info',
|
||||
'2026-08-27 08:55:00', '2026-08-27 09:00:00',
|
||||
0, 0, 0, 30050, 'FAIL', 'searchBySql接口请求超时: read timed out',
|
||||
'2026-08-27 09:00:00'),
|
||||
-- XDR(停用状态,无采集记录; 以下为历史参考记录)
|
||||
(104, 'xdr', 'alert',
|
||||
'2026-08-26 09:00:00', '2026-08-26 09:05:00',
|
||||
0, 0, 0, 150, 'FAIL', 'XDR采集器暂缓,待联动码解码与签名接口联调后实现',
|
||||
'2026-08-26 09:05:00');
|
||||
|
||||
-- =====================================================================
|
||||
-- 5. 校验查询(可选执行)
|
||||
-- =====================================================================
|
||||
-- 查询启用中的采集配置
|
||||
-- SELECT id, device_type, device_name, data_types, collect_interval_sec
|
||||
-- FROM device_api_config
|
||||
-- WHERE enabled = 1;
|
||||
|
||||
-- 查询最近采集日志
|
||||
-- SELECT device_type, data_type, total_count, success_count, fail_count,
|
||||
-- status, error_msg, create_time
|
||||
-- FROM device_api_collect_log
|
||||
-- ORDER BY id DESC;
|
||||
@@ -0,0 +1,93 @@
|
||||
-- =====================================================================
|
||||
-- Mock 服务器功能测试配置脚本
|
||||
-- 将天眼/微步的 host_api 指向本地 Mock 接口(复用 8290 端口,路径区分)
|
||||
--
|
||||
-- 前置条件:
|
||||
-- 1. application.properties 中 mock.server.enabled=true
|
||||
-- 2. 应用运行在 127.0.0.1:8290(context-path=/collectorapi)
|
||||
--
|
||||
-- 采集器 host 拼接规则: host_api + 接口路径
|
||||
-- 天眼: http://127.0.0.1:8290/collectorapi/mock/tianyan + /skyeye/v1/admin/auth ...
|
||||
-- 微步: http://127.0.0.1:8290/collectorapi/mock/weibu + /api/v1/log/searchBySql ...
|
||||
--
|
||||
-- 使用说明:
|
||||
-- 执行本脚本前,请先恢复生产 host_api(执行恢复语句);
|
||||
-- 测试完成后务必执行"恢复生产配置"部分,避免误连生产。
|
||||
-- =====================================================================
|
||||
|
||||
-- =====================================================================
|
||||
-- 1. 切换到本地 Mock 地址
|
||||
-- =====================================================================
|
||||
-- 天眼-主设备(101): weblog+alarm
|
||||
UPDATE device_api_config
|
||||
SET host_api = 'http://127.0.0.1:8290/collectorapi/mock/tianyan',
|
||||
enabled = 1,
|
||||
remark = '【功能测试】连接本地Mock,生产地址10.56.170.107',
|
||||
update_time = SYSDATE
|
||||
WHERE id = 101;
|
||||
|
||||
-- 天眼-备设备(102): weblog(启用用于并行测试)
|
||||
UPDATE device_api_config
|
||||
SET host_api = 'http://127.0.0.1:8290/collectorapi/mock/tianyan',
|
||||
enabled = 1,
|
||||
remark = '【功能测试】连接本地Mock,生产地址10.56.170.107',
|
||||
update_time = SYSDATE
|
||||
WHERE id = 102;
|
||||
|
||||
-- 微步-TDP(103): attack+info
|
||||
UPDATE device_api_config
|
||||
SET host_api = 'http://127.0.0.1:8290/collectorapi/mock/weibu',
|
||||
enabled = 1,
|
||||
remark = '【功能测试】连接本地Mock,生产地址10.56.171.164',
|
||||
update_time = SYSDATE
|
||||
WHERE id = 103;
|
||||
|
||||
-- =====================================================================
|
||||
-- 2. 手动触发测试(执行后可手工调用,也可等待定时调度)
|
||||
-- 天眼 weblog: curl -X POST "http://127.0.0.1:8290/collectorapi/api/collect/trigger?id=101&dataType=weblog&minutes=60"
|
||||
-- 天眼 alarm: curl -X POST "http://127.0.0.1:8290/collectorapi/api/collect/trigger?id=101&dataType=alarm&minutes=60"
|
||||
-- 微步 attack: curl -X POST "http://127.0.0.1:8290/collectorapi/api/collect/trigger?id=103&dataType=attack&minutes=60"
|
||||
-- 微步 info: curl -X POST "http://127.0.0.1:8290/collectorapi/api/collect/trigger?id=103&dataType=info&minutes=60"
|
||||
-- 全部类型: curl -X POST "http://127.0.0.1:8290/collectorapi/api/collect/trigger?id=101&minutes=60"
|
||||
-- =====================================================================
|
||||
|
||||
-- =====================================================================
|
||||
-- 3. 模拟异常场景(通过 Mock 接口场景参数,无需改库)
|
||||
-- 天眼 csrf过期: GET "http://127.0.0.1:8290/collectorapi/mock/tianyan/skyeye/v1/analysis/log-search/list?index=weblog&offset=1&limit=100&start_time=xxx&end_time=xxx&mock_scenario=csrf_expired"
|
||||
-- 天眼 空数据: ...&mock_scenario=empty
|
||||
-- 微步 签名错误: POST "http://127.0.0.1:8290/collectorapi/mock/weibu/api/v1/log/searchBySql?api_key=xxx&auth_timestamp=xxx&sign=xxx&mock_scenario=sign_error"
|
||||
-- =====================================================================
|
||||
|
||||
-- =====================================================================
|
||||
-- 4. 恢复生产配置(测试完成后务必执行!)
|
||||
-- =====================================================================
|
||||
-- UPDATE device_api_config
|
||||
-- SET host_api = 'https://10.56.170.107',
|
||||
-- remark = '生产环境天眼主采集器',
|
||||
-- update_time = SYSDATE
|
||||
-- WHERE id = 101;
|
||||
--
|
||||
-- UPDATE device_api_config
|
||||
-- SET host_api = 'https://10.56.170.107',
|
||||
-- remark = '备用采集器,暂未启用',
|
||||
-- update_time = SYSDATE
|
||||
-- WHERE id = 102;
|
||||
--
|
||||
-- UPDATE device_api_config
|
||||
-- SET host_api = 'https://10.56.171.164',
|
||||
-- remark = '生产环境微步采集器',
|
||||
-- update_time = SYSDATE
|
||||
-- WHERE id = 103;
|
||||
|
||||
-- =====================================================================
|
||||
-- 5. 校验查询
|
||||
-- =====================================================================
|
||||
-- SELECT id, device_type, device_name, host_api, data_types, enabled, remark
|
||||
-- FROM device_api_config
|
||||
-- ORDER BY id;
|
||||
|
||||
-- SELECT device_type, data_type, total_count, success_count, fail_count,
|
||||
-- status, error_msg, create_time
|
||||
-- FROM device_api_collect_log
|
||||
-- ORDER BY id DESC
|
||||
-- FETCH FIRST 10 ROWS ONLY;
|
||||
Reference in New Issue
Block a user