diff options
| -rw-r--r-- | nz-admin/src/main/java/com/nis/modules/alert/service/impl/AlertHandlerServiceImpl.java | 26 | ||||
| -rw-r--r-- | nz-admin/src/main/resources/db/R__AZ_sys_config.sql | 2 |
2 files changed, 27 insertions, 1 deletions
diff --git a/nz-admin/src/main/java/com/nis/modules/alert/service/impl/AlertHandlerServiceImpl.java b/nz-admin/src/main/java/com/nis/modules/alert/service/impl/AlertHandlerServiceImpl.java index 8b5c6de5..031ff0ba 100644 --- a/nz-admin/src/main/java/com/nis/modules/alert/service/impl/AlertHandlerServiceImpl.java +++ b/nz-admin/src/main/java/com/nis/modules/alert/service/impl/AlertHandlerServiceImpl.java @@ -1,6 +1,7 @@ package com.nis.modules.alert.service.impl; import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.log.Log; @@ -572,6 +573,7 @@ public class AlertHandlerServiceImpl implements AlertHandlerService { tempList.add(alertMessage.getDescription()); tempList.add(getExportFormatTime(alertMessage.getStartAt(), dateformat)); tempList.add(getExportFormatTime(alertMessage.getEndAt(), dateformat)); + tempList.add(getDuration(alertMessage.getStartAt(), alertMessage.getEndAt())); tempList.add(Constant.ALERT_MESSAGE_STATE_NAME_MAPPING.get(alertMessage.getState())); exportDataList.add(tempList); } @@ -579,6 +581,30 @@ public class AlertHandlerServiceImpl implements AlertHandlerService { } /** + * 通过 endAtstartAt 获取持续时间 + * + * @param startAt + * @param endAt + * @return + */ + private String getDuration(Date startAt, Date endAt) { + if (Tool.ObjectUtil.isNull(endAt)) return Tool.StrUtil.DASHED; + + long durationSecond = Tool.DateUtil.between(startAt, endAt, DateUnit.SECOND); + String result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(durationSecond % 60), "s"); + if (durationSecond >= 60 * 60 * 24) { + result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(Math.floorDiv(durationSecond, 3600) % 24), "h"); + result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(Math.floorDiv(durationSecond, (60 * 60 * 24))), "d", result); + } else if (durationSecond >= 60 * 60) { + result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(Math.floorDiv(durationSecond, 60) % 60), "m"); + result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(Math.floorDiv(durationSecond, (60 * 60))), "h", result); + } else if (durationSecond >= 60) { + result = Tool.StrUtil.concat(true, Tool.StrUtil.toString(Math.floorDiv(durationSecond, 60) % 60), "m", result); + } + return result; + } + + /** * 根据系统配置时区偏移量 获取 SimpleDateFormat 对象,格式为 yyyy-MM-dd'T'HH:mm:ssZ * @param offset * @return diff --git a/nz-admin/src/main/resources/db/R__AZ_sys_config.sql b/nz-admin/src/main/resources/db/R__AZ_sys_config.sql index e8f2ab5b..5e236d8d 100644 --- a/nz-admin/src/main/resources/db/R__AZ_sys_config.sql +++ b/nz-admin/src/main/resources/db/R__AZ_sys_config.sql @@ -56,7 +56,7 @@ REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'expretmpl_export_header', '[{\"name\":\"name\",\"i18n\":\"config.exprTemp.name\",\"comment\":\"config.exprTemp.name.comment\"},{\"name\":\"group name\",\"i18n\":\"config.exprTemp.gname\",\"comment\":\"config.exprTemp.gname.comment\"},{\"name\":\"expression\",\"i18n\":\"config.exprTemp.expression\",\"comment\":\"config.exprTemp.expression.comment\"},{\"name\":\"remark\",\"i18n\":\"config.exprTemp.remark\",\"comment\":\"config.exprTemp.remark.comment\"}]', 1, '表达式导入导出模板表头信息'); REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'chart_export_header', '[{\"name\":\"panel name\",\"i18n\":\"dashboard.panel.panelForm.panelName\",\"comment\":\"dashboard.panel.panelForm.panelName.comment\"},{\"name\":\"group\",\"i18n\":\"dashboard.panel.chartForm.group\",\"comment\":\"dashboard.panel.chartForm.group.comment\"},{\"name\":\"title\",\"i18n\":\"dashboard.panel.chartForm.name\",\"comment\":\"dashboard.panel.chartForm.name.comment\"},{\"name\":\"type\",\"i18n\":\"dashboard.panel.chartForm.type\",\"comment\":\"dashboard.panel.chartForm.type.comment\"},{\"name\":\"width\",\"i18n\":\"dashboard.panel.chartForm.width\",\"comment\":\"dashboard.panel.chartForm.width.comment\"},{\"name\":\"high\",\"i18n\":\"dashboard.panel.chartForm.high\",\"comment\":\"dashboard.panel.chartForm.high.comment\"},{\"name\":\"unit\",\"i18n\":\"dashboard.panel.chartForm.unit\",\"comment\":\"dashboard.panel.chartForm.unit.comment\"},{\"name\":\"legendValue\",\"i18n\":\"dashboard.panel.chartForm.legendValue\",\"comment\":\"dashboard.panel.chartForm.legendValue.comment\"},{\"name\":\"element\",\"i18n\":\"dashboard.panel.chartForm.element\",\"comment\":\"dashboard.panel.chartForm.element.comment\"},{\"name\":\"remark\",\"i18n\":\"dashboard.panel.chartForm.remark\",\"comment\":\"dashboard.panel.chartForm.remark.comment\"},{\"name\":\"Datasource\",\"i18n\":\"dashboard.panel.chartForm.datasource\",\"comment\":\"dashboard.panel.chartForm.datasource.comment\"},{\"name\":\"x\",\"i18n\":\"dashboard.panel.chartForm.x\",\"comment\":\"dashboard.panel.chartForm.x.comment\"},{\"name\":\"y\",\"i18n\":\"dashboard.panel.chartForm.y\",\"comment\":\"dashboard.panel.chartForm.y.comment\"}]', 1, NULL); REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'asset_chart_export_header', '[{\"name\":\"group\",\"i18n\":\"dashboard.panel.chartForm.group\",\"comment\":\"dashboard.panel.chartForm.group.comment\"},{\"name\":\"title\",\"i18n\":\"dashboard.panel.chartForm.name\",\"comment\":\"dashboard.panel.chartForm.name.comment\"},{\"name\":\"type\",\"i18n\":\"dashboard.panel.chartForm.type\",\"comment\":\"dashboard.panel.chartForm.type.comment\"},{\"name\":\"varType\",\"i18n\":\"dashboard.panel.chartForm.varType\",\"comment\":\"dashboard.panel.chartForm.varType.comment\"},{\"name\":\"width\",\"i18n\":\"dashboard.panel.chartForm.width\",\"comment\":\"dashboard.panel.chartForm.width.comment\"},{\"name\":\"high\",\"i18n\":\"dashboard.panel.chartForm.high\",\"comment\":\"dashboard.panel.chartForm.high.comment\"},{\"name\":\"unit\",\"i18n\":\"dashboard.panel.chartForm.unit\",\"comment\":\"dashboard.panel.chartForm.unit.comment\"},{\"name\":\"legendValue\",\"i18n\":\"dashboard.panel.chartForm.legendValue\",\"comment\":\"dashboard.panel.chartForm.legendValue.comment\"},{\"name\":\"element\",\"i18n\":\"dashboard.panel.chartForm.element\",\"comment\":\"dashboard.panel.chartForm.element.comment\"},{\"name\":\"remark\",\"i18n\":\"dashboard.panel.chartForm.remark\",\"comment\":\"dashboard.panel.chartForm.remark.comment\"},{\"name\":\"Datasource\",\"i18n\":\"dashboard.panel.chartForm.datasource\",\"comment\":\"dashboard.panel.chartForm.datasource.comment\"},{\"name\":\"x\",\"i18n\":\"dashboard.panel.chartForm.x\",\"comment\":\"dashboard.panel.chartForm.x.comment\"},{\"name\":\"y\",\"i18n\":\"dashboard.panel.chartForm.y\",\"comment\":\"dashboard.panel.chartForm.y.comment\"}]', 1, NULL); -REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'alert_export_header', '[{\"name\":\"id\",\"i18n\":\"alert.list.id\",\"comment\":\"\"},{\"name\":\"rule\",\"i18n\":\"alert.alertRule\",\"comment\":\"\"},{\"name\":\"dc\",\"i18n\":\"asset.dc\",\"comment\":\"\"},{\"name\":\"project\",\"i18n\":\"overall.project\",\"comment\":\"\"},{\"name\":\"module\",\"i18n\":\"overall.module\",\"comment\":\"\"},{\"name\":\"endpoint\",\"i18n\":\"overall.endpoint\",\"comment\":\"\"},{\"name\":\"asset\",\"i18n\":\"overall.asset\",\"comment\":\"\"},{\"name\":\"labels\",\"i18n\":\"alert.list.labels\",\"comment\":\"\"},{\"name\":\"severity\",\"i18n\":\"alert.severity\",\"comment\":\"\"},{\"name\":\"summary\",\"i18n\":\"alert.summary\",\"comment\":\"\"},{\"name\":\"description\",\"i18n\":\"alert.description\",\"comment\":\"\"},{\"name\":\"startAt\",\"i18n\":\"alert.startAt\",\"comment\":\"\"},{\"name\":\"endAt\",\"i18n\":\"alert.endAt\",\"comment\":\"\"},{\"name\":\"state\",\"i18n\":\"alert.state\",\"comment\":\"\"}]', 1, 'alert_message导出表头'); +REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'alert_export_header', '[{\"name\": \"id\",\"i18n\": \"alert.list.id\",\"comment\": \"\"},{\"name\": \"rule\",\"i18n\": \"alert.alertRule\",\"comment\": \"\"},{\"name\": \"dc\",\"i18n\": \"asset.dc\",\"comment\": \"\"},{\"name\": \"project\",\"i18n\": \"overall.project\",\"comment\": \"\"},{\"name\": \"module\",\"i18n\": \"overall.module\",\"comment\": \"\"},{\"name\": \"endpoint\",\"i18n\": \"overall.endpoint\",\"comment\": \"\"},{\"name\": \"asset\",\"i18n\": \"overall.asset\",\"comment\": \"\"},{\"name\": \"labels\",\"i18n\": \"alert.list.labels\",\"comment\": \"\"},{\"name\": \"severity\",\"i18n\": \"alert.severity\",\"comment\": \"\"},{\"name\": \"summary\",\"i18n\": \"alert.summary\",\"comment\": \"\"},{\"name\": \"description\",\"i18n\": \"alert.description\",\"comment\": \"\"},{\"name\": \"startAt\",\"i18n\": \"alert.startAt\",\"comment\": \"\"},{\"name\": \"endAt\",\"i18n\": \"alert.endAt\",\"comment\": \"\"},{\"name\": \"duration\",\"i18n\": \"config.terminallog.duration\",\"comment\": \"\"},{\"name\": \"state\",\"i18n\": \"alert.state\",\"comment\": \"\"}]', 1, 'alert_message导出表头'); REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'system_favicon', '', 1, null); REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'system_bgImg', '', 1, null); REPLACE INTO `sys_config`(`id`, `param_key`, `param_value`, `status`, `remark`) VALUES (null, 'cortex_yml_tmpl', '{\r\n \"auth_enabled\": false,\r\n \"server\": {\r\n \"http_listen_port\": <#if port?default(\"\")?trim?length gt 0> ${port?c} <#else>10093</#if>,\r\n \"grpc_listen_port\":10094,\r\n \"grpc_server_max_recv_msg_size\": 104857600,\r\n \"grpc_server_max_send_msg_size\": 104857600,\r\n \"grpc_server_max_concurrent_streams\": 1000\r\n },\r\n \"distributor\": {\r\n \"shard_by_all_labels\": true,\r\n \"pool\": {\r\n \"health_check_ingesters\": true\r\n }\r\n },\r\n \"ingester_client\": {\r\n \"grpc_client_config\": {\r\n \"max_recv_msg_size\": 104857600,\r\n \"max_send_msg_size\": 104857600,\r\n \"grpc_compression\": \"gzip\"\r\n }\r\n },\r\n <#if isMemberlistStore && !isLocalStorage>\r\n \"ingester\": {\r\n \"lifecycler\": {\r\n \"id\": \"${localAgent.name}-${localAgent.id}\",\r\n \"join_after\": \"10s\",\r\n \"min_ready_duration\": \"0s\",\r\n \"final_sleep\": \"5s\",\r\n \"num_tokens\": 512,\r\n \"ring\": {\r\n \"kvstore\": {\r\n \"store\": \"memberlist\"\r\n },\r\n \"replication_factor\": 1\r\n },\r\n \"interface_names\":[\r\n <#list interfaceNameList as name>\r\n \"<#if name?default(\"\")?trim?length gt 0>${name}</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ]\r\n }\r\n },\r\n \"memberlist\": {\r\n \"node_name\": \"${localAgent.name}-${localAgent.id}\",\r\n \"bind_port\": <#if gossIp?default(\"\")?trim?length gt 0>${gossIp?c}<#else>7946</#if>,\r\n \"join_members\": [\r\n <#list joinMemberList as joinIp>\r\n \"${joinIp}:<#if gossIp?default(\"\")?trim?length gt 0>${gossIp?c}<#else>7946</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ],\r\n \"abort_if_cluster_join_fails\": false,\r\n \"rejoin_interval\": \"10s\"\r\n },\r\n <#else>\r\n \"ingester\": {\r\n \"lifecycler\": {\r\n \"id\": \"${localAgent.name}-${localAgent.id}\",\r\n \"join_after\": \"10s\",\r\n \"min_ready_duration\": \"0s\",\r\n \"final_sleep\": \"5s\",\r\n \"num_tokens\": 512,\r\n \"ring\": {\r\n \"kvstore\": {\r\n \"store\": \"inmemory\"\r\n },\r\n \"replication_factor\": 1\r\n },\r\n \"interface_names\":[\r\n <#list interfaceNameList as name>\r\n \"<#if name?default(\"\")?trim?length gt 0>${name}</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ]\r\n }\r\n },\r\n </#if>\r\n \r\n \"storage\": {\r\n \"engine\": \"blocks\"\r\n },\r\n \"blocks_storage\": {\r\n \"tsdb\": {\r\n \"dir\": \"${systemConfig.metrics_storage_local_path}/tsdb\"\r\n },\r\n \"bucket_store\": {\r\n \"sync_dir\": \"${systemConfig.metrics_storage_local_path}/tsdb-sync\"\r\n },\r\n <#if isLocalStorage>\r\n \"backend\": \"filesystem\",\r\n \"filesystem\": {\r\n \"dir\": \"${systemConfig.metrics_storage_local_path}/data/tsdb\"\r\n }\r\n <#else>\r\n \"backend\": \"s3\",\r\n \"s3\": {\r\n \"endpoint\": \"${objectStroageUrl}\",\r\n \"bucket_name\": \"${bucketName}\",\r\n \"access_key_id\": \"${accessKey}\",\r\n \"secret_access_key\": \"${secret}\",\r\n \"insecure\": <#if insecure?default(\"\")?trim?length gt 0>${insecure}<#else>true</#if>,\r\n \"region\": <#if systemConfig.metrics_storage_s3_region?default(\"\")?trim?length gt 0>\"${systemConfig.metrics_storage_s3_region}\"<#else>\"\"</#if>\r\n }\r\n </#if>\r\n },\r\n \"store_gateway\": {\r\n \"sharding_enabled\": true,\r\n \"sharding_ring\": {\r\n \"kvstore\": {\r\n \"store\": <#if isMemberlistStore && !isLocalStorage> \"memberlist\" <#else> \"inmemory\" </#if>\r\n },\r\n \"instance_interface_names\":[\r\n <#list interfaceNameList as name>\r\n \"<#if name?default(\"\")?trim?length gt 0>${name}</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ]\r\n }\r\n },\r\n \"compactor\": {\r\n \"data_dir\": \"${systemConfig.metrics_storage_local_path}/compactor\",\r\n \"sharding_ring\": {\r\n \"kvstore\": {\r\n \"store\": <#if isMemberlistStore && !isLocalStorage> \"memberlist\" <#else> \"inmemory\" </#if>\r\n },\r\n \"instance_interface_names\":[\r\n <#list interfaceNameList as name>\r\n \"<#if name?default(\"\")?trim?length gt 0>${name}</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ]\r\n }\r\n },\r\n \"frontend_worker\": {\r\n \"match_max_concurrent\": true\r\n },\r\n \r\n <#if isAlert>\r\n \"ruler\": {\r\n \"enable_api\": true,\r\n \"enable_sharding\": true,\r\n \"rule_path\": \"${systemConfig.metrics_storage_local_path}/rules\",\r\n \"ring\": {\r\n \"num_tokens\": 512,\r\n \"kvstore\": {\r\n \"store\": <#if isMemberlistStore && !isLocalStorage> \"memberlist\" <#else> \"inmemory\" </#if>\r\n },\r\n \"instance_interface_names\":[\r\n <#list interfaceNameList as name>\r\n \"<#if name?default(\"\")?trim?length gt 0>${name}</#if>\"\r\n <#sep>,</#sep>\r\n </#list>\r\n ]\r\n },\r\n \"alertmanager_url\":\"${systemConfig.alert_api}${systemConfig.alert_path_prefix}\"\r\n },\r\n \"ruler_storage\":{\r\n \"backend\":\"local\",\r\n \"local\":{\r\n \"directory\":\"${systemConfig.metrics_storage_local_path}/rules\"\r\n }\r\n },\r\n </#if>\r\n \"limits\":{\r\n \"max_series_per_metric\": 500000000,\r\n \"ingestion_rate\": 500000000,\r\n \"max_metadata_per_user\": 500000000\r\n },\r\n \"api\":{\r\n \"alertmanager_http_prefix\":\"/\"\r\n },\r\n \"table_manager\":{\r\n \"retention_deletes_enabled\": true,\r\n \"retention_period\": \"${(((systemConfig.metrics_storage_retention!30)?number)*24)?c}h\"\r\n }\r\n}', 1, 'cortex.yml 配置文件模板'); |
