Dify 控制台上可以为各个应用配置监控并接入云监控可观测,但缺乏批量配置监控的能力。本文介绍如何通过调用接口自动化批量配置 Dify 应用的阿里云可观测监控。
背景
整体方案流程是通过模拟 Dify 控制台操作,使用 HTTP API 实现批量配置:
获取登录态:调用登录接口获取认证 Token。
获取应用列表:获取租户下所有应用信息。
检查应用监控配置:查询应用当前的监控配置状态。
配置阿里云监控:为应用创建阿里云可观测配置。
启用监控开关:开启应用监控。
若从 Dify 源码部署并做二次开发,也可参考上述流程和 Dify ext_commands.py 中的现有运维命令,用 Click Command 实现批量配置。
API 批量配置流程
步骤一:登录认证
调用 Dify 登录接口进行身份认证,获取租户的登录态 Token 信息。
接口:POST {base_url}/console/api/login
请求参数
{
"email": "your_account@example.com",
"password": "your_password",
"remember_me": false
}响应
{
"result": "success"
}Set-Cookie: access_token=<JWT>; HttpOnly; Max-Age=3600
Set-Cookie: refresh_token=<random>; HttpOnly; Max-Age=2592000
Set-Cookie: csrf_token=<JWT>; Max-Age=3600响应中的关键信息
Cookie | 用途 |
| API 认证凭证 |
| access_token 续期凭证 |
| CSRF 凭证 |
后续请求
在请求 Header 中设置:
Cookie: access_token=xxx; refresh_token=xxx; csrf_token=xxx
X-CSRF-Token: <csrf_token>如果使用带 Session 功能的库,通常会自动管理 Cookie,此时在 Header 中添加 X-CSRF-Token 即可。
步骤二:获取应用列表
获取当前租户下的所有应用信息。
接口:GET {base_url}/console/api/apps
请求参数
参数 | 类型 | 默认值 | 说明 |
| int | 1 | 页码(从 1 开始) |
| int | 20 | 每页数量(1-100) |
| string | "all" | 应用类型过滤 |
| string | - | 应用名称搜索 |
分页说明:
通过返回的
has_more字段判断是否有下一页。获取所有应用需循环请求,直到响应中的
has_more为false。
响应
{
"page": 1,
"limit": 20,
"total": 100,
"has_more": true,
"data": [
{
"id": "app-uuid",
"name": "应用名称",
"mode": "workflow",
"description": "应用描述",
"icon": "",
"icon_type": "emoji",
"created_at": 1234567890,
"updated_at": 1234567890,
"model_config": { /* 模型配置 */ },
"workflow": { /* workflow 配置 */ },
"tags": []
}
]
}关键字段说明:
id: 应用标识(后续配置监控步骤需要)。name: 应用名称(后续配置监控的 app_name 需要)。
步骤三:检查应用监控配置
获取指定应用当前的监控配置状态,未配置监控才进行后续步骤。
接口:GET {base_url}/console/api/apps/{app_id}/trace
请求参数
app_id: 应用 ID(从步骤二:获取应用列表获取)。
响应
{
"enabled": false,
"tracing_provider": null
}{
"enabled": true,
"tracing_provider": "aliyun"
}字段说明:
enabled: 是否已启用监控(boolean)。tracing_provider: 监控提供商名称(string)。
步骤四:配置阿里云监控
为应用创建阿里云可观测监控配置。
接口:POST {base_url}/console/api/apps/{app_id}/trace-config
请求参数
{
"tracing_provider": "aliyun",
"tracing_config": {
"app_name": "xxx",
"license_key": "your_aliyun_license_key",
"endpoint": "http://tracing-analysis-dc-bj.aliyuncs.com"
}
}字段说明
字段 | 说明 |
| 固定为 |
| 阿里云应用名称。批量配置时不能填相同名称,相同名称会被视为同一个可观测应用。可以使用 |
| 阿里云 License Key,可通过DescribeTraceLicenseKey - 列出LicenseKey获取。 |
| 阿里云上报端点,参考服务接入点。 |
响应
{
"result": "success"
}Dify 的某些版本里如果执行了创建应用配置,但未开启配置开关,控制台监控项显示会异常,启用监控开关后会恢复。
步骤五:启用监控开关
配置完成后需要启用监控开关才会生效。
接口:POST {base_url}/console/api/apps/{app_id}/trace
请求参数
{
"enabled": true,
"tracing_provider": "aliyun"
}字段 | 类型 | 说明 |
| boolean | 是否启用监控(true/false) |
| string | 监控提供商名称(aliyun) |
响应
{
"result": "success"
}