public async Task <Result <MonitorResponse> > GetByDamAndMetricAsync(int damId, int metricId) { try { var monitors = await _MonitorRepository.GetByDamAndMetricAsync(damId, metricId); var values = monitors.Select(x => x.Value).Average(); var status = StatusEnum.Normal; var critical = GetMaxValues(metricId); if (values > critical) { status = StatusEnum.Critical; } else if (values > (critical / 2)) { status = StatusEnum.Warning; } var result = new MonitorResponse { Monitors = monitors.OrderBy(x => x.Date).ToList(), Status = status, Message = GetMessage(metricId, status) }; return(new Result <MonitorResponse>(result)); } catch (Exception ex) { return(new Result <MonitorResponse>(null, "Erro ao consultar monitor")); } }
public MonitorResponse Monitor(SessionContextRequest request) { var response = new MonitorResponse(); var session = CheckSession(ref request, ref response); if (session == null) { return(response); } try { if (session.Admin) { var exportsessions = new List <Session>(); foreach (var sid in Sessions.Keys) { var cursession = Sessions[sid]; var export = new Session { Sid = sid.ToString("x"), Admin = cursession.Admin, Connections = cursession.GetConnectionsStruct(), LastAccess = cursession.LastAccess, Logon = cursession.Logon, Username = cursession.Username }; exportsessions.Add(export); } response.Sessions = exportsessions.ToArray(); response.Success = true; response.Message = string.Empty; } else { response.Success = false; response.Sessions = null; response.Message = Strings.SERVER_SIDE + Strings.ADMIN_REQUIRED; } } catch (Exception ex) { response.Success = false; response.Sessions = null; response.Message = Strings.SERVER_SIDE + ex.Message; } return(response); }
/// ----------------------------------------------------------------------------- /// <summary> /// Lance la commande /// </summary> /// <param name="parameters">les parametres</param> /// <param name="logger">le logger</param> /// <param name="tunnel">le tunnel</param> /// <param name="sid">le jeton de session</param> /// ----------------------------------------------------------------------------- public override void Execute(string[] parameters, ILogger logger, ITunnel tunnel, int sid) { MonitorResponse response = tunnel.Monitor(new SessionContextRequest(sid)); if (response.Success) { LogObject(logger, 0, response.Sessions); logger.Log(this, string.Format(Strings.CURRENT_SID, sid.ToString("x")), ESeverity.INFO); } else { logger.Log(this, response.Message, ESeverity.ERROR); } }
public async Task <Response <MonitorResponse> > ListAsync(string resourceUri, string timespan = null, TimeSpan?interval = null, string metricnames = null, string aggregation = null, int?top = null, string orderby = null, string filter = null, ResultType?resultType = null, string metricnamespace = null, CancellationToken cancellationToken = default) { Argument.AssertNotNull(resourceUri, nameof(resourceUri)); using var message = CreateListRequest(resourceUri, timespan, interval, metricnames, aggregation, top, orderby, filter, resultType, metricnamespace); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: { MonitorResponse value = default; using var document = await JsonDocument.ParseAsync(message.Response.ContentStream, default, cancellationToken).ConfigureAwait(false); value = MonitorResponse.DeserializeMonitorResponse(document.RootElement); return(Response.FromValue(value, message.Response)); }