Curious if things like counters, stack traces, custom metrics, events, etc are anywhere on the APM roadmap.
Curious if things like counters, stack traces, custom metrics, events, etc are anywhere on the APM roadmap.
Custom metrics are supported by the agent/server protocol, and there is some support in a couple of agents already:
- the Java agent supports sending JMX metrics: JMX configuration options | APM Java Agent Reference [1.x] | Elastic
- the Go agent has a module that can be used to send Prometheus metrics directly to the APM Server: apmprometheus package - go.elastic.co/apm/module/apmprometheus - Go Packages
We will most likely add support for other agents over time, possibly by adding adapters/bridges to existing metrics libraries.
The agents already support recording stack traces for spans and errors. Can you expand a little on what you're looking for here?
There has been some discussion about adding support for custom events: Generic event support · Issue #47 · elastic/apm · GitHub. No concrete plans yet - feel free to chime in with any thoughts you have.
Im thinking of how your APM could go head-to-head with NewRelic, Datadog, etc by allowing these additional pieces of information to be recorded from an app.
Both NR and DD offer functions akin to
- reportError (Exception) --> publishes a stack trace
- incrementCounter ("custom tag", increment)
- reportEvent("custom tag", event info (other KV pairs))
- recordTiming (between two lines)
These sorts of data are very useful in tracking execution paths and efficiency.
Thanks for the additional info.
reportError (Exception) --> publishes a stack trace
The agents all provide an API for capturing exceptions, including their associated stack traces. e.g. The Java agent has Transaction.captureException. This can be visualised in the APM Errors page in Kibana, including the exception's associated stack trace.
incrementCounter ("custom tag", increment)
There's no API like this yet, but metrics (of which counters are one type) are supported by the protocol. We may introduce an API at some stage, or may just integrate with existing metrics libraries like Micrometer or Dropwizard.
recordTiming (between two lines)
Custom spans can be created for measuring elapsed time.
reportEvent("custom tag", event info (other KV pairs))
As mentioned earlier, no concrete plans here yet. You can correlate traces and logs (e.g. see the Java Agent's Log Correlation docs), but there is more work to be done here.
This is all great news. Thanks for your replies!
This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.