Переглянути джерело

处理防火墙日志接口按分钟统计记录。

Li 2 роки тому
батько
коміт
f56a708ad2

+ 11 - 0
TEAMModelOS.SDK/Models/Cosmos/BI/RecAppGWInfo.cs

@@ -11,6 +11,7 @@ namespace TEAMModelOS.SDK.Models.Cosmos.BI
         public string ip { get; set; }
         public string api { get; set; }
         public string hostName { get; set; }
+        public string minute { get; set; }
     }
 
     /// <summary>
@@ -20,6 +21,7 @@ namespace TEAMModelOS.SDK.Models.Cosmos.BI
     {
         public List<RecApiCnt> apiCnt { get; set; }
         public List<RecIpCnt> ipCnt { get; set; }
+        public List<MinuteCnt> minCnts { get; set; }
     }
 
     /// <summary>
@@ -50,6 +52,15 @@ namespace TEAMModelOS.SDK.Models.Cosmos.BI
         public List<string> ip { get; set; }
     }
 
+    /// <summary>
+    /// 分钟数统计接口数量
+    /// </summary>
+    public record MinuteCnt
+    {
+        public string minute { get; set; }
+        public int cnt { get; set; }
+    }
+
     /// <summary>
     /// 读取日志数据结构
     /// </summary>

+ 4 - 1
TEAMModelOS.SDK/Models/Service/BI/BILogAnalyseService.cs

@@ -159,14 +159,17 @@ namespace TEAMModelOS.SDK.Models.Service.BI
 
                     RecCnt saveCnts = new();
 
-                    List<RecAppGWInfo> recInfo = aGInfos.Select(s => new RecAppGWInfo { hour = cHour, ip = s.properties.clientIp, api = s.properties.requestUri.Split("?").ToList().Count() > 1 ? s.properties.requestUri.Split("?").ToList()[0] : s.properties.requestUri, hostName = s.properties.hostname }).ToList();
+                    List<RecAppGWInfo> recInfo = aGInfos.Select(s => new RecAppGWInfo { hour = cHour, ip = s.properties.clientIp, api = s.properties.requestUri.Split("?").ToList().Count() > 1 ? s.properties.requestUri.Split("?").ToList()[0] : s.properties.requestUri, hostName = s.properties.hostname,minute = DateTimeOffset.Parse(s.time).ToString("yyyyMMddHHmm") }).ToList();
 
                     List<RecApiCnt> apiCnt = recInfo.GroupBy(a => a.api).Select(g => new RecApiCnt { api = g.Key, count = g.Count(), hour = cHour, hostName = g.Select(h => h.hostName).Distinct().ToList(), ip = g.Select(i => i.ip).Distinct().ToList() }).ToList();
                     saveCnts.apiCnt = apiCnt;
 
                     List<RecIpCnt> ipCnt = recInfo.GroupBy(a => a.ip).Select(g => new RecIpCnt { ip = g.Key, count = g.Count(), hour = cHour, hostName = g.Select(h => h.hostName).Distinct().ToList(), api = g.Select(i => i.api).Distinct().ToList() }).ToList();
                     saveCnts.ipCnt = ipCnt;
+
+                    List<MinuteCnt> minCnts = recInfo.GroupBy(a => a.minute).Select(s => new MinuteCnt { minute = s.Key, cnt = s.Count() }).ToList();
                     recCnts.Add(saveCnts);
+                    saveCnts.minCnts = minCnts;
 
                     //保存存至Blob文件
                     var url = await _azureStorage.GetBlobContainerClient("0-public").UploadFileByContainer(saveCnts.ToJsonString(), $"visitCnt/{cDay}", $"{cHour}.json");