anchor.diff:  |SAMLUserDetailsServiceImpl
   |-
   
  -|genie.files.http.download.timer
  -|Time taken to download a file from via HTTP
  -|nanoseconds
  -|HttpFileTransferImpl
  -|status, exceptionClass
  -
  -|genie.files.http.upload.timer
  -|Time taken to upload a file via HTTP
  -|nanoseconds
  -|HttpFileTransferImpl
  -|status, exceptionClass
  -
  -|genie.files.http.getLastModified.timer
  -|Time taken to retrieve last modification time for a HTTP document
  -|nanoseconds
  -|HttpFileTransferImpl
  -|status, exceptionClass
  -
  -|genie.jobs.clusters.loadBalancers.script.select.timer
  -|Time taken by the loaded script to select a cluster among the one passed as input
  -|nanoseconds
  -|ScriptLoadBalancer
  -|status, exceptionClass, clusterName, clusterId
  -
  -|genie.jobs.clusters.loadBalancers.script.update.timer
  -|Time taken to reload the script
  -|nanoseconds
  -|ScriptLoadBalancer
  -|status, exceptionClass
  -
  -|genie.jobs.completion.timer
  -|Time taken to perform post-job-completion finalization such as folder cleanup, archival and email notification.
  -|nanoseconds
  -|JobCompletionService
  -|error, status, exceptionClass
  -
  -|genie.jobs.errors.count
  -|Counts various kinds of nonfatal errors encountered (email, archival, cleanup, ...). A single request may increment for multiple errors.
  -|count
  -|JobCompletionService
  -|error
  -
  -|genie.jobs.successfulStatusCheck.rate
  -|Counts the successful checks made on locally running jobs
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.timeout.rate
  -|Counts the number of jobs killed for exceeding the maximum allowed run time
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.finished.rate
  -|Counts the number of jobs that completed (successfully or not)
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.unsuccessfulStatusCheck.rate
  -|Counts the number of time an exception was raised while trying to check on a locally running job
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.stdOutTooLarge.rate
  -|Counts the number of jobs killed for exceeding the maximum allowed standard output limit
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.stdErrTooLarge.rate
  -|Counts the number of jobs killed for exceeding the maximum allowed standard error limit
  -|count
  -|JobMonitor
  -|-
  -
  -|genie.jobs.unableToReAttach.rate
  -|Counts the number of times a genie node failed to resume monitoring a local job process after server restart
  -|count
  -|JobMonitoringCoordinator
  -|-
  -
  -|genie.notifications.sns.publish.counter
  -|Count the number of notification published to SNS
  -|count
  -|AbstractSNSPublisher
  -|status, type
  -
  -|genie.tasks.clusterChecker.unhealtyHosts.gauge
  +|genie.services.agentJob.handshake.counter
  +|Counter for calls to the 'handshake' protocol of the Genie Agent Job Service
  +|count
  +|AgentJobServiceImpl
  +|status, exceptionClass, agentVersion, agentHost, handshakeDecision
  +
  +|genie.services.jobResolver.clusterCommandQuery.timer
  +|Time taken to query the database and find clusters and commands matching the supplied criteria.
  +|nanoseconds
  +|JobResolverServiceImpl
  +|status, exceptionClass
  +
  +|genie.services.jobResolver.loadBalancer.counter
  +|Counter for cluster load balancer algorithms invocations
  +|count
  +|JobResolverServiceImpl
  +|class, status, clusterName, clusterId, loadBalancerClass
  +
  +|genie.services.jobResolver.resolve.timer
  +|Time taken to completely resolve the job
  +|nanoseconds
  +|JobResolverServiceImpl
  +|status, exceptionClass, saved
  +
  +|genie.services.jobResolver.selectApplications.timer
  +|Time taken to retrieve applications information for this task
  +|nanoseconds
  +|JobResolverServiceImpl
  +|status, exceptionClass
  +
  +|genie.services.jobResolver.selectCluster.noneFound.counter
  +|Number of times the criteria for cluster selection does not match any cluster
  +|count
  +|JobResolverServiceImpl
  +|-
  +
  +|genie.services.jobResolver.selectCluster.noneSelected.counter
  +|Number of times the cluster load balancing terminated without selecting a cluster
  +|count
  +|JobResolverServiceImpl
  +|-
  +
  +|genie.services.jobResolver.selectCluster.timer
  +|Time taken to select a cluster using the load balancing strategy
  +|nanoseconds
  +|JobResolverServiceImpl
  +|status, exceptionClass
  +
  +|genie.services.jobResolver.selectCommand.timer
  +|Time taken to resolve a command based on criteria and cluster
  +|nanoseconds
  +|JobResolverServiceImpl
  +|status, exceptionClass
  +
  +|genie.tasks.clusterChecker.failedHealthCheck.counter
  +|Counts the number of time the leader retrieved health status of a remote node and one of the (non-ignored) indicators
  +had a status different than UP
  +|count
  +|ClusterCheckerTask
  +|host, healthIndicator, healthStatus
  +
  +|genie.tasks.clusterChecker.invalidResponse.counter
  +|Counts the number of time the leader retrieved health status of a remote node and failed to parse the response
  +|count
  +|ClusterCheckerTask
  +|host
  +
  +|genie.tasks.clusterChecker.jobsMarkedFailed.counter
  +|Number of jobs marked as "lost" due to a consistent failure to contact the Genie node hosting them
  +|count
  +|ClusterCheckerTask
  +|status, host, exceptionClass
  +
  +|genie.tasks.clusterChecker.unhealthyHosts.gauge
   |Number of Genie nodes that the leader has currently marked unhealthy
   |Current amount
   |ClusterCheckerTask
  
positive.code: |UserMetricsTask
  |-
  
  |===
  
  (*) Source may add additional tags on a case-by-case basis
  
negative.code: |CacheGenieFileTransferService
  |-
  
  |genie.jobs.file.cache.loadExceptionRate
  |File cache loading exception ratio
  |ratio
  |CacheGenieFileTransferService
  |-
  
  |genie.jobs.file.cache.missRate
  |File cache miss ratio
  |ratio
  |CacheGenieFileTransferService
  |-
  
  |genie.jobs.finished.rate
  |Counts the number of jobs that completed (successfully or not)
  |count
  |JobMonitor
  |-
  
  |genie.jobs.memory.used.gauge
  