Beispiel #1
0
        public async Task <string> MonitorProcess([FromBody] ArguProcess arguProcess)
        {
            if (arguProcess == null)
            {
                throw new MetricsException(EnumMetricsException.请求参数不能为空, "Arguments is null");
            }
            string         appHost        = Configuration[$"{arguProcess.app}"];
            MoniorDispatch moniorDispatch = new MoniorDispatch(ConnectionStrings, ClientFactory);

            return(await moniorDispatch.MonitorProcess(arguProcess, appHost));
        }
Beispiel #2
0
        public async Task <string> MonitorProcess(ArguProcess arguProcess, string appHost)
        {
            Uri requestUri = new Uri(appHost + UriAddress);
            var queries    = new[]
            {
                $"SELECT last(value) FROM \"application.health__results\" WHERE env = '{arguProcess.env}' and app = '{arguProcess.app}' and health_check_name = '百度 ping' and time > now() - 5s"
            };
            var dbName = "MyMetrics";

            //从指定库中查询数据
            var response = await ClientDb.Client.QueryAsync(queries, dbName);

            //得到Series集合对象
            var series = response.ToList();

            if (series.Count == 0)
            {
                ArguReStart arguReStart = new ArguReStart()
                {
                    app   = arguProcess.app,
                    value = "0"
                };
                var responsePost = await PostStringAsync("ReStartProcess", ToJSON(arguReStart), requestUri, null);

                return(arguReStart.value);
            }
            var healthCheckValue    = (series[0].Values)[0][1];
            var healthCheckToString = Convert.ToString(healthCheckValue);

            if (healthCheckToString == "0")
            {
                //判断条件还不够精确,无法去重启
                //var responsePost = await PostStringAsync("ReStartProcess", null, requestUri, null);
            }
            else if (healthCheckToString == "0.5")
            {
                //程序运行异常
            }
            else
            {
                //程序正常运行
            }
            return(healthCheckToString);
        }