悦数图管理配置¶
本文介绍悦数图管理的配置。
Note
如果悦数图管理启动后修改了配置文件,需要重启悦数图管理以使更改生效。
默认配置文件¶
配置文件位置取决于安装方式:
- TAR 包:解压目录下的
etc/config.yaml。 - RPM 或 DEB 包:
/etc/nebula-studio/config.yaml。 - Docker Compose:默认使用镜像内的配置,无需准备配置文件。如需自定义配置,请按安装悦数图管理中的“自定义配置”步骤,将
config-release.yaml挂载到容器内的/app/etc/config-release.yaml。修改已挂载的文件后,在部署目录运行docker compose -f studio-compose.yaml restart studio。
RPM 和 DEB 包的其他文件位置如下,请参见 Linux 安装包说明:
| 内容 | 路径 |
|---|---|
| 程序文件 | /usr/lib/nebula-studio |
| 可选环境文件 | /etc/nebula-studio/studio.env |
| SQLite 数据库 | /var/lib/nebula-studio/studio.db |
| 应用日志 | /var/log/nebula-studio |
以下示例展示配置项。RPM 和 DEB 包请以安装后的/etc/nebula-studio/config.yaml为准,尤其不要将示例中的相对路径./data/studio.db直接覆盖包内的 SQLite 路径。
Name: studio-api
Host: 0.0.0.0
Port: 7001
Timeout: 30000
DefaultHost: '' # 可选,登录页面显示的默认数据库地址,例如 "graph0"
DefaultPort: '' # 可选,登录页面显示的默认数据库端口,例如 "9669"
Log:
Mode: file
Level: info
KeepDays: 7
Assets:
Gzip: true
Auth:
TokenName: 'studio_token'
TokenSecret: '${STUDIO_TOKEN_SECRET}'
TokenMaxAge: 86400
EncryptPassphrase: '${STUDIO_ENCRYPT_PASSPHRASE}'
# SSO 配置(可选)
SSO:
Oauth2:
Enable: false # 设置为 true 以启用 OAuth2 单点登录
ServerName: '' # OAuth2 服务端名称,必须与数据库中配置的服务端名称一致
AuthURL: '' # OAuth2 授权地址
AccessTokenURL: '' # 换取 OAuth2 Token 的地址
ClientID: '' # OAuth2 客户端 ID
ClientSecret: '' # OAuth2 客户端密钥
RedirectURL: '' # 外部可访问的图管理回调地址
UserInfoURL: '' # OIDC userinfo 接口地址
Scope: 'openid profile email' # 请求的 OAuth2 Scope
UsernameField: '' # 可选,留空时使用内置的用户名字段查找顺序
Database:
Enable: true
# 数据库类型:mysql、sqlite3
Dialect: sqlite3
AutoMigrate: true
Host: 127.0.0.1 # 数据库主机地址
Port: 3306 # 数据库端口
Username: '' # 仅 MySQL 需要配置
Password: '' # 仅 MySQL 需要配置,通过部署配置注入
Name: studio # 数据库名称
# Silent(1)、Error(2)、Warn(3)、Info(4)
LogLevel: 4
SqliteFilePath: './data/studio.db' # 仅 sqlite3 需要配置
Nebula:
ClientMaxNum: 200 # 可同时连接的不同用户的最大数量
ClientPoolMaxWait: 10 # 等待客户端连接池的最长时间;单位:秒
ClientPoolConnsMaxOpen: 100 # 单个连接池中可创建的最大连接数
ClientPoolConnsMinOpen: 1 # 单个连接池中可创建的最小连接数
ClientMaxIdleConns: 5 # 单个连接池中的最大空闲连接数
ClientExpiredDuration: 14400 # 单个客户端的过期时长,系统每 24 小时检查一次;单位:分钟
ClientRequestTimeout: 10 # 客户端连接超时时间,默认 10 秒;单位:秒
认证密钥¶
配置示例支持通过环境变量STUDIO_TOKEN_SECRET和STUDIO_ENCRYPT_PASSPHRASE注入认证密钥。这些变量名由图管理识别,值需根据部署环境设置;默认部署可以不设置。
未配置时,服务会生成随机值。使用随机值时,重启服务会使已有会话失效,用户需要重新登录。生产环境应为部署配置稳定的密钥,并在重启后保持不变。不同部署应使用各自的密钥。
STUDIO_ENCRYPT_PASSPHRASE设置后必须为 16、24 或 32 字节。
配置项¶
下表描述了悦数图管理的配置项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
Name |
日志和跟踪器中显示的服务名称。 | studio-api |
Host |
用于访问悦数图管理的监听地址。 | 0.0.0.0,表示监听所有网络接口。 |
Port |
用于访问悦数图管理的端口。 | 7001 |
Timeout |
处理请求的超时时间(毫秒)。 | 30000 |
DefaultHost |
登录页面显示的默认悦数图数据库开发版地址,可选。例如graph0。 |
"" |
DefaultPort |
登录页面显示的默认悦数图数据库开发版端口,可选。例如9669。 |
"" |
Log.Mode |
日志输出模式。 | file,表示日志输出到文件。TAR 包的日志位于解压目录的logs下,RPM 和 DEB 包的日志位于/var/log/nebula-studio。Docker Compose 默认未将日志目录挂载到宿主机;如需保留文件日志,请配置持久化存储。 |
Log.Level |
日志级别。更多信息,请参见日志配置。 | info,表示记录级别为info及更高级别的日志。 |
Log.KeepDays |
日志保留天数。 | 7 |
Assets.Gzip |
是否启用静态资源的 Gzip 压缩。 | true |
Auth.TokenName |
用于登录的认证令牌的名称。 | studio_token |
Auth.TokenSecret |
用于签名认证令牌的密钥。通过环境变量STUDIO_TOKEN_SECRET配置。 |
未设置时随机生成 |
Auth.EncryptPassphrase |
用于加密认证信息的 AES 口令。通过环境变量STUDIO_ENCRYPT_PASSPHRASE配置;设置时必须为 16、24 或 32 字节。 |
未设置时随机生成 |
Auth.TokenMaxAge |
认证令牌的有效期(秒)。 | 86400 |
Database.Enable |
是否启用用于存储悦数图管理元数据的数据库。图探索依赖该数据库;关闭后,探索快照、设置等请求将失败,并返回studio database is disabled。 |
true |
Database.Dialect |
用于存储悦数图管理元数据的数据库类型。有效值为mysql和sqlite3 |
sqlite3 |
Database.AutoMigrate |
是否自动迁移数据库模式。 | true |
Database.Host |
数据库的主机地址。 | 127.0.0.1 |
Database.Port |
数据库的端口号。 | 3306 |
Database.Username |
数据库的用户名,仅 MySQL 需要配置。 | "" |
Database.Password |
数据库用户的密码,仅 MySQL 需要配置,通过部署配置注入。 | "" |
Database.Name |
数据库的名称。 | studio |
Database.LogLevel |
数据库操作的日志级别。有效值为1(不记录日志)、2(只记录错误)、3(记录告警和错误)和4(记录信息消息、告警和错误)。 |
4 |
Database.SqliteFilePath |
SQLite 数据库的文件路径。此选项仅在Database.Dialect设置为sqlite3时生效。 |
TAR 包和 Docker 镜像为./data/studio.db;RPM 和 DEB 包位于/var/lib/nebula-studio/studio.db。 |
Nebula.ClientMaxNum |
可同时连接到服务的最大用户数。 | 200 |
Nebula.ClientPoolMaxWait |
等待客户端连接池的最长时间(秒)。 | 10 |
Nebula.ClientPoolConnsMaxOpen |
单个连接池中可创建的最大连接数。 | 100 |
Nebula.ClientPoolConnsMinOpen |
单个连接池中可创建的最小连接数。 | 1 |
Nebula.ClientMaxIdleConns |
单个连接池中的最大空闲连接数。 | 5 |
Nebula.ClientExpiredDuration |
空闲连接的过期时间(分钟)。如果客户端保持空闲状态的时间超过指定的持续时间,连接将自动终止。系统每24小时检查连接的过期状态。 | 14400 |
Nebula.ClientRequestTimeout |
客户端连接的超时时间(秒)。 | 10 |
SSO.Oauth2.Enable |
是否启用 OAuth2 单点登录。 | false |
SSO.Oauth2.ServerName |
OAuth2 服务端名称,必须与悦数图数据库开发版中配置的服务端名称一致。 | "" |
SSO.Oauth2.AuthURL |
OAuth2 授权地址。 | "" |
SSO.Oauth2.AccessTokenURL |
换取 OAuth2 Token 的地址。 | "" |
SSO.Oauth2.ClientID |
OAuth2 客户端 ID。 | "" |
SSO.Oauth2.ClientSecret |
OAuth2 客户端密钥。 | "" |
SSO.Oauth2.RedirectURL |
OAuth2 授权后外部可访问的悦数图管理回调地址。 | "" |
SSO.Oauth2.UserInfoURL |
用于获取用户名的 OIDC UserInfo 接口地址。 | "" |
SSO.Oauth2.Scope |
请求的 OAuth2 Scope。 | "openid profile email" |
SSO.Oauth2.UsernameField |
从 UserInfo 响应中提取用户名的字段。留空时,按以下内置顺序查找:preferred_username > username > login > email > sub。 |
"" |