diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml index 68f09f70fb..6917be49ca 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/alert.yaml @@ -18,7 +18,7 @@ display: parameters: - name: service type: string - required: true + required: false label: en_US: service zh_Hans: service @@ -31,7 +31,7 @@ parameters: form: llm - name: endpoint type: string - required: true + required: false label: en_US: endpoint zh_Hans: endpoint diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_total.yaml index 4a970f8411..9465efbeb6 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_total.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_total.yaml @@ -16,7 +16,7 @@ display: parameters: - name: cluster type: string - required: False + required: false label: en_US: Cluster name zh_Hans: 集群名称 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.py new file mode 100644 index 0000000000..6e86f9a1bb --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterCpuUsageLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - CPU使用量 - Real Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.yaml new file mode 100644 index 0000000000..f7438b347e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_cpu_usage_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: 实时集群CPU使用核数 + author: APO + label: + en_US: Real-time cluster CPU cores usage + zh_Hans: 实时集群CPU使用核数 +description: + human: + en_US: Real-time cluster CPU cores usage + zh_Hans: 实时集群CPU使用核数 + llm: Real-time cluster CPU cores usage +display: + type: metric + title: 集群总览 - 总览 - CPU使用量 - Real Linux + unit: "core" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_total.yaml index d82bbe471e..2b7facab32 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_total.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_total.yaml @@ -16,7 +16,7 @@ display: parameters: - name: cluster type: string - required: False + required: false label: en_US: Cluster name zh_Hans: 集群名称 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage.yaml index ba8f3eb24f..5e40635047 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage.yaml @@ -16,7 +16,7 @@ display: parameters: - name: cluster type: string - required: False + required: false label: en_US: Cluster name zh_Hans: 集群名称 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.py new file mode 100644 index 0000000000..15316f7636 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterMemoryUsageLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 内存使用量 - Real Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.yaml new file mode 100644 index 0000000000..cefa7ac35b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: 实时集群内存使用字节数 + author: APO + label: + en_US: Real-time cluster memory usage in bytes + zh_Hans: 实时集群内存使用字节数 +description: + human: + en_US: Real-time cluster memory usage in bytes + zh_Hans: 实时集群内存使用字节数 + llm: Real-time cluster memory usage in bytes +display: + type: metric + title: 集群总览 - 总览 - 内存使用量 - Real Linux + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_real_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_real_linux.yaml index 8d3f2ac5d0..7dccc1b259 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_real_linux.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_memory_usage_real_linux.yaml @@ -16,7 +16,7 @@ display: parameters: - name: cluster type: string - required: False + required: false label: en_US: Cluster name zh_Hans: 集群名称 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_namespace_count.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_namespace_count.yaml index de700c2a74..584190da12 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_namespace_count.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_namespace_count.yaml @@ -16,7 +16,7 @@ display: parameters: - name: cadvisor_job_name type: string - required: False + required: false label: en_US: cAdvisor job name zh_Hans: cAdvisor任务名称 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.py new file mode 100644 index 0000000000..b06f2c776a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNetworkReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 集群整体网络带宽(按设备统计) - 接收', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.yaml new file mode 100644 index 0000000000..e25b6c7b57 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_receive_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 集群网络接收带宽(按设备统计,排除虚拟设备) + author: APO + label: + en_US: Cluster network receive bandwidth (by device, excluding virtual devices) + zh_Hans: 集群网络接收带宽(按设备统计,排除虚拟设备) +description: + human: + en_US: Cluster network receive bandwidth (by device, excluding virtual devices) + zh_Hans: 集群网络接收带宽(按设备统计,排除虚拟设备) + llm: Cluster network receive bandwidth (by device, excluding virtual devices) +display: + type: metric + title: 集群总览 - 总览 - 集群整体网络带宽(按设备统计) - 接收 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.py new file mode 100644 index 0000000000..690d7bcd89 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNetworkTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 集群整体网络带宽(按设备统计) - 发送', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.yaml new file mode 100644 index 0000000000..246a0cd0b9 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_network_transmit_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 集群网络发送带宽(按设备统计,排除虚拟设备) + author: APO + label: + en_US: Cluster network transmit bandwidth (by device, excluding virtual devices) + zh_Hans: 集群网络发送带宽(按设备统计,排除虚拟设备) +description: + human: + en_US: Cluster network transmit bandwidth (by device, excluding virtual devices) + zh_Hans: 集群网络发送带宽(按设备统计,排除虚拟设备) + llm: Cluster network transmit bandwidth (by device, excluding virtual devices) +display: + type: metric + title: 集群总览 - 总览 - 集群整体网络带宽(按设备统计) - 发送 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.py new file mode 100644 index 0000000000..1d28d2f83a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeCpuThrottleSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点CPU限流时长', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.yaml new file mode 100644 index 0000000000..18790ca93e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_cpu_throttle_seconds.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点CPU限流时长 + author: APO + label: + en_US: Node CPU throttling time + zh_Hans: 节点CPU限流时长 +description: + human: + en_US: Node CPU throttling time + zh_Hans: 节点CPU限流时长 + llm: Node CPU throttling time +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点CPU限流时长 + unit: "s" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.py new file mode 100644 index 0000000000..dcd43134be --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeLoopbackReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Received bytes in', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.yaml new file mode 100644 index 0000000000..3a30f0f7b5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_receive_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点回环网络接收带宽, 仅回环设备 + author: APO + label: + en_US: Node loopback network receive bandwidth (loopback devices only) + zh_Hans: 节点回环网络接收带宽, 仅回环设备 +description: + human: + en_US: Node loopback network receive bandwidth (loopback devices only) + zh_Hans: 节点回环网络接收带宽, 仅回环设备 + llm: Node loopback network receive bandwidth (loopback devices only) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Received bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.py new file mode 100644 index 0000000000..688bd5fced --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeLoopbackTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Transmitted bytes in', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.yaml new file mode 100644 index 0000000000..98eee7af16 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_loopback_transmit_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点回环网络发送带宽, 仅回环设备 + author: APO + label: + en_US: Node loopback network transmit bandwidth (loopback devices only) + zh_Hans: 节点回环网络发送带宽, 仅回环设备 +description: + human: + en_US: Node loopback network transmit bandwidth (loopback devices only) + zh_Hans: 节点回环网络发送带宽, 仅回环设备 + llm: Node loopback network transmit bandwidth (loopback devices only) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Transmitted bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.py new file mode 100644 index 0000000000..290f16a1c5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeNetworkReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量 - 接收', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.yaml new file mode 100644 index 0000000000..47bfb3ea2d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络接收带宽 + author: APO + label: + en_US: Node network receive bandwidth + zh_Hans: 节点网络接收带宽 +description: + human: + en_US: Node network receive bandwidth + zh_Hans: 节点网络接收带宽 + llm: Node network receive bandwidth +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量 - 接收 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.py new file mode 100644 index 0000000000..e09c609f9b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeNetworkReceiveExclVirtualBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Received bytes in', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.yaml new file mode 100644 index 0000000000..21c00fb7f7 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_receive_excl_virtual_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络接收带宽(排除虚拟和回环设备) + author: APO + label: + en_US: Node network receive bandwidth (excluding virtual and loopback devices) + zh_Hans: 节点网络接收带宽(排除虚拟和回环设备) +description: + human: + en_US: Node network receive bandwidth (excluding virtual and loopback devices) + zh_Hans: 节点网络接收带宽(排除虚拟和回环设备) + llm: Node network receive bandwidth (excluding virtual and loopback devices) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Received bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.py new file mode 100644 index 0000000000..c1522b64c1 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeNetworkTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量 - 发送', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.yaml new file mode 100644 index 0000000000..abf8f8227e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络发送带宽 + author: APO + label: + en_US: Node network transmit bandwidth + zh_Hans: 节点网络发送带宽 +description: + human: + en_US: Node network transmit bandwidth + zh_Hans: 节点网络发送带宽 + llm: Node network transmit bandwidth +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量 - 发送 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.py new file mode 100644 index 0000000000..f5e0428355 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterNodeNetworkTransmitExclVirtualBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Transmitted bytes in', + 'params': { + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.yaml new file mode 100644 index 0000000000..9b97b80059 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_node_network_transmit_excl_virtual_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络发送带宽(排除虚拟和回环设备) + author: APO + label: + en_US: Node network transmit bandwidth (excluding virtual and loopback devices) + zh_Hans: 节点网络发送带宽(排除虚拟和回环设备) +description: + human: + en_US: Node network transmit bandwidth (excluding virtual and loopback devices) + zh_Hans: 节点网络发送带宽(排除虚拟和回环设备) + llm: Node network transmit bandwidth (excluding virtual and loopback devices) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Transmitted bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.py new file mode 100644 index 0000000000..182240cffc --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterOverviewCpuUtilizationLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 集群总CPU使用率 - Real Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.yaml new file mode 100644 index 0000000000..ad7591db20 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_cpu_utilization_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: 实时集群CPU使用率 + author: APO + label: + en_US: Real-time cluster CPU utilization rate + zh_Hans: 实时集群CPU使用率 +description: + human: + en_US: Real-time cluster CPU utilization rate + zh_Hans: 实时集群CPU使用率 + llm: Real-time cluster CPU utilization rate +display: + type: metric + title: 集群总览 - 总览 - 集群总CPU使用率 - Real Linux + unit: "percentunit" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.py new file mode 100644 index 0000000000..220efd400a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterOverviewMemoryUtilizationLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 集群总内存使用率 - Real Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.yaml new file mode 100644 index 0000000000..2b545d9585 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_memory_utilization_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: 实时集群内存使用率 + author: APO + label: + en_US: Real-time cluster memory utilization rate + zh_Hans: 实时集群内存使用率 +description: + human: + en_US: Real-time cluster memory utilization rate + zh_Hans: 实时集群内存使用率 + llm: Real-time cluster memory utilization rate +display: + type: metric + title: 集群总览 - 总览 - 集群总内存使用率 - Real Linux + unit: "percentunit" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.py new file mode 100644 index 0000000000..254d4e0e14 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterOverviewNamespaceCountTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 命名空间数量', + 'params': { + 'cadvisor_job_name': cadvisor_job_name + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.yaml new file mode 100644 index 0000000000..0cdc619b67 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_namespace_count.yaml @@ -0,0 +1,53 @@ +identity: + name: K8s集群中命名空间的数量 + author: APO + label: + en_US: Number of namespaces in Kubernetes cluster + zh_Hans: K8s集群中命名空间的数量 +description: + human: + en_US: Number of namespaces in Kubernetes cluster + zh_Hans: K8s集群中命名空间的数量 + llm: Number of namespaces in Kubernetes cluster +display: + type: metric + title: 集群总览 - 总览 - 命名空间数量 + unit: "count" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.py new file mode 100644 index 0000000000..3ded8c9ef8 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterOverviewNodeCountTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 节点数', + 'params': { + 'cadvisor_job_name': cadvisor_job_name + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.yaml new file mode 100644 index 0000000000..17030e89f8 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_overview_node_count.yaml @@ -0,0 +1,53 @@ +identity: + name: K8s集群中节点的数量 + author: APO + label: + en_US: Number of nodes in Kubernetes cluster + zh_Hans: K8s集群中节点的数量 +description: + human: + en_US: Number of nodes in Kubernetes cluster + zh_Hans: K8s集群中节点的数量 + llm: Number of nodes in Kubernetes cluster +display: + type: metric + title: 集群总览 - 总览 - 节点数 + unit: "count" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.py new file mode 100644 index 0000000000..97858a33d9 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterRunningPodsCountTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 运行的Pod数', + 'params': { + 'cadvisor_job_name': cadvisor_job_name + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.yaml new file mode 100644 index 0000000000..5ee518de06 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_running_pods_count.yaml @@ -0,0 +1,53 @@ +identity: + name: K8s集群中运行中的Pod数量 + author: APO + label: + en_US: Number of running Pods in Kubernetes cluster + zh_Hans: K8s集群中运行中的Pod数量 +description: + human: + en_US: Number of running Pods in Kubernetes cluster + zh_Hans: K8s集群中运行中的Pod数量 + llm: Number of running Pods in Kubernetes cluster +display: + type: metric + title: 集群总览 - 总览 - 运行的Pod数 + unit: "count" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.py new file mode 100644 index 0000000000..9d409d90e4 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterTotalCpuCapacityTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - CPU使用量 - Total', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.yaml new file mode 100644 index 0000000000..92a839147a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_cpu_capacity.yaml @@ -0,0 +1,53 @@ +identity: + name: 集群总可用CPU核数 + author: APO + label: + en_US: Total available CPU cores in cluster + zh_Hans: 集群总可用CPU核数 +description: + human: + en_US: Total available CPU cores in cluster + zh_Hans: 集群总可用CPU核数 + llm: Total available CPU cores in cluster +display: + type: metric + title: 集群总览 - 总览 - CPU使用量 - Total + unit: "core" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.py b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.py new file mode 100644 index 0000000000..7c7811fabd --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ClusterTotalMemoryCapacityTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 内存使用量 - Total', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.yaml new file mode 100644 index 0000000000..f639273eab --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/cluster_total_memory_capacity.yaml @@ -0,0 +1,53 @@ +identity: + name: 集群总可用内存字节数 + author: APO + label: + en_US: Total available memory in bytes + zh_Hans: 集群总可用内存字节数 +description: + human: + en_US: Total available memory in bytes + zh_Hans: 集群总可用内存字节数 + llm: Total available memory in bytes +display: + type: metric + title: 集群总览 - 总览 - 内存使用量 - Total + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml index 7b981f44b7..e68ae770d2 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu.yaml @@ -18,7 +18,7 @@ description: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod @@ -31,7 +31,7 @@ parameters: form: llm - name: namespace type: string - required: true + required: false label: en_US: namespace zh_Hans: namespace diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_cfs.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_cfs.yaml index 75bb8585c7..a1badef31e 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_cfs.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_cfs.yaml @@ -18,7 +18,7 @@ description: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod @@ -31,7 +31,7 @@ parameters: form: llm - name: namespace type: string - required: true + required: false label: en_US: namespace zh_Hans: namespace diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.py new file mode 100644 index 0000000000..78d9485d80 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuThrottleContainerdSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU节流时间 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.yaml new file mode 100644 index 0000000000..7835a3292e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_containerd_seconds.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) + author: APO + label: + en_US: Container CPU throttling time (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) +description: + human: + en_US: Container CPU throttling time (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) + llm: Container CPU throttling time (Containerd runtime, aggregated by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU节流时间 - Containerd + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.py new file mode 100644 index 0000000000..cd4091b419 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuThrottleDockerSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU节流时间 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.yaml new file mode 100644 index 0000000000..b6bed53608 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttle_docker_seconds.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU节流时长(使用Docker容器运行时,按Pod统计) + author: APO + label: + en_US: Container CPU throttling time (Docker runtime, aggregated by Pod) + zh_Hans: 容器CPU节流时长(使用Docker容器运行时,按Pod统计) +description: + human: + en_US: Container CPU throttling time (Docker runtime, aggregated by Pod) + zh_Hans: 容器CPU节流时长(使用Docker容器运行时,按Pod统计) + llm: Container CPU throttling time (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU节流时间 - Docker + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.py new file mode 100644 index 0000000000..9825364462 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuThrottlingContainerdSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU节流时间 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.yaml new file mode 100644 index 0000000000..51f659c88d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_throttling_containerd_seconds.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) + author: APO + label: + en_US: Container CPU throttling duration (Containerd runtime, by container and Pod) + zh_Hans: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) +description: + human: + en_US: Container CPU throttling duration (Containerd runtime, by container and Pod) + zh_Hans: 容器CPU节流时长(使用Containerd容器运行时,按容器和Pod统计) + llm: Container CPU throttling duration (Containerd runtime, by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU节流时间 - Containerd + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.py new file mode 100644 index 0000000000..cd2d43f3f1 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuUsageContainerdTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name') + namespace = tool_parameters.get('namespace') + pod = tool_parameters.get('pod') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd', + 'params': { + **({'cadvisor_job_name': cadvisor_job_name} if cadvisor_job_name else {}), + **({'namespace': namespace} if namespace else {}), + **({'pod': pod} if pod else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.yaml new file mode 100644 index 0000000000..2f884030e0 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_containerd.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) + author: APO + label: + en_US: Container CPU usage rate (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) +description: + human: + en_US: Container CPU usage rate (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) + llm: Container CPU usage rate (Containerd runtime, aggregated by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd + unit: "core" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.py new file mode 100644 index 0000000000..98c53c01d5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuUsageDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU使用率 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.yaml new file mode 100644 index 0000000000..de25b61441 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_usage_docker.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU使用率(使用Docker容器运行时,按Pod统计) + author: APO + label: + en_US: Container CPU usage rate (Docker runtime, aggregated by Pod) + zh_Hans: 容器CPU使用率(使用Docker容器运行时,按Pod统计) +description: + human: + en_US: Container CPU usage rate (Docker runtime, aggregated by Pod) + zh_Hans: 容器CPU使用率(使用Docker容器运行时,按Pod统计) + llm: Container CPU usage rate (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU使用率 - Docker + unit: "core" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.py new file mode 100644 index 0000000000..2bc0133afe --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerCpuUtilizationContainerdTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.yaml new file mode 100644 index 0000000000..61c8da5e52 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_cpu_utilization_containerd.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) + author: APO + label: + en_US: Container CPU utilization rate (Containerd runtime, by container and Pod) + zh_Hans: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) +description: + human: + en_US: Container CPU utilization rate (Containerd runtime, by container and Pod) + zh_Hans: 容器CPU使用率(使用Containerd容器运行时,按容器和Pod统计) + llm: Container CPU utilization rate (Containerd runtime, by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器CPU - 容器CPU使用率 - Containerd + unit: "core" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.py new file mode 100644 index 0000000000..24e997a1ab --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskReadBytesDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写字节数 /s - Read', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.yaml new file mode 100644 index 0000000000..ad4f4525c9 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_bytes_docker.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘读取字节数每秒(使用Docker,按Pod统计) + author: APO + label: + en_US: Container disk read bytes per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘读取字节数每秒(使用Docker,按Pod统计) +description: + human: + en_US: Container disk read bytes per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘读取字节数每秒(使用Docker,按Pod统计) + llm: Container disk read bytes per second (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写字节数 /s - Read + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.py new file mode 100644 index 0000000000..76b384cdb4 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskReadOpsDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写次数 /s - Read', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.yaml new file mode 100644 index 0000000000..8743b2e7bd --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_ops_docker.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘读取次数每秒(使用Docker,按Pod统计) + author: APO + label: + en_US: Container disk read operations per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘读取次数每秒(使用Docker,按Pod统计) +description: + human: + en_US: Container disk read operations per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘读取次数每秒(使用Docker,按Pod统计) + llm: Container disk read operations per second (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写次数 /s - Read + unit: "ops" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.py new file mode 100644 index 0000000000..f254f4847f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskReadTimeContainerdSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写花费时间 /s - Read', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.yaml new file mode 100644 index 0000000000..1e021a3682 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_read_time_containerd_seconds.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘读取耗时每秒(使用Containerd,按Pod和容器统计) + author: APO + label: + en_US: Container disk read time per second (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器磁盘读取耗时每秒(使用Containerd,按Pod和容器统计) +description: + human: + en_US: Container disk read time per second (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器磁盘读取耗时每秒(使用Containerd,按Pod和容器统计) + llm: Container disk read time per second (Containerd runtime, aggregated by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写花费时间 /s - Read + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_time.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_time.yaml index fbd76e1deb..7fae43144f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_time.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_time.yaml @@ -18,7 +18,7 @@ description: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod @@ -31,7 +31,7 @@ parameters: form: llm - name: namespace type: string - required: true + required: false label: en_US: namespace zh_Hans: namespace diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.py new file mode 100644 index 0000000000..dd5685868c --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskWriteBytesDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写字节数 /s - Write', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.yaml new file mode 100644 index 0000000000..f5c1276abf --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_bytes_docker.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘写入字节数每秒(使用Docker,按Pod统计) + author: APO + label: + en_US: Container disk write bytes per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘写入字节数每秒(使用Docker,按Pod统计) +description: + human: + en_US: Container disk write bytes per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘写入字节数每秒(使用Docker,按Pod统计) + llm: Container disk write bytes per second (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写字节数 /s - Write + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.py new file mode 100644 index 0000000000..4d525e6224 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskWriteOpsDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写次数 /s - Write', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.yaml new file mode 100644 index 0000000000..4e19a085cb --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_ops_docker.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘写入次数每秒(使用Docker,按Pod统计) + author: APO + label: + en_US: Container disk write operations per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘写入次数每秒(使用Docker,按Pod统计) +description: + human: + en_US: Container disk write operations per second (Docker runtime, aggregated by Pod) + zh_Hans: 容器磁盘写入次数每秒(使用Docker,按Pod统计) + llm: Container disk write operations per second (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写次数 /s - Write + unit: "ops" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.py new file mode 100644 index 0000000000..c800a5049f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerDiskWriteTimeContainerdSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器磁盘 - 读写花费时间 /s - Write', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.yaml new file mode 100644 index 0000000000..706f2a1bd6 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_disk_write_time_containerd_seconds.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器磁盘写入耗时每秒(使用Containerd,按Pod和容器统计) + author: APO + label: + en_US: Container disk write time per second (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器磁盘写入耗时每秒(使用Containerd,按Pod和容器统计) +description: + human: + en_US: Container disk write time per second (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器磁盘写入耗时每秒(使用Containerd,按Pod和容器统计) + llm: Container disk write time per second (Containerd runtime, aggregated by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器磁盘 - 读写花费时间 /s - Write + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.py new file mode 100644 index 0000000000..b8c23de575 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerMemoryUsageContainerdBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器内存 - 容器内存使用率 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.yaml new file mode 100644 index 0000000000..0e55d90ccf --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_containerd_bytes.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器内存使用字节数(使用Containerd容器运行时,按容器和Pod统计) + author: APO + label: + en_US: Container memory usage in bytes (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器内存使用字节数(使用Containerd容器运行时,按容器和Pod统计) +description: + human: + en_US: Container memory usage in bytes (Containerd runtime, aggregated by container and Pod) + zh_Hans: 容器内存使用字节数(使用Containerd容器运行时,按容器和Pod统计) + llm: Container memory usage in bytes (Containerd runtime, aggregated by container and Pod) +display: + type: metric + title: 基础设施情况 - 容器内存 - 容器内存使用率 - Containerd + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.py new file mode 100644 index 0000000000..97b17a0287 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.py @@ -0,0 +1,48 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 ContainerMemoryUsageDockerBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + namespace = tool_parameters.get('namespace', '.*') + pod = tool_parameters.get('pod', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '基础设施情况 - 容器内存 - 容器内存使用率 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'namespace': namespace, + 'pod': pod + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.yaml new file mode 100644 index 0000000000..d0c6979a55 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_memory_usage_docker_bytes.yaml @@ -0,0 +1,75 @@ +identity: + name: 容器内存使用字节数(使用Docker容器运行时,按Pod统计) + author: APO + label: + en_US: Container memory usage in bytes (Docker runtime, aggregated by Pod) + zh_Hans: 容器内存使用字节数(使用Docker容器运行时,按Pod统计) +description: + human: + en_US: Container memory usage in bytes (Docker runtime, aggregated by Pod) + zh_Hans: 容器内存使用字节数(使用Docker容器运行时,按Pod统计) + llm: Container memory usage in bytes (Docker runtime, aggregated by Pod) +display: + type: metric + title: 基础设施情况 - 容器内存 - 容器内存使用率 - Docker + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: namespace + type: string + required: False + label: + en_US: Namespace + zh_Hans: 命名空间 + human_description: + en_US: Namespace + zh_Hans: 命名空间 + llm_description: Namespace + form: llm + - name: pod + type: string + required: False + label: + en_US: Pod name + zh_Hans: Pod名称 + human_description: + en_US: Pod name + zh_Hans: Pod名称 + llm_description: Pod name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml index 24da4f43d6..b855159d7f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rss.yaml @@ -18,7 +18,7 @@ display: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod @@ -31,7 +31,7 @@ parameters: form: llm - name: namespace type: string - required: true + required: false label: en_US: namespace zh_Hans: namespace diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml index ac6adefbe7..6761770e2c 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/container_rtt.yaml @@ -18,7 +18,7 @@ display: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod @@ -31,7 +31,7 @@ parameters: form: llm - name: namespace type: string - required: true + required: false label: en_US: namespace zh_Hans: namespace diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.py index 0f8bc53276..31888c8acb 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.py @@ -19,15 +19,15 @@ class HostCoreNumTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - CPU Cores", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml index 35e8e68d07..ed8eeeab11 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.py index cee0d2044f..0b6a320058 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.py @@ -19,14 +19,15 @@ class HostCpuCoreUsageTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Basic CPU / Mem / Net / Disk - CPU Basic - CPU Usage", 'params': { 'node': node, + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml index 02f4619e0d..da2b2fd321 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.py index 967ec44379..4d01590bbd 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.py @@ -18,7 +18,7 @@ class HostCPUIoWaitRespTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.yaml index 7a85436c97..620a34ab6a 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_iowait.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.py index ecc7415417..82a5611b31 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.py @@ -19,15 +19,15 @@ class HostCpuPressureTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - CPU", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml index f5ba0d998d..c8dccaab4f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.py index adb3d3d046..1dbad7004d 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.py @@ -19,7 +19,7 @@ class HostCpuUsageTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml index 1aaae5d40d..a3a7491122 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.py index 9c116b97e3..fddcb6d8a2 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.py @@ -18,7 +18,7 @@ class HostDiskIOTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.yaml index 6a97d5b45e..1ea25ead38 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_io.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.py index ec5d12c674..9416ae1417 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.py @@ -18,7 +18,7 @@ class HostDiskReadBytesTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.yaml index 0f7817c45b..5396660e43 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_read_bytes.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.py index 3db6746ad4..4d6599d8d7 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.py @@ -18,7 +18,7 @@ class HostDiskUsedTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.yaml index 08df10aa14..d27bcf1653 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_used.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.py index 0211ad315a..8ce1f2aded 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.py @@ -18,7 +18,7 @@ class HostDiskWriteBytesTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.yaml index 2515d58d9b..d85f9d773c 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_disk_write_bytes.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.py index 3b31279e8e..764d1dcb29 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.py @@ -18,7 +18,7 @@ class HostCPUIoWaitRespTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.yaml index a012561ac2..ca93789249 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_fd_open.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.py index 52a6b6a053..0211fc46d0 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.py @@ -19,15 +19,15 @@ class HostIoPressureTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - I/O", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml index 62567b44e1..82c2ea5d27 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.py index 798a8fa922..4bca8a7dfd 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.py @@ -19,15 +19,15 @@ class HostMemPressureTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - Mem", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml index 5f975253fe..ab2210fb3e 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.py index dc991b8225..14c3b83559 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.py @@ -18,7 +18,7 @@ class HostCPUIoWaitRespTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.yaml index 8b3b03c488..9de5fed074 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_net_recv.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.py index a1fe315455..21257795bf 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.py @@ -19,15 +19,15 @@ class HostRamTotalTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - RAM Total", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml index e81089e77d..8b54fef6c4 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml @@ -44,7 +44,7 @@ parameters: form: llm - name: startTime type: number - required: true + required: false label: en_US: startTime zh_Hans: startTime diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.py index ecce6ad062..37dea60a37 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.py @@ -19,15 +19,15 @@ class HostRamUsageTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - RAM Used - B", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml index 2324b2d32a..e86bb59609 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.py index 2944e0f652..21b71801f9 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.py @@ -19,7 +19,7 @@ class HostRootFsTotalTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") + node = tool_parameters.get("node", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml index 0e4b29112a..d00b77a464 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.py index e99bca4adf..fcda71034e 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.py @@ -19,15 +19,15 @@ class HostRootFsUsageTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Root FS Used", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml index 5116ec2b69..6f5540423f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.py index 5e0c5d0602..aff212467b 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.py @@ -19,15 +19,15 @@ class HostSwapTotal(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - SWAP Total", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml index a7b2844b2b..db26a15906 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.py index f446d09522..ad7ed7d006 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.py @@ -19,15 +19,15 @@ class HostSwapUsageTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - SWAP Used", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml index 4fc715a0a5..fcba5630fa 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.py index 799fdffd74..4074172c3b 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.py @@ -19,15 +19,15 @@ class HostSysLoad(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Sys Load", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml index 4f6a38ca37..ee97b6bdca 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.py index 0d543239c5..ecb16a9335 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.py @@ -19,15 +19,15 @@ class HostSysProcBusyTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Basic CPU / Mem / Net / Disk - CPU Basic - Busy System", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml index ef833db315..1d7de909a1 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.py b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.py index 7e0270a652..bdb9dded5d 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.py +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.py @@ -19,15 +19,15 @@ class HostUptimeTool(BuiltinTool): app_id: Optional[str] = None, message_id: Optional[str] = None, ) -> Generator[ToolInvokeMessage, None, None]: - node = tool_parameters.get("node") - job = tool_parameters.get("job") + node = tool_parameters.get("node", '.*') + job = tool_parameters.get("job", '.*') start_time = tool_parameters.get("startTime") end_time = tool_parameters.get("endTime") params = { 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - Uptime", 'params': { 'node': node, - **({'job': job} if job else {}) + 'job': job }, 'startTime': start_time, 'endTime': end_time, diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml index 4cb04ad462..1c78bdf117 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml @@ -31,7 +31,7 @@ parameters: form: llm - name: node type: string - required: true + required: false label: en_US: Host Node zh_Hans: 宿主机节点 diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.py b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.py new file mode 100644 index 0000000000..71509dd132 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 LinuxNetworkDroppedPacketsReceiveTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 网络饱和 - 丢包数 - Linux Packets dropped (receive)', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.yaml new file mode 100644 index 0000000000..0091db1961 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_receive.yaml @@ -0,0 +1,53 @@ +identity: + name: Linux集群网络接收丢包数 + author: APO + label: + en_US: Linux cluster network receive packet drops + zh_Hans: Linux集群网络接收丢包数 +description: + human: + en_US: Linux cluster network receive packet drops + zh_Hans: Linux集群网络接收丢包数 + llm: Linux cluster network receive packet drops +display: + type: metric + title: 集群总览 - 总览 - 网络饱和 - 丢包数 - Linux Packets dropped (receive) + unit: "short" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.py b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.py new file mode 100644 index 0000000000..c62f723e7f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 LinuxNetworkDroppedPacketsTransmitTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 总览 - 网络饱和 - 丢包数 - Linux Packets dropped (transmit)', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.yaml new file mode 100644 index 0000000000..bf7c9bcff8 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/linux_network_dropped_packets_transmit.yaml @@ -0,0 +1,53 @@ +identity: + name: Linux集群网络发送丢包数 + author: APO + label: + en_US: Linux cluster network transmit packet drops + zh_Hans: Linux集群网络发送丢包数 +description: + human: + en_US: Linux cluster network transmit packet drops + zh_Hans: Linux集群网络发送丢包数 + llm: Linux cluster network transmit packet drops +display: + type: metric + title: 集群总览 - 总览 - 网络饱和 - 丢包数 - Linux Packets dropped (transmit) + unit: "short" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.py new file mode 100644 index 0000000000..e41096d46f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceCpuThrottleContainerdSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的CPU限流时长 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.yaml new file mode 100644 index 0000000000..f37aae3d94 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_containerd_seconds.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间CPU限流时长(使用Containerd容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace CPU throttling duration (Containerd runtime, by namespace) + zh_Hans: 命名空间CPU限流时长(使用Containerd容器运行时,按命名空间统计) +description: + human: + en_US: Namespace CPU throttling duration (Containerd runtime, by namespace) + zh_Hans: 命名空间CPU限流时长(使用Containerd容器运行时,按命名空间统计) + llm: Namespace CPU throttling duration (Containerd runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的CPU限流时长 - Containerd + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.py new file mode 100644 index 0000000000..669417a7f6 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceCpuThrottleDockerSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的CPU限流时长 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.yaml new file mode 100644 index 0000000000..2b06950bc8 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_throttle_docker_seconds.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间CPU限流时长(使用Docker容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace CPU throttling duration (Docker runtime, by namespace) + zh_Hans: 命名空间CPU限流时长(使用Docker容器运行时,按命名空间统计) +description: + human: + en_US: Namespace CPU throttling duration (Docker runtime, by namespace) + zh_Hans: 命名空间CPU限流时长(使用Docker容器运行时,按命名空间统计) + llm: Namespace CPU throttling duration (Docker runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的CPU限流时长 - Docker + unit: "s" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.py new file mode 100644 index 0000000000..87a918a593 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceCpuUsageContainerdTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的CPU使用量 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.yaml new file mode 100644 index 0000000000..8a21184cae --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_containerd.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间CPU使用核数(使用Containerd容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace CPU cores usage (Containerd runtime, by namespace) + zh_Hans: 命名空间CPU使用核数(使用Containerd容器运行时,按命名空间统计) +description: + human: + en_US: Namespace CPU cores usage (Containerd runtime, by namespace) + zh_Hans: 命名空间CPU使用核数(使用Containerd容器运行时,按命名空间统计) + llm: Namespace CPU cores usage (Containerd runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的CPU使用量 - Containerd + unit: "core" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.py new file mode 100644 index 0000000000..aa70bec08c --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceCpuUsageDockerTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的CPU使用量 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.yaml new file mode 100644 index 0000000000..479a6bc83d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_cpu_usage_docker.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间CPU使用核数(使用Docker容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace CPU cores usage (Docker runtime, by namespace) + zh_Hans: 命名空间CPU使用核数(使用Docker容器运行时,按命名空间统计) +description: + human: + en_US: Namespace CPU cores usage (Docker runtime, by namespace) + zh_Hans: 命名空间CPU使用核数(使用Docker容器运行时,按命名空间统计) + llm: Namespace CPU cores usage (Docker runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的CPU使用量 - Docker + unit: "core" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.py new file mode 100644 index 0000000000..17f55a7ac8 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceMemoryUsageContainerdBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的内存使用量 - Containerd', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.yaml new file mode 100644 index 0000000000..f21007714c --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_containerd_bytes.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间内存使用字节数(使用Containerd容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace memory usage in bytes (Containerd runtime, by namespace) + zh_Hans: 命名空间内存使用字节数(使用Containerd容器运行时,按命名空间统计) +description: + human: + en_US: Namespace memory usage in bytes (Containerd runtime, by namespace) + zh_Hans: 命名空间内存使用字节数(使用Containerd容器运行时,按命名空间统计) + llm: Namespace memory usage in bytes (Containerd runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的内存使用量 - Containerd + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.py new file mode 100644 index 0000000000..8557210cc4 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceMemoryUsageDockerBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的内存使用量 - Docker', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.yaml new file mode 100644 index 0000000000..8346c0a5fc --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_memory_usage_docker_bytes.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间内存使用字节数(使用Docker容器运行时,按命名空间统计) + author: APO + label: + en_US: Namespace memory usage in bytes (Docker runtime, by namespace) + zh_Hans: 命名空间内存使用字节数(使用Docker容器运行时,按命名空间统计) +description: + human: + en_US: Namespace memory usage in bytes (Docker runtime, by namespace) + zh_Hans: 命名空间内存使用字节数(使用Docker容器运行时,按命名空间统计) + llm: Namespace memory usage in bytes (Docker runtime, by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的内存使用量 - Docker + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.py new file mode 100644 index 0000000000..83effb9bcb --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceNetworkReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 接收', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.yaml new file mode 100644 index 0000000000..aa348d411f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_receive_bytes.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间网络接收带宽(按命名空间统计) + author: APO + label: + en_US: Namespace network receive bandwidth (by namespace) + zh_Hans: 命名空间网络接收带宽(按命名空间统计) +description: + human: + en_US: Namespace network receive bandwidth (by namespace) + zh_Hans: 命名空间网络接收带宽(按命名空间统计) + llm: Namespace network receive bandwidth (by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 接收 + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.py new file mode 100644 index 0000000000..33acf60c73 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceNetworkSendBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name', '.*') + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 发送', + 'params': { + 'cadvisor_job_name': cadvisor_job_name, + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.yaml new file mode 100644 index 0000000000..872a6a97ee --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_send_bytes.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间网络发送带宽(按命名空间统计) + author: APO + label: + en_US: Namespace network transmit bandwidth (by namespace) + zh_Hans: 命名空间网络发送带宽(按命名空间统计) +description: + human: + en_US: Namespace network transmit bandwidth (by namespace) + zh_Hans: 命名空间网络发送带宽(按命名空间统计) + llm: Namespace network transmit bandwidth (by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 发送 + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.py new file mode 100644 index 0000000000..ec4192e575 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.py @@ -0,0 +1,46 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NamespaceNetworkTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cadvisor_job_name = tool_parameters.get('cadvisor_job_name') + cluster = tool_parameters.get('cluster') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 发送', + 'params': { + **({'cadvisor_job_name': cadvisor_job_name} if cadvisor_job_name else {}), + **({'cluster': cluster} if cluster else {}) + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.yaml new file mode 100644 index 0000000000..bb318ca3bf --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/namespace_network_transmit_bytes.yaml @@ -0,0 +1,64 @@ +identity: + name: 命名空间网络发送带宽(按命名空间统计) + author: APO + label: + en_US: Namespace network transmit bandwidth (aggregated by namespace) + zh_Hans: 命名空间网络发送带宽(按命名空间统计) +description: + human: + en_US: Namespace network transmit bandwidth (aggregated by namespace) + zh_Hans: 命名空间网络发送带宽(按命名空间统计) + llm: Namespace network transmit bandwidth (aggregated by namespace) +display: + type: metric + title: 集群总览 - 命名空间资源使用 - 命名空间的网络使用量 - 发送 + unit: "bytes" +parameters: + - name: cadvisor_job_name + type: string + required: False + label: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + human_description: + en_US: cAdvisor job name + zh_Hans: cAdvisor任务名称 + llm_description: cAdvisor job name + form: llm + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.py new file mode 100644 index 0000000000..e3ca16240b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeCpuThrottleSecondsTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点CPU限流时长', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.yaml new file mode 100644 index 0000000000..234445c2cc --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_throttle_seconds.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点CPU限流时长 + author: APO + label: + en_US: Node CPU throttling duration + zh_Hans: 节点CPU限流时长 +description: + human: + en_US: Node CPU throttling duration + zh_Hans: 节点CPU限流时长 + llm: Node CPU throttling duration +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点CPU限流时长 + unit: "s" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.py new file mode 100644 index 0000000000..618c0bb3be --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeCpuUtilizationLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点CPU使用率 - Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.yaml new file mode 100644 index 0000000000..d5014fa446 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_cpu_utilization_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: Linux节点CPU使用率 + author: APO + label: + en_US: Linux node CPU utilization rate + zh_Hans: Linux节点CPU使用率 +description: + human: + en_US: Linux node CPU utilization rate + zh_Hans: Linux节点CPU使用率 + llm: Linux node CPU utilization rate +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点CPU使用率 - Linux + unit: "percentunit" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.py new file mode 100644 index 0000000000..3bf3949b37 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeLoopbackReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Received bytes in', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.yaml new file mode 100644 index 0000000000..3a30f0f7b5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_receive_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点回环网络接收带宽, 仅回环设备 + author: APO + label: + en_US: Node loopback network receive bandwidth (loopback devices only) + zh_Hans: 节点回环网络接收带宽, 仅回环设备 +description: + human: + en_US: Node loopback network receive bandwidth (loopback devices only) + zh_Hans: 节点回环网络接收带宽, 仅回环设备 + llm: Node loopback network receive bandwidth (loopback devices only) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Received bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.py new file mode 100644 index 0000000000..3e020ba92e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeLoopbackTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Transmitted bytes in', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.yaml new file mode 100644 index 0000000000..98eee7af16 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_loopback_transmit_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点回环网络发送带宽, 仅回环设备 + author: APO + label: + en_US: Node loopback network transmit bandwidth (loopback devices only) + zh_Hans: 节点回环网络发送带宽, 仅回环设备 +description: + human: + en_US: Node loopback network transmit bandwidth (loopback devices only) + zh_Hans: 节点回环网络发送带宽, 仅回环设备 + llm: Node loopback network transmit bandwidth (loopback devices only) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(仅回环) - Transmitted bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.py new file mode 100644 index 0000000000..8b0608f33b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeMemoryUsageLinuxTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点内存使用量 - Linux', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.yaml new file mode 100644 index 0000000000..d41a224ceb --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_memory_usage_linux.yaml @@ -0,0 +1,53 @@ +identity: + name: Linux节点内存使用字节数 + author: APO + label: + en_US: Linux node memory usage in bytes + zh_Hans: Linux节点内存使用字节数 +description: + human: + en_US: Linux node memory usage in bytes + zh_Hans: Linux节点内存使用字节数 + llm: Linux node memory usage in bytes +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点内存使用量 - Linux + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.py new file mode 100644 index 0000000000..d833944ebb --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeNetworkReceiveBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量 - 接收', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.yaml new file mode 100644 index 0000000000..47bfb3ea2d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络接收带宽 + author: APO + label: + en_US: Node network receive bandwidth + zh_Hans: 节点网络接收带宽 +description: + human: + en_US: Node network receive bandwidth + zh_Hans: 节点网络接收带宽 + llm: Node network receive bandwidth +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量 - 接收 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.py new file mode 100644 index 0000000000..6a7c55942d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeNetworkReceiveExclVirtualBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Received bytes in', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.yaml new file mode 100644 index 0000000000..d32b43e3a1 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_receive_excl_virtual_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络接收带宽(排除虚拟和回环设备) + author: APO + label: + en_US: Node network receive bandwidth (excluding virtual/loopback devices) + zh_Hans: 节点网络接收带宽(排除虚拟和回环设备) +description: + human: + en_US: Node network receive bandwidth (excluding virtual/loopback devices) + zh_Hans: 节点网络接收带宽(排除虚拟和回环设备) + llm: Node network receive bandwidth (excluding virtual/loopback devices) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Received bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.py new file mode 100644 index 0000000000..ea10e9b1fa --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeNetworkTransmitBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量 - 发送', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.yaml new file mode 100644 index 0000000000..abf8f8227e --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络发送带宽 + author: APO + label: + en_US: Node network transmit bandwidth + zh_Hans: 节点网络发送带宽 +description: + human: + en_US: Node network transmit bandwidth + zh_Hans: 节点网络发送带宽 + llm: Node network transmit bandwidth +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量 - 发送 + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.py b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.py new file mode 100644 index 0000000000..a26b1fe72b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.py @@ -0,0 +1,44 @@ +import json +from collections.abc import Generator +from typing import Any, Optional + +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 NodeNetworkTransmitExclVirtualBytesTool(BuiltinTool): + def _invoke( + self, + user_id: str, + tool_parameters: dict[str, Any], + conversation_id: Optional[str] = None, + app_id: Optional[str] = None, + message_id: Optional[str] = None, + ) -> Generator[ToolInvokeMessage, None, None]: + cluster = tool_parameters.get('cluster', '.*') + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': '集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Transmitted bytes in', + 'params': { + 'cluster': cluster + }, + 'startTime': start_time, + 'endTime': end_time, + 'step': APOUtils.get_step(start_time, end_time), + } + resp = requests.post(dify_config.APO_BACKEND_URL + '/api/metric/query', json=params) + list = resp.json()['result'] + list = json.dumps({ + 'type': 'metric', + 'display': True, + 'unit': list['unit'], + 'data': { + 'timeseries': list['timeseries'] + } + }) + yield self.create_text_message(list) \ No newline at end of file diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.yaml new file mode 100644 index 0000000000..8e70e92805 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/node_network_transmit_excl_virtual_bytes.yaml @@ -0,0 +1,53 @@ +identity: + name: 节点网络发送带宽(排除虚拟和回环设备) + author: APO + label: + en_US: Node network transmit bandwidth (excluding virtual/loopback devices) + zh_Hans: 节点网络发送带宽(排除虚拟和回环设备) +description: + human: + en_US: Node network transmit bandwidth (excluding virtual/loopback devices) + zh_Hans: 节点网络发送带宽(排除虚拟和回环设备) + llm: Node network transmit bandwidth (excluding virtual/loopback devices) +display: + type: metric + title: 集群总览 - 节点资源使用 - 节点的网络使用量(不含回环/虚拟设备) - Transmitted bytes in + unit: "bytes" +parameters: + - name: cluster + type: string + required: False + label: + en_US: Cluster name + zh_Hans: 集群名称 + human_description: + en_US: Cluster name + zh_Hans: 集群名称 + llm_description: Cluster name + form: llm + - name: startTime + type: number + required: true + label: + en_US: startTime + zh_Hans: startTime + pt_BR: startTime + human_description: + en_US: Data query start time + zh_Hans: 开始时间 (微秒) + pt_BR: Data query start time + llm_description: Data query start time + form: llm + - name: endTime + type: number + required: true + label: + en_US: endTime + zh_Hans: endTime + pt_BR: endTime + human_description: + en_US: Data query end time + zh_Hans: 结束时间 (微秒) + pt_BR: Data query end time + llm_description: Data query start time + form: llm diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_avg_resp.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_avg_resp.yaml index b0e6d0eef7..3aa5ece683 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_avg_resp.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_avg_resp.yaml @@ -18,7 +18,7 @@ display: parameters: - name: service_name type: string - required: true + required: false label: en_US: service_name zh_Hans: service_name @@ -31,7 +31,7 @@ parameters: form: llm - name: content_key type: string - required: true + required: false label: en_US: content_key zh_Hans: content_key diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_resp_ok.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_resp_ok.yaml index 2134ce3f27..56e11e6659 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_resp_ok.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/originx_service_red_resp_ok.yaml @@ -18,7 +18,7 @@ display: parameters: - name: service_name type: string - required: true + required: false label: en_US: service_name zh_Hans: service_name @@ -31,7 +31,7 @@ parameters: form: llm - name: content_key type: string - required: true + required: false label: en_US: content_key zh_Hans: content_key diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/polar_process_all_resp.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/polar_process_all_resp.yaml index 71977eda01..fa24e3ee5f 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/polar_process_all_resp.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/polar_process_all_resp.yaml @@ -18,7 +18,7 @@ display: parameters: - name: pod type: string - required: true + required: false label: en_US: pod zh_Hans: pod diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml index 3490c4075a..0141000299 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/select_cpu.yaml @@ -18,7 +18,7 @@ display: parameters: - name: node type: string - required: true + required: false label: en_US: node zh_Hans: node @@ -31,7 +31,7 @@ parameters: form: llm - name: startTime type: number - required: true + required: false label: en_US: startTime zh_Hans: startTime diff --git a/api/tools_generator/generator.py b/api/tools_generator/generator.py index ac16193b7d..9f4293f02a 100644 --- a/api/tools_generator/generator.py +++ b/api/tools_generator/generator.py @@ -62,20 +62,15 @@ class ToolGenerator: def _build_python(self, tool: Dict) -> str: param_lines = "\n".join( - f" {param['name']} = tool_parameters.get('{param['name']}')" + f" {param['name']} = tool_parameters.get('{param['name']}', '.*')" for param in tool["params"] ) - param_dict = [] - for param in tool["params"]: - name = param.get("name", "").strip() - if not name: - continue - - if param.get("required", False): - param_dict.append(f" '{name}': {name}") - else: - param_dict.append(f" **({{'{name}': {name}}} if {name} else {{}})") + param_dict = [ + f" '{param['name']}': {param['name']}" + for param in tool["params"] + if param.get("name", "").strip() + ] params_content = ",\n".join(param_dict)