Configuration
There are multiple ways to configure the Agent, including system properties, environment variables, and providing the configuration file.
To provide the configuration file to the agent you can either -Dotel.javaagent.configuration-file=<path-to-file>
or OTEL_JAVAAGENT_CONFIGURATION_FILE
environment varaible.
OTEL namespace options
You can find the full list of available configuration options here
Mesmer options
Akka actors grouping
When the actors' hierarchy grows or there are short-living actors referenced by a unique path name, it can be impractical to give each metric a unique set of attributes. This amplifies the amount of data exported and can affect collector performance. To solve this, Mesmer allows the definition of fine-grained rules on how metrics associated with different actors can be grouped together.
There are three actor attributes grouping options:
- group - the metrics, collected for all the actors matching the given path, share the
actor_path
attribute. - instance - the metrics, collected for actors matching this path, have a unique
actor_path
attribute. - disabled - the metrics, collected for all the actors matching the given path, do not get
actor_path
attribute.
By default the path grouping is disabled. You can change this by launching the Mesmer extension with -Dio.scalac.mesmer.actor.reporting-default=group
configuration option. This will give all the actors' metrics the attribute actor_path="/"
.
Alternatively, it is possible to override a single path grouping strategy as following
java -javaagent:path/to/opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=path/to/mesmer-otel-extension.jar \
-Dio.scalac.mesmer.actor.reporting-default=ignore \
-Dio.scalac.mesmer.actor.rules."/user/**"=group \
-Dio.scalac.mesmer.actor.rules."/system/**"=group \
-jar your-app.jar
This configuration will aggregate metrics for system and user hierarchies separately, grouping them by actor_path="/system"
and actor_path="/user"
attributes correspondingly.
The individual rule syntax is io.scalac.mesmer.actor.rules."<MATCHING_PATH>"=<GROUPING_OPTION>
. The matching path supports limited set of wildcards, aiding to group metrics for variable path segments.
/ - matches exactly one actor and therefore can be used only with the
instance
grouping option. For a topology of /user/my-actor and /user/my-actor/1 and the rulesio.scalac.mesmer.actor.reporting-default=group
io.scalac.mesmer.actor.rules."/user/my-actor"=instancethe metrics from /user/my-actor will get the attribute
actor_path="/user/my-actor"
while the metrics from /user/my-actor/1 will get the attributeactor_path="/"
and likely will be grouped with metrics from other actors./* - matches a single variable tailing segment. For a topology of /user/my-actor, /user/my-actor/1, /user/my-other-actor and the rules
io.scalac.mesmer.actor.reporting-default=ignore
io.scalac.mesmer.actor.rules."/user/*"=instancethe metrics from /user/my-actor and /user/my-other-actor will get same values for
actor_path
attribute, while /user/my-actor/1 will be ignored./** - matches all tailing segments. For a topology of /user/my-actor, /user/my-actor/1, /user/my-other-actor and the rules
io.scalac.mesmer.actor.reporting-default=ignore
io.scalac.mesmer.actor.rules."/user/**"=instancethis will produce a unique metric for each actor with root at /user. This wildcard also can be applied using with grouping,
io.scalac.mesmer.actor.reporting-default=ignore
io.scalac.mesmer.actor.rules."/user/**"=groupResulting in all metrics from actors with root at /user to be aggregated using common attribute
actor_path="/user"