Skip to content
hughsimpson edited this page Nov 14, 2013 · 13 revisions

The akka monitoring currently logs:

  • the number of messages received per actor type
  • the number of actors of a given actor type
  • actor queue sizes
  • duration of an actor's response to receiving a message
  • objects published by the EventStream
  • invoked failure handling on an actor

and can be configured to sample 1-in-n messages to a given actor type

The org.eigengo.monitor.agent.AgentConfigurationFactory class searches for a mandatory configuration file at META-INF/monitor/agent.conf. The configuration file must have this format:

org.eigengo.monitor.agent {
    output {
        class: "org.eigengo.monitor.output.datadog.StatsdCounterInterface"
    }

    akka {
        includeRoutees: true
        included: [
            "akka:*.com.company.project.module.TypeOfActor",
            "akka:actorSystem.com.company.project.module.SomeOtherActor"
        ]
        sampling: [
            {
                rate: 15
                for: [ "akka:*.com.company.project.module.TypeOfActor" ]
            },
            {
                rate: 4
                for: [ "akka://default/user/*" ]
            } 
        ]
        excludeAllNotIncluded: false 
        excluded: [ 
             "akka:*.com.company.project.module.UninterestingActor" 
        ]
        includeSystemAgents: false
    }
}

Parameters

  • output.class: The class to be used for the output of the pointcut monitoring
  • akka.includeRoutees: If true, we tag routed actors with their own full actor path, as well as that of the parent.
  • akka.included: The actor classes to monitor. We can match on class name or actor path. This list is treated as a disjunction -- i.e. if an actor matches any of the filters in the list, it is treated as an 'included' actor. Actor type matching filters should be self-evident from the example. Actor path matches must match the exact actor path, except that we also allow '*' wildcards. Wildcards will only match one path element -- i.e. /default/system/a/b/c will not match akka://default/system/*, but will match akka://default/*/a/*/*
  • akka.sampling: Defines the rate at which to sample messages. This is optional -- default is to sample every message
  • akka.sampling.rate: Integer value 'n' - sample every 'nth' message to an actor type (starting with the first)
  • akka.sampling.for: Associates the sampling rate with an actor filter. If an actor is included and matches this filter, we sample at the rate. Syntax is the same as for included/excluded.
  • akka.excludeAllNotIncluded: If this is true, we only include the explicitly 'included' actors.
  • akka.excluded: The actor classes to not monitor. Same syntax and rules as included/sampling.
  • akka.includeSystemAgents: If this is false, we only include user actors, unless a particular system actor (or set of system actors) is explicitly included.

Clone this wiki locally