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)); }
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); }