The new APM for Meteor is coming soon!

I don’t understand you, you mean to build some new custom UI that will visualize the saved data? Why do we need this? It will be easier to take some open source APM server and integrate it with meteor app.

Great to see alternatives rising up. Will definitely follow your work. Since the ELK stack is a quite common setup I like the idea of building on top of those tools!

I have added new features:

  1. APM monitors all incoming http requests, useful if you have REST
  2. Bug fixes

TODO:

  1. Monitor all outcoming http requests
  2. Track user information
  3. Demo application which show all of APM features in detail
  4. Documentation
  5. Tutorials
    After that I think the first production ready version will be released.
2 Likes

Thanks a lot for your work put down here.

I would very much like to replace my Kadira installation with the elastic-stack just because it’s monitoring support seems to be so much more flexible when it comes to other things than Meteor itself.

I know you’ve listed what this package monitors, but could you also provide a list (or a todo-list) of features Kadira has but this stack does not support as of now?

Btw. I like the fact you added http-request monitoring. Something which is a reason for me to switch right away.

Thanks a lot for your feedback. I am now testing this package in my test projects, when I will be sure that it’s production ready I will release it with detailed documentation and comparison with Kadira.
For now I can say that:

  1. Kadira has more convenient oplog operations graph than elastic apm
  2. Kadira CAN count CPU, Sessions and Memory usage, my package can’t
  3. Kadira CAN NOT monitor all outcoming requests, only which are done using HTTP.call. My package monitors ALL outcoming requets
  4. Kadira CAN catch client side exceptions, Elastic-apm only server side (TO-DO)
  5. Elastic-apm CAN NOT show detailed information in spans, f.e. I can only record that some document has been inserted into MongoDB but APM can’t show it’s properties. (Elastic says that in future they will fix this)
  6. Kadira crashes when you have +5GB database size (my case, I have to clear db every day), Elastic can handle easily much more data than Kadira.
  7. Elastic-APM can’t monitor outcoming emals, I am now thinking how to do it more generic as I did with outcoming HTTP

I can’t do 1. and 2. because I don’t know yet how to show transactions in convenient time-series graph (Not a priority now, I will ask Elastic how to do this in future)
I will be happy if you help with testing and give me a feedback of how it works with your project. As I said before: Let’s make better APM together.
Thanks!

2 Likes

Just to add a cross reference … You’ve maybe already heard of it: Kadira improvements

1 Like

Yes, I have seen this topic. Thanks for the reference. I will learn the source code and adapt its improvements to my package later. Now I am thinking just to release the production ready package

Thank you for your work, I’ll follow it!

1 Like

I just added how to install apm-server with meteor up, I’ll add later full tutorial to install ELK stake and connect meteor APM & Logs

That’s great :+1: Thanks for your help! I think we are ready to release it as a production ready, because I didn’t have any exceptions or errors in my test projects. Tomorrow I will publish test projects if you want to try it.

1 Like

Hi there! I have developed the very simple demo application:


You are welcome to try and test it.
Thanks!

2 Likes

Just FYI I had written a NewRelic package for Meteor and we’re poised to switch to Elastic APM due to the NR subscription costs, so it’s likely I’ll be able to help soon on this project.

2 Likes

That’s great to hear!:+1: Let’s make the better APM together!

Just got to it. On first trying the package, it crashes the demo app on Meteor 1.8 because of a reference to a non-existent “http” symbol (even when doing meteor add http). Did you successfully run it on 1.8 already ? Installing the package locally instead of using the latest release makes it work on 1.8.

Also, can we chat somewhere if we happen to be working at the same time on the subject ? e.g. on https://gitter.im/meteor/meteor

Not sure why it’s happening, demo application was tested with package installed from atmosphere. Could you please create issue with detailed stack trace?
I didn’t know about gitter (in Kazakhstan it’s not so popular), thanks I will join it right now.

I won’t have access to the machine running it until next thursday, but IIRC to make it work on 1.8, I had to use the master HEAD from the locally installed package instead of Atmosphere, and add the fibers and http NPM modules manually. It then worked, and I was able to see my stats in the APM dashboard and Kibana in general.

that’s interesting, I will try to catch this bug. Thanks!
PS: sorry for the late reply

for those encountering the following issues:

1.) TypeError: Cannot read property 'constructor' of undefined at

  • we got away by using meteor version 1.8.0.1-rc.4

2.) meteor Error: Cannot find package "http". Try "meteor add http"

  • we had to add http@1.4.2 in .meteor/packages before kschingiz:meteor-elastic-apm

3.) _ is not defined

  • we had to add underscore@1.0.10 in .meteor/packages before http

Hope this helps someone. We’re currently testing the APM and we’re looking into implementing it to our production boxes tomorrow.

@kschingiz, awesome tool man!

1 Like

Thanks! I will fix these bugs asap, unfortunately I am experiencing lack of free time, so any contributions will help much.

@kschingiz

I wanted to say a big thank you for doing this. Kadira APM is a mess in terms of code, hard to maintain and won’t last that long. We are already frustrated with it. It’s no wonder the business failed with such bad code.

I want to contribute – give me a couple of weeks an we’ll circle back. We also want to be able to see the APM directly within the app (vs another URL) so users can administer without multiple logins.

1 Like