From 5394a713eb3add8f2ad2a661200649e201b80caa Mon Sep 17 00:00:00 2001 From: lxd1190 Date: Tue, 30 Oct 2018 14:35:18 +0800 Subject: [PATCH 1/2] docs(install): modify django setup --- docs/install.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/install.md b/docs/install.md index 55fd172..ccc5956 100644 --- a/docs/install.md +++ b/docs/install.md @@ -106,11 +106,8 @@ export PYTHONPATH=/data/Metis:$PYTHONPATH 为了保证下次登陆可以导入环境变量,请将环境变量配置写入服务器的`/etc/profile`文件中 -### 1.3.4. 部署Django服务端 -部署生产环境时可通过nginx和uwsgi部署,具体请参考对应官网说明 - -### 1.3.5. 启动服务端 +### 1.3.4. 启动服务端 启动服务端程序 @@ -118,6 +115,8 @@ export PYTHONPATH=/data/Metis:$PYTHONPATH python /data/Metis/app/controller/manage.py runserver {ip}:{port} ``` +此启动模式为Django的调试模式。如果需要部署生产环境,可通过nginx和uwsgi部署,具体请参考对应官网说明 + ## 1.4. WEB管理端环境安装 ### 1.4.1. Node.js安装 From 9cdb1926905365cbcc5b3a9a0e2577a339a26a9a Mon Sep 17 00:00:00 2001 From: waywang Date: Wed, 31 Oct 2018 10:32:31 +0800 Subject: [PATCH 2/2] docs(usercase): modify docs --- docs/images/time_series_detector.png | Bin 0 -> 49106 bytes docs/usecase.md | 33 ++++++++++++++++----------- 2 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 docs/images/time_series_detector.png diff --git a/docs/images/time_series_detector.png b/docs/images/time_series_detector.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe5345c5fb51c26397b0e20b3ad4634b06fef2a GIT binary patch literal 49106 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 eA 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 V*<3r`1R)&wr>dx_P>eKv_CIe49;^TW literal 0 HcmV?d00001 diff --git a/docs/usecase.md b/docs/usecase.md index 281a005..8431bab 100644 --- a/docs/usecase.md +++ b/docs/usecase.md @@ -1,18 +1,30 @@ +## 学件 +“学件”(Learnware)一词由南京大学周志华老师原创,学件(Learnware) = 模型(model) + 规约(specification),具有可重用、可演进、可了解的特性。 +很多人可能在自己的应用中已经建立了类似的模型,他们也很愿意找到一个地方把这些模型分享出去。这样一来,一个新用户想要应用,也许不用自己去建立一个,而是先到“学件”市场上找一找有没有合适的,拿来直接或修改后使用。学件基于专家基础上建立,所以比较容易得到专家级的结果,又因为共享出来的是模型,所以避免了数据泄露和隐私泄露的问题。 -## 使用场景 +## 运维学件 +“运维学件”也称为AI运维组件,类似程序中的API或公共库,但API及公共库不含具体业务数据,只是某种算法或者逻辑,而AI运维组件,则是在类似API的基础上,兼具对某个运维场景智能化解决的“记忆”能力,将处理这个场景的智能规则保存在了这个组件中。 +这个智能规则是在一定量的数据下学习而来的,且具有“可重用”,“可演进”,“可了解”的特性,既可共享由专家利用数据训练的算法模型,又可保护数据和隐私。 -时间序列异常检测学件经过海量监控数据打磨,在异常检测和运维监控领域具有广泛的应用性。 +## 应用案例场景 + +时间序列异常检测学件经过海量监控数据打磨,在异常检测和运维监控告警领域具有广泛的应用性。 + +![time_series_detector](images/time_series_detector.png) ### 功能特性 时间序列异常检测学件: -* 异常检测:时间序列的异常检测 -* 特征提取:提供时间序列统计、拟合、分类特征的提取功能 -* 异常查询:可对检测到的异常视图进行管理 -* 标注打标:可进行异常的标注和取消标注,标注结果为正负样本 -* 样本管理:提供样本库的管理能力,查询、编辑、上传、导出、删除 -* 模型管理:提供训练模型功能和训练任务管理 +* 异常检测API:提供率值检测和量值检测API接口,对时间序列进行检测 + +时间序列异常检测学件支撑系统: + +* 特征提取:提供三类特征(统计特征、拟合特征、分类特征)的提取功能,特征维度90+;支持增加自定义特征 +* 异常查询:经API检测后的时间序列(仅异常)入库存储,提供管理功能,分页查询、检索、放缩等 +* 标注打标:提供标注打标的功能,标记/取消标记为正负样本,标记后样本自动转存样本库 +* 样本管理:提供样本管理功能,检索、图示、编辑、删除,导入等功能 +* 模型管理:提供模型管理功能,支持自定义模型训练 ### 应用数据场景 @@ -20,8 +32,3 @@ * 应用程序数据:适用于检测应用程序运行中记录的时序数据,例如读写量、调用量、自定义监控指标等。 * KPI指标数据:适用于检测业务KPI数据,例如交易量、收入值、在线数、成功率、失败量等业务关键指标。 -### 应用案例场景 - -* 监控告警:可取代传统阈值监控方式,智能检测时序数据的异常。 -* 关联分析:可通过分析检测结果的关联性和根源性,实现异常精准定位。 -* 影响评估:可检测出大范围故障或网络波动,在故障发生时评估出故障影响。 \ No newline at end of file