sensu-plugins-java 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - checksums.yaml.gz.sig +0 -0
 - data.tar.gz.sig +2 -0
 - data/CHANGELOG.md +11 -0
 - data/LICENSE +22 -0
 - data/README.md +24 -0
 - data/bin/check-java-permgen.rb +77 -0
 - data/bin/java-heap-pcnt.sh +80 -0
 - data/bin/metrics-java-heap-graphite.sh +62 -0
 - data/bin/metrics-jstat.py +271 -0
 - data/lib/sensu-plugins-java.rb +1 -0
 - data/lib/sensu-plugins-java/version.rb +13 -0
 - metadata +234 -0
 - metadata.gz.sig +0 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5f23b291403560a94ed4a4336b8a3ea11ff655c5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: f74509f5e9cb66a376ebf01496bc636225f90199
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: e3cf4d6603a22da3f2ab80fb0b49e3e39728ade3f6e8eadf9773bc1b71ba928fed73f20b52f574e3cc951b6f5b61826099aa71652c53872017cf18f2bf88a627
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 159bc6d2ac7bdef4bd3c3b7ca1ba9f0e9803eb53277919b7855dbc20f13cc55ef88cd57c1c4d5dcaca75bbc7a3babb205c23ee3ab51070d1808220330cd7b1c4
         
     | 
    
        checksums.yaml.gz.sig
    ADDED
    
    | 
         Binary file 
     | 
    
        data.tar.gz.sig
    ADDED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #Change Log
         
     | 
| 
      
 2 
     | 
    
         
            +
            This project adheres to [Semantic Versioning](http://semver.org/).
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            ## Unreleased][unreleased
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            ## 0.0.1 - 2015-05-29
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ### Added
         
     | 
| 
      
 11 
     | 
    
         
            +
            - initial release
         
     | 
    
        data/LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright (c) 2015 Sensu-Plugins
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            MIT License
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 6 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 7 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 8 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 9 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 10 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 11 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 14 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 17 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 18 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 19 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 20 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 21 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 22 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ## Sensu-Plugins-java
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            [](https://travis-ci.org/sensu-plugins/sensu-plugins-java)
         
     | 
| 
      
 4 
     | 
    
         
            +
            [](http://badge.fury.io/rb/sensu-plugins-java)
         
     | 
| 
      
 5 
     | 
    
         
            +
            [](https://codeclimate.com/github/sensu-plugins/sensu-plugins-java)
         
     | 
| 
      
 6 
     | 
    
         
            +
            [](https://codeclimate.com/github/sensu-plugins/sensu-plugins-java)
         
     | 
| 
      
 7 
     | 
    
         
            +
            [](https://gemnasium.com/sensu-plugins/sensu-plugins-java)
         
     | 
| 
      
 8 
     | 
    
         
            +
            [](https://codeship.com/projects/82838)
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ## Functionality
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            ## Files
         
     | 
| 
      
 13 
     | 
    
         
            +
             * bin/check-java-permgen.rb
         
     | 
| 
      
 14 
     | 
    
         
            +
             * bin/java-heap-pcnt.sh
         
     | 
| 
      
 15 
     | 
    
         
            +
             * bin/metrics-java-heap-graphite.sh
         
     | 
| 
      
 16 
     | 
    
         
            +
             * bin/metrics-jstat.py
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            [Installation and Setup](https://github.com/sensu-plugins/documentation/blob/master/user_docs/installation_instructions.md)
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            ## Notes
         
     | 
| 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #! /usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            #  java-permgen
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # DESCRIPTION:
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   Java PermGen Check
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            # OUTPUT:
         
     | 
| 
      
 9 
     | 
    
         
            +
            #   plain text
         
     | 
| 
      
 10 
     | 
    
         
            +
            #
         
     | 
| 
      
 11 
     | 
    
         
            +
            # PLATFORMS:
         
     | 
| 
      
 12 
     | 
    
         
            +
            #   Linux
         
     | 
| 
      
 13 
     | 
    
         
            +
            #
         
     | 
| 
      
 14 
     | 
    
         
            +
            # DEPENDENCIES:
         
     | 
| 
      
 15 
     | 
    
         
            +
            #   gem: sensu-plugin
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            # USAGE:
         
     | 
| 
      
 18 
     | 
    
         
            +
            #   #YELLOW
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            # NOTES:
         
     | 
| 
      
 21 
     | 
    
         
            +
            #
         
     | 
| 
      
 22 
     | 
    
         
            +
            # LICENSE:
         
     | 
| 
      
 23 
     | 
    
         
            +
            #   Copyright 2011 Sonian, Inc <chefs@sonian.net>
         
     | 
| 
      
 24 
     | 
    
         
            +
            #   Released under the same terms as Sensu (the MIT license); see LICENSE
         
     | 
| 
      
 25 
     | 
    
         
            +
            #   for details.
         
     | 
| 
      
 26 
     | 
    
         
            +
            #
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            require 'sensu-plugin/check/cli'
         
     | 
| 
      
 29 
     | 
    
         
            +
            require 'English'
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            #
         
     | 
| 
      
 32 
     | 
    
         
            +
            # Check Java
         
     | 
| 
      
 33 
     | 
    
         
            +
            #
         
     | 
| 
      
 34 
     | 
    
         
            +
            class CheckJavaPermGen < Sensu::Plugin::Check::CLI
         
     | 
| 
      
 35 
     | 
    
         
            +
              check_name 'Java PermGen'
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              option :warn, short: '-w WARNLEVEL', default: '85'
         
     | 
| 
      
 38 
     | 
    
         
            +
              option :crit, short: '-c CRITLEVEL', default: '95'
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              def run
         
     | 
| 
      
 41 
     | 
    
         
            +
                warn_procs = []
         
     | 
| 
      
 42 
     | 
    
         
            +
                crit_procs = []
         
     | 
| 
      
 43 
     | 
    
         
            +
                java_pids = []
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                IO.popen('jps -q') do |cmd|
         
     | 
| 
      
 46 
     | 
    
         
            +
                  java_pids = cmd.read.split
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                java_pids.each do |java_proc|
         
     | 
| 
      
 50 
     | 
    
         
            +
                  pgcmx = nil
         
     | 
| 
      
 51 
     | 
    
         
            +
                  pu = nil
         
     | 
| 
      
 52 
     | 
    
         
            +
                  IO.popen("jstat -gcpermcapacity #{java_proc} 1 1 2>&1") do |cmd|
         
     | 
| 
      
 53 
     | 
    
         
            +
                    pgcmx = cmd.read.split[9]
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  exit_code = $CHILD_STATUS.exitstatus
         
     | 
| 
      
 56 
     | 
    
         
            +
                  next if exit_code != 0
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  IO.popen("jstat -gcold #{java_proc} 1 1 2>&1") do |cmd|
         
     | 
| 
      
 59 
     | 
    
         
            +
                    pu = cmd.read.split[9]
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                  exit_code = $CHILD_STATUS.exitstatus
         
     | 
| 
      
 62 
     | 
    
         
            +
                  next if exit_code != 0
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  proc_permgen = (pu.to_f / pgcmx.to_f) * 100
         
     | 
| 
      
 65 
     | 
    
         
            +
                  warn_procs << java_proc if proc_permgen > config[:warn].to_f
         
     | 
| 
      
 66 
     | 
    
         
            +
                  crit_procs << java_proc if proc_permgen > config[:crit].to_f
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                if !crit_procs.empty?
         
     | 
| 
      
 70 
     | 
    
         
            +
                  critical "Java processes Over PermGen CRIT threshold of #{config[:crit]}%: #{crit_procs.join(', ')}"
         
     | 
| 
      
 71 
     | 
    
         
            +
                elsif !warn_procs.empty?
         
     | 
| 
      
 72 
     | 
    
         
            +
                  warning "Java processes Over PermGen WARN threshold of #{config[:warn]}%: #{warn_procs.join(', ')}"
         
     | 
| 
      
 73 
     | 
    
         
            +
                else
         
     | 
| 
      
 74 
     | 
    
         
            +
                  ok 'No Java processes over PermGen thresholds'
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env bash
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Evaluate percentage of heap usage on specfic Tomcat backed JVM from Linux based systems based on percentage
         
     | 
| 
      
 4 
     | 
    
         
            +
            # This was forked from Sensu Community Plugins
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # Date: 2013-9-30
         
     | 
| 
      
 7 
     | 
    
         
            +
            # Modified: Mario Harvey - badmadrad.com
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # You must have openjdk-7-jdk and openjdk-7-jre packages installed
         
     | 
| 
      
 10 
     | 
    
         
            +
            # http://openjdk.java.net/install/
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            # Also make sure the user "sensu" can sudo without password
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            # #RED
         
     | 
| 
      
 15 
     | 
    
         
            +
            while getopts 'w:c:n:hp' OPT; do
         
     | 
| 
      
 16 
     | 
    
         
            +
              case $OPT in
         
     | 
| 
      
 17 
     | 
    
         
            +
                w)  WARN=$OPTARG;;
         
     | 
| 
      
 18 
     | 
    
         
            +
                c)  CRIT=$OPTARG;;
         
     | 
| 
      
 19 
     | 
    
         
            +
                n)  NAME=$OPTARG;;
         
     | 
| 
      
 20 
     | 
    
         
            +
                h)  hlp="yes";;
         
     | 
| 
      
 21 
     | 
    
         
            +
                p)  perform="yes";;
         
     | 
| 
      
 22 
     | 
    
         
            +
                *)  unknown="yes";;
         
     | 
| 
      
 23 
     | 
    
         
            +
              esac
         
     | 
| 
      
 24 
     | 
    
         
            +
            done
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            # usage
         
     | 
| 
      
 27 
     | 
    
         
            +
            HELP="
         
     | 
| 
      
 28 
     | 
    
         
            +
                usage: $0 [ -n value -w value -c value -p -h ]
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    -n --> Name of JVM process < value
         
     | 
| 
      
 31 
     | 
    
         
            +
                    -w --> Warning Percentage < value
         
     | 
| 
      
 32 
     | 
    
         
            +
                    -c --> Critical Percentage < value
         
     | 
| 
      
 33 
     | 
    
         
            +
                    -p --> print out performance data
         
     | 
| 
      
 34 
     | 
    
         
            +
                    -h --> print this help screen
         
     | 
| 
      
 35 
     | 
    
         
            +
            "
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            if [ "$hlp" = "yes" ]; then
         
     | 
| 
      
 38 
     | 
    
         
            +
              echo "$HELP"
         
     | 
| 
      
 39 
     | 
    
         
            +
              exit 0
         
     | 
| 
      
 40 
     | 
    
         
            +
            fi
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            WARN=${WARN:=0}
         
     | 
| 
      
 43 
     | 
    
         
            +
            CRIT=${CRIT:=0}
         
     | 
| 
      
 44 
     | 
    
         
            +
            NAME=${NAME:=0}
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            #Get PID of JVM.
         
     | 
| 
      
 47 
     | 
    
         
            +
            #At this point grep for the name of the java process running your jvm.
         
     | 
| 
      
 48 
     | 
    
         
            +
            PID=$(sudo jps | grep $NAME | awk '{ print $1}')
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            #Get heap capacity of JVM
         
     | 
| 
      
 51 
     | 
    
         
            +
            TotalHeap=$(sudo jstat -gccapacity $PID  | tail -n 1 | awk '{ print ($4 + $5 + $6 + $10) / 1024 }')
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            #Determine amount of used heap JVM is using
         
     | 
| 
      
 54 
     | 
    
         
            +
            UsedHeap=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($3 + $4 + $6 + $8 + $10) / 1024 }')
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            #Get heap usage percentage
         
     | 
| 
      
 57 
     | 
    
         
            +
            HeapPer=$(echo "scale=3; $UsedHeap / $TotalHeap * 100" | bc -l| cut -d "." -f1)
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            if [ "$HeapPer" = "" ]; then
         
     | 
| 
      
 61 
     | 
    
         
            +
              echo "MEM UNKNOWN -"
         
     | 
| 
      
 62 
     | 
    
         
            +
              exit 3
         
     | 
| 
      
 63 
     | 
    
         
            +
            fi
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            if [ "$perform" = "yes" ]; then
         
     | 
| 
      
 66 
     | 
    
         
            +
              output="jvm heap usage: $HeapPer% | heap usage="$HeapPer"%;$WARN;$CRIT;0"
         
     | 
| 
      
 67 
     | 
    
         
            +
            else
         
     | 
| 
      
 68 
     | 
    
         
            +
              output="jvm heap usage: $HeapPer% | $UsedHeap MB out of $TotalHeap MB"
         
     | 
| 
      
 69 
     | 
    
         
            +
            fi
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            if (( $HeapPer >= $CRIT )); then
         
     | 
| 
      
 72 
     | 
    
         
            +
              echo "MEM CRITICAL - $output"
         
     | 
| 
      
 73 
     | 
    
         
            +
              exit 2
         
     | 
| 
      
 74 
     | 
    
         
            +
            elif (( $HeapPer >= $WARN )); then
         
     | 
| 
      
 75 
     | 
    
         
            +
              echo "MEM WARNING - $output"
         
     | 
| 
      
 76 
     | 
    
         
            +
              exit 1
         
     | 
| 
      
 77 
     | 
    
         
            +
            else
         
     | 
| 
      
 78 
     | 
    
         
            +
              echo "MEM OK - $output"
         
     | 
| 
      
 79 
     | 
    
         
            +
              exit 0
         
     | 
| 
      
 80 
     | 
    
         
            +
            fi
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env bash
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Collect metrics on your JVM and allow you to trace usage in graphite
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # Modified: Mario Harvey - badmadrad.com
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            # You must have openjdk-7-jdk and openjdk-7-jre packages installed
         
     | 
| 
      
 8 
     | 
    
         
            +
            # http://openjdk.java.net/install/
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Also make sure the user "sensu" can sudo without password
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            # #RED
         
     | 
| 
      
 13 
     | 
    
         
            +
            while getopts 's:n:h' OPT; do
         
     | 
| 
      
 14 
     | 
    
         
            +
            case $OPT in
         
     | 
| 
      
 15 
     | 
    
         
            +
            s) SCHEME=$OPTARG;;
         
     | 
| 
      
 16 
     | 
    
         
            +
            n) NAME=$OPTARG;;
         
     | 
| 
      
 17 
     | 
    
         
            +
            h) hlp="yes";;
         
     | 
| 
      
 18 
     | 
    
         
            +
            esac
         
     | 
| 
      
 19 
     | 
    
         
            +
            done
         
     | 
| 
      
 20 
     | 
    
         
            +
            #usage
         
     | 
| 
      
 21 
     | 
    
         
            +
            HELP="
         
     | 
| 
      
 22 
     | 
    
         
            +
                    usage $0 [ -n value -s value -h ]
         
     | 
| 
      
 23 
     | 
    
         
            +
                            -n --> NAME or name of jvm process < value
         
     | 
| 
      
 24 
     | 
    
         
            +
            		-s --> SCHEME or server name ex. :::name::: < value
         
     | 
| 
      
 25 
     | 
    
         
            +
                            -h --> print this help screen
         
     | 
| 
      
 26 
     | 
    
         
            +
            "
         
     | 
| 
      
 27 
     | 
    
         
            +
            if [ "$hlp" = "yes" ]; then
         
     | 
| 
      
 28 
     | 
    
         
            +
                    echo "$HELP"
         
     | 
| 
      
 29 
     | 
    
         
            +
                    exit 0
         
     | 
| 
      
 30 
     | 
    
         
            +
                    fi
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            SCHEME=${SCHEME:=0}
         
     | 
| 
      
 33 
     | 
    
         
            +
            NAME=${NAME:=0}
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            #Get PID of JVM.
         
     | 
| 
      
 36 
     | 
    
         
            +
            #At this point grep for the name of the java process running your jvm.
         
     | 
| 
      
 37 
     | 
    
         
            +
            PID=$(sudo jps | grep $NAME | awk '{ print $1}')
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            #Get heap capacity of JVM
         
     | 
| 
      
 40 
     | 
    
         
            +
            TotalHeap=$(sudo jstat -gccapacity $PID  | tail -n 1 | awk '{ print ($4 + $5 + $6 + $10) / 1024 }')
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            #Determine amount of used heap JVM is using
         
     | 
| 
      
 43 
     | 
    
         
            +
            UsedHeap=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($3 + $4 + $6 + $8 + $10) / 1024 }')
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            #Determine Old Space Utilization
         
     | 
| 
      
 46 
     | 
    
         
            +
            OldGen=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($8) / 1024 }')
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            #Determine Permanent Space Utilization
         
     | 
| 
      
 49 
     | 
    
         
            +
            PermGen=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($10) / 1024 }')
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            #Determine Eden Space Utilization
         
     | 
| 
      
 52 
     | 
    
         
            +
            ParEden=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($6) / 1024 }')
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
            #Determine Survivor Space utilization
         
     | 
| 
      
 55 
     | 
    
         
            +
            ParSurv=$(sudo jstat -gc $PID  | tail -n 1 | awk '{ print ($3 + $4) / 1024 }')
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Committed_Heap $TotalHeap `date '+%s'`"
         
     | 
| 
      
 58 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Used_Heap $UsedHeap `date '+%s'`"
         
     | 
| 
      
 59 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Eden_Util $ParEden `date '+%s'`"
         
     | 
| 
      
 60 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Survivor_Util $ParSurv `date '+%s'`"
         
     | 
| 
      
 61 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Old_Util $OldGen `date '+%s'`"
         
     | 
| 
      
 62 
     | 
    
         
            +
            echo "JVMs.$SCHEME.Perm_Util $PermGen `date '+%s'`"
         
     | 
| 
         @@ -0,0 +1,271 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/python -tt
         
     | 
| 
      
 2 
     | 
    
         
            +
            #
         
     | 
| 
      
 3 
     | 
    
         
            +
            # DESCRIPTION:
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Collect everything that can be collected out of jstat (shells out 5 times)
         
     | 
| 
      
 5 
     | 
    
         
            +
            # and spits to STDOUT in a graphite ready format, thus meant to be used with a
         
     | 
| 
      
 6 
     | 
    
         
            +
            # graphite metric tcp handler.
         
     | 
| 
      
 7 
     | 
    
         
            +
            # Since it shells out to jps(1) you will need the user running the sensu client
         
     | 
| 
      
 8 
     | 
    
         
            +
            # executing this script to be able to run jps as the same user running the JVM
         
     | 
| 
      
 9 
     | 
    
         
            +
            # you are trying to get stats from.
         
     | 
| 
      
 10 
     | 
    
         
            +
            # In addition it will also need to be able to run jstat(2) against the JVM
         
     | 
| 
      
 11 
     | 
    
         
            +
            # This can be all achieved by allowing the script to be ran as the same user
         
     | 
| 
      
 12 
     | 
    
         
            +
            # running the JVM, for instance by prepending "sudo -u <jvm_process_owner>"
         
     | 
| 
      
 13 
     | 
    
         
            +
            # in the command check definition (with the proper sudoers config to allow this
         
     | 
| 
      
 14 
     | 
    
         
            +
            # with no password being asked)
         
     | 
| 
      
 15 
     | 
    
         
            +
            #
         
     | 
| 
      
 16 
     | 
    
         
            +
            # The graphite node is composed of an optional root node (defaults to 'metrics')
         
     | 
| 
      
 17 
     | 
    
         
            +
            # the specified FQDN "reversed" ('foo.bar.com' becomes 'com.bar.foo') and an
         
     | 
| 
      
 18 
     | 
    
         
            +
            # optional scheme (defaults to 'jstat')
         
     | 
| 
      
 19 
     | 
    
         
            +
            #
         
     | 
| 
      
 20 
     | 
    
         
            +
            # (1) http://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html
         
     | 
| 
      
 21 
     | 
    
         
            +
            # (2) http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html
         
     | 
| 
      
 22 
     | 
    
         
            +
            #
         
     | 
| 
      
 23 
     | 
    
         
            +
            # OUTPUT:
         
     | 
| 
      
 24 
     | 
    
         
            +
            # Graphite plain-text format (name value timestamp\n)
         
     | 
| 
      
 25 
     | 
    
         
            +
            #
         
     | 
| 
      
 26 
     | 
    
         
            +
            # DEPENDENCIES:
         
     | 
| 
      
 27 
     | 
    
         
            +
            # Python 2.7 (untested on python 3 but should work fine)
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Java 6 (untested on Java 7 but should work fine)
         
     | 
| 
      
 29 
     | 
    
         
            +
            #
         
     | 
| 
      
 30 
     | 
    
         
            +
            #
         
     | 
| 
      
 31 
     | 
    
         
            +
            # Released under the same terms as Sensu (the MIT license); see LICENSE
         
     | 
| 
      
 32 
     | 
    
         
            +
            # for details.
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            # #RED
         
     | 
| 
      
 35 
     | 
    
         
            +
            import logging
         
     | 
| 
      
 36 
     | 
    
         
            +
            import logging.handlers
         
     | 
| 
      
 37 
     | 
    
         
            +
            import optparse
         
     | 
| 
      
 38 
     | 
    
         
            +
            from subprocess import check_output
         
     | 
| 
      
 39 
     | 
    
         
            +
            import sys
         
     | 
| 
      
 40 
     | 
    
         
            +
            import time
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            class JstatMetricsToGraphiteFormat(object):
         
     | 
| 
      
 43 
     | 
    
         
            +
              '''Prints jstat metrics to stdout in graphite format
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              Shells out to run jstat using the JVM id found via jps (also shelled out) and
         
     | 
| 
      
 46 
     | 
    
         
            +
              passed argument to print to STDOUT (for use with sensu) the metrics value.
         
     | 
| 
      
 47 
     | 
    
         
            +
              Jstat column titles are replaced with more explanatory names. Requires to be
         
     | 
| 
      
 48 
     | 
    
         
            +
              ran as a user that can get the JVM id via jps and run jstat on that JVM'''
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def main(self):
         
     | 
| 
      
 51 
     | 
    
         
            +
                # Setting up logging to syslog
         
     | 
| 
      
 52 
     | 
    
         
            +
                try:
         
     | 
| 
      
 53 
     | 
    
         
            +
                  logger = logging.getLogger(__name__)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  logger.setLevel(logging.DEBUG)
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  formatter = logging.Formatter("%(pathname)s: %(message)s")
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  handler = logging.handlers.SysLogHandler(address = '/dev/log')
         
     | 
| 
      
 59 
     | 
    
         
            +
                  handler.setFormatter(formatter)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  logger.addHandler(handler)
         
     | 
| 
      
 61 
     | 
    
         
            +
                except Exception:
         
     | 
| 
      
 62 
     | 
    
         
            +
                  # booting is more important than logging
         
     | 
| 
      
 63 
     | 
    
         
            +
                  logging.critical("Failed to configure syslog handler")
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                parser = optparse.OptionParser()
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                parser.add_option('-g', '--graphite-base',
         
     | 
| 
      
 68 
     | 
    
         
            +
                  default = 'metrics',
         
     | 
| 
      
 69 
     | 
    
         
            +
                  dest    = 'graphite_base',
         
     | 
| 
      
 70 
     | 
    
         
            +
                  help    = 'The base graphite node',
         
     | 
| 
      
 71 
     | 
    
         
            +
                  metavar = 'NODE')
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                parser.add_option('-D', '--debug',
         
     | 
| 
      
 74 
     | 
    
         
            +
                  action  = 'store_true',
         
     | 
| 
      
 75 
     | 
    
         
            +
                  default = False,
         
     | 
| 
      
 76 
     | 
    
         
            +
                  dest    = 'debug',
         
     | 
| 
      
 77 
     | 
    
         
            +
                  help    = 'Debug output (NOISY!)')
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                parser.add_option('-H', '--host',
         
     | 
| 
      
 80 
     | 
    
         
            +
                  default = None,
         
     | 
| 
      
 81 
     | 
    
         
            +
                  dest    = 'hostname',
         
     | 
| 
      
 82 
     | 
    
         
            +
                  help    = 'The name of the host to run jstat on',
         
     | 
| 
      
 83 
     | 
    
         
            +
                  metavar = 'HOST')
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
                parser.add_option('-j', '--java-name',
         
     | 
| 
      
 86 
     | 
    
         
            +
                  default = None,
         
     | 
| 
      
 87 
     | 
    
         
            +
                  dest    = 'java_app_name',
         
     | 
| 
      
 88 
     | 
    
         
            +
                  help    = 'The name of the Java app to call jstat on',
         
     | 
| 
      
 89 
     | 
    
         
            +
                  metavar = 'JAVANAME')
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                parser.add_option('-s', '--scheme',
         
     | 
| 
      
 92 
     | 
    
         
            +
                  default = 'jstat',
         
     | 
| 
      
 93 
     | 
    
         
            +
                  dest    = 'service',
         
     | 
| 
      
 94 
     | 
    
         
            +
                  help    = 'Metric naming scheme, text to prepend to metric',
         
     | 
| 
      
 95 
     | 
    
         
            +
                  metavar = 'SERVICE')
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                (options, args) = parser.parse_args()
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                if not options.java_app_name:
         
     | 
| 
      
 100 
     | 
    
         
            +
                  parser.error('A Java app name is required')
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                if not options.hostname:
         
     | 
| 
      
 103 
     | 
    
         
            +
                  parser.error('A host name is required')
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                # Replace jstat colums titles with more explicit ones
         
     | 
| 
      
 106 
     | 
    
         
            +
                # Stats coming from -gc
         
     | 
| 
      
 107 
     | 
    
         
            +
                metric_maps_gc = { "S0C": "current_survivor_space_0_capacity_KB",
         
     | 
| 
      
 108 
     | 
    
         
            +
                                   "S1C": "current_survivor_space_1_capacity_KB",
         
     | 
| 
      
 109 
     | 
    
         
            +
                                   "S0U": "survivor_space_0_utilization_KB",
         
     | 
| 
      
 110 
     | 
    
         
            +
                                   "S1U": "survivor_space_1_utilization_KB",
         
     | 
| 
      
 111 
     | 
    
         
            +
                                   "EC": "current_eden_space_capacity_KB",
         
     | 
| 
      
 112 
     | 
    
         
            +
                                   "EU": "eden_space_utilization_KB",
         
     | 
| 
      
 113 
     | 
    
         
            +
                                   "OC": "current_old_space_capacity_KB",
         
     | 
| 
      
 114 
     | 
    
         
            +
                                   "OU": "old_space_utilization_KB",
         
     | 
| 
      
 115 
     | 
    
         
            +
                                   "PC": "current_permanent_space_capacity_KB",
         
     | 
| 
      
 116 
     | 
    
         
            +
                                   "PU": "permanent_space_utilization_KB",
         
     | 
| 
      
 117 
     | 
    
         
            +
                                   "YGC": "number_of_young_generation_GC_events",
         
     | 
| 
      
 118 
     | 
    
         
            +
                                   "YGCT": "young_generation_garbage_collection_time",
         
     | 
| 
      
 119 
     | 
    
         
            +
                                   "FGC": "number_of_stop_the_world_events",
         
     | 
| 
      
 120 
     | 
    
         
            +
                                   "FGCT": "full_garbage_collection_time",
         
     | 
| 
      
 121 
     | 
    
         
            +
                                   "GCT": "total_garbage_collection_time"
         
     | 
| 
      
 122 
     | 
    
         
            +
                                   }
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                # Stats coming from -gccapacity
         
     | 
| 
      
 125 
     | 
    
         
            +
                metric_maps_gccapacity = { "NGCMN": "minimum_size_of_new_area",
         
     | 
| 
      
 126 
     | 
    
         
            +
                                           "NGCMX": "maximum_size_of_new_area",
         
     | 
| 
      
 127 
     | 
    
         
            +
                                           "NGC": "current_size_of_new_area",
         
     | 
| 
      
 128 
     | 
    
         
            +
                                           "OGCMN": "minimum_size_of_old_area",
         
     | 
| 
      
 129 
     | 
    
         
            +
                                           "OGCMX": "maximum_size_of_old_area",
         
     | 
| 
      
 130 
     | 
    
         
            +
                                           "OGC": "current_size_of_old_area",
         
     | 
| 
      
 131 
     | 
    
         
            +
                                           "PGCMN": "minimum_size_of_permanent_area",
         
     | 
| 
      
 132 
     | 
    
         
            +
                                           "PGCMX": "maximum_size_of_permanent_area",
         
     | 
| 
      
 133 
     | 
    
         
            +
                                           "PGC": "current_size_of_permanent_area",
         
     | 
| 
      
 134 
     | 
    
         
            +
                                           "PC": "current_size_of_permanent_area"
         
     | 
| 
      
 135 
     | 
    
         
            +
                                           }
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                # Stats coming from -gcnew
         
     | 
| 
      
 138 
     | 
    
         
            +
                metric_maps_gcnew = { "TT" : "tenuring_threshold",
         
     | 
| 
      
 139 
     | 
    
         
            +
                                      "MTT": "maximum_tenuring_threshold",
         
     | 
| 
      
 140 
     | 
    
         
            +
                                      "DSS": "adequate_size_of_survivor"
         
     | 
| 
      
 141 
     | 
    
         
            +
                                       }
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
                # Stats coming from -compiler
         
     | 
| 
      
 144 
     | 
    
         
            +
                metric_maps_compiler = {
         
     | 
| 
      
 145 
     | 
    
         
            +
                    "Compiled": "compilation_tasks_performed",
         
     | 
| 
      
 146 
     | 
    
         
            +
                    "Failed": "compilation_tasks_failed",
         
     | 
| 
      
 147 
     | 
    
         
            +
                    "Invalid": "compilation_tasks_invalidated",
         
     | 
| 
      
 148 
     | 
    
         
            +
                    "Time": "time_spent_on_compilation_tasks"
         
     | 
| 
      
 149 
     | 
    
         
            +
                    }
         
     | 
| 
      
 150 
     | 
    
         
            +
             
     | 
| 
      
 151 
     | 
    
         
            +
                # Stats coming from -class
         
     | 
| 
      
 152 
     | 
    
         
            +
                ## Note that since "Bytes" appears twice in jstat -class output we need
         
     | 
| 
      
 153 
     | 
    
         
            +
                ## to differentiate them by colum number
         
     | 
| 
      
 154 
     | 
    
         
            +
                metric_maps_class = {
         
     | 
| 
      
 155 
     | 
    
         
            +
                    "Loaded": "loaded_classes",
         
     | 
| 
      
 156 
     | 
    
         
            +
                    "Bytes_column2": "loaded_KB",
         
     | 
| 
      
 157 
     | 
    
         
            +
                    "Unloaded": "unloaded_classes",
         
     | 
| 
      
 158 
     | 
    
         
            +
                    "Bytes_column4": "unloaded_KB",
         
     | 
| 
      
 159 
     | 
    
         
            +
                    "Time": "time_spent_on_class_load_unload"
         
     | 
| 
      
 160 
     | 
    
         
            +
                    }
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                def get_jstat_metrics(jstat_option, lvmid, metric_maps):
         
     | 
| 
      
 163 
     | 
    
         
            +
                  '''Runs jstat with provided option on provided host, returns mapped stats'''
         
     | 
| 
      
 164 
     | 
    
         
            +
                  def is_number(s):
         
     | 
| 
      
 165 
     | 
    
         
            +
                    '''returns true if string is a number'''
         
     | 
| 
      
 166 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 167 
     | 
    
         
            +
                      float(s)
         
     | 
| 
      
 168 
     | 
    
         
            +
                      return True
         
     | 
| 
      
 169 
     | 
    
         
            +
                    except ValueError:
         
     | 
| 
      
 170 
     | 
    
         
            +
                      pass
         
     | 
| 
      
 171 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 172 
     | 
    
         
            +
                      import unicodedata
         
     | 
| 
      
 173 
     | 
    
         
            +
                      unicodedata.numeric(s)
         
     | 
| 
      
 174 
     | 
    
         
            +
                      return True
         
     | 
| 
      
 175 
     | 
    
         
            +
                    except (TypeError, ValueError):
         
     | 
| 
      
 176 
     | 
    
         
            +
                      pass
         
     | 
| 
      
 177 
     | 
    
         
            +
                    return False
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                  # Get stats from jstat stdout
         
     | 
| 
      
 180 
     | 
    
         
            +
                  try :
         
     | 
| 
      
 181 
     | 
    
         
            +
                    jstat_gc_out = check_output(["jstat", jstat_option, lvmid])
         
     | 
| 
      
 182 
     | 
    
         
            +
                  except Exception as e:
         
     | 
| 
      
 183 
     | 
    
         
            +
                    if options.debug:
         
     | 
| 
      
 184 
     | 
    
         
            +
                      print e
         
     | 
| 
      
 185 
     | 
    
         
            +
                      sys.exit(1)
         
     | 
| 
      
 186 
     | 
    
         
            +
                    logger.critical(e)
         
     | 
| 
      
 187 
     | 
    
         
            +
                    sys.exit(1)
         
     | 
| 
      
 188 
     | 
    
         
            +
             
     | 
| 
      
 189 
     | 
    
         
            +
                  values_all = jstat_gc_out.split("\n")[1].split()
         
     | 
| 
      
 190 
     | 
    
         
            +
                  # Remove non number strings
         
     | 
| 
      
 191 
     | 
    
         
            +
                  values = [ jstat_val for jstat_val in values_all if is_number(jstat_val) ]
         
     | 
| 
      
 192 
     | 
    
         
            +
                  # Transform float strings to integers
         
     | 
| 
      
 193 
     | 
    
         
            +
                  values = map(int, map(float, values))
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
                  # Change stats titles to long names
         
     | 
| 
      
 196 
     | 
    
         
            +
                  titles = jstat_gc_out.split("\n")[0].split()
         
     | 
| 
      
 197 
     | 
    
         
            +
                  # Deal with -class special "double Bytes" output
         
     | 
| 
      
 198 
     | 
    
         
            +
                  if jstat_option == "-class":
         
     | 
| 
      
 199 
     | 
    
         
            +
                   titles[2] = "Bytes_column2"
         
     | 
| 
      
 200 
     | 
    
         
            +
                   titles[4] = "Bytes_column4"
         
     | 
| 
      
 201 
     | 
    
         
            +
                  return dict([(metric_maps[title], values[position]) for position, title in enumerate(titles) if title in metric_maps])
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
                # Get lvmid (JVM id)
         
     | 
| 
      
 204 
     | 
    
         
            +
                try :
         
     | 
| 
      
 205 
     | 
    
         
            +
                  jps_out = check_output(["jps"])
         
     | 
| 
      
 206 
     | 
    
         
            +
                except Exception as e:
         
     | 
| 
      
 207 
     | 
    
         
            +
                  if options.debug:
         
     | 
| 
      
 208 
     | 
    
         
            +
                    print e
         
     | 
| 
      
 209 
     | 
    
         
            +
                    sys.exit(1)
         
     | 
| 
      
 210 
     | 
    
         
            +
                  logger.critical(e)
         
     | 
| 
      
 211 
     | 
    
         
            +
                  sys.exit(1)
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                lvmid = False
         
     | 
| 
      
 214 
     | 
    
         
            +
                for line in jps_out.split("\n"):
         
     | 
| 
      
 215 
     | 
    
         
            +
                  if options.java_app_name in line:
         
     | 
| 
      
 216 
     | 
    
         
            +
                    lvmid = line.split()[0]
         
     | 
| 
      
 217 
     | 
    
         
            +
             
     | 
| 
      
 218 
     | 
    
         
            +
                if not lvmid:
         
     | 
| 
      
 219 
     | 
    
         
            +
                  if options.debug:
         
     | 
| 
      
 220 
     | 
    
         
            +
                    print "Could not get an LVM id"
         
     | 
| 
      
 221 
     | 
    
         
            +
                    sys.exit(1)
         
     | 
| 
      
 222 
     | 
    
         
            +
                  logger.critical("Could not get an LVM id")
         
     | 
| 
      
 223 
     | 
    
         
            +
                  sys.exit(1)
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
| 
      
 225 
     | 
    
         
            +
                # Get stats from -gc
         
     | 
| 
      
 226 
     | 
    
         
            +
                gc_stats = get_jstat_metrics("-gc", lvmid, metric_maps_gc)
         
     | 
| 
      
 227 
     | 
    
         
            +
                if options.debug:
         
     | 
| 
      
 228 
     | 
    
         
            +
                  print gc_stats
         
     | 
| 
      
 229 
     | 
    
         
            +
                # Get stats from -gccapacity
         
     | 
| 
      
 230 
     | 
    
         
            +
                gccapacity_stats = get_jstat_metrics("-gccapacity",
         
     | 
| 
      
 231 
     | 
    
         
            +
                    lvmid, metric_maps_gccapacity)
         
     | 
| 
      
 232 
     | 
    
         
            +
                if options.debug:
         
     | 
| 
      
 233 
     | 
    
         
            +
                  print gccapacity_stats
         
     | 
| 
      
 234 
     | 
    
         
            +
                # Get stats from -gcnew
         
     | 
| 
      
 235 
     | 
    
         
            +
                gcnew_stats = get_jstat_metrics("-gcnew", lvmid, metric_maps_gcnew)
         
     | 
| 
      
 236 
     | 
    
         
            +
                if options.debug:
         
     | 
| 
      
 237 
     | 
    
         
            +
                  print gccapacity_stats
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
                # Put all GC related stats to the same dict
         
     | 
| 
      
 240 
     | 
    
         
            +
                gc_stats.update(gccapacity_stats)
         
     | 
| 
      
 241 
     | 
    
         
            +
                gc_stats.update(gcnew_stats)
         
     | 
| 
      
 242 
     | 
    
         
            +
             
     | 
| 
      
 243 
     | 
    
         
            +
                # Get stats from -compiler
         
     | 
| 
      
 244 
     | 
    
         
            +
                compiler_stats = get_jstat_metrics("-compiler", lvmid, metric_maps_compiler)
         
     | 
| 
      
 245 
     | 
    
         
            +
                if options.debug:
         
     | 
| 
      
 246 
     | 
    
         
            +
                  print compiler_stats
         
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
                # Get stats from -class
         
     | 
| 
      
 249 
     | 
    
         
            +
                class_stats = get_jstat_metrics("-class", lvmid, metric_maps_class)
         
     | 
| 
      
 250 
     | 
    
         
            +
                if options.debug:
         
     | 
| 
      
 251 
     | 
    
         
            +
                  print class_stats
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
                # Print to stdout in graphite format
         
     | 
| 
      
 254 
     | 
    
         
            +
                now = time.time()
         
     | 
| 
      
 255 
     | 
    
         
            +
                graphite_base = '.'.join([options.graphite_base,
         
     | 
| 
      
 256 
     | 
    
         
            +
                    '.'.join(reversed(options.hostname.split('.')))])
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
                for metric in gc_stats:
         
     | 
| 
      
 259 
     | 
    
         
            +
                  print "%s.%s.jvm.gc.%s %s %d" % (graphite_base, options.service, metric,
         
     | 
| 
      
 260 
     | 
    
         
            +
                      gc_stats[metric], now)
         
     | 
| 
      
 261 
     | 
    
         
            +
             
     | 
| 
      
 262 
     | 
    
         
            +
                for metric in compiler_stats:
         
     | 
| 
      
 263 
     | 
    
         
            +
                  print "%s.%s.jvm.compiler.%s %s %d" % (graphite_base, options.service,
         
     | 
| 
      
 264 
     | 
    
         
            +
                      metric, compiler_stats[metric], now)
         
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
                for metric in class_stats:
         
     | 
| 
      
 267 
     | 
    
         
            +
                  print "%s.%s.jvm.class.%s %s %d" % (graphite_base, options.service,
         
     | 
| 
      
 268 
     | 
    
         
            +
                      metric, class_stats[metric], now)
         
     | 
| 
      
 269 
     | 
    
         
            +
             
     | 
| 
      
 270 
     | 
    
         
            +
            if '__main__' == __name__:
         
     | 
| 
      
 271 
     | 
    
         
            +
              JstatMetricsToGraphiteFormat().main()
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'sensu-plugins-java/version'
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,234 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: sensu-plugins-java
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Sensu-Plugins and contributors
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain:
         
     | 
| 
      
 11 
     | 
    
         
            +
            - |
         
     | 
| 
      
 12 
     | 
    
         
            +
              -----BEGIN CERTIFICATE-----
         
     | 
| 
      
 13 
     | 
    
         
            +
              MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRIwEAYDVQQDDAltYXR0
         
     | 
| 
      
 14 
     | 
    
         
            +
              am9uZXMxGDAWBgoJkiaJk/IsZAEZFgh5aWVsZGJvdDETMBEGCgmSJomT8ixkARkW
         
     | 
| 
      
 15 
     | 
    
         
            +
              A2NvbTAeFw0xNTAxMjgyMTAyNTFaFw0xNjAxMjgyMTAyNTFaMEMxEjAQBgNVBAMM
         
     | 
| 
      
 16 
     | 
    
         
            +
              CW1hdHRqb25lczEYMBYGCgmSJomT8ixkARkWCHlpZWxkYm90MRMwEQYKCZImiZPy
         
     | 
| 
      
 17 
     | 
    
         
            +
              LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTSzVYnO
         
     | 
| 
      
 18 
     | 
    
         
            +
              CLgyrIyT1mBQakArQyW8xhi6MlDqyzXHJGeERT790U6EgoBVeS4XoK0ptFZNR8Tf
         
     | 
| 
      
 19 
     | 
    
         
            +
              zko0w+Nv47TarSCgkPOaxY+mxWnAVR10dOmfeLr7huiMyps+YD56/EF2FqQ3jf/+
         
     | 
| 
      
 20 
     | 
    
         
            +
              qohENfKD91qy1ieEy+Fn7Pf74ltbNKUdkb9a9eFXQ0DQ4ip5vik7DzjQkUTj4lca
         
     | 
| 
      
 21 
     | 
    
         
            +
              k6ArwnmHX4YDhZoYtrQJ8jVktN0/+NtA40M5qkCYHNe5tUW25b/tKVYuioxG6b2Z
         
     | 
| 
      
 22 
     | 
    
         
            +
              oIzaZxRLxf6HVAWpCVRT/F5+/yjigkX4u++eYacfLGleXQzoK7BL65vHGMJygWEE
         
     | 
| 
      
 23 
     | 
    
         
            +
              0TKGqFOrl/L0AQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
         
     | 
| 
      
 24 
     | 
    
         
            +
              HQ4EFgQUEf6a8Td7MrSZc8ImbLFZAENPbz0wIQYDVR0RBBowGIEWbWF0dGpvbmVz
         
     | 
| 
      
 25 
     | 
    
         
            +
              QHlpZWxkYm90LmNvbTAhBgNVHRIEGjAYgRZtYXR0am9uZXNAeWllbGRib3QuY29t
         
     | 
| 
      
 26 
     | 
    
         
            +
              MA0GCSqGSIb3DQEBBQUAA4IBAQBbzXAYA3BVGw8DZ0YYoY1VHPNEcH5qPIApmHO8
         
     | 
| 
      
 27 
     | 
    
         
            +
              rvSmuUT0yMEi7u00H/5uHRFf4LleGT/+sTdyXKsNPGT9kdRuQEgwi+vf7Zfvd8aX
         
     | 
| 
      
 28 
     | 
    
         
            +
              UF/+4VkEYf/8rV8Ere6u2QaWPgApdMV6JjKr1fAwCTd8AuGXNaWItiPPMseSQzLJ
         
     | 
| 
      
 29 
     | 
    
         
            +
              JKP4hVvbc1d+oS925B1lcBiqn2aYvElbyNAVmQPywNNqkWmvtlqj9ZVJfV5HQLdu
         
     | 
| 
      
 30 
     | 
    
         
            +
              8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
         
     | 
| 
      
 31 
     | 
    
         
            +
              HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
         
     | 
| 
      
 32 
     | 
    
         
            +
              -----END CERTIFICATE-----
         
     | 
| 
      
 33 
     | 
    
         
            +
            date: 2015-05-30 00:00:00.000000000 Z
         
     | 
| 
      
 34 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 35 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 36 
     | 
    
         
            +
              name: sensu-plugin
         
     | 
| 
      
 37 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 38 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 39 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 40 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 41 
     | 
    
         
            +
                    version: 1.1.0
         
     | 
| 
      
 42 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 43 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 44 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 45 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 46 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 47 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 48 
     | 
    
         
            +
                    version: 1.1.0
         
     | 
| 
      
 49 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 50 
     | 
    
         
            +
              name: english
         
     | 
| 
      
 51 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 52 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 53 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 54 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 55 
     | 
    
         
            +
                    version: 0.6.3
         
     | 
| 
      
 56 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 57 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 58 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 59 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 60 
     | 
    
         
            +
                - - '='
         
     | 
| 
      
 61 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 62 
     | 
    
         
            +
                    version: 0.6.3
         
     | 
| 
      
 63 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 64 
     | 
    
         
            +
              name: codeclimate-test-reporter
         
     | 
| 
      
 65 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 66 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 67 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 68 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 69 
     | 
    
         
            +
                    version: '0.4'
         
     | 
| 
      
 70 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 71 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 74 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 75 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 76 
     | 
    
         
            +
                    version: '0.4'
         
     | 
| 
      
 77 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 78 
     | 
    
         
            +
              name: rubocop
         
     | 
| 
      
 79 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 80 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 81 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 82 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 83 
     | 
    
         
            +
                    version: '0.30'
         
     | 
| 
      
 84 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 85 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 86 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 87 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 88 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 89 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 90 
     | 
    
         
            +
                    version: '0.30'
         
     | 
| 
      
 91 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 92 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 93 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 94 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 95 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 96 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 97 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 98 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 99 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 100 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 101 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 102 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 103 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 104 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 105 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 106 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 107 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 108 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 109 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 110 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 111 
     | 
    
         
            +
                    version: '1.7'
         
     | 
| 
      
 112 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 113 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 114 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 115 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 116 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 117 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 118 
     | 
    
         
            +
                    version: '1.7'
         
     | 
| 
      
 119 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 120 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 121 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 122 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 123 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 125 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 126 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 127 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 128 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 129 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 130 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 131 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 132 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
      
 133 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 134 
     | 
    
         
            +
              name: github-markup
         
     | 
| 
      
 135 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 136 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 137 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 138 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 139 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 140 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 141 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 142 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 143 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 144 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 145 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 146 
     | 
    
         
            +
                    version: '1.3'
         
     | 
| 
      
 147 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 148 
     | 
    
         
            +
              name: redcarpet
         
     | 
| 
      
 149 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 150 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 151 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 152 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 153 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
      
 154 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 155 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 156 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 157 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 158 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 159 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 160 
     | 
    
         
            +
                    version: '3.2'
         
     | 
| 
      
 161 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 162 
     | 
    
         
            +
              name: yard
         
     | 
| 
      
 163 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 164 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 165 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 166 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 167 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
      
 168 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 169 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 170 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 171 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 172 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 173 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 174 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
      
 175 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 176 
     | 
    
         
            +
              name: pry
         
     | 
| 
      
 177 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 178 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 179 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 180 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 181 
     | 
    
         
            +
                    version: '0.10'
         
     | 
| 
      
 182 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 183 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 184 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 185 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 186 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 187 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 188 
     | 
    
         
            +
                    version: '0.10'
         
     | 
| 
      
 189 
     | 
    
         
            +
            description: Sensu plugins for Java
         
     | 
| 
      
 190 
     | 
    
         
            +
            email: "<sensu-users@googlegroups.com>"
         
     | 
| 
      
 191 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 192 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 193 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 194 
     | 
    
         
            +
            files:
         
     | 
| 
      
 195 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
      
 196 
     | 
    
         
            +
            - LICENSE
         
     | 
| 
      
 197 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 198 
     | 
    
         
            +
            - bin/check-java-permgen.rb
         
     | 
| 
      
 199 
     | 
    
         
            +
            - bin/java-heap-pcnt.sh
         
     | 
| 
      
 200 
     | 
    
         
            +
            - bin/metrics-java-heap-graphite.sh
         
     | 
| 
      
 201 
     | 
    
         
            +
            - bin/metrics-jstat.py
         
     | 
| 
      
 202 
     | 
    
         
            +
            - lib/sensu-plugins-java.rb
         
     | 
| 
      
 203 
     | 
    
         
            +
            - lib/sensu-plugins-java/version.rb
         
     | 
| 
      
 204 
     | 
    
         
            +
            homepage: https://github.com/sensu-plugins/sensu-plugins-java
         
     | 
| 
      
 205 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 206 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 207 
     | 
    
         
            +
            metadata:
         
     | 
| 
      
 208 
     | 
    
         
            +
              maintainer: ''
         
     | 
| 
      
 209 
     | 
    
         
            +
              development_status: active
         
     | 
| 
      
 210 
     | 
    
         
            +
              production_status: unstable - testing recommended
         
     | 
| 
      
 211 
     | 
    
         
            +
              release_draft: 'false'
         
     | 
| 
      
 212 
     | 
    
         
            +
              release_prerelease: 'false'
         
     | 
| 
      
 213 
     | 
    
         
            +
            post_install_message: You can use the embedded Ruby by setting EMBEDDED_RUBY=true
         
     | 
| 
      
 214 
     | 
    
         
            +
              in /etc/default/sensu
         
     | 
| 
      
 215 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 216 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 217 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 218 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 219 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 220 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 221 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 222 
     | 
    
         
            +
                  version: 1.9.3
         
     | 
| 
      
 223 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 224 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 225 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 226 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 227 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 228 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 229 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 230 
     | 
    
         
            +
            rubygems_version: 2.4.6
         
     | 
| 
      
 231 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 232 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 233 
     | 
    
         
            +
            summary: Sensu plugins for Java
         
     | 
| 
      
 234 
     | 
    
         
            +
            test_files: []
         
     | 
    
        metadata.gz.sig
    ADDED
    
    | 
         Binary file 
     |