My experience with Elastic Observability is quite extensive, as that is how everything started for me. Initially, Elastic started with logs, but then observability came, followed by security on top of the basic features. The whole thing that ties everything together is that they used to have a lot of tools that are very lightweight; for example, you can deploy an agent and get logs from any platform, whether Windows, Linux, or others.
Yet, there was one thing missing with those kinds of tools, and that is central management. Previously, if you wanted to change the path of a file or the port where you wanted to listen for logs, someone had to log in or SSH into the box to make those changes. However, with the Elastic agent, all the configurations are maintained within Elastic. All you need to do is buy a dummy agent, and you can control the policies, deciding which rules you want to push to, say, a group of Linux nodes. All the Linux nodes should have these listeners to read the log messages, whatever they are. Everything comes out of the box, and there's a great UI displaying all the agents in tabs with many filters to control them.
APM works similarly; it uses the same agent but includes instrumentation files for various languages. For C++, they have certain modules and JAR files for Java, so you just need to instrument your code to see the function calls, APIs, and more on the screen.