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"));
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// -----------------------------------------------------------------------------
        /// <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));
            }