public ClrMethodOperation(ClrMethodInfo methodInfo, MethodAction action, DateTime time)
 {
     MethodInfo = methodInfo;
     Action = action;
     Time = time;
 }
 private string GetMonitorName(ClrMethodInfo info)
 {
     return info.UnitOfWork + "-" + info.MethodName;
 }
        private int CreateMonitorIfNotExist(ClrMethodInfo info)
        {
            var name = GetMonitorName(info);

            var monitors = _monitor.GetMonitors(OutputType.XML);
            var monitorsElement = System.Xml.Linq.XElement.Parse(monitors.Content);
            var monitorss = monitorsElement.Descendants("monitor").Select(u => new { ID = u.Elements("id").FirstOrDefault(), Name = u.Elements("name").FirstOrDefault(), Monitor = u });
            var monitor = monitorss.FirstOrDefault(u => u.Name != null && u.Name.Value == name);
            if (monitor == null)
            {
                var agents = _agent.GetAgents("profiler", true, true, OutputType.XML);
                var agentsElement = System.Xml.Linq.XElement.Parse(agents.Content);

                var agent = agentsElement.Descendants("agent").Select(u => new { ID = u.Elements("id").FirstOrDefault(), Name = u.Elements("name").FirstOrDefault(), Agent = u }).FirstOrDefault(u => u.Name != null && u.ID != null && u.Name.Value == "MonitisProfilerUserAgent");
                int agentID;
                if (agent == null)
                {
                    var result = _agent.AddAgent("MonitisProfilerUserAgent", "profiler", new JObject(), 100000, OutputType.JSON);
                    var res = JObject.Parse(result.Content);
                    if (res["status"].Value<string>() != "ok")
                        throw new InvalidOperationException("Cannot create agent!: " + res["status"]);
                    agentID = int.Parse(res["data"].Value<string>());
                }
                else
                {
                    agentID = int.Parse(agent.ID.Value);
                }

                var resParam = new MonResultParameter("Execution Time", "Execution Time", "Execution Time", DataType.Float);

                var param = new MonitorParameter("param1", "param1d", "val", DataType.String, false);

                var resAddParam = new MonResultParameter("MonAddResparam1", "MonAddResparam1d",
                                                                        "MonAddResval", DataType.String);
                _log.InfoFormat("Creating monitor {0}", name);
                var resMon = _monitor.AddMonitor(agentID, name, "profiler", "profiler",
                                          new List<MonitorParameter>() { param },
                                          new List<MonResultParameter>() { resParam },
                                          new List<MonResultParameter>() { resAddParam });

                var resJson = JObject.Parse(resMon.Content);
                if (resJson["status"].Value<string>() != "ok")
                    throw new InvalidOperationException("Cannot create custom monitor!: " + resJson["status"]);
                return int.Parse(resJson["data"].Value<string>());
            }
            else
            {
                _log.InfoFormat("Monitor exist {0}", name);
                return int.Parse(monitor.ID.Value);
            }
        }
Example #4
0
 private string GetMonitorName(ClrMethodInfo info)
 {
     return(info.UnitOfWork + "-" + info.MethodName);
 }
Example #5
0
        private int CreateMonitorIfNotExist(ClrMethodInfo info)
        {
            var name = GetMonitorName(info);

            var monitors        = _monitor.GetMonitors(OutputType.XML);
            var monitorsElement = System.Xml.Linq.XElement.Parse(monitors.Content);
            var monitorss       = monitorsElement.Descendants("monitor").Select(u => new { ID = u.Elements("id").FirstOrDefault(), Name = u.Elements("name").FirstOrDefault(), Monitor = u });
            var monitor         = monitorss.FirstOrDefault(u => u.Name != null && u.Name.Value == name);

            if (monitor == null)
            {
                var agents        = _agent.GetAgents("profiler", true, true, OutputType.XML);
                var agentsElement = System.Xml.Linq.XElement.Parse(agents.Content);

                var agent = agentsElement.Descendants("agent").Select(u => new { ID = u.Elements("id").FirstOrDefault(), Name = u.Elements("name").FirstOrDefault(), Agent = u }).FirstOrDefault(u => u.Name != null && u.ID != null && u.Name.Value == "MonitisProfilerUserAgent");
                int agentID;
                if (agent == null)
                {
                    var result = _agent.AddAgent("MonitisProfilerUserAgent", "profiler", new JObject(), 100000, OutputType.JSON);
                    var res    = JObject.Parse(result.Content);
                    if (res["status"].Value <string>() != "ok")
                    {
                        throw new InvalidOperationException("Cannot create agent!: " + res["status"]);
                    }
                    agentID = int.Parse(res["data"].Value <string>());
                }
                else
                {
                    agentID = int.Parse(agent.ID.Value);
                }

                var resParam = new MonResultParameter("Execution Time", "Execution Time", "Execution Time", DataType.Float);

                var param = new MonitorParameter("param1", "param1d", "val", DataType.String, false);

                var resAddParam = new MonResultParameter("MonAddResparam1", "MonAddResparam1d",
                                                         "MonAddResval", DataType.String);
                _log.InfoFormat("Creating monitor {0}", name);
                var resMon = _monitor.AddMonitor(agentID, name, "profiler", "profiler",
                                                 new List <MonitorParameter>()
                {
                    param
                },
                                                 new List <MonResultParameter>()
                {
                    resParam
                },
                                                 new List <MonResultParameter>()
                {
                    resAddParam
                });

                var resJson = JObject.Parse(resMon.Content);
                if (resJson["status"].Value <string>() != "ok")
                {
                    throw new InvalidOperationException("Cannot create custom monitor!: " + resJson["status"]);
                }
                return(int.Parse(resJson["data"].Value <string>()));
            }
            else
            {
                _log.InfoFormat("Monitor exist {0}", name);
                return(int.Parse(monitor.ID.Value));
            }
        }
Example #6
0
 public ClrMethodOperation(ClrMethodInfo methodInfo, MethodAction action, DateTime time)
 {
     MethodInfo = methodInfo;
     Action     = action;
     Time       = time;
 }