diff --git a/database/install/alarm_event.sql b/database/install/alarm_event.sql new file mode 100644 index 00000000..53e499b6 --- /dev/null +++ b/database/install/alarm_event.sql @@ -0,0 +1,63 @@ +/* + Navicat Premium Data Transfer + + Source Server : local_mariadb + Source Server Type : MariaDB + Source Server Version : 100338 (10.3.38-MariaDB) + Source Host : localhost:33066 + Source Schema : omc_db + + Target Server Type : MariaDB + Target Server Version : 100338 (10.3.38-MariaDB) + File Encoding : 65001 + + Date: 24/05/2024 15:44:03 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for alarm_event +-- ---------------------------- +DROP TABLE IF EXISTS `alarm_event`; +CREATE TABLE `alarm_event` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `alarm_seq` int(11) NULL DEFAULT NULL, + `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_code` int(11) NULL DEFAULT NULL, + `event_time` datetime NULL DEFAULT NULL, + `alarm_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', + `orig_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Minor' COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `perceived_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0', + `object_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `location_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `alarm_status` int(11) NOT NULL DEFAULT 1 COMMENT '0:clear, 1:active', + `specific_problem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `specific_problem_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `add_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `counter` int(11) NULL DEFAULT 0, + `latest_event_time` datetime NULL DEFAULT NULL, + `ack_state` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unacked, 1: Acked', + `ack_time` datetime NULL DEFAULT NULL, + `ack_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `clear_type` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unclear, 1: AutoClear, 2: ManualClear', + `clear_time` datetime NULL DEFAULT NULL, + `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `idx_pk_id`(`id`) USING BTREE, + UNIQUE INDEX `idx_uni_aid_ne_aseq`(`ne_type`, `ne_id`, `alarm_id`, `alarm_seq`) USING BTREE, + INDEX `idx_event_time`(`event_time`) USING BTREE, + INDEX `idx_severity_status`(`alarm_status`, `orig_severity`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 228788 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgrade/upg_alarm_event.sql b/database/upgrade/upg_alarm_event.sql new file mode 100644 index 00000000..563f5cf9 --- /dev/null +++ b/database/upgrade/upg_alarm_event.sql @@ -0,0 +1,62 @@ +/* + Navicat Premium Data Transfer + + Source Server : local_mariadb + Source Server Type : MariaDB + Source Server Version : 100338 (10.3.38-MariaDB) + Source Host : localhost:33066 + Source Schema : omc_db + + Target Server Type : MariaDB + Target Server Version : 100338 (10.3.38-MariaDB) + File Encoding : 65001 + + Date: 24/05/2024 15:44:03 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for alarm_event +-- ---------------------------- +CREATE TABLE IF NOT EXISTS `alarm_event` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `alarm_seq` int(11) NULL DEFAULT NULL, + `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_code` int(11) NULL DEFAULT NULL, + `event_time` datetime NULL DEFAULT NULL, + `alarm_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', + `orig_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Minor' COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `perceived_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0', + `object_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `location_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `alarm_status` int(11) NOT NULL DEFAULT 1 COMMENT '0:clear, 1:active', + `specific_problem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `specific_problem_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `add_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `counter` int(11) NULL DEFAULT 0, + `latest_event_time` datetime NULL DEFAULT NULL, + `ack_state` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unacked, 1: Acked', + `ack_time` datetime NULL DEFAULT NULL, + `ack_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `clear_type` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unclear, 1: AutoClear, 2: ManualClear', + `clear_time` datetime NULL DEFAULT NULL, + `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `idx_pk_id`(`id`) USING BTREE, + UNIQUE INDEX `idx_uni_aid_ne_aseq`(`ne_type`, `ne_id`, `alarm_id`, `alarm_seq`) USING BTREE, + INDEX `idx_event_time`(`event_time`) USING BTREE, + INDEX `idx_severity_status`(`alarm_status`, `orig_severity`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 228788 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/database/upgvue3/upg_alarm_event.sql b/database/upgvue3/upg_alarm_event.sql new file mode 100644 index 00000000..563f5cf9 --- /dev/null +++ b/database/upgvue3/upg_alarm_event.sql @@ -0,0 +1,62 @@ +/* + Navicat Premium Data Transfer + + Source Server : local_mariadb + Source Server Type : MariaDB + Source Server Version : 100338 (10.3.38-MariaDB) + Source Host : localhost:33066 + Source Schema : omc_db + + Target Server Type : MariaDB + Target Server Version : 100338 (10.3.38-MariaDB) + File Encoding : 65001 + + Date: 24/05/2024 15:44:03 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for alarm_event +-- ---------------------------- +CREATE TABLE IF NOT EXISTS `alarm_event` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `alarm_seq` int(11) NULL DEFAULT NULL, + `alarm_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_type` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, + `alarm_code` int(11) NULL DEFAULT NULL, + `event_time` datetime NULL DEFAULT NULL, + `alarm_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '', + `orig_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT 'Minor' COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `perceived_severity` enum('Critical','Major','Minor','Warning','Event') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '1: Critical, 2: Major, 3: Minor, 4: Warning, 5: Event(Only VNF)', + `pv_flag` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `ne_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `object_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '0', + `object_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `location_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `province` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `alarm_status` int(11) NOT NULL DEFAULT 1 COMMENT '0:clear, 1:active', + `specific_problem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `specific_problem_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `add_info` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `counter` int(11) NULL DEFAULT 0, + `latest_event_time` datetime NULL DEFAULT NULL, + `ack_state` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unacked, 1: Acked', + `ack_time` datetime NULL DEFAULT NULL, + `ack_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `clear_type` tinyint(4) NULL DEFAULT 0 COMMENT '0: Unclear, 1: AutoClear, 2: ManualClear', + `clear_time` datetime NULL DEFAULT NULL, + `clear_user` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + `timestamp` datetime NULL DEFAULT current_timestamp() ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) USING BTREE, + UNIQUE INDEX `idx_pk_id`(`id`) USING BTREE, + UNIQUE INDEX `idx_uni_aid_ne_aseq`(`ne_type`, `ne_id`, `alarm_id`, `alarm_seq`) USING BTREE, + INDEX `idx_event_time`(`event_time`) USING BTREE, + INDEX `idx_severity_status`(`alarm_status`, `orig_severity`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 228788 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/features/fm/alarm.go b/features/fm/alarm.go index 716721b5..f1e05cbc 100644 --- a/features/fm/alarm.go +++ b/features/fm/alarm.go @@ -435,11 +435,20 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) { SetAlarmAckInfo(valueJson, &alarmData) } log.Debug("alarmData:", alarmData) - affected, err := session.Insert(alarmData) - if err != nil && affected <= 0 { - log.Error("Failed to insert alarm data:", err) - services.ResponseInternalServerError500DatabaseOperationFailed(w) - continue + if alarmData.OrigSeverity == "Event" && config.GetYamlConfig().Alarm.SplitEventAlarm { + affected, err := xEngine.Table("alarm_event").InsertOne(alarmData) + if err != nil && affected <= 0 { + log.Error("Failed to insert alarm_event:", err) + services.ResponseInternalServerError500ProcessError(w, err) + continue + } + } else { + affected, err := session.Insert(alarmData) + if err != nil && affected <= 0 { + log.Error("Failed to insert alarm data:", err) + services.ResponseInternalServerError500DatabaseOperationFailed(w) + continue + } } alarmLog := new(AlarmLog) alarmLog.NeType = alarmData.NeType @@ -451,7 +460,7 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) { alarmLog.EventTime = eventTime log.Trace("alarmLog:", alarmLog) - affected, err = session.Insert(alarmLog) + affected, err := session.Insert(alarmLog) if err != nil && affected <= 0 { log.Error("Failed to insert alarm_log:", err) } @@ -470,6 +479,28 @@ func PostAlarmFromNF(w http.ResponseWriter, r *http.Request) { services.ResponseStatusOK200Null(w) } +type AlarmEvent struct { + AlarmSeq int `json:"alarmSeq"` + AlarmId string `json:"alarmId" xorm:"alarm_id"` + NeId string `json:"neId"` + AlarmCode int `json:"alarmCode"` + AlarmTitle string `json:"alarmTitle"` + EventTime string `json:"eventTime"` + AlarmType string `json:"alarmType"` + OrigSeverity string `json:"origSeverity"` + PVFlag string `json:"pvFlag" xorm:"pv_flag"` + NeName string `json:"neName"` + NeType string `json:"neType"` + ObjectUid string `json:"objectUid" xorm:"object_uid"` + ObjectName string `json:"objectName" xorm:"object_name"` + ObjectType string `json:"objectType" xorm:"object_type"` + LocationInfo string `json:"locationInfo"` + Province string `json:"province"` + SpecificProblem string `json:"specificProblem"` + SpecificProblemID string `json:"specificProblemID" xorm:"specific_problem_id"` + AddInfo string `json:"addInfo"` +} + // process alarm get from NFs func GetAlarmFromNF(w http.ResponseWriter, r *http.Request) { log.Debug("GetAlarmFromNF processing... ") diff --git a/restagent/config/config.go b/restagent/config/config.go index 12f27cd8..181cbefd 100644 --- a/restagent/config/config.go +++ b/restagent/config/config.go @@ -81,30 +81,7 @@ type YamlConfig struct { CmdTimeout int `yaml:"cmdTimeout"` } `yaml:"omc"` - Alarm struct { - ForwardAlarm bool `yaml:"forwardAlarm"` - SMProxy string `yaml:"smProxy"` - Email struct { - Smtp string `yaml:"smtp"` - Port uint16 `yaml:"port"` - User string `yaml:"user"` - Password string `yaml:"password"` - TlsSkipVerify bool `yaml:"tlsSkipVerify"` - } `yaml:"email"` - SMS struct { - ApiURL string `yaml:"apiURL"` - AccessKeyID string `yaml:"AccessKeyID"` - AccessKeySecret string `yaml:"accessKeySecret"` - SignName string `yaml:"signName"` - TemplateCode string `yaml:"templateCode"` - } `yaml:"sms"` - SMSC struct { - Addr string `yaml:"addr"` - SystemID string `yaml:"systemID"` - Password string `yaml:"password"` - SystemType string `yaml:"systemType"` - } `yaml:"smsc"` - } `yaml:"alarm"` + Alarm AlarmConfig `yaml:"alarm"` MML MMLParam `yaml:"mml"` @@ -169,6 +146,32 @@ type DbConfig struct { Backup string `yaml:"backup"` } +type AlarmConfig struct { + SplitEventAlarm bool `yaml:"splitEventAlarm"` + ForwardAlarm bool `yaml:"forwardAlarm"` + SMProxy string `yaml:"smProxy"` + Email struct { + Smtp string `yaml:"smtp"` + Port uint16 `yaml:"port"` + User string `yaml:"user"` + Password string `yaml:"password"` + TlsSkipVerify bool `yaml:"tlsSkipVerify"` + } `yaml:"email"` + SMS struct { + ApiURL string `yaml:"apiURL"` + AccessKeyID string `yaml:"AccessKeyID"` + AccessKeySecret string `yaml:"accessKeySecret"` + SignName string `yaml:"signName"` + TemplateCode string `yaml:"templateCode"` + } `yaml:"sms"` + SMSC struct { + Addr string `yaml:"addr"` + SystemID string `yaml:"systemID"` + Password string `yaml:"password"` + SystemType string `yaml:"systemType"` + } `yaml:"smsc"` +} + type MMLParam struct { Port int `yaml:"port"` Port2 int `yaml:"port2"` @@ -227,6 +230,9 @@ func NewYamlConfig() YamlConfig { SizeCol: 128, BufferSize: 65535, }, + Alarm: AlarmConfig{ + SplitEventAlarm: true, + }, } } diff --git a/tools/misc/tables_s.lst b/tools/misc/tables_s.lst index ac384f36..d647c3b5 100644 --- a/tools/misc/tables_s.lst +++ b/tools/misc/tables_s.lst @@ -1,5 +1,6 @@ 4a_log alarm +alarm_event alarm_forward_log alarm_log alarm_relation @@ -53,6 +54,8 @@ user user_menu user_role cdr_event +cdr_event_ims +cdr_event_smf ue_event kpi_report #end \ No newline at end of file