49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
using MesaFabApproval;
|
|
using MesaFabApproval.API;
|
|
using MesaFabApproval.API.Services;
|
|
using MesaFabApproval.API.Utilities;
|
|
using MesaFabApproval.Shared.Models;
|
|
using MesaFabApproval.Shared.Services;
|
|
|
|
namespace MesaFabApproval.API.Utilities;
|
|
|
|
public interface IMonInUtils {
|
|
public void PostMetrics(string metricName,
|
|
double latency,
|
|
bool isArgumentError,
|
|
bool isInternalError);
|
|
}
|
|
|
|
public class MonInUtils : IMonInUtils {
|
|
private readonly IMonInWorkerClient _monInClient;
|
|
private readonly ILogger<MonInUtils> _logger;
|
|
|
|
public MonInUtils(IMonInWorkerClient monInClient, ILogger<MonInUtils> logger) {
|
|
_monInClient = monInClient ??
|
|
throw new ArgumentNullException("IMonInWorkerClient not injected");
|
|
_logger = logger ??
|
|
throw new ArgumentNullException("ILogger not injected");
|
|
}
|
|
|
|
public void PostMetrics(string metricName,
|
|
double latency,
|
|
bool isArgumentError,
|
|
bool isInternalError) {
|
|
try {
|
|
_logger.LogInformation("Attempting to post metrics to MonIn");
|
|
|
|
_monInClient.PostAverage(metricName + "Latency", latency);
|
|
|
|
if (isArgumentError) {
|
|
_monInClient.PostStatus(metricName, StatusValue.Ok);
|
|
} else if (isInternalError) {
|
|
_monInClient.PostStatus(metricName, StatusValue.Critical);
|
|
} else {
|
|
_monInClient.PostStatus(metricName, StatusValue.Ok);
|
|
}
|
|
} catch (Exception ex) {
|
|
_logger.LogError($"Unable to post metrics to MonIn, because {ex.Message}");
|
|
}
|
|
}
|
|
}
|