Esempio n. 1
0
        private void LogRemoteLockerPerfStat()
        {
            var metricsData   = remoteLockerMetrics.Context.DataProvider.CurrentMetricsData;
            var metricsReport = StringReport.RenderMetrics(metricsData, () => new HealthStatus());

            Console.Out.WriteLine(metricsReport);
        }
Esempio n. 2
0
        public Task Invoke(HttpContext context)
        {
            if (_options.MetricsTextEnabled && _options.MetricsTextEndpoint.HasValue && _options.MetricsTextEndpoint == context.Request.Path)
            {
                var content = StringReport.RenderMetrics(_metricsContext.Context.DataProvider.CurrentMetricsData, _metricsContext.HealthStatus);
                return(WriteResponse(context, content, "text/plain"));
            }

            return(_next(context));
        }
Esempio n. 3
0
        public MetricsModule()
            : base(Config.ModulePath ?? "/")
        {
            if (string.IsNullOrEmpty(Config.ModulePath))
            {
                return;
            }

            if (Config.ModuleConfigAction != null)
            {
                Config.ModuleConfigAction(this);
            }

            object[] noCacheHeaders =
            {
                new { Header = "Cache-Control", Value = "no-cache, no-store, must-revalidate" },
                new { Header = "Pragma",        Value = "no-cache"                            },
                new { Header = "Expires",       Value = "0"                                   }
            };

            Get["/"] = _ =>
            {
                if (!this.Request.Url.Path.EndsWith("/"))
                {
                    return(Response.AsRedirect(this.Request.Url.ToString() + "/"));
                }
                var gzip     = AcceptsGzip();
                var response = Response.FromStream(FlotWebApp.GetAppStream(!gzip), "text/html");
                if (gzip)
                {
                    response.WithHeader("Content-Encoding", "gzip");
                }
                return(response);
            };

            Get["/text"] = _ => Response.AsText(StringReport.RenderMetrics(Config.DataProvider.CurrentMetricsData, Config.HealthStatus))
                           .WithHeaders(noCacheHeaders);

            Get["/json"] = _ => Response.AsText(JsonBuilderV1.BuildJson(Config.DataProvider.CurrentMetricsData), "text/json")
                           .WithHeaders(noCacheHeaders);

            Get["/v2/json"] = _ => Response.AsText(JsonBuilderV2.BuildJson(Config.DataProvider.CurrentMetricsData), "text/json")
                              .WithHeaders(noCacheHeaders);

            Get["/ping"] = _ => Response.AsText("pong", "text/plain")
                           .WithHeaders(noCacheHeaders);

            Get["/health"] = _ => GetHealthStatus()
                             .WithHeaders(noCacheHeaders);
        }
Esempio n. 4
0
        /// <summary>
        /// comingsoonでも止まるように変更した!
        /// </summary>
        /// <param name="live_id"></param>
        /// <param name="cc"></param>
        /// <param name="progress"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        private async Task <Response <getplayerstatus_new> > GetSeatLoopTest(string live_id, System.Net.CookieContainer cc, IProgress <StringReport> progress, System.Threading.CancellationToken token, bool logging)
        {
            var report      = new StringReport();
            int loopCounter = 0;
            Response <getplayerstatus_new> response;

            do
            {
                //座席が取れた場合と座席を取るのが不可能な場合に結果を戻す。それ以外の場合には経過をReportして継続する。
                token.ThrowIfCancellationRequested();
                loopCounter++;
                response = await Api.GetPlayerStatus_new(live_id, cc, logging);

                if (response.status == status.ok)
                {
                    return(response.GetResponse());
                }
                else
                {
                    var code = response.GetError().code;
                    switch (code)
                    {
                    case errorcode.closed:
                    case errorcode.notfound:
                    case errorcode.notlogin:
                    case errorcode.require_community_member:
                    case errorcode.deletedbyuser:
                    //注意!!
                    case errorcode.comingsoon:
                    case errorcode.noauth:
                        return(response);

                    default:
                        break;
                    }
                    report.Message = string.Format("{0} {1, 4}回目", code, loopCounter);
                    progress.Report(report);
                }
            } while (true);
        }
        private static Task GetAsHumanReadable(IDictionary <string, object> environment, MetricsDataProvider dataProvider, Func <HealthStatus> healthStatus)
        {
            string text = StringReport.RenderMetrics(dataProvider.CurrentMetricsData, healthStatus);

            return(WriteResponse(environment, text, "text/plain"));
        }
        private static void WriteTextMetrics(HttpListenerContext context, MetricsDataProvider metricsDataProvider, Func <HealthStatus> healthStatus)
        {
            var text = StringReport.RenderMetrics(metricsDataProvider.CurrentMetricsData, healthStatus);

            WriteString(context, text, "text/plain");
        }
Esempio n. 7
0
 /// <summary>
 /// comingsoonでも止まるように変更した!
 /// </summary>
 /// <param name="live_id"></param>
 /// <param name="cc"></param>
 /// <param name="progress"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 private async Task<Response<getplayerstatus_new>> GetSeatLoopTest(string live_id, System.Net.CookieContainer cc, IProgress<StringReport> progress, System.Threading.CancellationToken token, bool logging)
 {
     var report = new StringReport();
     int loopCounter = 0;
     Response<getplayerstatus_new> response;
     do
     {
         //座席が取れた場合と座席を取るのが不可能な場合に結果を戻す。それ以外の場合には経過をReportして継続する。
         token.ThrowIfCancellationRequested();
         loopCounter++;
         response = await Api.GetPlayerStatus_new(live_id, cc, logging);
         if (response.status == status.ok)
         {
             return response.GetResponse();
         }
         else
         {
             var code = response.GetError().code;
             switch (code)
             {
                 case errorcode.closed:
                 case errorcode.notfound:
                 case errorcode.notlogin:
                 case errorcode.require_community_member:
                 case errorcode.deletedbyuser:
                 //注意!!
                 case errorcode.comingsoon:
                 case errorcode.noauth:
                     return response;
                 default:
                     break;
             }
             report.Message = string.Format("{0} {1, 4}回目", code, loopCounter);
             progress.Report(report);
         }
     } while (true);
 }
        public string GenerateReport()
        {
            MetricsData metricsData = this._metricsContext.DataProvider.CurrentMetricsData;

            return(StringReport.RenderMetrics(metricsData, HealthChecks.GetStatus));
        }