116 lines
5.1 KiB
JavaScript
116 lines
5.1 KiB
JavaScript
"use strict";
|
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
};
|
|
exports.__esModule = true;
|
|
exports.HealthController = void 0;
|
|
var common_1 = require("@nestjs/common");
|
|
var terminus_1 = require("@nestjs/terminus");
|
|
var swagger_1 = require("@nestjs/swagger");
|
|
var os = require("os");
|
|
var HealthController = /** @class */ (function () {
|
|
function HealthController(health, http, disk, memory, typeOrmHealth, dbPoolStats, configService) {
|
|
this.health = health;
|
|
this.http = http;
|
|
this.disk = disk;
|
|
this.memory = memory;
|
|
this.typeOrmHealth = typeOrmHealth;
|
|
this.dbPoolStats = dbPoolStats;
|
|
this.configService = configService;
|
|
// Define o caminho correto para o disco, baseado no sistema operacional
|
|
this.diskPath = os.platform() === 'win32' ? 'C:\\' : '/';
|
|
}
|
|
HealthController.prototype.check = function () {
|
|
var _this = this;
|
|
return this.health.check([
|
|
// Verifica o status da própria aplicação
|
|
function () { return _this.http.pingCheck('api', 'http://localhost:8066/docs'); },
|
|
// Verifica espaço em disco (espaço livre < 80%)
|
|
function () { return _this.disk.checkStorage('disk_percent', {
|
|
path: _this.diskPath,
|
|
thresholdPercent: 0.8
|
|
}); },
|
|
// Verifica espaço em disco (pelo menos 500MB livres)
|
|
function () { return _this.disk.checkStorage('disk_space', {
|
|
path: _this.diskPath,
|
|
threshold: 500 * 1024 * 1024
|
|
}); },
|
|
// Verifica uso de memória (heap <150MB)
|
|
function () { return _this.memory.checkHeap('memory_heap', 150 * 1024 * 1024); },
|
|
// Verifica as conexões de banco de dados
|
|
function () { return _this.typeOrmHealth.checkOracle(); },
|
|
function () { return _this.typeOrmHealth.checkPostgres(); },
|
|
]);
|
|
};
|
|
HealthController.prototype.checkDatabase = function () {
|
|
var _this = this;
|
|
return this.health.check([
|
|
function () { return _this.typeOrmHealth.checkOracle(); },
|
|
function () { return _this.typeOrmHealth.checkPostgres(); },
|
|
]);
|
|
};
|
|
HealthController.prototype.checkMemory = function () {
|
|
var _this = this;
|
|
return this.health.check([
|
|
function () { return _this.memory.checkHeap('memory_heap', 150 * 1024 * 1024); },
|
|
function () { return _this.memory.checkRSS('memory_rss', 300 * 1024 * 1024); },
|
|
]);
|
|
};
|
|
HealthController.prototype.checkDisk = function () {
|
|
var _this = this;
|
|
return this.health.check([
|
|
// Verificar espaço em disco usando porcentagem
|
|
function () { return _this.disk.checkStorage('disk_percent', {
|
|
path: _this.diskPath,
|
|
thresholdPercent: 0.8
|
|
}); },
|
|
// Verificar espaço em disco usando valor absoluto
|
|
function () { return _this.disk.checkStorage('disk_space', {
|
|
path: _this.diskPath,
|
|
threshold: 500 * 1024 * 1024
|
|
}); },
|
|
]);
|
|
};
|
|
HealthController.prototype.checkPoolStats = function () {
|
|
var _this = this;
|
|
return this.health.check([
|
|
function () { return _this.dbPoolStats.checkOraclePoolStats(); },
|
|
function () { return _this.dbPoolStats.checkPostgresPoolStats(); },
|
|
]);
|
|
};
|
|
__decorate([
|
|
common_1.Get(),
|
|
terminus_1.HealthCheck(),
|
|
swagger_1.ApiOperation({ summary: 'Verificar saúde geral da aplicação' })
|
|
], HealthController.prototype, "check");
|
|
__decorate([
|
|
common_1.Get('db'),
|
|
terminus_1.HealthCheck(),
|
|
swagger_1.ApiOperation({ summary: 'Verificar saúde das conexões de banco de dados' })
|
|
], HealthController.prototype, "checkDatabase");
|
|
__decorate([
|
|
common_1.Get('memory'),
|
|
terminus_1.HealthCheck(),
|
|
swagger_1.ApiOperation({ summary: 'Verificar uso de memória' })
|
|
], HealthController.prototype, "checkMemory");
|
|
__decorate([
|
|
common_1.Get('disk'),
|
|
terminus_1.HealthCheck(),
|
|
swagger_1.ApiOperation({ summary: 'Verificar espaço em disco' })
|
|
], HealthController.prototype, "checkDisk");
|
|
__decorate([
|
|
common_1.Get('pool'),
|
|
terminus_1.HealthCheck(),
|
|
swagger_1.ApiOperation({ summary: 'Verificar estatísticas do pool de conexões' })
|
|
], HealthController.prototype, "checkPoolStats");
|
|
HealthController = __decorate([
|
|
swagger_1.ApiTags('Health Check'),
|
|
common_1.Controller('health')
|
|
], HealthController);
|
|
return HealthController;
|
|
}());
|
|
exports.HealthController = HealthController;
|