Zabbix Pusher

Zabbix Pusher is a gem with a set of binaries to push data to a zabbix server

The current package provides a implementation for querying jmx data with jolokia from tomcat and a predefined tomcat_template.xml to import in zabbix. You must deploy the jolkia.war to your tomcat instance.

Quick Start

Install the gem with.

gem install zabbix_pusher

import the examples/tomcat_template.xml into your zabbix server

zabbix_pusher  -z 192.168.1.40 -s vagrantup.com  -v

sample output:

{
                      "jmx[java.lang:type=OperatingSystem;OpenFileDescriptorCount;]" => 46,
              "jmx[Catalina:name=http-8080,type=GlobalRequestProcessor;errorCount;]" => 1,
                           "jmx[java.lang:type=ClassLoading;TotalLoadedClassCount;]" => 1918,
                       "jmx[java.lang:type=OperatingSystem;MaxFileDescriptorCount;]" => 1024,
                                               "jmx[java.lang:type=Runtime;Uptime;]" => 4807550,
                                "jmx[java.lang:type=ClassLoading;LoadedClassCount;]" => 1916,
                          "jmx[Catalina:name=http-8080,type=ThreadPool;maxThreads;]" => 200,
                             "jmx[java.lang:type=Compilation;TotalCompilationTime;]" => 852,
                                            "jmx[java.lang:type=Runtime;VmVersion;]" => "19.1-b02",
                        "jmx[java.lang:name=CMS Perm Gen,type=MemoryPool;Usage;max]" => 67108864,
                                             "jmx[Catalina:type=Server;serverInfo;]" => "Apache Tomcat/6.0.24",
           "jmx[Catalina:name=http-8080,type=GlobalRequestProcessor;bytesReceived;]" => 616016,
                                             "jmx[java.lang:type=Compilation;Name;]" => "HotSpot Client Compiler",
                    "jmx[java.lang:name=Copy,type=GarbageCollector;CollectionTime;]" => 114,
                       "jmx[java.lang:name=CMS Perm Gen,type=MemoryPool;Usage;used]" => 10244896,
                                  "jmx[java.lang:type=Threading;DaemonThreadCount;]" => 13,
                   "jmx[java.lang:name=CMS Old Gen,type=MemoryPool;Usage;committed]" => 50331648,
                         "jmx[java.lang:name=Code Cache,type=MemoryPool;Usage;used]" => 2310528,
            "jmx[Catalina:name=http-8080,type=GlobalRequestProcessor;requestCount;]" => 173,
          "jmx[Catalina:name=http-8080,type=GlobalRequestProcessor;processingTime;]" => 1992,
                  "jmx[Catalina:name=http-8080,type=ThreadPool;currentThreadsBusy;]" => 1,
                                        "jmx[java.lang:type=Threading;ThreadCount;]" => 14,
    "jmx[java.lang:name=ConcurrentMarkSweep,type=GarbageCollector;CollectionCount;]" => 4,
                    "jmx[java.lang:name=Code Cache,type=MemoryPool;Usage;committed]" => 2326528,
                          "jmx[java.lang:name=Code Cache,type=MemoryPool;Usage;max]" => 33554432,
               "jmx[Catalina:name=http-8080,type=GlobalRequestProcessor;bytesSent;]" => 9622082,
                  "jmx[Catalina:name=http-8080,type=ThreadPool;currentThreadCount;]" => 1,
                                    "jmx[java.lang:type=Threading;PeakThreadCount;]" => 14,
                         "jmx[java.lang:name=CMS Old Gen,type=MemoryPool;Usage;max]" => 83886080,
                        "jmx[java.lang:name=CMS Old Gen,type=MemoryPool;Usage;used]" => 3707304,
     "jmx[java.lang:name=ConcurrentMarkSweep,type=GarbageCollector;CollectionTime;]" => 0,
                  "jmx[java.lang:name=CMS Perm Gen,type=MemoryPool;Usage;committed]" => 17063936,
                              "jmx[java.lang:type=ClassLoading;UnloadedClassCount;]" => 2,
                        "jmx[java.lang:type=Memory;ObjectPendingFinalizationCount;]" => 0,
                            "jmx[java.lang:type=Threading;TotalStartedThreadCount;]" => 14,
                   "jmx[java.lang:name=Copy,type=GarbageCollector;CollectionCount;]" => 49,
                         "jmx[Catalina:port=8080,type=ProtocolHandler;compression;]" => "off"
}

will push the data to a zabbix server running on port 10051. The -v option will print out what gets send to the server.

Options

zabbix_pusher -h
Usage: zabbix_pusher (options)
    -c, --config CONFIG              The configuration file to use
        --jmx_base_uri uri           The jmx base uri
    -l, --log_level LEVEL            Set the log level (debug, info, warn, error, fatal)
    -s, --host HOSTNAME              Specify host name. Host IP address and DNS name will not work.
    -v, --show_send_values           shows what values got send to zabbix
    -t, --template FILE              The template file(s) to use, can be a file a comma separated list of files or a directory
    -z, --zabbix-server SERVER       Hostname or IP address of Zabbix Server
    -p, --port SERVER PORT           Specify port number of server trapper running on the server. Default is 10051
    -h, --help                       Show this message

Additional Command zabbix_pusher_jmx

Can be used to explore all the options of your jmx data.

$ zabbix_pusher_jmx -h
Usage: /usr/bin/zabbix_pusher_jmx (options)
    -a, --attribute attribute        The name of the action e.g. HeapMemoryUsage (needed for read command)
    -b, --base_uri uri               The jmx base uri
    -o, --command action             The command to perform
    -m, --mbean mbean                The name of the mbean e.g. java.lang:type=Memory (needed for read command)
    -p, --path path                  The name of the path e.g. used (needed for read and list command)
    -h, --help                       Show this message

Examples:

zabbix_pusher_jmx --command search -m "Catalina:*"
zabbix_pusher_jmx --command read -m "Catalina:host=localhost,path=/,type=Manager"
zabbix_pusher_jmx --command read -m "Catalina:name=http-8080,type=GlobalRequestProcessor" -a bytesReceived
zabbix_pusher_jmx --command list -m Catalina:host=localhost,path=/,resourcetype=Context,type=NamingResources

See http://www.jolokia.org/reference/html/protocol.html for details