Best practice for APM?

If you are asking about a problem you are experiencing, please use the following template, as it will help us help you. If you have a different problem, please delete all of this text :slight_smile:

Kibana version:7.11

Elasticsearch version:7.11

APM Server version:7.1.1

APM Agent language and version: will mostly be javascript/java

Original install method (e.g. download page, yum, deb, from source, etc.) and version:rpm

**Fresh install or upgraded from other version?**all were upgraded but APM

I wanted to start APM in my company for a while, but I don't know what kind of server to request for an APM. Should it be a VM? or should it be a container per running agent?
and resource wise, How much would you say is the minimum?

Hi Eyal, what a beautiful name :slight_smile:

You can look at the APM server as a scalable ingestion layer for data produced by APM agents into Elasticsearch, so certainly no need for a container per agent, unless very specific restrictions/limitations enforce that.

Regarding sizing, see the relevant documentation and look for former discussions like this one.

However, the actual required size largely depends on each specific use case. I'd say the easiest way to onboard would be a cloud free trial. Just spin off a cluster with an APM server, start sending APM data into it, and see how your apm-* indices behave over time. Of course you can do the same with an installed APM server.

Since you are expecting mostly Javascript and Java, I would also suggest you follow through this useful blog post that includes a sample app.

I hope you find our APM tool useful and easy to use.

1 Like

Why thank you :blush: . And I can only say the same about your name as well :grin:.
The issue with running it on the cloud is that I am on a on-premise network, so that might be a bit difficult.
I know that one system alone can easily get to about 7-10GB of data a day, and we'll have about 10 systems in the long term.
While storage is less of an issue, I'd like to have my APM server handle all that data and keep going. So my question is basically - Would it be better to have a container per system? Or having 1 APM server handling everything? and if its the latter, Would 1GB of RAM be enough?

Sorry if I was not clear enough on that. It is not either one-per-agent or one for all. The number of APM server instances you need is a function of the amount of data sent to them, regardless of how many agents produce these data. So, easiest would be to start with one APM server instance and add another or tune the agents to send less data if that's not enough.

Unfortunately there is no one-size-fits-all answer here. Generally speaking, it sounds like one APM server should be able to handle 10 agents sending 7-10 GB/day each, depending on how these are spread across the day. You may lose some data if you have bursts of events produced in short periods. If one server is not enough, you can either add a second one (data will load-balanced if you configure agents to use both), or tune your agent to send less data, e.g. this blog post regarding the Java agent, or different agent-specific configuration options.

Again, the answer is "it depends"...
Try it out with default configuration and see. If one is not enough- try to play with the available configurations, or add another.

I see, Thank you very much for your suggestion. I'll be sure to try it out and I'll play around with its resources as needed.
And again, Thank you very much :smiley:

1 Like

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.