190 lines
6.6 KiB
JavaScript
190 lines
6.6 KiB
JavaScript
|
|
"use strict";
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 设备类型数据模型 + 预置数据
|
|||
|
|
*
|
|||
|
|
* 设备类型(device_catalog):定义一类设备的采集能力和默认配置。
|
|||
|
|
* 预置 6 种设备类型,用户可在界面上新增。
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
const { DEVICE_CATALOG_TYPES, ALERT_LEVELS, DEVICE_TIERS } = require("./types.cjs");
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 默认告警阈值 - 用于设备类型的预置配置
|
|||
|
|
* 格式:{ metric, operator, threshold, level, duration }
|
|||
|
|
*/
|
|||
|
|
const DEFAULT_THRESHOLDS = {
|
|||
|
|
linux: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "70", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "75", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
windows: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "70", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "75", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
huawei_h3c_switch: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "70", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "75", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
cisco_switch: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "70", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "75", level: ALERT_LEVELS.WARNING, duration: 2 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
huawei_firewall: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
fortinet_firewall: [
|
|||
|
|
{ metric: "cpu_usage", operator: ">", threshold: "80", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "memory_usage", operator: ">", threshold: "85", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
{ metric: "online", operator: "==", threshold: "false", level: ALERT_LEVELS.CRITICAL, duration: 1 },
|
|||
|
|
],
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 预置设备类型列表
|
|||
|
|
* 每条记录对应一条 device_catalog 数据
|
|||
|
|
*/
|
|||
|
|
const PRESET_DEVICE_CATALOG = [
|
|||
|
|
{
|
|||
|
|
id: "linux",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.LINUX,
|
|||
|
|
name: "Linux 服务器",
|
|||
|
|
vendor: "Linux",
|
|||
|
|
adapter_class: "LinuxServerAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"disk_usage",
|
|||
|
|
"load_avg",
|
|||
|
|
"uptime",
|
|||
|
|
"process_count",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.linux,
|
|||
|
|
default_interval: 5, // 默认 5 分钟
|
|||
|
|
description: "通用 Linux 服务器,支持 Ubuntu/CentOS/Debian/Alpine 等发行版",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: "windows",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.WINDOWS,
|
|||
|
|
name: "Windows 服务器",
|
|||
|
|
vendor: "Microsoft",
|
|||
|
|
adapter_class: "WindowsServerAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"disk_usage",
|
|||
|
|
"uptime",
|
|||
|
|
"process_count",
|
|||
|
|
"service_status",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.windows,
|
|||
|
|
default_interval: 5,
|
|||
|
|
description: "Windows Server 2012/2016/2019/2022,通过 SSH + PowerShell 采集",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: "huawei_h3c_switch",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.HUAWEI_H3C_SWITCH,
|
|||
|
|
name: "华为/H3C 交换机",
|
|||
|
|
vendor: "华为/H3C",
|
|||
|
|
adapter_class: "HuaweiH3CSwitchAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"port_status",
|
|||
|
|
"power_status",
|
|||
|
|
"fan_status",
|
|||
|
|
"device_info",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.huawei_h3c_switch,
|
|||
|
|
default_interval: 10, // 交换机默认 10 分钟
|
|||
|
|
description: "华为 S3000/S5000/S7000/S9000 系列、H3C S5100/S5500 等交换机",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: "cisco_switch",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.CISCO_SWITCH,
|
|||
|
|
name: "Cisco 交换机",
|
|||
|
|
vendor: "Cisco",
|
|||
|
|
adapter_class: "CiscoSwitchAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"port_status",
|
|||
|
|
"power_status",
|
|||
|
|
"fan_status",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.cisco_switch,
|
|||
|
|
default_interval: 10,
|
|||
|
|
description: "Cisco Catalyst 2960/3650/3850/4500/6500 等交换机",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: "huawei_firewall",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.HUAWEI_FIREWALL,
|
|||
|
|
name: "华为防火墙",
|
|||
|
|
vendor: "华为",
|
|||
|
|
adapter_class: "HuaweiFirewallAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"session_count",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.huawei_firewall,
|
|||
|
|
default_interval: 5, // 防火墙重要,默认 5 分钟
|
|||
|
|
description: "华为 USG 系列防火墙",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
id: "fortinet_firewall",
|
|||
|
|
type_key: DEVICE_CATALOG_TYPES.FORTINET_FIREWALL,
|
|||
|
|
name: "飞塔防火墙",
|
|||
|
|
vendor: "Fortinet",
|
|||
|
|
adapter_class: "FortinetFirewallAdapter",
|
|||
|
|
supported_metrics: [
|
|||
|
|
"cpu_usage",
|
|||
|
|
"memory_usage",
|
|||
|
|
"session_count",
|
|||
|
|
"online",
|
|||
|
|
],
|
|||
|
|
default_thresholds: DEFAULT_THRESHOLDS.fortinet_firewall,
|
|||
|
|
default_interval: 5,
|
|||
|
|
description: "Fortinet FortiGate 系列防火墙",
|
|||
|
|
preset: true,
|
|||
|
|
},
|
|||
|
|
];
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 获取预置设备类型数据
|
|||
|
|
* @returns {Array}
|
|||
|
|
*/
|
|||
|
|
function getPresetCatalog() {
|
|||
|
|
return JSON.parse(JSON.stringify(PRESET_DEVICE_CATALOG));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
PRESET_DEVICE_CATALOG,
|
|||
|
|
DEFAULT_THRESHOLDS,
|
|||
|
|
getPresetCatalog,
|
|||
|
|
};
|