Beispiel #1
0
        public string GetCategory(string method, TraceRequest traceRequest)
        {
            var text = string.Empty;

            switch (method)
            {
            case GET:
                text = traceRequest.GetCategory;
                break;

            case POST:
                text = traceRequest.PostCategory;
                break;

            case PUT:
                text = traceRequest.PutCategory;
                break;

            case PATCH:
                text = traceRequest.PatchCategory;
                break;

            case DELETE:
                text = traceRequest.DeleteCategory;
                break;
            }
            return(text);
        }
Beispiel #2
0
        public JsonResult Trace(TraceRequest request)
        {
            On();

            if (StartTime == DateTime.MinValue)
            {
                StartTime = DateTime.Now;
            }

            string[] blackList = Configuration["Blacklist"].Split(",");

            List <string> tableNames = GetTableNames();

            List <LogItem>    logItems    = new List <LogItem>();
            List <LogItemDTO> logItemDTOs = new List <LogItemDTO>();

            using (MySqlConnection mySqlConnection = new MySqlConnection(this.ConnStr))
            {
                //string sqlStart = "set global log_output='table';set global general_log=on; repair table mysql.general_log;";
                //Dapper.SqlMapper.Execute(mySqlConnection, sqlStart);

                logItemDTOs = Dapper.SqlMapper.Query <LogItemDTO>(mySqlConnection, $" select * from mysql.general_log " +
                                                                  $"where event_time>'{StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' " +
                                                                  $"order by event_time desc ")
                              .ToList();
            }

            logItemDTOs.ForEach(e =>
            {
                LogItem logItem = new LogItem()
                {
                    Time        = e.event_time.ToString("yyyy-MM-dd HH:mm:ss.fff"),
                    CommondType = e.command_type,
                    ServerId    = e.server_id,
                    ThreadId    = e.thread_id,
                    UserHost    = e.user_host,
                    Sql         = System.Text.Encoding.Default.GetString(e.argument)
                };

                if (tableNames.Any(a => logItem.Sql.Contains(a, StringComparison.OrdinalIgnoreCase)) &&
                    !blackList.Any(b => logItem.Sql.Contains(b, StringComparison.OrdinalIgnoreCase))
                    )
                {
                    if (!string.IsNullOrWhiteSpace(request.Keyword))
                    {
                        if (logItem.Sql.Contains(request.Keyword, StringComparison.OrdinalIgnoreCase))
                        {
                            logItems.Add(logItem);
                        }
                    }
                    else
                    {
                        logItems.Add(logItem);
                    }
                }
            });


            return(new JsonResult(logItems));
        }
 public override Task <TraceResponse> GetTraces(TraceRequest request, ServerCallContext context)
 {
     return(Task.FromResult(new TraceResponse
     {
         RequestId = _traces.RequestId ?? string.Empty,
         SpanId = _traces.SpanId ?? string.Empty,
         ParentSpanId = _traces.ParentSpanId ?? string.Empty,
         TraceId = _traces.TraceId ?? string.Empty,
         Sampled = _traces.Sampled ?? string.Empty,
         Flags = _traces.Flags ?? string.Empty,
         B3 = _traces.B3 ?? string.Empty
     }));
 }
Beispiel #4
0
        private void LogIntoCache(TraceRequest request)
        {
            var expireTime = DateTime.Now.AddMinutes(10);
            //using (var cli = RedisManager.GetClient())
            //{
            //顶级分组 每天
            var topAgentGroup = string.Format("ta:{0}", DateTime.Now.ToString("yyyy-MM-dd"));
            //每个顶级下的次级
            var childAgentPerTopAgent = string.Format("{0}:cld", topAgentGroup);
            //每个下级
            var childAgent = string.Format("{0}:ta:{1}", childAgentPerTopAgent, request.ChildAgent);
            //每个下级的所有车牌号
            var licensenosPerChildAgent = string.Format("{0}:lis", childAgent);
            //每个人算的单个车牌号
            var licensenoLevel = string.Format("{0}:ca:{1}", licensenosPerChildAgent, request.LicenseNo);
            //每个车牌号下共发起几次跟踪链接
            var rootIdsPerLicenseno = string.Format("{0}:rts:{1}", licensenoLevel, request.RootId);
            //每个跟踪链下共有多少次步骤
            var childRootIdsPerRootId = string.Format("{0}:tc:{1}", rootIdsPerLicenseno, request.ChildRootId);
            //using (var pipe=cli.CreatePipeline())
            //{
            //    pipe.QueueCommand(p =>
            //    {
            //        p.AddItemToSet(topAgentGroup,request.Agent.ToString());
            //    });
            //    pipe.QueueCommand(p =>
            //    {
            //        p.ExpireEntryAt(topAgentGroup, expireTime);
            //    });
            //    pipe.QueueCommand(p =>
            //    {
            //        p.AddItemToSet(childAgent,childAgentPerTopAgent);
            //    });
            //    pipe.QueueCommand(p =>
            //    {
            //        p.ExpireEntryAt(topAgentGroup, expireTime);
            //    });
            //    pipe.QueueCommand(p =>
            //    {

            //    });
            //}
            //}
        }
Beispiel #5
0
    public override async Task <TraceResponse> GetTraces(TraceRequest request, ServerCallContext context)
    {
        var traces = await _client.GetTracesAsync(new TraceRequest());

        return(traces);
    }
Beispiel #6
0
 public void Statistics(TraceRequest request)
 {
 }
Beispiel #7
0
 public async Task <HttpResponseMessage> Trace([FromBody] TraceRequest request)
 {
     return(new HttpResponseMessage());
 }