asp.net

11 posts, 1 answers
  1. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 25 Jun 2013 Link to this post

    Why can I find zero info on using this with an asp.net app?

    1) Is it like raygun? http://raygun.io/
    2) Where do I start\stop the monitor, global.asax app start\end, make the monitor a property or something?
    3) Does " AnalyticsMonitorFactory.CreateMonitor" always give me the same monitor object to use, or should I be caching it somehow if I call the methods randomly in my app

    ...etc etc

    Just flying blind here
  2. Answer
    Soren
    Admin
    Soren avatar
    44 posts

    Posted 26 Jun 2013 Link to this post

    Hi Steve,

    I understand the fustration as we don't have any information specifically targeted tracking in asp.net at the moment (blog post coming up, though).

    Let me address your questions:

    1) I'm not familiar with raygun but from a quick look at their website there seems to be at least a bit of overlap. Our tracking library allows for exceptions to be tracked and we'll do some processing to these exceptions and allow you to dig down into specific errors to better understand their context and view e.g. stacktraces and contextual information. Our tracking library goes a bit further as it also allows you to track the feature usage of your application such as understanding which features are most heavily used and which are not. Furthermore, we also allow you to track timing aspects of your application to gain insights into e.g. how long time certain operations typically take for end users and you can also track the distribution of discrete values.

    2) This is essentially the missing information with regards to ASP.Net and I hope to get this covered in the upcoming blog post. The monitor is intended to track the server side of the ASP.Net application and will as such not track the individual users of the web application. You can create and start the monitor in Application_Start in the Global.asax (or wherever else you have some bootstrapping code) and distribute the created instance as it applies to your architecture (IoC container, static property etc). On Application_End you should call the Stop method to finish of the tracking

    3) The AnalyticsMonitorFactory will create a new instance on each call to CreateMonitor so you should store the created instance and use throughout your application. How you actually distribute this instance throughout your application and if you expose it directly or behind some small wrapper interface is really up to you.

    Hope this helps. I'll be happy to follow up on these and any other questions you may have.

    Regards,
    Soren
    Telerik
    JAVASCRIPT MONITOR (BETA) AVAILABLE FOR DOWNLOAD.
    Monitor web applications with the new EQATEC Application Analytics JS library. Compatible with all modern browsers.
    Test it today >>
  3. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 26 Jun 2013 Link to this post

    Awesome soren thanks, mind a few more?

    1) So the timing is stuff I'd manually put into my code right, then what
    the analytics would build up over time, like a realtime historical
    JustTrace?

    3) ...perhaps a "best prac" blog post?  OpenAccess had this same issue and they did a KB\blogpost on it.



    ...



    4) Does the JS library report javascript errors on my pages, and perhaps
    the browser?  What is this lib for, and what's the compressed weight of
    the file.  Does it hinder clientside performance at all?

    5) I don't understand the licensing, maybe it's just because I'm web,
    but "installs" and "end users"?  I mean I know what those are, but not
    in a web context...I can't control my "end users" clearly

    6) Would you liken it then to ELMAH

    7) Okay, so...silverlight UI.  Telerik is stripping silverlight and
    moving mostly to html5 via kendo (teampulse, sf analytics)...this UI
    doesn't seem very telerik branded\themed.  Perhaps this is on some sort
    of roadmap?  I'd feel like I'm missing out not being able to get to the
    dash on my ipad...



    Sorry for all the questions  :)  Just trying to understand this before I recommend it to anyone...
  4. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 26 Jun 2013 Link to this post

    Awesome soren thanks, mind a few more?
    1) So the timing is stuff I'd manually put into my code right, then what the analytics would build up over time, like a realtime historical JustTrace?
    3) ...perhaps a "best prac" blog post?  OpenAccess had this same issue and they did a KB\blogpost on it.

    ...


    4) Does the JS library report javascript errors on my pages, and perhaps the browser?  What is this lib for, and what's the compressed weight of the file.  Does it hinder clientside performance at all?
    5) I'm web, but "installs" and "end users"?  I mean I know what those are, but not in a web context...I can't control my "end users" clearly
    6) Would you liken it then to ELMAH
    7) Okay, so...silverlight UI.  Telerik is stripping silverlight and moving mostly to html5 via kendo (teampulse, sf analytics)...this UI doesn't seem very telerik branded\themed.  Perhaps this is on some sort of roadmap?  I'd feel like I'm missing out not being able to get to the dash on my ipad...

    Sorry for all the questions  :)  Just trying to understand this before I recommend it to anyone...
  5. Soren
    Admin
    Soren avatar
    44 posts

    Posted 26 Jun 2013 Link to this post

    Hi Steve,

    Keep the questions coming, it's the best way for us to improve, both the software and the documentation surrounding it.

    1) yep, we'll track all the discrete timing measurements and you'll be able to setup a range of intervals (say, 0-10ms, 11-20ms, 30-100ms, 100+ms) and we'll show you how the timing measurements distribute across these intervals over time. That should give you a feeling of what end users are experiencing and if you are performing within your expectations.

    3) we are only just starting to use blog posts so our specific format is a bit up in the air, but we'll definitely need to document how the monitor is expected to behave in asp.net

    4) the current javascript library (which is in beta, to be fair) is an attempt to extend the api of our current platforms to the web. It is mostly intended as a tracking mechanism for single page applications rather than traditional web applications, since the focus is on tracking features and exceptions rather than on page flow (which you'll traditionally get from google analytics). The library does allows reporting exceptions from javascript by calling an api method (though I believe there is currently some work to be done on standardizing the error details across browsers). The current javascript monitor available for download is 14K minified. As far as impact on the client, the data is being pushed to the servers using async calls in javascript so it should be pretty much fire and forget, but I don't know of any official impact measurements on this

    5) I guess you are referring to the pricing model that refers to these terms, right? I understand the issue with the wording for asp.net since there is probably only a single install (or at least only one per server). Our story on asp.net is not that clear as this product has grown from a more desktop application starting point so the translation to web application is a bit unclear. I'll mention this to the sales guys to make sure that this is somehow communicated properly.

    6) I think we do something different than ELMAH (at least to my knowledge). As I understand it ELMAH is setup on the server and provides an easy way to e.g. gather and process these unhandled exceptions and excels at showing the status locally and even controlling the actions to be taken with these exceptions. Our service does not offer any local handling of the exceptions but rather transfers data from the individual servers and presents an overview of the exceptions while also providing a way to track feature usage and timing with the web application

    7) Yeah, well...what can I say. Silverlight is all but dead and gone and I hope we can say the same for our web client within too long. I don't know if there is an official roadmap to this but we are obviously looking in the direction of html5 and some of the work already done by Telerik.

    Hope this helps

    Regards,
    Soren
    Telerik
    JAVASCRIPT MONITOR (BETA) AVAILABLE FOR DOWNLOAD.
    Monitor web applications with the new EQATEC Application Analytics JS library. Compatible with all modern browsers.
    Test it today >>
  6. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 26 Jun 2013 Link to this post

    Thanks for the lengthy responses :)

    4) Can you elaborate a bit?...because the JS error reporting is BIG for me (since test studio refuses to support it)
    - It CAN'T auto-handle javascript errors right...I have to handle and manually log myself?
    - If the call is being sent and the user does something like change pages or postback, the call silently fails, no pops or error messages right?

    5) Yes the model is crazy confusing for web, even in the backend UI...just makes no logical sense, almost feels like it's just not ready for web (with the assumptions it makes).

    6) I mean ELMAH in that it logs all .net exceptions so I can see\deal with them (I understand the cloud vs local)...so yeah that's what this does then eh.  If my app crashes anywhere (serverside .net exception) this triggers?  I don't need to put any logger code into global.asax's error event?
  7. Soren
    Admin
    Soren avatar
    44 posts

    Posted 27 Jun 2013 Link to this post

    Hi Steve,

    4) Our javascript library provides an explicit API where you as programmer can add caught exceptions and the library will send these to our servers for processing and aggregation. So there is no automatic handling of exceptions, so you can pick and choose which exceptions you want to track. I haven't explicitly tested your scenario on sending while navigating away from the page, I know that we are using async XmlHttpRequest for sending and have tried to be strict about encapsulating all code in try-catch statements but if you are aware of specific issue in this area, I'd love to learn more.

    5) I've pushed your message to the sales team, they understand the issue but are primarily focused on the "standard" applications and asp.net is not top of mind at this point. But your concerns have been registered...

    6) We aren't as easily configured as ELMAH where you just put something in the web.config and things just work. We deliver an assembly and you'll have to explicitly pick and choose which features and exceptions to track. You'll have to explicitly instrument your Application_Error code to pass the exception to our library for tracking and you'll have to initialize the monitor (the instance that exposes the API) explicitly in your Application_Start or similar code. We have opt'ed to not automatically hook up things for our library in e.g. asp.net or standard application but allow programmers to decide for them selves what needs to be tracked. It's a tradeoff between ease of use and power of configuration and we hope to have found a sweetspot somewhere in the middle...

     

    Regards,
    Soren
    Telerik
    JAVASCRIPT MONITOR (BETA) AVAILABLE FOR DOWNLOAD.
    Monitor web applications with the new EQATEC Application Analytics JS library. Compatible with all modern browsers.
    Test it today >>
  8. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 27 Jun 2013 Link to this post

    Thanks for your time :)

    I really hope we do move this more into the webspace though...I can't tell you how beneficial raygun was helping me fix errors on my sitefinity site...I'd love to keep it all with telerik.
  9. Steve
    Steve avatar
    1851 posts
    Member since:
    Dec 2008

    Posted 08 Jul 2013 Link to this post

    Okay so I've been running this in the context of sitefinity for a few weeks on a trial site, and it's showing 0 exceptions...and I know that's wrong :)  I actually had one and went in to see the details (if any).
  10. Richard Flamsholt
    Richard Flamsholt avatar
    3 posts
    Member since:
    Mar 2013

    Posted 10 Jul 2013 Link to this post

    Hi Steve,

    (Søren is on away on summer holiday so I'm looking into this now)

    TrackException submits the exception data to the server in a blocking manner so that functionality should work, provided the exceptional situation has not incapacitated the browser/monitor's ability to perform http-requests . We would love to find out if it's not working correctly.

    My first suggestion would be to enable logging in the monitor and test your site in a browser where you can see the error console. You can enable logging by creating the monitor-object not just from the product key, but from a settings-object in a manner like this:

        var settings = _eqatec.createSettings('your-product-key');
        settings.loggingInterface = _eqatec.createTraceLogger();
        monitor = _eqatec.createMonitor(settings);
        ... etc

    (You can create your own custom logger, but createTraceLogger is a convenient way to create a logger that will output messages and errors to the console)

    If anything goes wrong in submitting the exception, an error should be printed to the console. Also, if the data can be send successfully a message will be printed to the console as well, so enabling logging should show you something in all cases.

    When you have the logging output we'd be happy to look into it so we can figure out the problem.

    best regards,
    Richard
    Telerik

  11. Richard Flamsholt
    Admin
    Richard Flamsholt avatar
    28 posts

    Posted 10 Jul 2013 Link to this post

    Hi Steve,

    Søren is on away on summer holiday so I'm looking into this now. First, I'll have to clear something up: are we talking about exceptions from Javascript or from .NET? In the thread with Søren you guys are talking about both Javascript and ASP.NET and your product is a .NET product so I'm not quite sure about this.

    If we're talking about .NET exceptions then they should surely work. However, the API call TrackException is non-blocking and merely places the exception on a queue to be saved and submitted immediately, so it's important to ensure that the Stop function on the monitor is called before shutting down - if the app e.g. catch an unhandled exception, call TrackException, and then immediately does an Exit, then the monitor may not have had a chance to save the exception to disk, let alone send it to the Analytics server. So, always calling Stop is imperative.

    If we're talking about Javascript exceptions then TrackException submits the exception data to the server in a blocking manner, provided the exceptional situation has not incapacitated the browser/monitor's ability to perform http-requests. If you wish to see what's going on then I would suggest you enable logging in the monitor and test your site in a browser where you can see the error console. You can enable logging by creating the monitor-object not just from the product key, but from a settings-object in a manner like this:

        var settings = _eqatec.createSettings('your-product-key');
        settings.loggingInterface = _eqatec.createTraceLogger();
        monitor = _eqatec.createMonitor(settings);
        ... etc

    (You can do exactly the same in .NET if you want to see what the .NET monitor is doing)

    Now, having said that, if we are talking about Javascript exceptions in your particular case, then the reason for them not showing up may be entirely different: you only have one product defined and that's a .NET product, and if you are trying to submit Javascript analytics data to that product then it will be rejected by the server because a .NET product cannot receive statistics data from a Javascript monitor - the data is just too different and the product definition and app therefore has to match. Maybe that is what's happening? If you have a need to track both Javascript client code and server-side ASP.NET code then you will have to have to defined products, I'm afraid.

    I hope this helps and if it doesn't explain what you're seeing then please don't hesitate to write again so we can get to the bottom of this.

    Regards,
    Richard Flamsholt
    Telerik
Back to Top