using Aliyun.Api.LogService; using Aliyun.Api.LogService.Domain.Log; using Aliyun.Api.LogService.Domain.LogStore.Index; using Aliyun.Api.LogService.Infrastructure.Protocol; using Models; using System; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace COMMON { /// /// 阿里云服务 /// public class ASLS { //此处以深圳为例,其它地域请根据实际情况填写。 private static string endpoint = "cn-shenzhen.log.aliyuncs.com"; // private static string accessKeyId = "LTAI4GKcpyML2ihVUe6bk1qj"; private static string accessKeyId = "LTAI5tFDX4g74gJvEsdidRtD"; // private static string accessKeySecret = "IbeljP1LAuFYc0pGPvrX4AMAbrNhkj"; private static string accessKeySecret = "mN7DDagPbjcKc5qFgHEIGvmasUsRF7"; //Project名称。 private static string project = "rucs-project"; //Logstore名称。 private static string logstore = "rucs-udp-log-db"; private static string logstore_ = "rucs-eventlogging-db"; /// /// 主题 /// private static string topic = "rucs-udp"; /// /// 创建日志服务Client。 /// public ILogServiceClient client => BuildSimpleClient(); /// /// 初始化 阿里云服务 /// public async void Init() { var data = await client.GetProjectAsync(); if (data.IsSuccess == true) { LogHelp.Warning(project + "项目已经存在~"); } if (/*data == null ||*/ !data.IsSuccess) { //创建Project。 var proRes = await client.CreateProjectAsync(project, "代码测试~"); check(proRes); LogHelp.Warning("Create project success,await 30 S ~"); Thread.Sleep(30 * 1000); } var data1 = await client.ListLogStoreAsync(logstore, 0); check(data1); if (data1.Result == null || data1.Result.Logstores.IndexOf(logstore) < 0) { //创建Logstore。 var storeRes = await client.CreateLogStoreAsync(logstore, 90, 9); check(storeRes); LogHelp.Warning("Create logstore success,await 30 s~"); Thread.Sleep(30 * 1000); //为Logstore创建索引。 var Index = new Dictionary() { }; Index.Add("id", new IndexLongKeyInfo() { DocValue = true }); Index.Add("datetime", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("mac", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("msg_id", new IndexLongKeyInfo() { DocValue = true }); Index.Add("result", new IndexLongKeyInfo() { DocValue = true }); Index.Add("receipttime", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("packagetime", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("revdelaydatetime", new IndexLongKeyInfo() { DocValue = true }); Index.Add("udp_cmd", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("prot_timeout", new IndexLongKeyInfo() { DocValue = true }); Index.Add("remark", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("tcp_id", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("data_valid", new IndexLongKeyInfo() { DocValue = true }); Index.Add("processing_timespent", new IndexLongKeyInfo() { DocValue = true }); Index.Add("content_decrypt", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("content_encrypt", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("length", new IndexLongKeyInfo() { DocValue = true }); Index.Add("retry_count", new IndexLongKeyInfo() { DocValue = true }); Index.Add("sed_timeout", new IndexLongKeyInfo() { DocValue = true }); Index.Add("rcv_timeout", new IndexLongKeyInfo() { DocValue = true }); Index.Add("destination_port", new IndexLongKeyInfo() { DocValue = true }); Index.Add("destination", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("source_port", new IndexLongKeyInfo() { DocValue = true }); Index.Add("direction", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("source_ip", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("udp_id", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); var indRes = await client.CreateIndexAsync(logstore, Index); check(indRes); LogHelp.Warning("Create Index success,await 30 s~"); Thread.Sleep(30 * 1000); } else LogHelp.Warning("logstore已经存在~"); } /// /// 写入阿里云服务 /// /// public async Taskwrite(string _logstore,params LogInfo[] log) { try { LogGroupInfo data = new LogGroupInfo(); data.Logs = log; var indRes = await client.PostLogStoreLogsAsync( new PostLogsRequest(_logstore, data) { ProjectName = project } ); check(indRes); } catch (Exception ex) { return false; } return true; } /// /// 初始化 阿里云服务 /// public async void Init_() { try { var data = await client.GetProjectAsync(); if (data.IsSuccess == true) { LogHelp.Warning(project + "项目已经存在~"); Debug.Write(project + "项目已经存在~"); } if (/*data == null ||*/ !data.IsSuccess) { //创建Project。 var proRes = await client.CreateProjectAsync(project, "代码测试~"); check(proRes); LogHelp.Warning("Create project success,await 30 S ~"); Debug.Write("Create project success,await 30 S ~"); Thread.Sleep(30 * 1000); } var data1 = await client.ListLogStoreAsync(logstore_, 0); check(data1); if (data1.Result == null || data1.Result.Logstores.IndexOf(logstore_) < 0) { //创建Logstore。 var storeRes = await client.CreateLogStoreAsync(logstore_, 90, 9); check(storeRes); LogHelp.Warning("Create logstore success,await 30 s~"); Debug.Write("Create logstore success,await 30 S ~"); Thread.Sleep(30 * 1000); //为Logstore创建索引。 var Index = new Dictionary() { }; Index.Add("event_type", new IndexLongKeyInfo() { DocValue = true }); Index.Add("eventlogging_id", new IndexLongKeyInfo() { DocValue = true }); Index.Add("registrar", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("input_datetime", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("remark", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("output_datatime", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("steprecording", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("info", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("role", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("mac", new IndexTextKeyInfo(new char[' ']) { DocValue = true }); Index.Add("hotel_id", new IndexDoubleKeyInfo() { DocValue = true }); Index.Add("hotel_old_id", new IndexDoubleKeyInfo() { DocValue = true }); Index.Add("room_old_id", new IndexDoubleKeyInfo() { DocValue = true }); Index.Add("room_id", new IndexDoubleKeyInfo() { DocValue = true }); var indRes = await client.CreateIndexAsync(logstore_, Index); check(indRes); LogHelp.Warning("Create Index success,await 30 s~"); Debug.Write("Create Index success,await 30 S ~"); Thread.Sleep(30 * 1000); } else { LogHelp.Warning("logstore已经存在~"); Debug.Write("logstore已经存在~"); } } catch (Exception EX) { Debug.Write(EX.ToString()); } } /// /// 查询 阿里云数据 udp /// /// /// /// /// /// /// /// public async Task>> GetLogs_(int losg, string sql, DateTime start = default , DateTime end = default, int line = 100, int offset = 0) { if(start == default) { start = ConfigEntity.Instance.STARTTIME; } if (end == default) { end = DateTime.Now; } var logstr = losg == 0 ? logstore : (losg==1? logstore_: "rucs-log-db"); System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); if (end - start >= TimeSpan.FromDays(ConfigEntity.Instance.ASLS)) start = end.AddDays(-ConfigEntity.Instance.ASLS); sql = sql.TrimEnd(); IList> RES = new List>(); DateTimeOffset start_ = start;//.AddHours (-8); DateTimeOffset end_ = end;//.AddHours(-8); try { var logsRes = await client.GetLogsAsync(logstr, start_, end_, topic, sql, line, offset, true); check(logsRes); return logsRes.Result.Logs; } catch (Exception EX) { LogHelp.Error(EX.ToString()); RES = new List>(); } finally { stopwatch.Stop(); LogHelp.Error($"{sql}---- 用时:" + (stopwatch.ElapsedMilliseconds / 1000.00) + "。

"); } return RES; } /// /// sls /// /// public ILogServiceClient BuildSimpleClient() => LogServiceClientBuilders.HttpBuilder .Endpoint(endpoint, project) .Credential(accessKeyId, accessKeySecret) .Build(); /// /// 检查结果 /// /// /// public void check(IResponse res) { if (!res.IsSuccess) { throw new ApplicationException(res.Error != null ? res.Error.ErrorMessage : "请求错误~" + Newtonsoft.Json.JsonConvert.SerializeObject(res)); } } } }