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 8f0a8dbe89..ba45f44e20 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 @@ -1,5 +1,5 @@ identity: - name: select_container_cpu + name: 查询容器CPU利用率 author: APO label: en_US: Query the CPU utilization of the container 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 94b5e92567..7ba975df5b 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 @@ -1,5 +1,5 @@ identity: - name: select_container_rss + name: 查询容器内存使用量 author: APO label: en_US: Query container resident memory usage 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 380de8f36e..013c331a59 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 @@ -1,5 +1,5 @@ identity: - name: container_rtt + name: 查询容器网络与下游RTT author: APO label: en_US: Query container rtt diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml index 62c3759b01..ebe9e19323 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/fault_log.yaml @@ -1,5 +1,5 @@ identity: - name: fault_log + name: 查询服务日志数据 author: APO label: en_US: Query service log data 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 new file mode 100644 index 0000000000..0f8bc53276 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.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 HostCoreNumTool(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]: + 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 {}) + }, + '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/host_core_num.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml new file mode 100644 index 0000000000..35e8e68d07 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_core_num.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机CPU核心数 + author: APO + label: + en_US: Query host's CPU cores number + zh_Hans: 查询宿主机CPU核心数 + pt_BR: Query host's CPU cores number +description: + human: + en_US: Query host's CPU cores number + zh_Hans: 查询宿主机CPU核心数 + pt_BR: Query host's CPU cores number + llm: Query host's CPU cores number +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - CPU Cores + unit: short +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..cee0d2044f --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.py @@ -0,0 +1,45 @@ +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 HostCpuCoreUsageTool(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]: + 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, + }, + '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/host_cpu_core_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml new file mode 100644 index 0000000000..02f4619e0d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_core_usage.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机宿主机CPU使用量(核数) + author: APO + label: + en_US: Query host's CPU cores usage + zh_Hans: 查询宿主机宿主机CPU使用量(核数) + pt_BR: Query host's CPU cores usage +description: + human: + en_US: Query host's CPU cores usage + zh_Hans: 查询宿主机宿主机CPU使用量(核数) + pt_BR: Query host's CPU cores usage + llm: Query host's CPU cores usage +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - CPU Cores + unit: core +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..ecc7415417 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.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 HostCpuPressureTool(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]: + 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 {}) + }, + '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/host_cpu_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml new file mode 100644 index 0000000000..f5ba0d998d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_pressure.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机CPU压力 + author: APO + label: + en_US: Query host's CPU pressure + zh_Hans: 查询宿主机CPU压力 + pt_BR: Query host's CPU pressure +description: + human: + en_US: Query host's CPU pressure + zh_Hans: 查询宿主机CPU压力 + pt_BR: Query host's CPU pressure + llm: Query host's CPU pressure +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - CPU + unit: percentunit +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..adb3d3d046 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.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 HostCpuUsageTool(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]: + node = tool_parameters.get("node") + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - CPU Busy", + 'params': { + 'node': node, + }, + '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/host_cpu_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml new file mode 100644 index 0000000000..1aaae5d40d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_cpu_usage.yaml @@ -0,0 +1,57 @@ +identity: + name: 查询宿主机CPU繁忙率 + author: APO + label: + en_US: Query host's CPU usage + zh_Hans: 查询宿主机CPU繁忙率 + pt_BR: Query host's CPU usage +description: + human: + en_US: Query host's CPU usage + zh_Hans: 查询宿主机CPU繁忙率 + pt_BR: Query host's CPU usage + llm: Query host's CPU usage +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - CPU Busy + unit: percent +parameters: + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..52a6b6a053 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.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 HostIoPressureTool(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]: + 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 {}) + }, + '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/host_io_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml new file mode 100644 index 0000000000..62567b44e1 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_io_pressure.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机I/O压力 + author: APO + label: + en_US: Query host's I/O pressure + zh_Hans: 查询宿主机I/O压力 + pt_BR: Query host's I/O pressure +descriptI/On: + human: + en_US: Query host's I/O pressure + zh_Hans: 查询宿主机I/O压力 + pt_BR: Query host's I/O pressure + llm: Query host's I/O pressure +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - I/O + unit: percentunit +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_descriptI/On: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_descriptI/On: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_descriptI/On: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_descriptI/On: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..798a8fa922 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.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 HostMemPressureTool(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]: + 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 {}) + }, + '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/host_memory_pressure.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml new file mode 100644 index 0000000000..5f975253fe --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_memory_pressure.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机CPU压力 + author: APO + label: + en_US: Query host's memory pressure + zh_Hans: 查询宿主机CPU压力 + pt_BR: Query host's memory pressure +description: + human: + en_US: Query host's memory pressure + zh_Hans: 查询宿主机内存压力 + pt_BR: Query host's memory pressure + llm: Query host's memory pressure +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Pressure - Mem + unit: percentunit +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..a1fe315455 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.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 HostRamTotalTool(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]: + 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 {}) + }, + '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/host_ram_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml new file mode 100644 index 0000000000..e81089e77d --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_total.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机RAM总大小 + author: APO + label: + en_US: Query host's ram total size + zh_Hans: 查询宿主机RAM总大小 + pt_BR: Query host's ram total size +description: + human: + en_US: Query host's ram total size + zh_Hans: 查询宿主机RAM总大小 + pt_BR: Query host's ram total size + llm: Query host's ram total size +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - RAM Total + unit: bytes +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..ecce6ad062 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.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 HostRamUsageTool(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]: + 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 {}) + }, + '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/host_ram_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml new file mode 100644 index 0000000000..2324b2d32a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_ram_usage.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机RAM使用率 + author: APO + label: + en_US: Query host's RAM usage + zh_Hans: 查询宿主机RAM使用率 + pt_BR: Query host's RAM usage +description: + human: + en_US: Query host's RAM usage + zh_Hans: 查询宿主机RAM使用率 + pt_BR: Query host's RAM usage + llm: Query host's RAM usage +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - RAM Used - B + unit: percent +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..2944e0f652 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.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 HostRootFsTotalTool(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]: + node = tool_parameters.get("node") + start_time = tool_parameters.get("startTime") + end_time = tool_parameters.get("endTime") + params = { + 'metricName': "宿主机监控指标 - Quick CPU / Mem / Disk - RootFS Total", + 'params': { + 'node': node, + }, + '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/host_root_fs_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml new file mode 100644 index 0000000000..0e4b29112a --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_total.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机根文件系统总大小 + author: APO + label: + en_US: Query host's file system total size + zh_Hans: 查询宿主机根文件系统总大小 + pt_BR: Query host's file system total size +description: + human: + en_US: Query host's file system total size + zh_Hans: 查询宿主机根文件系统总大小 + pt_BR: Query host's file system total size + llm: Query host's file system total size +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - RootFS Total + unit: bytes +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..e99bca4adf --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.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 HostRootFsUsageTool(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]: + 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 {}) + }, + '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/host_root_fs_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml new file mode 100644 index 0000000000..5116ec2b69 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_root_fs_usage.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机根文件系统使用率 + author: APO + label: + en_US: Query host's root file system usage + zh_Hans: 查询宿主机根文件系统使用率 + pt_BR: Query host's root file system usage +description: + human: + en_US: Query host's root file system usage + zh_Hans: 查询宿主机根文件系统使用率 + pt_BR: Query host's root file system usage + llm: Query host's root file system usage +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Root FS Used + unit: percent +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..5e0c5d0602 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.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 HostSwapTotal(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]: + 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 {}) + }, + '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/host_swap_total.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml new file mode 100644 index 0000000000..a7b2844b2b --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_total.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机宿主机SWAP总大小 + author: APO + label: + en_US: Query host's SWAP total size + zh_Hans: 查询宿主机宿主机SWAP总大小 + pt_BR: Query host's SWAP total size +description: + human: + en_US: Query host's SWAP total size + zh_Hans: 查询宿主机宿主机SWAP总大小 + pt_BR: Query host's SWAP total size + llm: Query host's SWAP total size +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - SWAP Total + unit: bytes +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..f446d09522 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.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 HostSwapUsageTool(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]: + 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 {}) + }, + '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/host_swap_usage.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml new file mode 100644 index 0000000000..4fc715a0a5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_swap_usage.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机SWAP使用率 + author: APO + label: + en_US: Query host's SWAP usage + zh_Hans: 查询宿主机SWAP使用率 + pt_BR: Query host's SWAP usage +description: + human: + en_US: Query host's SWAP usage + zh_Hans: 查询宿主机SWAP使用率 + pt_BR: Query host's SWAP usage + llm: Query host's SWAP usage +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - SWAP Used + unit: percent +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..799fdffd74 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.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 HostSysLoad(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]: + 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 {}) + }, + '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/host_sys_load.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml new file mode 100644 index 0000000000..4f6a38ca37 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_load.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机最近1分钟的系统负载 + author: APO + label: + en_US: Query host's system load for the last 1 minute + zh_Hans: 查询宿主机最近1分钟的系统负载 + pt_BR: Query host's system load for the last 1 minute +description: + human: + en_US: Query host's system load for the last 1 minute + zh_Hans: 查询宿主机最近1分钟的系统负载 + pt_BR: Query host's system load for the last 1 minute + llm: Query host's system load for the last 1 minute +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Sys Load + unit: percent +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..0d543239c5 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.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 HostSysProcBusyTool(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]: + 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 {}) + }, + '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/host_sys_proc_busy.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml new file mode 100644 index 0000000000..ef833db315 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_sys_proc_busy.yaml @@ -0,0 +1,70 @@ +identity: + name: 查询宿主机系统进程CPU繁忙率 + author: APO + label: + en_US: Query host's system process CPU usage + zh_Hans: 查询宿主机系统进程CPU繁忙率 + pt_BR: Query host's system process CPU usage +description: + human: + en_US: Query host's system process CPU usage + zh_Hans: 查询宿主机系统进程CPU繁忙率 + pt_BR: Query host's system process CPU usage + llm: Query host's system process CPU usage +display: + type: metric + title: 宿主机监控指标 - Basic CPU / Mem / Net / Disk - CPU Basic - Busy System + unit: percentunit +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 new file mode 100644 index 0000000000..7e0270a652 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.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 HostUptimeTool(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]: + 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 {}) + }, + '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/host_uptime.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml new file mode 100644 index 0000000000..4cb04ad462 --- /dev/null +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/host_uptime.yaml @@ -0,0 +1,70 @@ +identity: + name: 宿主机运行时间 + author: APO + label: + en_US: Query host's uptime + zh_Hans: 宿主机运行时间 + pt_BR: Query host's uptime +description: + human: + en_US: Query host's uptime + zh_Hans: 宿主机运行时间 + pt_BR: Query host's uptime + llm: Query host's uptime +display: + type: metric + title: 宿主机监控指标 - Quick CPU / Mem / Disk - Uptime + unit: s +parameters: + - name: job + type: string + required: false + label: + en_US: Prometheus Job + zh_Hans: Prometheus任务 + pt_BR: Tarefa Prometheus + human_description: + en_US: Prometheus job name for host metrics + zh_Hans: Prometheus任务名称(宿主机指标) + pt_BR: Prometheus job name for host metrics + llm_description: Unique identifier for metrics scrape job + form: llm + - name: node + type: string + required: true + label: + en_US: Host Node + zh_Hans: 宿主机节点 + pt_BR: Host Node + human_description: + en_US: Host node identifier + zh_Hans: 宿主机节点标识 + pt_BR: Host node identifier + llm_description: Unique identifier for host node + 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 \ No newline at end of file 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 203bb69952..7ff65f28f7 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 @@ -1,5 +1,5 @@ identity: - name: originx_service_red_avg_resp + name: Originx 北极星指标 (服务层级) - RED指标 - 平均响应时间 author: APO label: en_US: Query the CPU utilization of the host 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 1c43a87611..9f9a43d557 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 @@ -1,5 +1,5 @@ identity: - name: select_cpu + name: 查询主机CPU利用率 author: APO label: en_US: Query the CPU utilization of the host diff --git a/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml b/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml index 6ac5307e40..64f4286f2d 100644 --- a/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml +++ b/api/core/tools/builtin_tool/providers/apo_select/tools/topology.yaml @@ -1,5 +1,5 @@ identity: - name: topology + name: 查询入口服务拓扑结构 author: APO label: en_US: Query the entry service topology