UNPKG

vulcain-corejs

Version:
90 lines (88 loc) 5.95 kB
"use strict"; const commandMetricsFactory_1 = require("../metrics/commandMetricsFactory"); const circuitBreaker_1 = require("../command/circuitBreaker"); const actualTime_1 = require("../../utils/actualTime"); const rollingNumberEvent_1 = require("../metrics/hystrix/rollingNumberEvent"); const rx = require("rx"); class HystrixSSEStream { static toObservable(delay = 2000) { let observableMetrics = rx.Observable .interval(delay) .flatMap(() => { return rx.Observable.from(commandMetricsFactory_1.CommandMetricsFactory.getAllMetrics()); }) .map((metrics) => { return HystrixSSEStream.toCommandJson(metrics); }); return observableMetrics; } static toCommandJson(metrics) { let json = {}; json.type = "HystrixCommand"; json.name = metrics.commandName; json.group = metrics.commandGroup; json.currentTime = actualTime_1.default.getCurrentTime(); let circuitBreaker = circuitBreaker_1.CircuitBreakerFactory.get(metrics.commandName); json.isCircuitBreakerOpen = circuitBreaker.isOpen(); let { totalCount, errorCount, errorPercentage } = metrics.getHealthCounts(); json.errorPercentage = errorPercentage; json.errorCount = errorCount; json.requestCount = totalCount; json.rollingCountFailure = metrics.getRollingCount(rollingNumberEvent_1.default.FAILURE); json.rollingCountTimeout = metrics.getRollingCount(rollingNumberEvent_1.default.TIMEOUT); json.rollingCountSuccess = metrics.getRollingCount(rollingNumberEvent_1.default.SUCCESS); json.rollingCountShortCircuited = metrics.getRollingCount(rollingNumberEvent_1.default.SHORT_CIRCUITED); json.rollingCountBadRequests = metrics.getRollingCount(rollingNumberEvent_1.default.BAD_REQUEST); json.rollingCountCollapsedRequests = 0; json.rollingCountExceptionsThrown = metrics.getRollingCount(rollingNumberEvent_1.default.EXCEPTION_THROWN); json.rollingCountFallbackFailure = metrics.getRollingCount(rollingNumberEvent_1.default.FALLBACK_FAILURE); json.rollingCountFallbackRejection = metrics.getRollingCount(rollingNumberEvent_1.default.FALLBACK_REJECTION); json.rollingCountFallbackSuccess = metrics.getRollingCount(rollingNumberEvent_1.default.FALLBACK_SUCCESS); json.rollingCountResponsesFromCache = metrics.getRollingCount(rollingNumberEvent_1.default.RESPONSE_FROM_CACHE); json.rollingCountSemaphoreRejected = metrics.getRollingCount(rollingNumberEvent_1.default.REJECTED); json.rollingCountThreadPoolRejected = 0; json.currentConcurrentExecutionCount = metrics.getCurrentExecutionCount(); json.latencyExecute_mean = metrics.getExecutionTime("mean") || 0; json.latencyExecute = {}; json.latencyExecute["0"] = metrics.getExecutionTime(0) || 0; json.latencyExecute["25"] = metrics.getExecutionTime(25) || 0; json.latencyExecute["50"] = metrics.getExecutionTime(50) || 0; json.latencyExecute["75"] = metrics.getExecutionTime(75) || 0; json.latencyExecute["90"] = metrics.getExecutionTime(90) || 0; json.latencyExecute["95"] = metrics.getExecutionTime(95) || 0; json.latencyExecute["99"] = metrics.getExecutionTime(99) || 0; json.latencyExecute["99.5"] = metrics.getExecutionTime(99.5) || 0; json.latencyExecute["100"] = metrics.getExecutionTime(100) || 0; json.latencyTotal_mean = metrics.getExecutionTime("mean") || 0; json.latencyTotal = {}; json.latencyTotal["0"] = metrics.getExecutionTime(0) || 0; json.latencyTotal["25"] = metrics.getExecutionTime(25) || 0; json.latencyTotal["50"] = metrics.getExecutionTime(50) || 0; json.latencyTotal["75"] = metrics.getExecutionTime(75) || 0; json.latencyTotal["90"] = metrics.getExecutionTime(90) || 0; json.latencyTotal["95"] = metrics.getExecutionTime(95) || 0; json.latencyTotal["99"] = metrics.getExecutionTime(99) || 0; json.latencyTotal["99.5"] = metrics.getExecutionTime(99.5) || 0; json.latencyTotal["100"] = metrics.getExecutionTime(100) || 0; json.propertyValue_circuitBreakerRequestVolumeThreshold = circuitBreaker.properties.circuitBreakerRequestVolumeThreshold.value; json.propertyValue_circuitBreakerSleepWindowInMilliseconds = circuitBreaker.properties.circuitBreakerSleepWindowInMilliseconds.value; json.propertyValue_circuitBreakerErrorThresholdPercentage = circuitBreaker.properties.circuitBreakerErrorThresholdPercentage.value; json.propertyValue_circuitBreakerForceOpen = false; json.propertyValue_circuitBreakerForceClosed = false; json.propertyValue_circuitBreakerEnabled = true; json.propertyValue_metricsRollingStatisticalWindowInMilliseconds = metrics.metricsRollingStatisticalWindowInMilliseconds; //json.propertyValue_executionIsolationStrategy = "THREAD"; json.propertyValue_executionIsolationStrategy = 'unknown'; json.propertyValue_executionIsolationThreadTimeoutInMilliseconds = metrics.properties.executionTimeoutInMilliseconds.value; json.propertyValue_executionIsolationThreadInterruptOnTimeout = 0; json.propertyValue_executionIsolationThreadPoolKeyOverride = false; json.propertyValue_executionIsolationSemaphoreMaxConcurrentRequests = metrics.properties.executionIsolationSemaphoreMaxConcurrentRequests.value; json.propertyValue_fallbackIsolationSemaphoreMaxConcurrentRequests = metrics.properties.fallbackIsolationSemaphoreMaxConcurrentRequests.value; json.propertyValue_requestCacheEnabled = false; json.propertyValue_requestLogEnabled = true; json.reportingHosts = 1; return JSON.stringify(json); } } exports.HystrixSSEStream = HystrixSSEStream; //# sourceMappingURL=hystrixSSEStream.js.map