2021-05-08 19:33:06 +08:00
package com.nis.handler ;
2021-05-12 15:56:47 +08:00
import java.io.BufferedReader ;
import java.io.File ;
import java.io.FileInputStream ;
import java.io.IOException ;
import java.io.InputStream ;
import java.sql.SQLException ;
2021-05-08 19:33:06 +08:00
import java.util.List ;
2021-05-12 15:56:47 +08:00
import java.util.Map ;
import java.util.function.Function ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
2021-05-08 19:33:06 +08:00
2021-05-12 15:56:47 +08:00
import javax.sql.DataSource ;
import org.apache.commons.io.IOUtils ;
2021-05-08 19:33:06 +08:00
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.beans.factory.annotation.Value ;
2021-05-12 15:56:47 +08:00
import org.springframework.core.io.ClassPathResource ;
import org.springframework.core.io.Resource ;
import org.springframework.jdbc.datasource.init.ScriptException ;
import org.springframework.jdbc.datasource.init.ScriptUtils ;
2021-05-08 19:33:06 +08:00
import org.springframework.stereotype.Service ;
2021-05-12 15:56:47 +08:00
import org.springframework.util.ResourceUtils ;
2021-05-08 19:33:06 +08:00
import com.nis.dao.SqlDao ;
2021-05-12 15:56:47 +08:00
import com.nis.entity.SysConfigEntity ;
import com.nis.entity.SysUserEntity ;
2021-05-08 19:33:06 +08:00
import com.nis.service.AlertMessageService ;
import com.nis.service.AssetAssetService ;
import com.nis.service.AssetBrandService ;
import com.nis.service.AssetModelService ;
2021-05-19 18:14:17 +08:00
import com.nis.service.AssetTypeConfService ;
2021-05-08 19:33:06 +08:00
import com.nis.service.ChartService ;
import com.nis.service.DcService ;
import com.nis.service.EndpointService ;
2021-05-19 09:32:10 +08:00
import com.nis.service.ProjectTopoService ;
2021-05-12 15:56:47 +08:00
import com.nis.service.SysConfigService ;
import com.nis.service.SysUserService ;
2021-05-08 19:33:06 +08:00
import com.nis.util.Constant ;
2021-05-12 15:56:47 +08:00
import com.nis.util.ToolUtil ;
2021-05-08 19:33:06 +08:00
2021-05-12 15:56:47 +08:00
import cn.hutool.core.io.IoUtil ;
2021-05-08 19:33:06 +08:00
import cn.hutool.core.util.StrUtil ;
import cn.hutool.log.Log ;
/ * *
* 此类主要为执行各类sql语句
* @author admin
*
* /
@Service
public class SqlHandler {
private Log log = Log . get ( ) ;
@Autowired
private SqlDao sqlDao ;
@Autowired
private AssetBrandService assetBrandService ;
@Autowired
private AssetModelService assetModelService ;
@Autowired
private AssetAssetService assetAssetService ;
@Autowired
private DcService dcService ;
@Autowired
private AlertMessageService alertMessageService ;
@Autowired
private EndpointService endpointService ;
@Autowired
private ChartService chartService ;
2021-05-12 15:56:47 +08:00
@Autowired
private DataSource dataSource ;
@Autowired
private SysUserService sysUserService ;
@Autowired
private SysConfigService sysConfigService ;
2021-05-19 09:32:10 +08:00
@Autowired
private ProjectTopoService projectTopoService ;
2021-05-19 18:14:17 +08:00
@Autowired
private AssetTypeConfService assetTypeConfService ;
2021-05-08 19:33:06 +08:00
public void removeData ( ) {
String assetPing = " delete from asset_ping " ;
sqlDao . execute ( assetPing ) ;
2021-05-19 18:14:17 +08:00
String updateChartData = " update visual_chart set height = ceil(height/100) where height > 12 " ;
sqlDao . execute ( updateChartData ) ;
2021-05-08 19:33:06 +08:00
}
public void removeTable ( ) {
String dropSql = " drop table account; "
+ " drop table alert_message; "
+ " drop table asset; "
+ " drop table asset_tag; "
+ " drop table chart; "
+ " drop table chart_element; "
+ " drop table conf_event; "
+ " drop table endpoint; "
+ " drop table endpoint_state; "
+ " drop table idc_traffic; "
+ " drop table model; "
+ " drop table module; "
+ " drop table notification_script; "
+ " drop table panel; "
+ " drop table project; "
+ " drop table metadata_metric; "
+ " drop table metadata_label; "
+ " drop table qrtz_blob_triggers; "
+ " drop table qrtz_calendars; "
+ " drop table qrtz_cron_triggers; "
+ " drop table qrtz_fired_triggers; "
+ " drop table qrtz_locks; "
+ " drop table qrtz_paused_trigger_grps; "
+ " drop table qrtz_scheduler_state; "
+ " drop table qrtz_simple_triggers; "
+ " drop table qrtz_simprop_triggers; "
+ " drop table qrtz_triggers; "
+ " drop table sys_area; "
+ " drop table idc; "
+ " drop table terminal_log; "
+ " drop table user_group; "
+ " drop table user_group_rel; "
+ " drop table user_notification; "
+ " drop table qrtz_job_details; " ;
sqlDao . execute ( dropSql ) ;
}
public void tableCopy ( ) {
StringBuilder sb = new StringBuilder ( ) ;
List < String > tableNames = sqlDao . allTables ( ) ;
for ( String tableName : tableNames ) {
sb . append ( " CREATE TABLE " + tableName + " _copy SELECT * FROM " + tableName + " ; " ) ;
}
sqlDao . execute ( sb . toString ( ) ) ;
}
public void removeCopy ( ) {
StringBuilder sb = new StringBuilder ( ) ;
List < String > sqls = sqlDao . allRemoveCopyTables ( ) ;
for ( String sql : sqls ) {
sb . append ( sql ) ;
}
sqlDao . execute ( sb . toString ( ) ) ;
}
public void dropTriggers ( ) {
String databaseName = Constant . DATABASE_NAME ;
log . info ( " databaseName is {} " , databaseName ) ;
if ( StrUtil . isEmpty ( databaseName ) ) {
throw new RuntimeException ( " database name error " ) ;
}
// 批量删除触发器
StringBuilder sb = new StringBuilder ( ) ;
List < String > allTriggers = sqlDao . allTriggers ( databaseName ) ;
for ( String trigger : allTriggers ) {
sb . append ( " drop trigger " + trigger + " ; " ) ;
}
if ( StrUtil . isNotBlank ( sb . toString ( ) ) ) {
sqlDao . execute ( sb . toString ( ) ) ;
}
}
public void alterTable ( ) {
String sysLog = " ALTER TABLE `sys_log` \ r \ n "
+ " ADD COLUMN `sys_api_key` int(10) NULL COMMENT '关联 sys_api_key.id' AFTER `create_date`; " ;
sqlDao . execute ( sysLog ) ;
String sysMenu = " ALTER TABLE `sys_menu` \ r \ n "
+ " ADD COLUMN `description` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL, \ r \ n "
2021-05-12 15:56:47 +08:00
+ " ADD COLUMN `icon` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT 'nz-icon nz-alert-add', "
+ " ADD COLUMN `required` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '必要权限,如编辑按钮需要 勾选查看权限 填写内容为 sys_menu.id, 多个逗号分隔 1,2'; " ;
2021-05-08 19:33:06 +08:00
sqlDao . execute ( sysMenu ) ;
String alertRule = " ALTER TABLE `alert_rule` \ r \ n "
+ " CHANGE COLUMN `alert_name` `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '告警名称', \ r \ n "
+ " ADD COLUMN `severity_id` int(10) NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF', "
+ " ADD COLUMN `method` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL; " ;
sqlDao . execute ( alertRule ) ;
String assetPing = " ALTER TABLE `asset_ping` \ r \ n "
+ " ADD COLUMN `asset_id` int(10) NULL; " ;
sqlDao . execute ( assetPing ) ;
String cabinet = " ALTER TABLE `cabinet` \ r \ n "
+ " CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '数据中心id'; " ;
sqlDao . execute ( cabinet ) ;
String link = " ALTER TABLE `link` \ r \ n "
+ " DROP COLUMN `prev`, \ r \ n "
+ " DROP COLUMN `next`, \ r \ n "
+ " ADD COLUMN `weight` int(10) NULL; " ;
sqlDao . execute ( link ) ;
String projectTopo = " ALTER TABLE `project_topo` \ r \ n "
+ " MODIFY COLUMN `topo` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '拓扑图配置信息'; " ;
sqlDao . execute ( projectTopo ) ;
String projectTopoIcon = " ALTER TABLE `project_topo_icon` \ r \ n "
+ " ADD COLUMN `unit` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'icon组', \ r \ n "
+ " ADD COLUMN `width` int(10) NULL COMMENT '图片宽度 默认:-1 未知' , \ r \ n "
+ " ADD COLUMN `height` int(10) NULL COMMENT '图片高度 默认:-1 未知' ; " ;
sqlDao . execute ( projectTopoIcon ) ;
String promServer = " ALTER TABLE `prom_server` \ r \ n "
+ " CHANGE COLUMN `idc_id` `dc_id` int(10) NOT NULL COMMENT '所在idc', \ r \ n "
+ " ADD COLUMN `status_info` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, \ r \ n "
+ " ADD COLUMN `token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL; " ;
sqlDao . execute ( promServer ) ;
String sysUser = " ALTER TABLE `sys_user` \ r \ n "
+ " CHANGE COLUMN `user_id` `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " CHANGE COLUMN `password` `pin` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', \ r \ n "
+ " CHANGE COLUMN `create_time` `create_at` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', \ r \ n "
+ " ADD COLUMN `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户姓名 \\ r \\ n \\ r \\ n(用于系统内展示用户名称)', \ r \ n "
+ " ADD COLUMN `last_login_time` datetime NULL COMMENT '最后登陆时间', \ r \ n "
+ " ADD COLUMN `last_login_ip` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '最后登陆ip', \ r \ n "
+ " ADD COLUMN `mobile` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '手机号', \ r \ n "
+ " ADD COLUMN `create_by` int(10) NULL COMMENT '添加人', \ r \ n "
+ " DROP PRIMARY KEY, \ r \ n "
+ " ADD PRIMARY KEY (`id`) USING BTREE; " ;
sqlDao . execute ( sysUser ) ;
}
public void batchAddTable ( ) {
String alertNotifyLog = " CREATE TABLE `alert_notify_log` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `message_id` int(10) NOT NULL COMMENT '关联 alert_message.id', \ r \ n "
+ " `user_id` int(10) NOT NULL COMMENT '关联 sys_user.id', \ r \ n "
+ " `message_state` char(1) NOT NULL COMMENT '消息状态1: active2: expired', \ r \ n "
+ " `state` char(1) NOT NULL COMMENT '通知状态0:失败1:成功', \ r \ n "
+ " `error_msg` varchar(1024) NOT NULL DEFAULT '' COMMENT '发送错误信息', \ r \ n "
+ " `time` datetime NOT NULL COMMENT '发送时间', \ r \ n "
2021-05-12 15:56:47 +08:00
+ " `method_id` int(10) NOT NULL COMMENT '通知方式id 关联ALERT_NOTIFICATION_METHOD.id', \ r \ n "
2021-05-08 19:33:06 +08:00
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String alertNotifyMethod = " CREATE TABLE `alert_notify_method` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '通知方式名称', \ r \ n "
+ " `file_path` varchar(255) NOT NULL COMMENT '除内置外, 必填脚本路径, nz-web所在服务器路径', \ r \ n "
+ " `account` varchar(255) NOT NULL COMMENT '可选值为user表属性id, name, username, email, mobile', \ r \ n "
+ " `state` int(1) DEFAULT NULL COMMENT '状态0: 停用1: 可用', \ r \ n "
+ " `build_in` int(1) NOT NULL COMMENT '可选值: 0: 非内置1: 内置默认: 0系统内置一条 email 通知', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String alertSeverityConf = " CREATE TABLE `alert_severity_conf` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) NOT NULL, \ r \ n "
+ " `color` varchar(64) NOT NULL, \ r \ n "
+ " `weight` int(3) NOT NULL COMMENT '1-100 顺序取值不重复,值越小告警级别越高', \ r \ n "
+ " `remark` varchar(255) NOT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String alertSilenceConf = " CREATE TABLE `alert_silence_conf` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `name` varchar(255) DEFAULT NULL, \ r \ n "
+ " `matchers` varchar(4096) NOT NULL, \ r \ n "
+ " `reason` varchar(1024) NOT NULL COMMENT '记录告警静音原因 \\ r \\ n \\ r \\ n默认: “”', \ r \ n "
+ " `start_at` datetime NOT NULL COMMENT '开始时间', \ r \ n "
+ " `end_at` datetime NOT NULL COMMENT '结束时间', \ r \ n "
+ " `utime` datetime NOT NULL, \ r \ n "
+ " `state` int(1) NOT NULL COMMENT '可选值: \\ r \\ n \\ r \\ n1:active \\ r \\ n \\ r \\ n2:pending \\ r \\ n \\ r \\ n3:expired', \ r \ n "
+ " `seq` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '全局唯一,用于导入撤销 \\ r \\ n \\ r \\ n默认: “”', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetAsset = " CREATE TABLE `asset_asset` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(128) NOT NULL COMMENT '不重复,唯一索引', \ r \ n "
+ " `number` varchar(128) NOT NULL DEFAULT '' COMMENT '资产编号', \ r \ n "
+ " `sn` varchar(128) NOT NULL DEFAULT '' COMMENT '资产序列号', \ r \ n "
+ " `pid` int(10) NOT NULL DEFAULT -1 COMMENT '默认:-1 \\ r \\ n \\ r \\ n只有type vm = 1可以且必须填写此字段, 且 pid.type vmh = 1', \ r \ n "
+ " `type_id` int(10) NOT NULL, \ r \ n "
+ " `state_id` int(10) NOT NULL, \ r \ n "
+ " `brand_id` int(10) NOT NULL, \ r \ n "
+ " `model_id` int(10) NOT NULL, \ r \ n "
+ " `dc_id` int(10) NOT NULL, \ r \ n "
+ " `cabinet_id` int(10) DEFAULT NULL, \ r \ n "
+ " `cabinet_start` int(10) DEFAULT NULL, \ r \ n "
+ " `cabinet_end` int(10) DEFAULT NULL, \ r \ n "
+ " `manage_ip` varchar(64) NOT NULL COMMENT '管理ip', \ r \ n "
+ " `purchase_date` date DEFAULT NULL COMMENT '购买日期', \ r \ n "
+ " `create_at` datetime DEFAULT NULL COMMENT '添加时间', \ r \ n "
+ " `update_at` datetime DEFAULT NULL COMMENT '更新时间', \ r \ n "
+ " `create_by` int(10) DEFAULT NULL COMMENT '添加人, 与user表关联', \ r \ n "
+ " `update_by` int(10) DEFAULT NULL COMMENT '最后更新人', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " `auth_protocol_port` int(10) DEFAULT NULL COMMENT '认证服务端口', \ r \ n "
+ " `auth_type` char(1) DEFAULT NULL COMMENT '认证方式1: 用户名密码 \\ r \\ n \\ r \\ n2: 密钥', \ r \ n "
+ " `auth_username` varchar(64) DEFAULT NULL COMMENT '用户名', \ r \ n "
+ " `auth_pin` varchar(256) DEFAULT NULL COMMENT '密码auth_type =1 : 记录登录密码 \\ r \\ n \\ r \\ nauth_type=2 : 记录密钥密码', \ r \ n "
+ " `auth_pri_key` text DEFAULT NULL COMMENT '秘钥', \ r \ n "
+ " `auth_user_tip` varchar(64) DEFAULT NULL COMMENT '用户名提示 telnet协议有效', \ r \ n "
+ " `auth_pin_tip` varchar(64) DEFAULT NULL COMMENT '密码提示 telnet协议有效', \ r \ n "
+ " `snmp_credential_id` int(10) DEFAULT NULL COMMENT 'snmp凭证id type 开启snmp有效', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetBrand = " CREATE TABLE `asset_brand` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称', \ r \ n "
+ " `remark` varchar(256) DEFAULT '' COMMENT '备注', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetFieldGroup = " CREATE TABLE `asset_field_group` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) DEFAULT NULL COMMENT '名称', \ r \ n "
+ " `remark` varchar(1024) DEFAULT NULL, \ r \ n "
+ " `build_in` char(1) DEFAULT NULL COMMENT '1:内置, 0: 非内置, 默认: 0 \\ r \\ n \\ r \\ n内置数据不允许删除', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetFieldMeta = " CREATE TABLE `asset_field_meta` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) NOT NULL, \ r \ n "
+ " `meta_key` varchar(128) NOT NULL COMMENT '唯一不重复 正则:[ \\ \\ w]+', \ r \ n "
+ " `group_id` varchar(128) NOT NULL COMMENT '关联 asset_field_group.id', \ r \ n "
+ " `search` char(1) NOT NULL DEFAULT '0' COMMENT '默认: 0 0: 不可查询 \\ r \\ n \\ r \\ n1: 可查询', \ r \ n "
+ " `display` char(1) NOT NULL DEFAULT '0' COMMENT '默认: 0 0: 列表不展示 \\ r \\ n \\ r \\ n1: 列表展示', \ r \ n "
+ " `type` varchar(32) NOT NULL DEFAULT 'TEXT' COMMENT '属性输入类型', \ r \ n "
+ " `remark` varchar(64) DEFAULT NULL, \ r \ n "
+ " `param` text NOT NULL COMMENT '默认:{}', \ r \ n "
+ " `build_in` int(1) NOT NULL DEFAULT 0 COMMENT '1:内置, 0: 非内置, 默认: 0', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetFieldValue = " CREATE TABLE `asset_field_value` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `asset_id` int(10) NOT NULL COMMENT ' 关联 asset.id', \ r \ n "
+ " `meta_id` int(10) NOT NULL COMMENT '关联asset_field_meta.id', \ r \ n "
+ " `value` text DEFAULT NULL, \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '用户导入撤销', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetModel = " CREATE TABLE `asset_model` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `brand_id` int(10) NOT NULL, \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '型号名称', \ r \ n "
+ " `remark` varchar(256) NOT NULL DEFAULT '', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " `usize` int(2) NOT NULL DEFAULT 1, \ r \ n "
+ " `chart_ids` varchar(4096) DEFAULT NULL COMMENT 'chart 模板id', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetStateConf = " CREATE TABLE `asset_state_conf` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '型号名称', \ r \ n "
+ " `ping` char(1) NOT NULL COMMENT '0: 关闭 \\ r \\ n \\ r \\ n1: 开启', \ r \ n "
+ " `monitor` char(1) NOT NULL COMMENT '0: 关闭 \\ r \\ n \\ r \\ n1: 开启', \ r \ n "
+ " `alert` char(1) NOT NULL COMMENT '0: 关闭 \\ r \\ n \\ r \\ n1: 开启', \ r \ n "
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认“”', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置1:内置, 0: 非内置, 默认: 0 \\ r \\ n \\ r \\ n内置数据不允许删除', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String assetTypeConf = " CREATE TABLE `asset_type_conf` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认为0', \ r \ n "
+ " `vm` char(1) NOT NULL COMMENT '是否为虚拟机 0:不是虚拟机 \\ r \\ n \\ r \\ n1:是虚拟机', \ r \ n "
+ " `vmh` char(1) NOT NULL COMMENT '是否为虚拟机宿主 0:不是宿主机,不支持挂载 虚拟机 \\ r \\ n \\ r \\ n1:是宿主机,支持挂载虚拟机', \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '名称', \ r \ n "
+ " `remark` varchar(1024) NOT NULL DEFAULT '', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置, 0: 非内置, 默认: 0 \\ r \\ n \\ r \\ n内置数据不允许删除', \ r \ n "
+ " `auth_protocol` int(1) NOT NULL DEFAULT 0 COMMENT '认证协议 默认: 0 \\ r \\ n \\ r \\ n0: 无 \\ r \\ n \\ r \\ n1: ssh \\ r \\ n \\ r \\ n2: telnet', \ r \ n "
+ " `snmp_enable` int(1) NOT NULL DEFAULT 0 COMMENT '是否支持snmp 默认: 0 \\ r \\ n \\ r \\ n0: 不支持 \\ r \\ n \\ r \\ n1: 支持', \ r \ n "
+ " `snmp_collect` int(1) NOT NULL DEFAULT 0 COMMENT '是否开启snmp采集 默认: 0 \\ r \\ n \\ r \\ n0: 不开启 \\ r \\ n \\ r \\ n1: 开启 \\ r \\ n \\ r \\ n当snmp_enable=1时有效', \ r \ n "
+ " `ssh_collect` int(1) NOT NULL COMMENT '是否开启ssh采集 默认: 0 \\ r \\ n \\ r \\ n0: 不开启 \\ r \\ n \\ r \\ n1: 开启 \\ r \\ n \\ r \\ n当 auth_protocol=1时有效', \ r \ n "
+ " `ssh_collect_script` varchar(256) NOT NULL DEFAULT '', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String dc = " CREATE TABLE `dc` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键自增', \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '名称', \ r \ n "
+ " `location` varchar(256) DEFAULT NULL COMMENT '位置', \ r \ n "
+ " `tel` varchar(128) DEFAULT NULL COMMENT '联系电话', \ r \ n "
+ " `principal` int(10) DEFAULT NULL COMMENT '机房负责人', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '全局唯一,用于导入撤销', \ r \ n "
+ " `x` int(10) DEFAULT NULL COMMENT '列', \ r \ n "
+ " `y` int(10) DEFAULT NULL COMMENT '行', \ r \ n "
+ " `longitude` double(8,5) DEFAULT NULL COMMENT '经度 -180,180', \ r \ n "
+ " `latitude` double(8,5) DEFAULT NULL COMMENT '纬度 -90, 90', \ r \ n "
+ " `state` varchar(8) NOT NULL DEFAULT 'ON' COMMENT '可选值: ON,OFF 默认: ON', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8; " ;
String monitorEndpoint = " CREATE TABLE `monitor_endpoint` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(128) NOT NULL COMMENT '名称', \ r \ n "
+ " `module_id` int(10) NOT NULL, \ r \ n "
+ " `asset_id` int(10) NOT NULL, \ r \ n "
+ " `configs` text NOT NULL, \ r \ n "
+ " `hash` varchar(64) NOT NULL COMMENT '计算 moduleId + assetId + host + port + configs 的hash值, 用于确保相同配置不重复', \ r \ n "
+ " `enabled` int(4) NOT NULL COMMENT '是否启用 可选值 \\ r \\ n \\ r \\ n0: 停用 \\ r \\ n \\ r \\ n1: 启用', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String monitorEndpointState = " CREATE TABLE `monitor_endpoint_state` ( \ r \ n "
+ " `endpoint_id` int(10) NOT NULL, \ r \ n "
+ " `state` int(4) NOT NULL COMMENT ' ', \ r \ n "
+ " `time` datetime NOT NULL, \ r \ n "
+ " PRIMARY KEY (`endpoint_id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String monitorEventLog = " CREATE TABLE `monitor_event_log` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `event` varchar(64) NOT NULL COMMENT '唯一不重复 \\ r \\ n \\ r \\ n包含值: cmd, prometheus, rule, snmp, blackbox', \ r \ n "
+ " `counter` int(10) NOT NULL COMMENT '描述信息, update +1', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String monitorModule = " CREATE TABLE `monitor_module` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) DEFAULT NULL COMMENT '组件名称 唯一索引,表内不重复', \ r \ n "
+ " `project_id` int(10) NOT NULL, \ r \ n "
+ " `type` varchar(64) NOT NULL COMMENT '可选值http snmp', \ r \ n "
+ " `endpoint_name_tmpl` varchar(64) NOT NULL COMMENT 'endpoint name模板 支持 {{}} 变量替换, asset, module \\ r \\ n \\ r \\ n例: {{asset.name}}-{{module.name}} \\ r \\ n \\ r \\ n最终endpoint的name为: 192.168.40.1-mysql', \ r \ n "
+ " `remark` varchar(256) DEFAULT NULL, \ r \ n "
+ " `configs` text NOT NULL COMMENT '配置参数 ', \ r \ n "
+ " `snmp_yml` text DEFAULT NULL COMMENT 'snmp_exporter需要的配置部分', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String monitorProject = " CREATE TABLE `monitor_project` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) DEFAULT NULL COMMENT '应用名称', \ r \ n "
+ " `remark` varchar(256) DEFAULT NULL COMMENT '描述信息', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置 1:内置, 0: 非内置, 默认: 0', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String snmpCredential = " CREATE TABLE `snmp_credential` ( \ r \ n "
+ " `id` int(11) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '名称', \ r \ n "
+ " `remark` varchar(1024) DEFAULT NULL COMMENT '描述信息', \ r \ n "
+ " `type` int(1) NOT NULL COMMENT '1,2,3 -- > V1,V2,V3 创建人id', \ r \ n "
+ " `config` varchar(1024) DEFAULT NULL COMMENT '具体配置', \ r \ n "
+ " `port` int(1) NOT NULL DEFAULT 161 COMMENT '端口号 默认161', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String sysApiKey = " CREATE TABLE `sys_api_key` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '名称 唯一不重复', \ r \ n "
+ " `token` varchar(512) NOT NULL COMMENT '密钥 唯一不重复', \ r \ n "
+ " `role_id` int(10) NOT NULL COMMENT '角色id', \ r \ n "
+ " `create_by` int(10) NOT NULL COMMENT '创建用户', \ r \ n "
+ " `create_at` datetime NOT NULL COMMENT '创建时间', \ r \ n "
+ " `expire_at` datetime DEFAULT NULL COMMENT '失效时间 为空不失效', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String sysTimezone = " CREATE TABLE `sys_timezone` ( \ r \ n "
+ " `id` int(4) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(255) NOT NULL COMMENT 'timezone id', \ r \ n "
+ " `offset` int(10) NOT NULL COMMENT '单位: milliseconds', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String terminalCmd = " CREATE TABLE `terminal_cmd` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `uuid` varchar(256) NOT NULL COMMENT '会话id', \ r \ n "
+ " `cmd` varchar(4096) DEFAULT NULL COMMENT '用户输入命令', \ r \ n "
+ " `time` int(10) DEFAULT NULL COMMENT '单位: ms \\ r \\ n \\ r \\ n记录的是 session开始后的时间偏移量', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String terminalRecord = " CREATE TABLE `terminal_record` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `uuid` varchar(256) NOT NULL COMMENT '会话ID', \ r \ n "
+ " `start_time` int(10) NOT NULL COMMENT '单位: ms \\ r \\ n \\ r \\ nrecord 开始时间,记录的是会话开始后的时间偏移量', \ r \ n "
+ " `end_time` int(10) NOT NULL COMMENT '单位: ms \\ r \\ n \\ r \\ nrecord 结束时间,记录的是会话开始后的时间偏移量', \ r \ n "
+ " `content` mediumblob NOT NULL COMMENT '记录的是 session开始后的时间偏移量 \\ r \\ n \\ r \\ n最大储存 65K, 超过部分再新增一条记录', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String terminalSession = " CREATE TABLE `terminal_session` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `uuid` varchar(256) DEFAULT NULL COMMENT '会话id', \ r \ n "
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id', \ r \ n "
+ " `host` varchar(128) DEFAULT NULL COMMENT '登录主机', \ r \ n "
+ " `port` int(10) DEFAULT NULL COMMENT '端口', \ r \ n "
+ " `protocol` varchar(32) DEFAULT NULL COMMENT '协议, 可选值: SSH, TELNET。统一大写', \ r \ n "
+ " `auth_type` int(10) DEFAULT NULL COMMENT '认证类型, 1: 密码, 2: 私钥证书 认证类型, 1: 密码, 2: 私钥证书 \\ r \\ n \\ r \\ nssh可选值: 1、2 \\ r \\ n \\ r \\ ntelnet可选值: 1', \ r \ n "
+ " `login_user` varchar(128) DEFAULT NULL COMMENT '登录主机的用户名', \ r \ n "
+ " `user_id` int(10) NOT NULL COMMENT 'nezha系统内用户id', \ r \ n "
+ " `remote_addr` varchar(128) NOT NULL COMMENT '客户端ip地址', \ r \ n "
+ " `start_time` datetime NOT NULL COMMENT '开始时间', \ r \ n "
+ " `end_time` datetime DEFAULT NULL COMMENT '结束时间', \ r \ n "
+ " `status` int(1) NOT NULL COMMENT '0: 连接中 \\ r \\ n \\ r \\ n1: 发送失败( 没有通过ssh或telnet发送成功) \\ r \\ n \\ r \\ n2: 已结束 \\ r \\ n \\ r \\ n3: 强制退出 \\ r \\ n \\ r \\ n4: 未知错误', \ r \ n "
+ " `kill_user_id` int(10) DEFAULT NULL COMMENT '强制关闭用户id', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String visualChart = " CREATE TABLE `visual_chart` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `name` varchar(255) NOT NULL COMMENT '图表标题', \ r \ n "
+ " `panel_id` int(10) NOT NULL COMMENT '图表id, 关联panel表 \\ r \\ n \\ r \\ n当 panel_id =0 代表为模板', \ r \ n "
+ " `group_id` int(10) NOT NULL COMMENT '关联 visual_chart.id, 关联 chart 的 type 只能为 group', \ r \ n "
+ " `span` int(10) NOT NULL COMMENT 'type = group, span = 12, 用户修改无效', \ r \ n "
+ " `height` int(10) NOT NULL COMMENT 'type = group, height = -1, 用户修改无效', \ r \ n "
+ " `update_by` int(10) NOT NULL COMMENT '更新人', \ r \ n "
+ " `update_at` datetime NOT NULL COMMENT '更新时间', \ r \ n "
+ " `type` varchar(32) NOT NULL COMMENT '图表类型 line \\ r \\ nbar \\ r \\ ntable \\ r \\ nstackArea \\ r \\ nsingleStat \\ r \\ nurl \\ r \\ nassetInfo \\ r \\ nalertList \\ r \\ ngroup', \ r \ n "
+ " `unit` int(10) NOT NULL DEFAULT 2 COMMENT '界面显示采用二级菜单', \ r \ n "
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '默认为 0, 用于chart排序', \ r \ n "
+ " `param` text DEFAULT NULL COMMENT '参数 记录type的具体参数信息, 数据格式为json对象 \\ r \\ n \\ r \\ n当type = url时 \\ r \\ n \\ r \\ n{ \\ r \\ n \\ r \\ n “url”: \" https://www.baidu.com \" \\ r \\ n \\ r \\ n}', \ r \ n "
+ " `pid` int(10) DEFAULT NULL COMMENT '模板id 图表通过模板创建时不能为空,便于后续模板修改同步修改', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置, 0: 非内置, 默认: 0', \ r \ n "
+ " `remark` varchar(1024) NOT NULL DEFAULT '' COMMENT '默认: \" \" ', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识', \ r \ n "
+ " `var_type` int(1) DEFAULT NULL COMMENT '模板或使用模板创建有效, pid != null | panel_id == 0 时不能为空 \\ r \\ n \\ r \\ n1: asset \\ r \\ n \\ r \\ n2: endpoint', \ r \ n "
+ " `var_id` int(10) DEFAULT NULL COMMENT 'pid != null 时不能为空 \\ r \\ n \\ r \\ n根据var_type 分别对应 asset.id, endpoint.id, 用于 表达式变量替换', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String visualChartElement = " CREATE TABLE `visual_chart_element` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `chart_id` int(10) NOT NULL COMMENT '图表id, 关联chart表', \ r \ n "
+ " `expression` varchar(4096) NOT NULL COMMENT 'promql表达式', \ r \ n "
+ " `type` varchar(32) NOT NULL COMMENT 'normal: 简单表达式, 可页面解析, 如: up{asset= \" 192.168.40.40 \" ,module= \" kafka \" } \\ r \\ n \\ r \\ nexpert: 用户输入表达式, 解析困难, 直接在页面显示', \ r \ n "
+ " `legend` varchar(512) DEFAULT NULL COMMENT '图例别名表达式', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置', \ r \ n "
+ " `seq` varchar(64) DEFAULT NULL COMMENT '导入唯一标识 用于导入撤销', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String visualPanel = " CREATE TABLE `visual_panel` ( \ r \ n "
+ " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '图表名', \ r \ n "
+ " `create_by` int(10) NOT NULL COMMENT '创建人id', \ r \ n "
+ " `type` varchar(64) NOT NULL DEFAULT 'dashboard' COMMENT '可选值: dashboard, asset, project, module, endpoint, model \\ r \\ n \\ r \\ n默认值: dashboard', \ r \ n "
+ " `link` int(10) DEFAULT NULL COMMENT '关联id', \ r \ n "
+ " `pid` int(10) NOT NULL DEFAULT 0 COMMENT '父id 默认0', \ r \ n "
+ " `weight` int(10) NOT NULL DEFAULT 0 COMMENT '排序 默认0', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '是否内置', \ r \ n "
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '默认:“” \\ r \\ n \\ r \\ n用于导入撤销', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String visualExpressionTmpl = " CREATE TABLE `visual_expression_tmpl` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT, \ r \ n "
+ " `name` varchar(64) NOT NULL COMMENT '模板名称', \ r \ n "
+ " `gname` varchar(64) NOT NULL DEFAULT 'default' COMMENT '组名, 默认: default', \ r \ n "
+ " `expression` varchar(4096) NOT NULL COMMENT '表达式,不能为空', \ r \ n "
+ " `remark` varchar(512) NOT NULL COMMENT '描述', \ r \ n "
+ " `build_in` char(1) NOT NULL DEFAULT '0' COMMENT '1:内置, 0: 非内置, 默认: 0', \ r \ n "
+ " `seq` varchar(64) NOT NULL DEFAULT '' COMMENT '用于导入撤销,默认:“”', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
String alertMessageActive = " CREATE TABLE `alert_message_active` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别', \ r \ n "
+ " `summary` text DEFAULT NULL COMMENT '告警摘要', \ r \ n "
+ " `description` text DEFAULT NULL COMMENT '告警描述', \ r \ n "
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息', \ r \ n "
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间', \ r \ n "
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间', \ r \ n "
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired', \ r \ n "
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID', \ r \ n "
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id', \ r \ n "
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id', \ r \ n "
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id', \ r \ n "
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id', \ r \ n "
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id', \ r \ n "
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key', \ r \ n "
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式 \\ r \\ n \\ r \\ ntime username \\ r \\ n \\ r \\ nmessage', \ r \ n "
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE, \ r \ n "
+ " KEY `idx_severity` (`severity`) USING BTREE, \ r \ n "
+ " KEY `idx_state` (`state`) USING BTREE, \ r \ n "
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE, \ r \ n "
+ " KEY `idx_project_id` (`project_id`) USING BTREE, \ r \ n "
+ " KEY `idx_module_id` (`module_id`) USING BTREE, \ r \ n "
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE, \ r \ n "
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE, \ r \ n "
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; " ;
String alertMessageHistory = " CREATE TABLE `alert_message_history` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别', \ r \ n "
+ " `summary` text DEFAULT NULL COMMENT '告警摘要', \ r \ n "
+ " `description` text DEFAULT NULL COMMENT '告警描述', \ r \ n "
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息', \ r \ n "
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间', \ r \ n "
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间', \ r \ n "
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired', \ r \ n "
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID', \ r \ n "
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id', \ r \ n "
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id', \ r \ n "
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id', \ r \ n "
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id', \ r \ n "
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id', \ r \ n "
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key', \ r \ n "
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式 \\ r \\ n \\ r \\ ntime username \\ r \\ n \\ r \\ nmessage', \ r \ n "
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE, \ r \ n "
+ " KEY `idx_severity` (`severity`) USING BTREE, \ r \ n "
+ " KEY `idx_state` (`state`) USING BTREE, \ r \ n "
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE, \ r \ n "
+ " KEY `idx_project_id` (`project_id`) USING BTREE, \ r \ n "
+ " KEY `idx_module_id` (`module_id`) USING BTREE, \ r \ n "
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE, \ r \ n "
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE, \ r \ n "
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; " ;
String alertMessageSilence = " CREATE TABLE `alert_message_silence` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `severity` varchar(64) DEFAULT NULL COMMENT '告警级别', \ r \ n "
+ " `summary` text DEFAULT NULL COMMENT '告警摘要', \ r \ n "
+ " `description` text DEFAULT NULL COMMENT '告警描述', \ r \ n "
+ " `labels` text DEFAULT NULL COMMENT '告警labels信息', \ r \ n "
+ " `start_at` datetime DEFAULT NULL COMMENT '开始时间', \ r \ n "
+ " `end_at` datetime DEFAULT NULL COMMENT '结束时间', \ r \ n "
+ " `state` int(10) DEFAULT NULL COMMENT '状态1:pending,2:Expired', \ r \ n "
+ " `rule_id` int(10) NOT NULL COMMENT '告警规则ID', \ r \ n "
+ " `project_id` int(10) DEFAULT NULL COMMENT '关联project id', \ r \ n "
+ " `module_id` int(10) DEFAULT NULL COMMENT '关联module id', \ r \ n "
+ " `endpoint_id` int(10) DEFAULT NULL COMMENT '关联endpoint id', \ r \ n "
+ " `asset_id` int(10) DEFAULT NULL COMMENT '关联资产id', \ r \ n "
+ " `dc_id` int(10) DEFAULT NULL COMMENT '关联idc id', \ r \ n "
+ " `hash_key` varchar(255) NOT NULL DEFAULT '' COMMENT 'redis hash key', \ r \ n "
+ " `remark` text DEFAULT NULL COMMENT '备注 记录手动关闭记录信息,格式 \\ r \\ n \\ r \\ ntime username \\ r \\ n \\ r \\ nmessage', \ r \ n "
+ " `severity_id` int(10) DEFAULT NULL COMMENT '告警级别id,关联ALERT_SEVERITY_CONF', \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE, \ r \ n "
+ " KEY `idx_severity` (`severity`) USING BTREE, \ r \ n "
+ " KEY `idx_state` (`state`) USING BTREE, \ r \ n "
+ " KEY `idx_rule_id` (`rule_id`) USING BTREE, \ r \ n "
+ " KEY `idx_project_id` (`project_id`) USING BTREE, \ r \ n "
+ " KEY `idx_module_id` (`module_id`) USING BTREE, \ r \ n "
+ " KEY `idx_endpoint_id` (`endpoint_id`) USING BTREE, \ r \ n "
+ " KEY `idx_asset_id` (`asset_id`) USING BTREE, \ r \ n "
+ " KEY `idx_dc_id` (`dc_id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; " ;
String alertSilenceMessageRel = " CREATE TABLE `alert_silence_message_rel` ( \ r \ n "
+ " `id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键', \ r \ n "
+ " `silence_conf_id` int(10) NOT NULL, \ r \ n "
+ " `message_id` bigint(20) NOT NULL, \ r \ n "
+ " `hash_key` varchar(255) NOT NULL, \ r \ n "
+ " PRIMARY KEY (`id`) USING BTREE \ r \ n "
+ " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; " ;
StringBuilder sb = new StringBuilder ( ) ;
sb . append ( alertSilenceConf ) ;
sb . append ( alertSeverityConf ) ;
sb . append ( alertNotifyMethod ) ;
sb . append ( alertNotifyLog ) ;
sb . append ( assetAsset ) ;
sb . append ( assetBrand ) ;
sb . append ( assetFieldGroup ) ;
sb . append ( assetFieldMeta ) ;
sb . append ( assetFieldValue ) ;
sb . append ( assetModel ) ;
sb . append ( assetStateConf ) ;
sb . append ( assetTypeConf ) ;
sb . append ( dc ) ;
sb . append ( monitorEndpoint ) ;
sb . append ( monitorEndpointState ) ;
sb . append ( monitorEventLog ) ;
sb . append ( monitorModule ) ;
sb . append ( monitorProject ) ;
sb . append ( snmpCredential ) ;
sb . append ( sysApiKey ) ;
sb . append ( sysTimezone ) ;
sb . append ( terminalCmd ) ;
sb . append ( terminalRecord ) ;
sb . append ( terminalSession ) ;
sb . append ( visualChart ) ;
sb . append ( visualChartElement ) ;
sb . append ( visualPanel ) ;
sb . append ( visualExpressionTmpl ) ;
sb . append ( alertMessageHistory ) ;
sb . append ( alertMessageSilence ) ;
sb . append ( alertMessageActive ) ;
sb . append ( alertSilenceMessageRel ) ;
sqlDao . execute ( sb . toString ( ) ) ;
}
/ * *
* alert_severity_conf
* asset_field_group
* asset_brand
* asset_model
* asset_state_conf
* asset_type_conf
* monitor_event_log
* sys_timezone
2021-05-12 15:56:47 +08:00
* @throws IOException
* @throws SQLException
* @throws ScriptException
2021-05-08 19:33:06 +08:00
* /
2021-05-12 15:56:47 +08:00
public void initData ( ) throws ScriptException , SQLException {
Resource classPathResource = new ClassPathResource ( " db/init.sql " ) ;
ScriptUtils . executeSqlScript ( dataSource . getConnection ( ) , classPathResource ) ;
// asset_brand表数据单独处理
assetBrandService . handler ( ) ;
// asset_model表数据处理 前提先处理好brand表数据信息
assetModelService . handler ( ) ;
2021-05-19 18:14:17 +08:00
// asset_type_conf表数据处理
assetTypeConfService . handler ( ) ;
2021-05-12 15:56:47 +08:00
/ * StringBuilder sb = new StringBuilder ( ) ;
2021-05-08 19:33:06 +08:00
sb . append ( " INSERT INTO `asset_field_group`(`id`, `name`, `remark`, `build_in`, `seq`) VALUES (1, 'default', 'Default meta group', '1', ''); " ) ;
sb . append ( " INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (1, 'P1', '#f2866e', 1, '高级告警'); " ) ;
sb . append ( " INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (2, 'P2', '#f89984', 2, '中级告警'); " ) ;
sb . append ( " INSERT INTO `alert_severity_conf`(`id`, `name`, `color`, `weight`, `remark`) VALUES (3, 'P3', '#f7ba78', 3, '低级告警'); " ) ;
sb . append ( " INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (1, 'In use', '1', '1', '1', '', '1'); " ) ;
sb . append ( " INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (2, 'Not in storage', '0', '0', '0', '', '1'); " ) ;
sb . append ( " INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (3, 'Idle', '1', '0', '1', '', '1'); " ) ;
sb . append ( " INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (4, 'Repair', '1', '1', '0', '', '1'); " ) ;
sb . append ( " INSERT INTO `asset_state_conf`(`id`, `name`, `ping`, `monitor`, `alert`, `remark`, `build_in`) VALUES (5, 'Scrapped', '1', '0', '0', '', '1'); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (1, 0, '1', '1', 'Network devices', 'Network devices', '1', 2, 1, 1, 1, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (2, 0, '0', '0', 'Router', '', '1', 2, 1, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (3, 0, '0', '0', 'Firewall', '', '1', 2, 1, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (4, 0, '0', '0', 'Switch', '', '1', 2, 1, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (5, 0, '0', '1', 'Computer', '', '1', 1, 0, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (6, 0, '0', '1', 'Server', '', '1', 1, 0, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (7, 0, '1', '0', 'Virtual machine', '', '1', 1, 0, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `asset_type_conf`(`id`, `pid`, `vm`, `vmh`, `name`, `remark`, `build_in`, `auth_protocol`, `snmp_enable`, `snmp_collect`, `ssh_collect`, `ssh_collect_script`) VALUES (8, 0, '0', '0', 'ADC', '', '1', 1, 1, 0, 0, ''); " ) ;
sb . append ( " INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('blackbox', 0); " ) ;
sb . append ( " INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('cmd', 0); " ) ;
sb . append ( " INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('global', 0); " ) ;
sb . append ( " INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('per-datacenter', 0); " ) ;
sb . append ( " INSERT INTO `monitor_event_log`(`event`, `counter`) VALUES ('snmp', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (1, 'Africa/Abidjan', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (2, 'Africa/Accra', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (3, 'Africa/Algiers', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (4, 'Africa/Bissau', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (5, 'Africa/Cairo', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (6, 'Africa/Casablanca', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (7, 'Africa/Ceuta', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (8, 'Africa/El_Aaiun', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (9, 'Africa/Johannesburg', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (10, 'Africa/Juba', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (11, 'Africa/Khartoum', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (12, 'Africa/Lagos', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (13, 'Africa/Maputo', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (14, 'Africa/Monrovia', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (15, 'Africa/Nairobi', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (16, 'Africa/Ndjamena', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (17, 'Africa/Sao_Tome', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (18, 'Africa/Tripoli', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (19, 'Africa/Tunis', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (20, 'Africa/Windhoek', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (21, 'Antarctica/Casey', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (22, 'Antarctica/Davis', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (23, 'Antarctica/DumontDUrville', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (24, 'Antarctica/Macquarie', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (25, 'Antarctica/Mawson', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (26, 'Antarctica/Palmer', -14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (27, 'Antarctica/Rothera', -10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (28, 'Antarctica/Syowa', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (29, 'Antarctica/Troll', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (30, 'Antarctica/Vostok', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (31, 'Asia/Almaty', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (32, 'Asia/Amman', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (33, 'Asia/Anadyr', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (34, 'Asia/Aqtau', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (35, 'Asia/Aqtobe', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (36, 'Asia/Ashgabat', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (37, 'Asia/Atyrau', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (38, 'Asia/Baghdad', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (39, 'Asia/Baku', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (40, 'Asia/Bangkok', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (41, 'Asia/Barnaul', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (42, 'Asia/Beirut', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (43, 'Asia/Bishkek', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (44, 'Asia/Brunei', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (45, 'Asia/Chita', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (46, 'Asia/Choibalsan', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (47, 'Asia/Colombo', 19800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (48, 'Asia/Damascus', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (49, 'Asia/Dhaka', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (50, 'Asia/Dili', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (51, 'Asia/Dubai', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (52, 'Asia/Dushanbe', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (53, 'Asia/Famagusta', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (54, 'Asia/Gaza', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (55, 'Asia/Hebron', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (56, 'Asia/Ho_Chi_Minh', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (57, 'Asia/Hong_Kong', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (58, 'Asia/Hovd', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (59, 'Asia/Irkutsk', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (60, 'Asia/Jakarta', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (61, 'Asia/Jayapura', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (62, 'Asia/Jerusalem', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (63, 'Asia/Kabul', 16200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (64, 'Asia/Kamchatka', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (65, 'Asia/Karachi', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (66, 'Asia/Kathmandu', 20700000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (67, 'Asia/Khandyga', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (68, 'Asia/Kolkata', 19800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (69, 'Asia/Krasnoyarsk', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (70, 'Asia/Kuala_Lumpur', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (71, 'Asia/Kuching', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (72, 'Asia/Macau', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (73, 'Asia/Magadan', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (74, 'Asia/Makassar', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (75, 'Asia/Manila', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (76, 'Asia/Nicosia', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (77, 'Asia/Novokuznetsk', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (78, 'Asia/Novosibirsk', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (79, 'Asia/Omsk', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (80, 'Asia/Oral', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (81, 'Asia/Pontianak', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (82, 'Asia/Pyongyang', 30600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (83, 'Asia/Qatar', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (84, 'Asia/Qostanay', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (85, 'Asia/Qyzylorda', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (86, 'Asia/Riyadh', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (87, 'Asia/Sakhalin', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (88, 'Asia/Samarkand', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (89, 'Asia/Seoul', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (90, 'Asia/Shanghai', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (91, 'Asia/Singapore', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (92, 'Asia/Srednekolymsk', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (93, 'Asia/Taipei', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (94, 'Asia/Tashkent', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (95, 'Asia/Tbilisi', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (96, 'Asia/Tehran', 12600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (97, 'Asia/Thimphu', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (98, 'Asia/Tokyo', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (99, 'Asia/Tomsk', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (100, 'Asia/Ulaanbaatar', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (101, 'Asia/Urumqi', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (102, 'Asia/Ust-Nera', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (103, 'Asia/Vladivostok', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (104, 'Asia/Yakutsk', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (105, 'Asia/Yangon', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (106, 'Asia/Yekaterinburg', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (107, 'Asia/Yerevan', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (108, 'Atlantic/Azores', -3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (109, 'Atlantic/Bermuda', -14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (110, 'Atlantic/Canary', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (111, 'Atlantic/Cape_Verde', -3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (112, 'Atlantic/Faroe', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (113, 'Atlantic/Madeira', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (114, 'Atlantic/Reykjavik', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (115, 'Atlantic/South_Georgia', -7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (116, 'Atlantic/Stanley', -10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (117, 'Australia/Adelaide', 34200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (118, 'Australia/Brisbane', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (119, 'Australia/Broken_Hill', 34200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (120, 'Australia/Darwin', 34200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (121, 'Australia/Eucla', 31500000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (122, 'Australia/Hobart', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (123, 'Australia/Lindeman', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (124, 'Australia/Lord_Howe', 37800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (125, 'Australia/Melbourne', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (126, 'Australia/Perth', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (127, 'Australia/Sydney', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (128, 'Etc/GMT', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (129, 'Etc/GMT+1', -3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (130, 'Etc/GMT+10', -36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (131, 'Etc/GMT+11', -39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (132, 'Etc/GMT+12', -43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (133, 'Etc/GMT+2', -7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (134, 'Etc/GMT+3', -10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (135, 'Etc/GMT+4', -14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (136, 'Etc/GMT+5', -18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (137, 'Etc/GMT+6', -21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (138, 'Etc/GMT+7', -25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (139, 'Etc/GMT+8', -28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (140, 'Etc/GMT+9', -32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (141, 'Etc/GMT-1', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (142, 'Etc/GMT-10', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (143, 'Etc/GMT-11', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (144, 'Etc/GMT-12', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (145, 'Etc/GMT-13', 46800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (146, 'Etc/GMT-14', 50400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (147, 'Etc/GMT-2', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (148, 'Etc/GMT-3', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (149, 'Etc/GMT-4', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (150, 'Etc/GMT-5', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (151, 'Etc/GMT-6', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (152, 'Etc/GMT-7', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (153, 'Etc/GMT-8', 28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (154, 'Etc/GMT-9', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (155, 'Etc/UTC', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (156, 'Europe/Amsterdam', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (157, 'Europe/Andorra', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (158, 'Europe/Astrakhan', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (159, 'Europe/Athens', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (160, 'Europe/Belgrade', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (161, 'Europe/Berlin', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (162, 'Europe/Brussels', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (163, 'Europe/Bucharest', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (164, 'Europe/Budapest', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (165, 'Europe/Chisinau', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (166, 'Europe/Copenhagen', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (167, 'Europe/Dublin', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (168, 'Europe/Gibraltar', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (169, 'Europe/Helsinki', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (170, 'Europe/Istanbul', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (171, 'Europe/Kaliningrad', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (172, 'Europe/Kiev', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (173, 'Europe/Kirov', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (174, 'Europe/Lisbon', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (175, 'Europe/London', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (176, 'Europe/Luxembourg', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (177, 'Europe/Madrid', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (178, 'Europe/Malta', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (179, 'Europe/Minsk', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (180, 'Europe/Monaco', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (181, 'Europe/Moscow', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (182, 'Europe/Oslo', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (183, 'Europe/Paris', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (184, 'Europe/Prague', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (185, 'Europe/Riga', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (186, 'Europe/Rome', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (187, 'Europe/Samara', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (188, 'Europe/Saratov', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (189, 'Europe/Simferopol', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (190, 'Europe/Sofia', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (191, 'Europe/Stockholm', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (192, 'Europe/Tallinn', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (193, 'Europe/Tirane', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (194, 'Europe/Ulyanovsk', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (195, 'Europe/Uzhgorod', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (196, 'Europe/Vienna', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (197, 'Europe/Vilnius', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (198, 'Europe/Volgograd', 10800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (199, 'Europe/Warsaw', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (200, 'Europe/Zaporozhye', 7200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (201, 'Europe/Zurich', 3600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (202, 'Factory', 0); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (203, 'Indian/Chagos', 21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (204, 'Indian/Christmas', 25200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (205, 'Indian/Cocos', 23400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (206, 'Indian/Kerguelen', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (207, 'Indian/Mahe', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (208, 'Indian/Maldives', 18000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (209, 'Indian/Mauritius', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (210, 'Indian/Reunion', 14400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (211, 'Pacific/Apia', 46800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (212, 'Pacific/Auckland', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (213, 'Pacific/Bougainville', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (214, 'Pacific/Chatham', 45900000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (215, 'Pacific/Chuuk', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (216, 'Pacific/Easter', -21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (217, 'Pacific/Efate', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (218, 'Pacific/Enderbury', 46800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (219, 'Pacific/Fakaofo', 46800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (220, 'Pacific/Fiji', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (221, 'Pacific/Funafuti', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (222, 'Pacific/Galapagos', -21600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (223, 'Pacific/Gambier', -32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (224, 'Pacific/Guadalcanal', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (225, 'Pacific/Guam', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (226, 'Pacific/Honolulu', -36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (227, 'Pacific/Kiritimati', 50400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (228, 'Pacific/Kosrae', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (229, 'Pacific/Kwajalein', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (230, 'Pacific/Majuro', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (231, 'Pacific/Marquesas', -34200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (232, 'Pacific/Nauru', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (233, 'Pacific/Niue', -39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (234, 'Pacific/Norfolk', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (235, 'Pacific/Noumea', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (236, 'Pacific/Pago_Pago', -39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (237, 'Pacific/Palau', 32400000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (238, 'Pacific/Pitcairn', -28800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (239, 'Pacific/Pohnpei', 39600000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (240, 'Pacific/Port_Moresby', 36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (241, 'Pacific/Rarotonga', -36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (242, 'Pacific/Tahiti', -36000000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (243, 'Pacific/Tarawa', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (244, 'Pacific/Tongatapu', 46800000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (245, 'Pacific/Wake', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_timezone`(`id`, `name`, `offset`) VALUES (246, 'Pacific/Wallis', 43200000); " ) ;
sb . append ( " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_asset_export_header', '{ \\ r \\ n \\ \" cn \\ \" : { \\ r \\ n \\ \" *资产名称 \\ \" : \\ \" 资产名称,唯一标识(必填) \\ \\ n示例: DELL服务器 \\ \" , \\ r \\ n \\ \" *SN码 \\ \" : \\ \" 资产序列号,唯一标识(必填) \\ \\ n示例: A0420200101 \\ \" , \\ r \\ n \\ \" 虚拟机宿主 \\ \" : \\ \" 虚拟机宿主,当资产为虚拟机时必填 \\ \\ n示例: DELL物理机 \\ \" , \\ r \\ n \\ \" *管理ip \\ \" : \\ \" 主机地址(必填),IP格式 \\ \\ n示例: 172.0.0.1 \\ \" , \\ r \\ n \\ \" *品牌 \\ \" : \\ \" 品牌(必填) \\ \\ n示例: DELL \\ \" , \\ r \\ n \\ \" *型号 \\ \" : \\ \" 型号(必填) \\ \\ n示例: DELL-D3 \\ \" , \\ r \\ n \\ \" *数据中心 \\ \" : \\ \" 数据中心(必填) \\ \\ n示例: 北京电信中心机房 \\ \" , \\ r \\ n \\ \" 机柜 \\ \" : \\ \" 机柜 \\ \\ n示例: cabinet-001 \\ \" , \\ r \\ n \\ \" 开始U位 \\ \" : \\ \" 机柜开始位置 此信息一般和机柜结束位置联合使用 \\ \\ n示例: 1 \\ \" , \\ r \\ n \\ \" 结束U位 \\ \" : \\ \" 机柜结束位置 此信息一般与机柜开始位置联合使用 \\ \\ n示例: 2 \\ \" , \\ r \\ n \\ \" *资产状态 \\ \" : \\ \" 资产状态 \\ \\ n示例: 在库 \\ \" , \\ r \\ n \\ \" *资产类型 \\ \" : \\ \" 资产类型 \\ \\ n示例: 服务器 \\ \" , \\ r \\ n \\ \" 购买日期 \\ \" : \\ \" 购买日期 \\ \\ n示例: 2020/2/25 \\ \" , \\ r \\ n \\ \" 属性信息 \\ \" : \\ \" 资产属性信息,格式: key=value 如需填写多个请使用回车换行 \\ \\ n示例: NetworkCard=eth0 \\ \\ n user=root \\ \" , \\ r \\ n \\ \" 认证服务端口 \\ \" : \\ \" ssh/telnet端口 \\ \\ n示例: 22/23 \\ \" , \\ r \\ n \\ \" 认证方式 \\ \" : \\ \" 用户名密码/密钥 \\ \\ n示例: 111111 \\ \" , \\ r \\ n \\ \" 用户名 \\ \" : \\ \" 用户名 \\ \\ n示例:root \\ \" , \\ r \\ n \\ \" 密码 \\ \" : \\ \" auth_type =1 : 记录登录密码 auth_type=2 : 记录密钥密码 \\ \" , \\ r \\ n \\ \" 密钥 \\ \" : \\ \" 密钥内容 \\ \" , \\ r \\ n \\ \" 用户名提示 \\ \" : \\ \" telnet协议有效 \\ \" , \\ r \\ n \\ \" 密码提示 \\ \" : \\ \" telnet协议有效 \\ \" , \\ r \\ n \\ \" snmp凭证 \\ \" : \\ \" type 开启snmp有效 \\ \" \\ r \\ n }, \\ r \\ n \\ \" en \\ \" : { \\ r \\ n \\ \" *Asset Name \\ \" : \\ \" Asset name, unique identifier (required) \\ \\ nExample: DELL server \\ \" , \\ r \\ n \\ \" *Sn \\ \" : \\ \" Asset serial number, unique identifier (required) \\ \\ nExample: A0420200101 \\ \" , \\ r \\ n \\ \" *Virtual machine host \\ \" : \\ \" Virtual machine host, required when the asset is a virtual machine \\ \\ nExample: DELL physical machine \\ \" , \\ r \\ n \\ \" *Management ip \\ \" : \\ \" Host address (required), IP format \\ \\ nExample: 172.0.0.1 \\ \" , \\ r \\ n \\ \" *Brand \\ \" : \\ \" Brand (required) \\ \\ nExample: DELL \\ \" , \\ r \\ n \\ \" *Model \\ \" : \\ \" Model (required) \\ \\ nExample: DELL-D3 \\ \" , \\ r \\ n \\ \" *DC \\ \" : \\ \" Data Center (Required) \\ \\ nExample: Beijing Telecom Center Computer Room \\ \" , \\ r \\ n \\ \" Cabinet \\ \" : \\ \" Cabinet \\ \\ nExample: cabinet-001 \\ \" , \\ r \\ n \\ \" Cabinet Start \\ \" : \\ \" Cabinet start position This information is generally used in conjunction with the cabinet end position \\ \\ nExample: 1 \\ \" , \\ r \\ n \\ \" Cabinet End \\ \" : \\ \" Cabinet end position This information is generally used in conjunction with the cabinet start position \\ \\ nExample: 2 \\ \" , \\ r \\ n \\ \" *Asset state \\ \" : \\ \" Asset status \\ \\ nExample: In stock \\ \" , \\ r \\ n \\ \" *Asset type \\ \" : \\ \" Asset Type \\ \\ nExample: Server \\ \" , \\ r \\ n \\ \" Purchase date \\ \" : \\ \" Purchase date \\ \\ nExample: 2020/2/25 \\ \" , \\ r \\ n \\ \" Field Information \\ \" : \\ \" Asset field information, format: key=value If you need to fill in more than one, please use carriage return and line feed \\ \\ nExample: NetworkCard=eth0 \\ \\ n user=root \\ \" , \\ r \\ n \\ \" Auth protocol Port \\ \" : \\ \" ssh/telnet \\ \\ nExample: 22/23 \\ \" , \\ r \\ n \\ \" Auth Type \\ \" : \\ \" User name password / pri key \\ \\ nExample: 111111 \\ \" , \\ r \\ n \\ \" Auth Username \\ \" : \\ \" username \\ \\ nExample: root \\ \" , \\ r \\ n \\ \" Auth Pin \\ \" : \\ \" auth_type =1 : pin value auth_type=2 : pri key pin \\ \" , \\ r \\ n \\ \" Auth Pri Key \\ \" : \\ \" pri key content \\ \" , \\ r \\ n \\ \" Auth User Tip \\ \" : \\ \" telnet protocol valid \\ \" , \\ r \\ n \\ \" Auth Pin Tip \\ \" : \\ \" telnet protocol valid \\ \" , \\ r \\ n \\ \" Snmp Credential \\ \" : \\ \" snmp protocol valid \\ \" \\ r \\ n } \\ r \\
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_chart_tpl', '{ \\ \" name \\ \" : \\ \" {{asset.sn}} \\ \" , \\ \" type \\ \" : \\ \" assetInfo \\ \" , \\ \" span \\ \" :12, \\ \" height \\ \" :400, \\ \" unit \\ \" :2}', 1, NULL); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('asset_ping_from', '2', 1, '1: global \\ r \\ n \\ r \\ n2: per-datacenter \\ r \\ n \\ r \\ n默认: 1'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('confagent_name', '{ \\ \" centos \\ \" : \\ \" confagent-v2.0-x86.rpm \\ \" , \\ \" ubuntu \\ \" : \\ \" confagent-v2.0-x86.zip \\ \" }', 1, 'confagent 下载文件名称'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_account', '', 1, ''); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_auth_password', '', 1, ''); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_host', '', 1, ''); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_port', '25', 1, ''); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_security_type', 'NONE', 1, 'NONE SSL TLS'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_test_account', '', 1, ''); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('email_timeout', '10', 1, '默认: 10'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('endpoint_chart_tpl', '{ \\ \" name \\ \" : \\ \" {{endpoint.name}} \\ \" , \\ \" type \\ \" : \\ \" endpointInfo \\ \" , \\ \" span \\ \" :12, \\ \" height \\ \" :400, \\ \" unit \\ \" :2}', 1, NULL); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('expretmpl_export_header', '{ \\ \" cn \\ \" :{ \\ \" *名称 \\ \" : \\ \" 模板名称(必填) \\ \\ n示例: CPU利用率模板 \\ \" , \\ \" 组名 \\ \" : \\ \" 组名 \\ \\ n示例: base, 默认值: default \\ \" , \\ \" *表达式 \\ \" : \\ \" 表达式内容(必填) \\ \\ n示例: node_cpu_usage(asset= \\ \\ \\ \" {{asset.host}} \\ \\ \\ \" ,device= \\ \\ \\ \" {{device}} \\ \\ \\ \" ) \\ \" , \\ \" 描述 \\ \" : \\ \" 描述 \\ \\ n示例: node_export CPU利用率模板 \\ \" }, \\ \" en \\ \" :{ \\ \" *Name \\ \" : \\ \" Template name (required) \\ \\ nExample: CPU utilization template \\ \" , \\ \" Group Name \\ \" : \\ \" Group Name \\ \\ nExample: base, Default value: default \\ \" , \\ \" *Expression \\ \" : \\ \" Expression content (required) Optional: node_cpu_usage(asset= \\ \\ \\ \" {{asset.host}} \\ \\ \\ \" ,device= \\ \\ \\ \" {{device}} \\ \\ \\ \" ) \\ \" , \\ \" Remark \\ \" : \\ \" Remark \\ \\ nExample: node_export CPU utilization template \\ \" }}', 1, '表达式导入导出模板表头信息'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license', '<?xml version= \\ \" 1.0 \\ \" encoding= \\ \" UTF-8 \\ \" ?><license><product><maximumAssets>2000</maximumAssets><name>NEZHA</name><version>base</version></product><endDate>2021-06-03T14:52:43Z</endDate><signature><digestValue>3403d697d45c594a0d147d556d94ad087272830c</digestValue><signatureValue>35af0e65b3b6d6474db62359a42adf685413144e3ff57f3551f33c54614ed8eb4d705efd25ca873a73af08912242b74d3272cef149ac0b39ac4247e7263f9b395c1892aea7dce0d941ea14ee901f052192ce555c4c438510b31d6fef30b109125a42b19fbcf3190482adab2ffc64d01c31f3dd020a712fc97138c3c52df41f0116c56543faddba8a7393581dee612fec9646ca4edb6f46bf2894eeaff1436feb126ce7155dd8b5514038320b297fab40ca4ed0402eb71951e8b00185fe7fe7f0f0ba13de3d4dc9416a5762214bb8f2bfa7ec688bd119aeaa2a4c4153383b64a463892d63301070c295404538b54f8de7d36ca7fbf40011b9e057cbb1d4a15147</signatureValue></signature><contract>def@gz.com</contract><by>abc</by><genDate>2021-04-16T13:52:38Z</genDate><comment>test license</comment><tokens/><licenseId>111</licenseId><startDate>2021-03-03T14:52:43Z</startDate><customer>zhangsan</customer></license>', 1, '3403d697d45c594a0d147d556d94ad087272830c'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('license_token', 'abbbb', 1, NULL); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('ldap_timeout', '30', 1, '超时时间秒'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('monitor_endpoint_export_header', '{ \\ \" cn \\ \" :{ \\ \" *系统 \\ \" : \\ \" 系统名称(必填) \\ \\ n示例: Nezha \\ \" , \\ \" *组件 \\ \" : \\ \" 组件名称(必填) \\ \\ n示例: node_exporter \\ \" , \\ \" 名称 \\ \" : \\ \" 实例名称 \\ \\ n示例: node_exporter \\ \" , \\ \" 资产名称 \\ \" : \\ \" 资产名称(非必填) 与 主机地址 不能同时为空 \\ \\ n示例: A0420200101 \\ \" , \\ \" 配置 \\ \" : \\ \" 实例配置, JSON格式, \\ \\ n示例: { \\ \\ \\ \" key \\ \\ \\ \" : \\ \\ \\ \" value \\ \\ \\ \" } \\ \" , \\ \" 启用 \\ \" : \\ \" 启用状态(非必填) 可选 0:停用 1:启用,为空时默认为1 \\ \\ n示例: 1 \\ \" }, \\ \" en \\ \" :{ \\ \" *Project Name \\ \" : \\ \" Project Name(Required) \\ \\ nExample: Nezha \\ \" , \\ \" *Module Name \\ \" : \\ \" Module Name(Required) \\ \\ nExample: node_exporter \\ \" , \\ \" Name \\ \" : \\ \" Endpoint name \\ \\ nExample: node_exporter \\ \" , \\ \" Asset Name \\ \" : \\ \" Asset name(Not required) And host address cannot be empty at the same time \\ \\ n示例: A0420200101 \\ \" , \\ \" Configs \\ \" : \\ \" Endpoint Configs, JSON format, \\ \\ nExample: { \\ \\ \\ \" key \\ \\ \\ \" : \\ \\ \\ \" value \\ \\ \\ \" } \\ \" , \\ \" Enabled \\ \" : \\ \" Enable state (not required) Optional values 0: Disable 1: Enable, when empty, the default is 1 \\ \\ nExample: 1 \\ \" }}', 1, 'monitor endpoint 导入表头'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prometheus_federation_enabled', '1', 1, '配置prometheus是否开启联邦模式, 1: 开启, 0: 关闭( 界面禁用 添加选择 per-datacenter agent, 所有endpoint 配置信息 hash 分布到 global prometheus) '); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_cmd_tmpl', 'OPTION= \\ \" --config.file= \\ '/opt/nezha/nz-confagent/prometheus/prometheus.yml \\ ' --web.listen-address= \\ '127.0.0.1:9090 \\ ' --web.enable-admin-api --storage.tsdb.path= \\ '/data/prometheusData \\ ' --web.enable-lifecycle --storage.tsdb.retention.time=${storageDays}d \\ \" ', 1, 'prometheus 启动参数模板'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_rule_tmpl', '{ \\ r \\ n \\ \" groups \\ \" : [{ \\ r \\ n \\ \" name \\ \" : \\ \" alertRule \\ \" , \\ r \\ n \\ \" rules \\ \" : [ \\ r \\ n <#if endpointAlert> \\ r \\ n { \\ r \\ n \\ \" alert \\ \" : \\ \" 0 \\ \" , \\ r \\ n \\ \" expr \\ \" : \\ \" up{endpoint!= \\ ' \\ '}>-1 \\ \" , \\ r \\ n \\ \" for \\ \" : \\ \" 30s \\ \" , \\ r \\ n \\ \" annotations \\ \" : { \\ r \\ n \\ \" summary \\ \" : \\ \" {{$value}} \\ \" \\ r \\ n } \\ r \\ n }, \\ r \\ n </#if> \\ r \\ n <#list ruleList as rule> \\ r \\ n { \\ r \\ n \\ \" alert \\ \" : ${rule.id?c}, \\ r \\ n \\ \" expr \\ \" : \\ \" (${rule.expr})${rule.operator}${rule.threshold} \\ \" , \\ r \\ n \\ \" for \\ \" : \\ \" ${rule.last}s \\ \" , \\ r \\ n \\ \" labels \\ \" : { \\ r \\ n \\ \" severity \\ \" : \\ \" ${rule.severity_name} \\ \" , \\ r \\ n \\ \" severity_id \\ \" : ${rule.severity_id?c} \\ r \\ n }, \\ r \\ n \\ \" annotations \\ \" : { \\ r \\ n \\ \" summary \\ \" : <#if rule.summary?default( \\ \" \\ \" )?trim?length gt 1> \\ r \\ n \\ \" ${rule.summary} \\ \" , \\ r \\ n <#else> \\ \" \\ \" ,</#if> \\ r \\ n \\ \" description \\ \" : <#if rule.description?default( \\ \" \\ \" )?trim?length gt 1> \\ r \\ n \\ \" ${rule.description} \\ \" \\ r \\ n <#else> \\ \" \\ \" </#if> \\ r \\ n \\ r \\ n } \\ r \\ n } \\ r \\ n <#sep>,</#sep> \\ r \\ n </#list>] \\ r \\ n }] \\ r \\ n}', 1, 'prometheus rule文件模板'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('prom_yml_tmpl', '{ \\ r \\ n \\ \" global \\ \" : { \\ r \\ n \\ \" scrape_interval \\ \" : \\ \" ${scrape_interval}s \\ \" , \\ r \\ n \\ \" scrape_timeout \\ \" : <#if scrape_timeout??> \\ r \\ n \\ \" ${scrape_timeout}s \\ \" , \\ r \\ n <#else> \\ r \\ n \\ \" 10s \\ \" , \\ r \\ n </#if> \\ r \\ n \\ \" evaluation_interval \\ \" : \\ \" ${scrape_interval}s \\ \" \\ r \\ n }, \\ r \\ n \\ r \\ n <#-- alert 配置 --> \\ r \\ n <#if isAlert> \\ r \\ n \\ \" alerting \\ \" : { \\ r \\ n \\ \" alertmanagers \\ \" : [{ \\ r \\ n \\ \" path_prefix \\ \" : \\ \" ${path_prefix} \\ \" , \\ r \\ n \\ \" static_configs \\ \" : [{ \\ r \\ n \\ \" targets \\ \" : [ \\ \" ${alert_url} \\ \" ] \\ r \\ n }] \\ r \\ n }], \\ r \\ n \\ \" alert_relabel_configs \\ \" : [{ \\ r \\ n \\ \" regex \\ \" : \\ \" instance \\ \" , \\ r \\ n \\ \" action \\ \" : \\ \" labeldrop \\ \" \\ r \\ n }, { \\ r \\ n \\ \" regex \\ \" : \\ \" replica \\ \" , \\ r \\ n \\ \" action \\ \" : \\ \" labeldrop \\ \" \\ r \\ n }] \\ r \\ n }, \\ r \\ n \\ \" rule_files \\ \" : [ \\ \" rule.yml \\ \" ], \\ r \\ n </#if> \\ r \\ n \\ r \\ n \\ r \\ n \\ r \\ n <#-- per-datacenter 配置 --> \\ r \\ n <#if !isGlobal> \\ r \\ n \\ \" scrape_configs \\ \" : [ \\ r \\ n <#list endpointList as endpoint> \\ r \\ n { \\ r \\ n \\ \" job_name \\ \" : ${endpoint.id?c}, \\ r \\ n \\ \" metrics_path \\ \" : <#if endpoint.config.metrics_path?default( \\ \" \\ \" )?trim?length gt 0> \\ r \\ n \\ \" ${endpoint.config.metrics_path} \\ \" , \\ r \\ n <#else> \\ r \\ n \\ \" /metrics \\ \" , \\ r \\ n </#if> \\ r \\ n \\ \" scrape_interval \\ \" : <#if endpoint.config.scrape_interval?default( \\ \" \\ \" )?trim?length gt 0> \\ r \\ n \\ \" ${endpoint.config.scrape_interval}s \\ \" , \\ r \\ n <#else> \\ r \\ n \\ \" ${scrape_interval}s \\ \" , \\ r \\ n </#if> \\ r \\ n \\ \" scrape_timeout \\ \" : <#if endpoint.config.scrape_timeout?default( \\ \" \\ \" )?trim?length gt 0> \\ r \\ n \\ \" ${endpoint.config.scrape_timeout}s \\ \" , \\ r \\ n <#else> \\ r \\ n <#if scrape_timeout??> \\ r \\ n \\ \" ${scrape_timeout}s \\ \" , \\ r \\ n <#else> \\ r \\ n \\ \" 10s \\ \" , \\ r \\ n </#if> \\ r \\ n </#if> \\ r \\ n \\ r \\ n \\ r \\ n \\ r \\ n <#if endpoint.config.basic_auth??&& (endpoint.config.basic_auth?size >0)> \\ r \\ n <#if endpoint.config.basic_auth.username?default( \\ \" \\ \" )?trim?length gt 0 && endpoint.config.basic_auth.password?default( \\ \" \\ \" )?trim?length gt 0> \\ r \\ n \\ \" basic_auth \\ \" :{ \\ r \\ n \\ \" username \\ \" : \\ \" ${endpoint.config.basic_auth.username} \\ \" , \\ r \\ n \\ \" password \\ \" : \\ \" ${endpoint.config.basic_auth.password} \\ \" \\ r \\ n }, \\ r \\ n </#if> \\ r \\ n </#if> \\ r \\ n \\ r \\ n \\ r \\ n <#if endpoint.config.bearer_token??&&endpoint.config.bearer_token?trim?length gt 0> \\ r \\ n \\ \" authorization \\ \" :{ \\ r \\ n \\ \" type \\ \" : \\ \" Bearer \\ \" , \\ r \\ n \\ \" credentials \\ \" : \\ \" ${endpoint.config.bearer_token} \\ \" \\ r \\ n }, \\ r \\ n </#if> \\ r \\ n \\ r \\ n \\ r \\ n <#-- params 不为空且类型为 http ,添加 params --> \\ r \\ n <#if endpoint.config.params??&& (endpoint.config.params?size >0) && endpoint.module.type == \\ \" http \\ \" > \\ r \\ n \\ \" params \\ \" :{ \\ r \\ n <#list endpoint.config.params?keys as itemKey> \\ r \\ n \\ \" ${itemKey} \\ \" :[ \\ r \\ n <#list endpoint.config.params[itemKey] as pojo> \\ r \\ n \\ \" ${pojo} \\ \" \\ r \\ n <#sep>,</#sep> \\ r \\ n </#list> \\ r \\ n ] \\ r \\ n <#sep>,</#sep> \\ r \\ n </#list> \\ r \\ n }, \\ r \\ n <#elseif endpoint.module.type == \\ \" snmp \\ \" > \\ r \\ n <#-- 类型是 snmp ,组织 param 数据 , 原来params弃用, 因为 snmp_exporter 不支持其他参数 --> \\ r \\ n \\ \" params \\ \" :{ \\ r \\ n \\ \" target \\ \" :[ \\ \" ${endpoint.config.host}:${endpoint.config.port?c} \\ \" ], \\ r \\ n \\ \" module \\ \" :[ \\ \" ${endpoint.module.name} \\ \" ] \\ r \\ n }, \\ r \\ n </#if> \\ r \\ n \\ r \\ n \\ \" static_configs \\ \" : [{ \\ r \\ n \\ \" targets \\ \" : [<#if endpoint.module.type == \\ \" http \\ \" > \\ r \\ n \\ \" ${endpoint.config.host}:${endpoint.config.port?c} \\ \" \\ r \\ n <#else> \\ r \\ n \\ \" 127.0.0.1:9116 \\ \" \\ r \\ n </#if> \\ r \\ n ], \\ r \\ n \\ \" labels \\ \" : { \\ r \\ n \\ \" data
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('session_timeout', '30', 1, '默认: 30, 不小于 15 单位: minute'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('system_logo', '', 1, NULL); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('unsaved_change', 'on', 1, '未保存提示开关'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_record_local_retention', '365', 1, '默认: 365, 单位: 天,record数据保留天数'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_pin_tip', 'assword:', 1, '默认: assword:'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_telnet_user_tip', 'ogin:', 1, '默认: ogin:'); \ r \ n "
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('terminal_timeout', '30', 1, '默认: 30, 单位: minute'); \ r \ n "
2021-05-12 15:56:47 +08:00
+ " INSERT INTO `sys_config`(`param_key`, `param_value`, `status`, `remark`) VALUES ('snmp_trap_listen_port', '160', 1, 'snmp trap接收端口'); \ r \ n "
2021-05-08 19:33:06 +08:00
+ " update sys_config set param_key = \" default_scrape_interval \" where param_key= \" scrape_interval \" ; \ r \ n "
+ " update sys_config set param_key = \" default_scrape_timeout \" where param_key= \" scrape_timeout \" ; \ r \ n "
2021-05-12 15:56:47 +08:00
+ " update sys_config set param_value = \" Asia/Almaty \" where param_key= \" timezone \" ; \ r \ n "
2021-05-08 19:33:06 +08:00
) ;
// 修改sys_user表数据 初始化name字段内容
sb . append ( " update sys_user set name = username; " ) ;
sqlDao . execute ( sb . toString ( ) ) ;
2021-05-12 15:56:47 +08:00
* /
2021-05-08 19:33:06 +08:00
}
public void transferData ( ) {
// dc数据同步
dcService . handler ( ) ;
// 资产数据同步 snmp认证表数据同步 tag相关数据同步
assetAssetService . handler ( ) ;
// 告警相关数据同步
alertMessageService . handler ( ) ;
2021-05-22 13:31:15 +08:00
// 图表相关数据同步
chartService . handler ( ) ;
2021-05-08 19:33:06 +08:00
// project module endpoint 数据同步
endpointService . handler ( ) ;
2021-05-12 15:56:47 +08:00
// 将原来数据库的数据数据还原
this . dataRestore ( ) ;
2021-05-19 09:32:10 +08:00
// project topo相关图表数据同步
projectTopoService . handler ( ) ;
2021-05-12 15:56:47 +08:00
}
public void dataRestore ( ) {
StringBuilder sb = new StringBuilder ( ) ;
// sys_user表数据还原
List < SysUserEntity > users = sysUserService . queryNewUsers ( ) ;
List < SysUserEntity > oldUsers = sysUserService . queryOldUsers ( ) ;
Map < Long , SysUserEntity > userIdAndEntity = users . stream ( ) . collect ( Collectors . toMap ( SysUserEntity : : getId , Function . identity ( ) ) ) ;
for ( SysUserEntity user : oldUsers ) {
SysUserEntity sysUserEntity = userIdAndEntity . get ( user . getUserId ( ) ) ;
if ( ToolUtil . isNotEmpty ( sysUserEntity ) ) {
sb . append ( " update sys_user set id=' " + user . getUserId ( ) + " ',username=' " + user . getUsername ( ) + " ',pin=' "
+ user . getPassword ( ) + " ',salt=' " + user . getSalt ( ) + " ',email=' " + user . getEmail ( ) + " ',status=' "
+ user . getStatus ( ) + " ',lang=' " + user . getLang ( )
+ " ',source=' " + user . getSource ( ) + " ',name=' " + user . getUsername ( ) + " '; " ) ;
} else {
sb . append ( " insert into sys_user (id,username,pin,salt,email,status, "
+ " lang,source,name) values(' " + user . getUserId ( ) + " ',' " + user . getUsername ( ) + " ',' " + user . getPassword ( )
+ " ',' " + user . getSalt ( ) + " ',' " + user . getEmail ( ) + " ',' " + user . getStatus ( )
+ " ',' " + user . getLang ( ) + " ',' " + user . getSource ( ) + " ',' " + user . getUsername ( ) + " '); " ) ;
}
}
//
sqlDao . execute ( sb . toString ( ) ) ;
// sys_config表数据
List < SysConfigEntity > newDatas = sysConfigService . list ( ) ;
List < SysConfigEntity > oldDatas = sysConfigService . querySysConfigEntitys ( ) ;
Map < String , String > oldDataMap = oldDatas . stream ( ) . collect ( Collectors . toMap ( SysConfigEntity : : getParamKey , SysConfigEntity : : getParamValue ) ) ;
for ( SysConfigEntity data : newDatas ) {
if ( data . getParamKey ( ) . equals ( " default_scrape_interval " ) ) {
data . setParamValue ( oldDataMap . get ( " scrape_interval " ) ) ;
} else if ( data . getParamKey ( ) . equals ( " default_scrape_timeout " ) ) {
data . setParamValue ( oldDataMap . get ( " scrape_timeout " ) ) ;
} else if ( data . getParamKey ( ) . equals ( " timezone " ) ) {
data . setParamValue ( " Asia/Shanghai " ) ;
2021-05-19 09:32:10 +08:00
} else if ( data . getParamKey ( ) . endsWith ( " confagent_path " ) | | data . getParamKey ( ) . equals ( " system_version " ) ) {
continue ;
2021-05-12 15:56:47 +08:00
} else {
String value = oldDataMap . get ( data . getParamKey ( ) ) ;
if ( value ! = null ) {
data . setParamValue ( value ) ;
}
}
}
sysConfigService . updateBatchById ( newDatas ) ;
// prom_server snmp_mib link project_topo表数据同步
StringBuilder restoreData = new StringBuilder ( ) ;
restoreData . append ( " INSERT INTO prom_server (id, dc_id, `host`, `port`, type, `status`, check_time,token ) SELECT id, idc_id,`host`,`port`,type,`status`,check_time, \" \" FROM prom_server_copy; \ r \ n "
+ " INSERT INTO project_topo (id, project_id, topo,update_at,update_by) SELECT id, project_id, topo,update_at,update_by from project_topo_copy; \ r \ n "
+ " INSERT INTO project_topo_icon (id,name,bytes,type,unit) select id,name,bytes,type,-1 from project_topo_icon_copy where id > 4; \ r \ n "
+ " INSERT INTO snmp_mib (id,name,file_name,content,models,remark,update_by,update_at,tree) select id,name,file_name,content,models,remark,update_by,update_at,tree from snmp_mib_copy; \ r \ n "
+ " INSERT INTO link (id,name,create_by,url,build_in,weight) select id,name,create_by,url,build_in,0 from link_copy; "
+ " INSERT INTO cabinet (id,name,dc_id,u_size,remark,seq,x,y) select id,name,idc_id,u_size,remark,seq,x,y from cabinet_copy; " ) ;
sqlDao . execute ( restoreData . toString ( ) ) ;
2021-05-08 19:33:06 +08:00
}
}