diff --git a/TimeSericesData/7DayTSD-Certification-report.md b/TimeSericesData/7DayTSD-Certification-report.md new file mode 100644 index 0000000..7b20cc0 --- /dev/null +++ b/TimeSericesData/7DayTSD-Certification-report.md @@ -0,0 +1,48 @@ +--- +marp: false +date: 2022. 07. 24 +author: 박종범 +version: 1 +--- + +# 7DayTSD-Certification-report + + +## 개요 +Uncloud graph의 Prometheus-Exporter의 시계열 데이터에 대한 시간연속성 테스트 + +### 절차 +- 24Hour별 데이터 일관성 확인 +- 신규 이슈에 대한 체크 + +### 수집 시작 시간 +- 2022:07:17 08:34:28 +스크린샷 2022-07-24 오후 2 14 10 + +### 24Hour별 데이터 일관성 검증 +- 특정 시간 기준으로 1시간 단위 데이터의 연속성 비교 + +스크린샷 2022-07-24 오후 2 16 39 + +2022-07-18 12:00:00 데이터 + +스크린샷 2022-07-24 오후 2 16 51 + +2022-07-18 13:00:00 데이터 + +스크린샷 2022-07-24 오후 2 16 59 + +2022-07-18 14:00:00 데이터 + +### 결론 +1시간 단위 일관성 있는 데이터 제공 -> 백엔드 서버의 메트릭 생성으로 신규값 제공 + +### 신규 이슈 - TSDB 용량 문제 +스크린샷 2022-07-24 오후 2 29 39 + +현재 인스턴스에 할당된 스토리지: 20GB +스크린샷 2022-07-24 오후 2 23 46 + +사용량: 2022-07-23 14:30:00 (17.97%) ~ 2022-07-24 14:30:00 (17.99%) + +=> 1년이상 사용가능, 추후 NAS를 활용한 증설가능 diff --git a/index.js b/index.js index 564b5f9..85cd2ce 100644 --- a/index.js +++ b/index.js @@ -4,28 +4,22 @@ const swaggerUi = require('swagger-ui-express'); const spec = require('./swagger/swagger.json'); -const { customPodCpuUsage } = require('./metric/pod/customPodCpuUsage'); -const { customPodMemoryUsage } = require('./metric/pod/customPodMemoryUsage'); -const { - customPodMemoryUsageBytes, -} = require('./metric/pod/customPodMemoryUsageBytes'); -const { customPodTotalMemory } = require('./metric/pod/customPodTotalMemory'); - -const { customNodeCpuTotal } = require('./metric/node/customNodeCpuTotal'); -const { customNodeCpuUsage } = require('./metric/node/customNodeCpuUsage'); -const { - customNodeTotalMemory, -} = require('./metric/node/customNodeTotalMemory'); -const { customPodDiskLatency } = require('./metric/pod/customPodDiskLatency'); -const { - customNodeDiskLatency, -} = require('./metric/node/customNodeDiskLatency'); const { + customNodeCpuUsage, + customNodeCpuSpec, + customNodeMemorySpec, + customNodeMemoryUsageBytes, customNodeMemoryUsage, -} = require('./metric/node/customNodeMemoryUsage'); + customNodeDiskLatency, +} = require('./metric/node/index.js'); const { - customNodeMemoryUsageBytes, -} = require('./metric/node/customNodeMemoryUsageBytes'); + customPodCpuUsage, + customPodCpuSpec, + customPodMemorySpec, + customPodMemoryUsageBytes, + customPodMemoryUsage, + customPodDiskLatency, +} = require('./metric/pod/index.js'); const app = express(); @@ -36,18 +30,19 @@ const register = new client.Registry(); // pod metrics customPodCpuUsage(register); -customPodMemoryUsage(register); +customPodCpuSpec(register); +customPodMemorySpec(register); customPodMemoryUsageBytes(register); -customPodTotalMemory(register); +customPodMemoryUsage(register); customPodDiskLatency(register); // node metrics -customNodeCpuTotal(register); customNodeCpuUsage(register); -customNodeDiskLatency(register); -customNodeMemoryUsage(register); +customNodeCpuSpec(register); +customNodeMemorySpec(register); customNodeMemoryUsageBytes(register); -customNodeTotalMemory(register); +customNodeMemoryUsage(register); +customNodeDiskLatency(register); app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(spec)); diff --git a/metric/constants/common.js b/metric/constants/common.js index 214159e..9e966c1 100644 --- a/metric/constants/common.js +++ b/metric/constants/common.js @@ -28,12 +28,104 @@ const METRIC_NAME = { CUSTOM_NODE_MEMORY_USAGE: 'custom_node_memory_usage', CUSTOM_NODE_MEMORY_USAGE_BYTES: 'custom_node_memory_usage_bytes', CUSTOM_NODE_TOTAL_MEMORY: 'custom_node_total_memory', + CUSTOM_NODE_CPU_SPEC: 'custom_node_cpu_spec', + CUSTOM_NODE_MEMORY_SPEC: 'custom_node_memory_spec', // pod CUSTOM_POD_CPU_USAGE: 'custom_pod_cpu_usage', CUSTOM_POD_DISK_LATENCY: 'custom_pod_disk_latency', CUSTOM_POD_MEMORY_USAGE: 'custom_pod_memory_usage', CUSTOM_POD_MEMORY_USAGE_BYTES: 'custom_pod_memory_usage_bytes', CUSTOM_POD_TOTAL_MEMORY: 'custom_pod_total_memory', + CUSTOM_POD_CPU_SPEC: 'custom_pod_cpu_spec', + CUSTOM_POD_MEMORY_SPEC: 'custom_pod_memory_spec', +}; + +NODE_CPU_SPEC = { + seoulb01: 0.27200367274864656, + seoulm01: 1.2391869241961915, + seoulh01: 0.3110475499304459, + seouln01: 0.7982030505316182, + seoulm02: 1.0054712605507794, + seoulh02: 0.7330881611452804, + seouln02: 0.8919479989487205, + seoulm03: 0.3832627524988117, + seoulh03: 0.7415142038819986, + seouln03: 0.7392414970975074, + seouln04: 0.496165066916757, + seouln05: 0.2625388209996633, + busanb01: 0.31695570660860084, + busanm01: 1.0139438889462329, + busanh01: 0.9036378217305587, + busann01: 0.7346252318626028, + busanm02: 0.560526797654193, + busanh02: 0.799851029961884, + busann02: 0.344184858552979, + busanm03: 1.1273953263949343, + busanh03: 0.3611079328428055, + busann03: 0.2725390163978476, + busann04: 0.7529561042124144, + busann05: 1.1258006567088377, +}; + +POD_CPU_SPEC = { + 'seouln01-swagger-deployment-1771418926-7o5ns': 1.0794165482681501, + 'seouln03-swagger-deployment-1771418926-r18ao': 0.618699888195432, + 'seouln05-nodejs-deployment-2231392811-38d2a': 0.6894158098338163, + 'seouln02-nodejs-deployment-2231392811-2dzos': 1.1021442358480202, + 'seouln04-nodejs-deployment-2231392811-29dcs': 0.841997890658458, + 'seouln01-nodejs-deployment-2231392811-9jdsi': 0.8761918460460174, + 'seouln02-mariadb-deployment-2913201382-9sjwa': 0.6286478448532531, + 'seouln03-mariadb-deployment-2913201382-2sadw': 1.0339310206743388, + 'seouln05-zandi-grapher-deployment-9442134208-9dxw2': 1.0345505925811154, + 'seouln05-zandi-grapher-deployment-9442134208-23jfd': 0.48809650378119773, + 'seouln03-zandi-grapher-deployment-9442134208-e29aw': 1.0979750367099894, + 'seouln01-zandi-grapher-deployment-9442134208-5djwu': 0.43347916524919183, + 'seouln05-nodejs-deployment-3942392102-d392a': 1.0144859796159291, + 'seouln01-nodejs-deployment-3942392102-93fhs': 0.697137310742209, + 'seouln04-nodejs-deployment-3942392102-8dhwu': 0.6965973095914688, + 'seouln05-nodejs-deployment-3942392102-i28e3': 1.1129865482490333, + 'seouln03-mysql-deployment-7532913428-d48da': 1.0730308871915046, + 'seouln01-mysql-deployment-7532913428-8saiw': 0.5658909522475488, + 'seouln02-mysql-deployment-7532913428-9dwja': 1.1202370359888494, + 'seouln01-uncloudy-grapher-blue-deployment-3291203292-0ad92': 1.0001659756877048, + 'seouln04-uncloudy-grapher-blue-deployment-3291203292-8sjaw': 1.1774858178732797, + 'seouln03-uncloudy-grapher-green-deployment-7253917392-38udh': 0.510521821599107, + 'seouln04-uncloudy-grapher-green-deployment-7253917392-d82hw': 0.3262120170344198, + 'seouln04-monitoring-agent-deployment-8573293182-9dwqa': 1.111696070837028, + 'seouln03-monitoring-agent-deployment-8573293182-vcus1': 0.2871128053427747, + 'seouln02-monitoring-agent-deployment-8573293182-dehy2': 0.7484964926356474, + 'seouln02-prometheus-deployment-8347123928-d9a8w': 0.5288497440047284, + 'seouln04-prometheus-deployment-8347123928-vn28a': 1.2239823051081575, + 'seouln01-grafana-deployment-5738192321-9sj2a': 0.8901003738457474, + 'busann01-swagger-deployment-1771418926-7o5ns': 0.7267718466590378, + 'busann05-swagger-deployment-1771418926-r18ao': 0.8812279069250939, + 'busann01-nodejs-deployment-2231392811-38d2a': 0.28645918646464663, + 'busann03-nodejs-deployment-2231392811-2dzos': 0.7138947090367973, + 'busann02-nodejs-deployment-2231392811-29dcs': 0.9484801056587906, + 'busann05-nodejs-deployment-2231392811-9jdsi': 0.7175037505229185, + 'busann03-mariadb-deployment-2913201382-9sjwa': 0.6170209164642086, + 'busann02-mariadb-deployment-2913201382-2sadw': 0.6149436790576708, + 'busann05-zandi-grapher-deployment-9442134208-9dxw2': 0.25112211742166934, + 'busann01-zandi-grapher-deployment-9442134208-23jfd': 0.6819260361223918, + 'busann04-zandi-grapher-deployment-9442134208-e29aw': 0.6976101530264966, + 'busann05-zandi-grapher-deployment-9442134208-5djwu': 1.0579731254028806, + 'busann04-nodejs-deployment-3942392102-d392a': 1.1871595772248125, + 'busann01-nodejs-deployment-3942392102-93fhs': 0.5631366302682981, + 'busann04-nodejs-deployment-3942392102-8dhwu': 1.2032002563441404, + 'busann01-nodejs-deployment-3942392102-i28e3': 0.8422734978125292, + 'busann02-mysql-deployment-7532913428-d48da': 0.9734384839696351, + 'busann02-mysql-deployment-7532913428-8saiw': 0.5121528421006647, + 'busann03-mysql-deployment-7532913428-9dwja': 0.904192133498205, + 'busann03-uncloudy-grapher-blue-deployment-3291203292-0ad92': 1.2014949433215514, + 'busann05-uncloudy-grapher-blue-deployment-3291203292-8sjaw': 0.5546392319100939, + 'busann02-uncloudy-grapher-green-deployment-7253917392-38udh': 0.5685318633384844, + 'busann05-uncloudy-grapher-green-deployment-7253917392-d82hw': 0.6765875151673066, + 'busann04-monitoring-agent-deployment-8573293182-9dwqa': 0.4584337518980377, + 'busann04-monitoring-agent-deployment-8573293182-vcus1': 1.046454617541513, + 'busann05-monitoring-agent-deployment-8573293182-dehy2': 0.8510848765132875, + 'busann01-prometheus-deployment-8347123928-d9a8w': 0.3176266268329917, + 'busann03-prometheus-deployment-8347123928-vn28a': 0.4872352723405089, + 'busann02-grafana-deployment-5738192321-9sj2a': 0.6918236449996984, }; module.exports = { @@ -44,4 +136,6 @@ module.exports = { INSTANCE_TYPE, RANGE_TYPE, METRIC_NAME, + NODE_CPU_SPEC, + POD_CPU_SPEC, }; diff --git a/metric/constants/labelName.js b/metric/constants/labelName.js index 9d63098..1fb4290 100644 --- a/metric/constants/labelName.js +++ b/metric/constants/labelName.js @@ -1,5 +1,5 @@ -const POD_LABEL_NAMES = ['pod', 'namespace', 'instance', 'deployment']; -const NODE_LABEL_NAMES = ['container', 'cluster', 'instance']; +const POD_LABEL_NAMES = ['pod', 'namespace', 'instance', 'deployment', 'os']; +const NODE_LABEL_NAMES = ['container', 'cluster', 'instance', 'os']; module.exports = { POD_LABEL_NAMES, diff --git a/metric/constants/nodes.js b/metric/constants/nodes.js index 5212db4..68d7eeb 100644 --- a/metric/constants/nodes.js +++ b/metric/constants/nodes.js @@ -3,121 +3,145 @@ const nodes = [ container: 'nodejs', cluster: 'seoul', instance: 'seoulb01', + os: 'rhel7', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulm01', + os: 'rhel8', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulh01', + os: 'ubuntu', }, { container: 'nodejs', cluster: 'seoul', instance: 'seouln01', + os: 'rhcos7', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulm02', + os: 'centos7', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulh02', + os: 'centos8', }, { container: 'nodejs', cluster: 'seoul', instance: 'seouln02', + os: 'rhcos8', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulm03', + os: 'ubuntu', }, { container: 'nodejs', cluster: 'seoul', instance: 'seoulh03', + os: 'centos7', }, { container: 'nodejs', cluster: 'seoul', instance: 'seouln03', + os: 'centos8', }, { container: 'nodejs', cluster: 'seoul', instance: 'seouln04', + os: 'rhcos7', }, { container: 'nodejs', cluster: 'seoul', instance: 'seouln05', + os: 'rhcos8', }, { container: 'nodejs', cluster: 'busanoul', instance: 'busanb01', + os: 'rhel8', }, { container: 'nodejs', cluster: 'busan', instance: 'busanm01', + os: 'rhel7', }, { container: 'nodejs', cluster: 'busan', instance: 'busanh01', + os: 'rhel7', }, { container: 'nodejs', cluster: 'busan', instance: 'busann01', + os: 'rhel8', }, { container: 'nodejs', cluster: 'busan', instance: 'busanm02', + os: 'rhcos7', }, { container: 'nodejs', cluster: 'busan', instance: 'busanh02', + os: 'rhcos8', }, { container: 'nodejs', cluster: 'busan', instance: 'busann02', + os: 'centos7', }, { container: 'nodejs', cluster: 'busan', instance: 'busanm03', + os: 'centos8', }, { container: 'nodejs', cluster: 'busan', instance: 'busanh03', + os: 'ubuntu', }, { container: 'nodejs', cluster: 'busan', instance: 'busann03', + os: 'rhel8', }, { container: 'nodejs', cluster: 'busan', instance: 'busann04', + os: 'centos8', }, { container: 'nodejs', cluster: 'busan', instance: 'busann05', + os: 'ubuntu', }, ]; diff --git a/metric/constants/pods.js b/metric/constants/pods.js index 71a010b..5a614af 100644 --- a/metric/constants/pods.js +++ b/metric/constants/pods.js @@ -3,348 +3,406 @@ const pods = [ namespace: 'zandi-backend', pod: 'swagger-deployment-1771418926-7o5ns', instance: 'seouln01', + os: 'rhe17', deployment: 'swagger-deployment-1771418926', }, { namespace: 'zandi-backend', pod: 'swagger-deployment-1771418926-r18ao', instance: 'seouln03', + os: 'centos8', deployment: 'swagger-deployment-1771418926', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-38d2a', instance: 'seouln05', + os: 'rhcos8', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-2dzos', instance: 'seouln02', + os: 'rhcos8', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-29dcs', instance: 'seouln04', + os: 'rhcos7', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-9jdsi', instance: 'seouln01', + os: 'rhe17', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'mariadb-deployment-2913201382-9sjwa', instance: 'seouln02', + os: 'rhcos8', deployment: 'mariadb-deployment-2913201382', }, { namespace: 'zandi-backend', pod: 'mariadb-deployment-2913201382-2sadw', instance: 'seouln03', + os: 'centos8', deployment: 'mariadb-deployment-2913201382', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-9dxw2', instance: 'seouln05', + os: 'rhcos8', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-23jfd', instance: 'seouln05', + os: 'rhcos8', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-e29aw', instance: 'seouln03', + os: 'centos8', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-5djwu', instance: 'seouln01', + os: 'rhe17', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-d392a', instance: 'seouln05', + os: 'rhcos8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-93fhs', instance: 'seouln01', + os: 'rhe17', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-8dhwu', instance: 'seouln04', + os: 'rhcos7', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-i28e3', instance: 'seouln05', + os: 'rhcos8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-d48da', instance: 'seouln03', + os: 'centos8', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-8saiw', instance: 'seouln01', + os: 'rhe17', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-9dwja', instance: 'seouln02', + os: 'rhcos8', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-blue-deployment-3291203292-0ad92', instance: 'seouln01', + os: 'rhe17', deployment: 'uncloudy-grapher-blue-deployment-3291203292', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-blue-deployment-3291203292-8sjaw', instance: 'seouln04', + os: 'rhcos7', deployment: 'uncloudy-grapher-blue-deployment-3291203292', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-green-deployment-7253917392-38udh', instance: 'seouln03', + os: 'centos8', deployment: 'uncloudy-grapher-green-deployment-7253917392', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-green-deployment-7253917392-d82hw', instance: 'seouln04', + os: 'rhcos7', deployment: 'uncloudy-grapher-green-deployment-7253917392', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-9dwqa', instance: 'seouln04', + os: 'rhcos7', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-vcus1', instance: 'seouln03', + os: 'centos8', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-dehy2', instance: 'seouln02', + os: 'rhcos8', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'prometheus-deployment-8347123928-d9a8w', instance: 'seouln02', + os: 'rhcos8', deployment: 'prometheus-deployment-8347123928', }, { namespace: 'infra', pod: 'prometheus-deployment-8347123928-vn28a', instance: 'seouln04', + os: 'rhcos7', deployment: 'prometheus-deployment-8347123928', }, { namespace: 'infra', pod: 'grafana-deployment-5738192321-9sj2a', instance: 'seouln01', + os: 'rhe17', deployment: 'grafana-deployment-5738192321', }, { namespace: 'zandi-backend', pod: 'swagger-deployment-1771418926-7o5ns', instance: 'busann01', + os: 'rhel8', deployment: 'swagger-deployment-1771418926', }, { namespace: 'zandi-backend', pod: 'swagger-deployment-1771418926-r18ao', instance: 'busann05', + os: 'ubuntu', deployment: 'swagger-deployment-1771418926', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-38d2a', instance: 'busann01', + os: 'rhel8', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-2dzos', instance: 'busann03', + os: 'rhel8', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-29dcs', instance: 'busann02', + os: 'centos7', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'nodejs-deployment-2231392811-9jdsi', instance: 'busann05', + os: 'ubuntu', deployment: 'nodejs-deployment-2231392811', }, { namespace: 'zandi-backend', pod: 'mariadb-deployment-2913201382-9sjwa', instance: 'busann03', + os: 'rhel8', deployment: 'mariadb-deployment-2913201382', }, { namespace: 'zandi-backend', pod: 'mariadb-deployment-2913201382-2sadw', instance: 'busann02', + os: 'centos7', deployment: 'mariadb-deployment-2913201382', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-9dxw2', instance: 'busann05', + os: 'ubuntu', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-23jfd', instance: 'busann01', + os: 'rhel8', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-e29aw', instance: 'busann04', + os: 'centos8', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'zandi-frontend', pod: 'zandi-grapher-deployment-9442134208-5djwu', instance: 'busann05', + os: 'ubuntu', deployment: 'zandi-grapher-deployment-9442134208', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-d392a', instance: 'busann04', + os: 'centos8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-93fhs', instance: 'busann01', + os: 'rhel8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-8dhwu', instance: 'busann04', + os: 'centos8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'nodejs-deployment-3942392102-i28e3', instance: 'busann01', + os: 'rhel8', deployment: 'nodejs-deployment-3942392102', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-d48da', instance: 'busann02', + os: 'centos7', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-8saiw', instance: 'busann02', + os: 'centos7', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-backend', pod: 'mysql-deployment-7532913428-9dwja', instance: 'busann03', + os: 'rhel8', deployment: 'mysql-deployment-7532913428', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-blue-deployment-3291203292-0ad92', instance: 'busann03', + os: 'rhel8', deployment: 'uncloudy-grapher-blue-deployment-3291203292', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-blue-deployment-3291203292-8sjaw', instance: 'busann05', + os: 'ubuntu', deployment: 'uncloudy-grapher-blue-deployment-3291203292', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-green-deployment-7253917392-38udh', instance: 'busann02', + os: 'centos7', deployment: 'uncloudy-grapher-green-deployment-7253917392', }, { namespace: 'uncloudy-frontend', pod: 'uncloudy-grapher-green-deployment-7253917392-d82hw', instance: 'busann05', + os: 'ubuntu', deployment: 'uncloudy-grapher-green-deployment-7253917392', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-9dwqa', instance: 'busann04', + os: 'centos8', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-vcus1', instance: 'busann04', + os: 'centos8', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'monitoring-agent-deployment-8573293182-dehy2', instance: 'busann05', + os: 'ubuntu', deployment: 'monitoring-agent-deployment-8573293182', }, { namespace: 'infra', pod: 'prometheus-deployment-8347123928-d9a8w', instance: 'busann01', + os: 'rhel8', deployment: 'prometheus-deployment-8347123928', }, { namespace: 'infra', pod: 'prometheus-deployment-8347123928-vn28a', instance: 'busann03', + os: 'rhel8', deployment: 'prometheus-deployment-8347123928', }, { namespace: 'infra', pod: 'grafana-deployment-5738192321-9sj2a', instance: 'busann02', + os: 'centos7', deployment: 'grafana-deployment-5738192321', }, ]; diff --git a/metric/node/customNodeTotalMemory.js b/metric/node/customNodeCpuSpec.js similarity index 63% rename from metric/node/customNodeTotalMemory.js rename to metric/node/customNodeCpuSpec.js index 3ab674e..9f39f59 100644 --- a/metric/node/customNodeTotalMemory.js +++ b/metric/node/customNodeCpuSpec.js @@ -1,24 +1,28 @@ const promClient = require('prom-client'); const getMetricConfig = require('../common/getMetricConfig'); -const { INTERVAL_TIME, METRIC_NAME } = require('../constants/common'); +const { + METRIC_NAME, + NODE_CPU_SPEC, + INTERVAL_TIME, +} = require('../constants/common'); const { NODE_LABEL_NAMES } = require('../constants/labelName'); const { nodes } = require('../constants/nodes'); -const customNodeTotalMemory = (register) => { +const customNodeCpuSpec = (register) => { const metricConfig = getMetricConfig( - METRIC_NAME.CUSTOM_NODE_TOTAL_MEMORY, + METRIC_NAME.CUSTOM_NODE_CPU_SPEC, NODE_LABEL_NAMES ); const g = new promClient.Gauge(metricConfig); setInterval(() => { nodes.forEach((node) => { - g.set(node, Math.random()); + g.set(node, NODE_CPU_SPEC[node.instance]); }); }, INTERVAL_TIME); register.registerMetric(g); }; -module.exports = { customNodeTotalMemory }; +module.exports = { customNodeCpuSpec }; diff --git a/metric/node/customNodeCpuTotal.js b/metric/node/customNodeMemorySpec.js similarity index 63% rename from metric/node/customNodeCpuTotal.js rename to metric/node/customNodeMemorySpec.js index 70a2c40..61d7488 100644 --- a/metric/node/customNodeCpuTotal.js +++ b/metric/node/customNodeMemorySpec.js @@ -1,24 +1,27 @@ const promClient = require('prom-client'); - const getMetricConfig = require('../common/getMetricConfig'); -const { INTERVAL_TIME, METRIC_NAME } = require('../constants/common'); +const { + METRIC_NAME, + NODE_TOTAL_BYTE, + INTERVAL_TIME, +} = require('../constants/common'); const { NODE_LABEL_NAMES } = require('../constants/labelName'); const { nodes } = require('../constants/nodes'); -const customNodeCpuTotal = (register) => { +const customNodeMemorySpec = (register) => { const metricConfig = getMetricConfig( - METRIC_NAME.CUSTOM_NODE_CPU_TOTAL, + METRIC_NAME.CUSTOM_NODE_MEMORY_SPEC, NODE_LABEL_NAMES ); const g = new promClient.Gauge(metricConfig); setInterval(() => { nodes.forEach((node) => { - g.set(node, Math.random()); + g.set(node, NODE_TOTAL_BYTE); }); }, INTERVAL_TIME); register.registerMetric(g); }; -module.exports = { customNodeCpuTotal }; +module.exports = { customNodeMemorySpec }; diff --git a/metric/node/index.js b/metric/node/index.js new file mode 100644 index 0000000..b091d8c --- /dev/null +++ b/metric/node/index.js @@ -0,0 +1,15 @@ +const { customNodeCpuSpec } = require('./customNodeCpuSpec'); +const { customNodeCpuUsage } = require('./customNodeCpuUsage'); +const { customNodeDiskLatency } = require('./customNodeDiskLatency'); +const { customNodeMemorySpec } = require('./customNodeMemorySpec'); +const { customNodeMemoryUsage } = require('./customNodeMemoryUsage'); +const { customNodeMemoryUsageBytes } = require('./customNodeMemoryUsageBytes'); + +module.exports = { + customNodeCpuSpec, + customNodeCpuUsage, + customNodeDiskLatency, + customNodeMemorySpec, + customNodeMemoryUsage, + customNodeMemoryUsageBytes, +}; diff --git a/metric/pod/customPodCpuSpec.js b/metric/pod/customPodCpuSpec.js new file mode 100644 index 0000000..ef30702 --- /dev/null +++ b/metric/pod/customPodCpuSpec.js @@ -0,0 +1,28 @@ +const promClient = require('prom-client'); + +const getMetricConfig = require('../common/getMetricConfig'); +const { + METRIC_NAME, + INTERVAL_TIME, + POD_CPU_SPEC, +} = require('../constants/common'); +const { POD_LABEL_NAMES } = require('../constants/labelName'); +const { pods } = require('../constants/pods'); + +const customPodCpuSpec = (register) => { + const metricConfig = getMetricConfig( + METRIC_NAME.CUSTOM_POD_CPU_SPEC, + POD_LABEL_NAMES + ); + const g = new promClient.Gauge(metricConfig); + + setInterval(() => { + pods.forEach((pod) => { + g.set(pod, POD_CPU_SPEC[pod.instance + '-' + pod.pod]); + }); + }, INTERVAL_TIME); + + register.registerMetric(g); +}; + +module.exports = { customPodCpuSpec }; diff --git a/metric/pod/customPodTotalMemory.js b/metric/pod/customPodMemorySpec.js similarity index 63% rename from metric/pod/customPodTotalMemory.js rename to metric/pod/customPodMemorySpec.js index 253701d..9fd9112 100644 --- a/metric/pod/customPodTotalMemory.js +++ b/metric/pod/customPodMemorySpec.js @@ -1,24 +1,27 @@ const promClient = require('prom-client'); - const getMetricConfig = require('../common/getMetricConfig'); -const { INTERVAL_TIME, METRIC_NAME } = require('../constants/common'); +const { + METRIC_NAME, + INTERVAL_TIME, + POD_TOTAL_BYTE, +} = require('../constants/common'); const { POD_LABEL_NAMES } = require('../constants/labelName'); const { pods } = require('../constants/pods'); -const customPodTotalMemory = (register) => { +const customPodMemorySpec = (register) => { const metricConfig = getMetricConfig( - METRIC_NAME.CUSTOM_POD_TOTAL_MEMORY, + METRIC_NAME.CUSTOM_POD_MEMORY_SPEC, POD_LABEL_NAMES ); const g = new promClient.Gauge(metricConfig); setInterval(() => { pods.forEach((pod) => { - g.set(pod, Math.random()); + g.set(pod, POD_TOTAL_BYTE); }); }, INTERVAL_TIME); register.registerMetric(g); }; -module.exports = { customPodTotalMemory }; +module.exports = { customPodMemorySpec }; diff --git a/metric/pod/index.js b/metric/pod/index.js new file mode 100644 index 0000000..111f008 --- /dev/null +++ b/metric/pod/index.js @@ -0,0 +1,15 @@ +const { customPodCpuSpec } = require('./customPodCpuSpec'); +const { customPodCpuUsage } = require('./customPodCpuUsage'); +const { customPodDiskLatency } = require('./customPodDiskLatency'); +const { customPodMemorySpec } = require('./customPodMemorySpec'); +const { customPodMemoryUsage } = require('./customPodMemoryUsage'); +const { customPodMemoryUsageBytes } = require('./customPodMemoryUsageBytes'); + +module.exports = { + customPodCpuSpec, + customPodCpuUsage, + customPodDiskLatency, + customPodMemorySpec, + customPodMemoryUsage, + customPodMemoryUsageBytes, +}; diff --git a/package-lock.json b/package-lock.json index 992d86c..fe95f07 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,6 +118,19 @@ "node": ">=8" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, "node_modules/bintrees": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", @@ -166,6 +179,26 @@ "node": ">=8" } }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -384,6 +417,17 @@ "node": ">=8" } }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -502,6 +546,14 @@ "node": ">=4" } }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -692,6 +744,17 @@ "node": "*" } }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -768,6 +831,69 @@ "node": ">=0.10.0" } }, + "node_modules/nodemon": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -833,6 +959,17 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/prom-client": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", @@ -861,6 +998,11 @@ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "node_modules/qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -908,6 +1050,17 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -940,6 +1093,14 @@ "semver": "bin/semver" } }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -1019,6 +1180,25 @@ "semver": "bin/semver.js" } }, + "node_modules/simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "dependencies": { + "semver": "~7.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -1106,6 +1286,17 @@ "node": ">=8.0" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -1125,6 +1316,17 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1142,6 +1344,11 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -1301,6 +1508,16 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, "bintrees": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bintrees/-/bintrees-1.0.2.tgz", @@ -1342,6 +1559,23 @@ "fill-range": "^7.0.1" } }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -1506,6 +1740,14 @@ "to-regex-range": "^5.0.1" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", @@ -1590,6 +1832,11 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -1729,6 +1976,14 @@ "brace-expansion": "^1.1.7" } }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1784,6 +2039,51 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, + "nodemon": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.19.tgz", + "integrity": "sha512-4pv1f2bMDj0Eeg/MhGqxrtveeQ5/G/UVe9iO6uTZzjnRluSA4PVWf8CW99LUPwGB3eNIA7zUFoP77YuI7hOc0A==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -1831,6 +2131,11 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, "prom-client": { "version": "14.0.1", "resolved": "https://registry.npmjs.org/prom-client/-/prom-client-14.0.1.tgz", @@ -1853,6 +2158,11 @@ "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, "qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -1885,6 +2195,14 @@ "picomatch": "^2.2.1" } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -1900,6 +2218,11 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, "send": { "version": "0.18.0", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", @@ -1968,6 +2291,21 @@ } } }, + "simple-update-notifier": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.0.7.tgz", + "integrity": "sha512-BBKgR84BJQJm6WjWFMHgLVuo61FBDSj1z/xSFUIozqO6wO7ii0JxCqlIud7Enr/+LhlbNI0whErq96P2qHNWew==", + "requires": { + "semver": "~7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" + } + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -2031,6 +2369,14 @@ "is-number": "^7.0.0" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -2044,6 +2390,14 @@ "nopt": "~1.0.10" } }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -2058,6 +2412,11 @@ "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 58b0392..3b6d291 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "description": "", "main": "index.js", "scripts": { + "dev": "nodemon index.js", "dev": "nodemon index.js", "test": "echo \"Error: no test specified\" && exit 1" },