pull/17608/head
fuwx 1 year ago
parent fbbfaddd85
commit 6af3f00c9b
No known key found for this signature in database
GPG Key ID: C8FA8C18DFB4702B

@ -1,4 +1,4 @@
name: Build DIFY WEB Docker Image
name: Build Dify WEB Docker Image
on:
push:

@ -14,6 +14,7 @@ from core.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_database import db
from libs.helper import alphanumeric, uuid_value
from libs.login import login_required
from libs.apo_utils import APOUtils
from services.tools.api_tools_manage_service import ApiToolManageService
from services.tools.builtin_tools_manage_service import BuiltinToolManageService
from services.tools.tool_labels_service import ToolLabelsService
@ -587,39 +588,6 @@ class APOToolBuiltinListApi(Resource):
]
)
def get_step(start_time, end_time):
time_diff = end_time - start_time
SECOND = 1000000 # microseconds
MINUTE = 60 * SECOND
HOUR = 60 * MINUTE
step = SECOND # default step is 1 second
if time_diff <= 15 * MINUTE:
step = 30 * SECOND
elif time_diff <= 30 * MINUTE:
step = 1 * MINUTE
elif time_diff <= 1 * HOUR:
step = 2 * MINUTE
elif time_diff <= 1.5 * HOUR:
step = 3 * MINUTE
elif time_diff <= 3 * HOUR:
step = 6 * MINUTE
elif time_diff <= 6 * HOUR:
step = 12 * MINUTE
elif time_diff <= 12 * HOUR:
step = 24 * MINUTE
elif time_diff <= 15 * HOUR:
step = 30 * MINUTE
elif time_diff <= 30 * HOUR:
step = 1 * HOUR
else:
step = ((time_diff + 30 * SECOND - 1) // (30 * SECOND)) * SECOND
return step
def get_url(type):
match type:
case "metric":
@ -654,7 +622,7 @@ class APOToolPreviewApi(Resource):
"params": args["params"],
"startTime": args["startTime"],
"endTime": args["endTime"],
"step": get_step(args["startTime"], args["endTime"]),
"step": APOUtils.get_step(args["startTime"], args["endTime"]),
}
resp = requests.post(url, json=json)
raw = resp.json()['result']
@ -697,7 +665,7 @@ class APOToolPreviewApi(Resource):
'anormalTypes': "app,container,infra,network,error,appInstance",
'deltaStartTime': args["startTime"],
'deltaEndTime': args["endTime"],
'step': get_step(args["startTime"], args["endTime"]),
'step': APOUtils.get_step(args["startTime"], args["endTime"]),
}
resp = requests.post(url, json=json)
raw = resp.json()

@ -7,6 +7,7 @@ import requests
from configs import dify_config
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage
from libs.apo_utils import APOUtils
class AlertTool(BuiltinTool):
@ -30,7 +31,7 @@ class AlertTool(BuiltinTool):
'anormalTypes': "app,container,infra,network,error,appInstance",
'deltaStartTime': start_time,
'deltaEndTime': end_time,
'step': self.get_step(start_time, end_time),
'step': APOUtils.get_step(start_time, end_time),
}
resp = requests.post(dify_config.APO_BACKEND_URL + '/api/alerts/descendant/anormal/delta', json=params)
list = resp.json()
@ -40,35 +41,3 @@ class AlertTool(BuiltinTool):
'data': list,
})
yield self.create_text_message(list)
def get_step(self, start_time, end_time):
time_diff = end_time - start_time
SECOND = 1000000 # microseconds
MINUTE = 60 * SECOND
HOUR = 60 * MINUTE
step = SECOND # default step is 1 second
if time_diff <= 15 * MINUTE:
step = 30 * SECOND
elif time_diff <= 30 * MINUTE:
step = 1 * MINUTE
elif time_diff <= 1 * HOUR:
step = 2 * MINUTE
elif time_diff <= 1.5 * HOUR:
step = 3 * MINUTE
elif time_diff <= 3 * HOUR:
step = 6 * MINUTE
elif time_diff <= 6 * HOUR:
step = 12 * MINUTE
elif time_diff <= 12 * HOUR:
step = 24 * MINUTE
elif time_diff <= 15 * HOUR:
step = 30 * MINUTE
elif time_diff <= 30 * HOUR:
step = 1 * HOUR
else:
step = ((time_diff + 30 * SECOND - 1) // (30 * SECOND)) * SECOND
return step

@ -14,6 +14,7 @@ description:
display:
type: alert
title: alert
uint: alert
parameters:
- name: service
type: string

@ -7,7 +7,7 @@ import requests
from configs import dify_config
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.builtin_tool.providers.utils import APOUtils
from libs.apo_utils import APOUtils
class SelectContainerCPUTool(BuiltinTool):
def _invoke(

@ -8,6 +8,7 @@ identity:
display:
type: metric
title: 基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd
uint: percent(0-100)百分比
description:
human:
en_US: Query the CPU utilization of the container

@ -7,7 +7,7 @@ import requests
from configs import dify_config
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.builtin_tool.providers.utils import APOUtils
from libs.apo_utils import APOUtils
class SelectContainerRSSTool(BuiltinTool):
def _invoke(

@ -14,6 +14,7 @@ description:
display:
type: metric
title: 基础设施情况 - 容器内存 - 容器内存使用率 - Containerd
uint: bytes 字节
parameters:
- name: pod
type: string

@ -7,7 +7,7 @@ import requests
from configs import dify_config
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.builtin_tool.providers.utils import APOUtils
from libs.apo_utils import APOUtils
class ContainerRTTTool(BuiltinTool):
def _invoke(

@ -14,6 +14,7 @@ description:
display:
type: metric
title: 基础设施情况 - 容器网络 - 与下游服务RTT
uint: s 秒
parameters:
- name: pod
type: string

@ -14,6 +14,7 @@ description:
display:
type: log
title: log
uint: log
parameters:
- name: service
type: string

@ -7,7 +7,7 @@ import requests
from configs import dify_config
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.builtin_tool.providers.utils import APOUtils
from libs.apo_utils import APOUtils
class SelectCPUTool(BuiltinTool):
def _invoke(

@ -14,6 +14,7 @@ description:
display:
type: metric
title: 宿主机监控指标 - Quick CPU / Mem / Disk - CPU Busy
uint: percent(0-100)百分比
parameters:
- name: node
type: string

@ -14,6 +14,7 @@ description:
display:
type: topology
title: topology
uint: toplogy
parameters:
- name: service
type: string

@ -320,6 +320,7 @@ class ToolDescription(BaseModel):
class APODisPlay(BaseModel):
type: str = Field(..., description="The type of the apo data display")
uint: str = Field(..., description="The unit of the apo data display")
title: str = Field(..., description="The title of the apo data display")
class ToolEntity(BaseModel):

Loading…
Cancel
Save