使用Siren连接GES服务并可视化
1. 简介
Siren是基于Elasticsearch和Kibana的数据分析和可视化软件,可以针对图数据和关系数据执行多种多样的分析任务。本配置手册通过借助Siren对图数据查询语言Cypher的支持,实现了通过Siren对GES中的数据进行获取并可视化。
2. 安装前准备
名称 | 说明 |
siren-platform-no-data-no-security-10.3.1.zip | Siren 安装包,版本10.3.1 |
neo4j-jdbc-driver-3.4.0-ges-siren-10.3.1.jar | 加入GES支持的neo4j-jdbc-driver |
WinZip | 压缩&解压缩软件 |
GES Cypher JDBC服务地址 | 已经拥有GES服务,并可通过API接口进行操作 |
GES 业务面API Token | 参考8.2 如何获取业务面鉴权Token, 如果服务器没有配置鉴权或者直接连接Interface,则无需此Token |
JDK 1.8 | JDK需要1.8以上版本, 并设置JAVA_HOME环境变量 |
注:
Siren下载地址:
For windows:
For linux:
GES Cypher JDBC 服务地址:
一个完整的GES Cypher JDBC服务地址形如:
http://{SERVER_URL}:{PORT}/ges/v1.0/{projectId}/graphs/{graphName}/cypher/query
名称 | URI | 功能描述 |
GES-Cypher-JDBC服务 | POST /ges/v1.0/{projectId}/graphs/{graphName}/cypher/query | 使用Cypher查询GES图数据库,并返回结果 |
实际使用时请将{SERVER_URL},{PORT},{projectId},{graphName}替换成对应的值,各个参数的具体含义见下表。
参数说明:
参数 | 是否必选 | 类型 | 说明 |
SERVER_URL | 是 | String | GES 服务地址 |
PORT | 是 | String | 如果地址前缀为http,则PORT为80,如果为HTTPS,则PORT为443,如果服务器直接连接Interface,则PORT为8080 |
projectId | 是 | String | 项目编号,用于资源隔离。参考8.1 如何获取projectId |
graphName | 是 | String | 图名称。 |
请求样例:
POST http://{SERVER_URL}:{PORT}/ges/v1.0/{projectId}/graphs/{graphName}/cypher/query
{"statements":[{"statement":"call db.schema()","parameters":{},"resultDataContents":["row","graph"],"includeStats":true}]}
3. 配置Siren
3.1 启动前配置
步骤1 解压siren-platform-no-data-no-security-10.3.1.zip,并打开解压后的目录,可以看到docs, elasticsearch, siren-investigate 三个文件夹(注:步骤4、步骤5中的“解压后的目录”均指该目录)。
步骤2 打开elasticsearch/config目录下的elasticsearch.yml文件,添加一行:
node.attr.connector.jdbc: true
步骤3 将neo4j-jdbc-driver-3.4.0-ges-siren-10.3.1.jar拷贝到elasticsearch/config/jdbc-drivers目录下
步骤4 打开命令行,使用cd命令进入到压缩包解压后的目录下,执行以下命令启动elasticsearch
elasticsearch\bin\elasticsearch.bat
如果是windows环境,启动完毕后请不要关闭cmd
步骤5 打开命令行,使用cd命令进入到压缩包解压后的目录下,启动siren
siren-investigate\bin\investigate.bat
如果是windows环境,启动完毕后请不要关闭cmd
3.2 数据源配置
步骤1 打开http://localhost:5606/,进入Siren,地址中的5606是Siren默认的端口,localhost是启动Siren的机器
步骤2 点击右侧Management,然后点击Datasource,添加数据源
步骤3 New datasource type选择JDBC,Database Type选择Neo4j,Driver class填写org.neo4j.jdbc.http.HttpDriver, Name填写自定义的数据源名称(为了描述方便,此处填写ges),connection string为使用前缀 jdbc:eywa:,后面附上GES Cypher JDBC服务地址(connection string的格式为jdbc:eywa:http://{SERVER_URL}:{PORT}/ges/v1.0/{projectId}/graphs/{graphName}/cypher/query
)。如果服务器配置了鉴权,在JDBC Properties处点击Add parameter添加X-Auth-Token作为业务面API鉴权凭据,然后点击右上角的Save按钮保存数据源。
各字段具体细节如图所示, Database Name,Username,Password留空:
步骤4 保存后自动跳转到刚刚配置的数据源界面,点击Test connection,测试数据源连通性。如果提示JDBC datasource configuration successful, 则代表配置成功。由于GES不是关系型数据库,不通过Virtual Index和Siren建立连接,点击No, will do later。数据源配置完成。
4. 导入GES数据
4.1 创建并启动导入任务
步骤1点击Siren界面上的Data Reflections, 然后选择Reflection Job,准备添加导入任务:
步骤2 点击右上角的New新建一个导入任务。
步骤3 选择步骤3中配置的数据源名称(此处步骤3的样例中数据源名称为ges),点击Use Neo4j Importer
步骤4 等待程序读取GES中的点相关的元信息,读取完毕后如下所示。默认导入所有的点类型,在该页可删除不需要导入的顶点。点击Next进入下一步。
步骤5 确认导入任务,点击Confirm。
注意:如果点击confirm后报Error: resource_already_exists_exception,可以不用理会,再次点击confirm即可。
步骤6 等待所有任务执行完毕,然后点击continue
注意: 这一步可能出现某条边长时间runing,鼠标放在running字样上显示导入数目为0的情况。此时需要调整gremlin-server的gremlin-server.yaml文件,调整参数为如下的值,保存后重启gremlin-server和interface。
writeBufferLowWaterMark: 8388608
writeBufferHighWaterMark: 16777216
步骤7 此处可以调整点边的颜色,也可以在后续步骤中处理,点击Next
步骤8 点击Create Ontology在Siren中创建GES元数据。
步骤9 点击Go to Data Model 查看创建的GES元信息。
步骤10 点击Management-> Data model,可以查看NeoNode创建的索引。
步骤11 点击Data Model Graph,然后点击灯泡图片高亮所有的Model,可以查看Siren中存在的点类型和边类型。
5. 配置索引并创建面板
步骤1 在左侧选择一个索引,进行配置。(建议优先选择点label进行配置,而后选择边label进行配置,否则配置过程中的Dashboard显示会不正常,但不影响整体流程)
步骤2 可以定义该索引的图标、默认的label,颜色等属性。然后点击右上角Save保存。如果要更改默认Label为实体&边属性的某个字段,在Label when visualized in the graph browser下选择DocumentField,然后选择感兴趣的属性作为label。
步骤3 点击Data选项卡,可以查看该索引的数据,点击Autoselect Most Relevant。挑选感兴趣的属性(如果没有可以不选。针对边类型,不要勾选start和end;针对点类型,不要勾选id),然后点击OK
步骤4 点击Generate Dashboard,为该索引生成面板。点击Create,生成面板。
步骤5 重复步骤1-4,为左侧Searches列表下的各个索引生成面板。
6. 使用Siren Graph Browser可视化GES数据
步骤1 点击Visualize,然后点击+,选择Graph Browser创建。
步骤2 在左侧选择Add all available lens and contextual scripts,然后点击左上角的三角符号运行。
步骤3 点击“+Add”按钮,选择一个索引导入。
步骤4 选中部分点,点击Crop可以进行裁剪,点击Expand可以进行扩展。
步骤5 点击Layout对当前系统中的图重新布局。
步骤6 点击Save Graph图标,并点击Save保存该Graph,此处可以为生成的Graph起一个名字
步骤7点击Save保存该Graph Browser的配置
7. 可视化界面图标上的label配置(可选)
注意到很多图标下面的文字是索引地址,可以修改为顶点的属性使之更美观。
步骤1 点击右侧的箭头,弹出滑动菜单,为顶点添加一个Lens。
步骤2 选择lenses选项卡,点击Add a lens下拉框,选择Label from expression
步骤3 自定义一个Lens name,Entity type选择希望添加label的图标类型,点击下方的“+”号(点击之后变成“-”号),在下拉框选择希望显示的属性名称,然后在Active上打钩,并点击OK保存。
步骤4 在步骤2的下拉框中,选择Tooltip Lens,可以在Graph中显示每个点的属性,选择Graph Metric,可以显示顶点度数等。
8. FAQ
8.1 如何获取projectId
步骤 1 发送“POST https://IAM的Endpoint/v3/projects/”。
步骤 2 响应示例如下,其中projects下的“id”即为项目ID。
{
"projects": [
{
"domain_id": "65382450e8f64ac0870cd180d14e684b",
"is_domain": false,
"parent_id": "65382450e8f64ac0870cd180d14e684b",
"name": "cn-north-1",
"description": "",
"links": {
"next": null,
"previous": null,
"self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99"
},
"id": "a4a5d4098fb4474fa22cd05f897d6b99",
"enabled": true
}
],
"links": {
"next": null,
"previous": null,
"self": "https://www.example.com/v3/projects"
}
}
8.2 如何获取业务面鉴权Token
Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”参数到JDBC Properties中。
l Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。
l GES服务必须通过project的方式来获取token,不支持scope为domain的方式。
获取Token接口如下:
步骤 1 发送“POST https://IAM的Endpoint/v3/auth/tokens”。
请求头包含Content-Type字段,其值为“application/json;charset=utf8”
请求内容示例如下:
下面示例代码中的斜体字需要替换为实际内容。参数说明如下:
l username:用户名。
l password:用户登录时的密码。
l domainname:用户所属的企业账户名称。如果没有企业账户,输入用户名。
l project name:项目名称。
{
"auth": {
"identity": {
"methods": [
"password"
],
"password": {
"user": {
"name": "username",
"password": "password",
"domain": {
"name": "domainname"
}
}
}
},
"scope": {
"project": {
"name": "cn-north-1"
}
}
}
}
步骤 2 获取Token,Token位于响应的Response Header(不是Response Body)中,名为X-Subject-Token。
步骤 3 调用业务接口,在Siren配置Datasource时加入X-Auth-Token参数,参数的取值为步骤2中获取的Token。
- 点赞
- 收藏
- 关注作者
评论(0)