Skip to content

A minimalist tool for gathering info about the sizing and performance of an OpenNMS instance

License

Notifications You must be signed in to change notification settings

OpenNMS/opennms-brannock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opennms-brannock

A minimalist tool for gathering info about the sizing and performance of an OpenNMS instance

Principal author Jeff Gehlbach. Huge thanks to Lang Yi and Jesse White for their help getting this thing packaged as a bundle and integrating JDBC support.

A Brannock device is the gadget used to measure a person's foot to determine shoe size.

Building

mvn clean install

You'll find a JAR in the target directory.

Usage

Once you have built a JAR, simply copy it into the OPENNMS_HOME/deploy directory of a running OpenNMS system. Karaf will install and start the bundle, and barring any unforeseen trouble, the tool will write its output file as OPENNMS_HOME/logs/brannock_stats.json. The bundle runs once and then stops itself, so there is no lasting impact on your system. When you are done, delete the JAR from the deploy directory; Karaf will uninstall the bundle when the JAR disappears. A sample output follows.

{
  "finishTime": 1629320905716,
  "startupTime": 1629320905700,
  "brannockErrors": [],
  "derivedData": {
    "pollsCompletedPerSec": 5.962612957184287E-7,
    "metricsPersistedPerSec": 222.10388821728415
  },
  "brannockVersion": "v1",
  "jmxData": {
    "OpenNMS:Name=Queued": {
      "CreatesCompleted": 0,
      "StartTime": 0,
      "DequeuedItems": 0,
      "ElapsedTime": 1629320905705,
      "SignificantOpsEnqueued": 0,
      "SignificantOpsDequeued": 0,
      "DequeuedOperations": 0,
      "Errors": 0,
      "TotalOperationsPending": 0,
      "EnqueuedOperations": 0,
      "SignificantOpsCompleted": 0,
      "PromotionCount": 0,
      "UpdatesCompleted": 0
    },
    "OpenNMS:Name=Pollerd": {
      "ActiveThreads": 0,
      "TaskCompletionRatio": 1,
      "CorePoolThreads": 30,
      "PeakPoolThreads": 30,
      "NumPoolThreads": 30,
      "TaskQueuePendingCount": 0,
      "TasksTotal": 2231730,
      "MaxPoolThreads": 30,
      "TasksCompleted": 2231730,
      "NumPolls": 2231730,
      "TaskQueueRemainingCapacity": 2147483647
    },
    "org.opennms.netmgt.eventd:name=eventlogs.process": {
      "75thPercentile": 25.592758,
      "Mean": 23.385982194448793,
      "StdDev": 3.8147418821828483,
      "98thPercentile": 25.592758,
      "RateUnit": "events/second",
      "95thPercentile": 25.592758,
      "99thPercentile": 30.000935,
      "Max": 351.59396499999997,
      "Count": 141972,
      "FiveMinuteRate": 0.014486228175940093,
      "50thPercentile": 25.592758,
      "MeanRate": 0.03793147534364054,
      "Min": 4.301921,
      "OneMinuteRate": 0.00630943580245027,
      "DurationUnit": "milliseconds",
      "999thPercentile": 34.549198,
      "FifteenMinuteRate": 0.015163108928050254
    },
    "org.opennms.netmgt.flows:name=flowsPersisted": {
      "RateUnit": "events/second",
      "OneMinuteRate": 2.964393875E-314,
      "Count": 1077946460,
      "FifteenMinuteRate": 4.44659081257E-313,
      "FiveMinuteRate": 1.4821969375E-313,
      "MeanRate": 288.003216805817
    },
    "org.opennms.newts:name=repository.samples-inserted": {
      "RateUnit": "events/second",
      "OneMinuteRate": 245.47802678376334,
      "Count": 831303053,
      "FifteenMinuteRate": 233.4112279299726,
      "FiveMinuteRate": 235.12457293712183,
      "MeanRate": 222.10388821728415
    },
    "java.lang:type=Runtime": {
      "VmVendor": "Amazon.com Inc.",
      "Uptime": 3742872489,
      "VmName": "OpenJDK 64-Bit Server VM",
      "StartTime": 1625578033321,
      "VmVersion": "11.0.10+9-LTS",
      "Name": "16281@onmscore"
    },
    "java.lang:type=OperatingSystem": {
      "Version": "4.14.219-161.340.amzn2.x86_64",
      "AvailableProcessors": 2,
      "OpenFileDescriptorCount": 1832,
      "Name": "Linux",
      "TotalPhysicalMemorySize": 8362287104
    }
  },
  "jdbcData": {
    "monitoringLocationCount": 7,
    "minionCount": 8
  }
}

Main things we aim to measure

  • Events per second (JMX)
  • Metrics persisted per second (JMX)
  • Polls per second (JMX)
  • Flows persisted per second (JMX)
  • Count of monitoring locations (JDBC for now)
  • Count of Minions (JDBC for now)