OpenNMS / opennms-brannock

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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)

About

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

License:GNU Affero General Public License v3.0


Languages

Language:Java 100.0%