jmx

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

README

PkgGoDev GoReportCard GitHub Actions CI Status GitHub Actions CodeQL Status Coverage Status Codebeat badge

InstallationUsage examplezabbix-jmx-getBuild StatusLicense


zabbix-jmx is a Go package for retrieving and parsing data from Zabbix Java Gateway.

Installation

Make sure you have a working Go 1.15+ workspace (instructions), then:

go get -d pkg.re/essentialkaos/go-zabbix-jmx.v1

For update to the latest stable release, do:

go get -d -u pkg.re/essentialkaos/go-zabbix-jmx.v1

Usage example

package main

import (
	"fmt"
	jmx "pkg.re/essentialkaos/go-zabbix-jmx.v1"
)

func main() {
	client, err := jmx.NewClient("127.0.0.1:9335")

	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	r := &jmx.Request{
		Server:   "domain.com",
		Port:     9093,
		Username: "admin",
		Password: "admin",
		Keys:     []string{`jmx["kafka.server:type=ReplicaManager,name=PartitionCount",Value]`},
	}

	resp, err := client.Get(r)

	if err != nil {
		fmt.Printf("Error: %v\n", err)
		return
	}

	fmt.Printf("Resp value: %s\n", resp[0].Value)
}

zabbix-jmx-get

We also provide a command-line tool zabbix-jmx-get for retrieving data from Zabbix Java Gateway.

Installation

From sources:

go get -u github.com/essentialkaos/go-zabbix-jmx/cmd/zabbix-jmx-get

Prebuilt binaries:

bash <(curl -fsSL https://apps.kaos.st/get) zabbix-jmx-get

Usage examples

$ zabbix-jmx-get -h 127.0.0.1 -p 10052 -H kfk-node1.domain.com -P 9093 'jmx.discovery[beans,"*:type=BrokerTopicMetrics,name=*"]'

kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec TotalProduceRequestsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec BytesOutPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec BytesInPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec BytesRejectedPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec FailedProduceRequestsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=FetchMessageConversionsPerSec FetchMessageConversionsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec MessagesInPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec FailedFetchRequestsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=ProduceMessageConversionsPerSec ProduceMessageConversionsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesInPerSec ReplicationBytesInPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=TotalFetchRequestsPerSec TotalFetchRequestsPerSec
kafka.server BrokerTopicMetrics kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesOutPerSec ReplicationBytesOutPerSec

$ zabbix-jmx-get -h 127.0.0.1 -p 10052 -H kfk-node1.domain.com -P 9093 'jmx["kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec",OneMinuteRate]'

5668479.780357378

Build Status

Branch Status
master CI
develop CI

License

Apache License, Version 2.0

Documentation

Overview

Package zabbix-jmx provides methods for working with Zabbix Java Gateway

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Bean

type Bean struct {
	Domain string `json:"{#JMXDOMAIN}"`
	Type   string `json:"{#JMXTYPE}"`
	Object string `json:"{#JMXOBJ}"`
	Name   string `json:"{#JMXNAME}"`
}

Bean contains basic bean info

func ParseBeans

func ParseBeans(data string) ([]*Bean, error)

ParseBeans parses beans data

type Client

type Client struct {
	ConnectTimeout time.Duration
	WriteTimeout   time.Duration
	ReadTimeout    time.Duration
	// contains filtered or unexported fields
}

Client is Zabbix JMX client

func NewClient

func NewClient(address string) (*Client, error)

NewClient creates new client

Example
client, err := NewClient("127.0.0.1:9335")

if err != nil {
	fmt.Printf("Error: %v\n", err)
	return
}

client.WriteTimeout = time.Second * 3
client.ReadTimeout = time.Second * 3
Output:

func (*Client) Get

func (c *Client) Get(r *Request) (Response, error)

Get fetches data from Java Gateway

Example
client, err := NewClient("127.0.0.1:9335")

if err != nil {
	fmt.Printf("Error: %v\n", err)
	return
}

r := &Request{
	Server:   "domain.com",
	Port:     9093,
	Username: "admin",
	Password: "admin",
	Keys:     []string{`jmx["kafka.server:type=ReplicaManager,name=PartitionCount",Value]`},
}

resp, err := client.Get(r)

if err != nil {
	fmt.Printf("Error: %v\n", err)
	return
}

fmt.Printf("Resp value: %s\n", resp[0].Value)
Output:

type Request

type Request struct {
	Server   string
	Port     int
	Username string
	Password string
	Keys     []string
}

Request is basic request struct

type Response

type Response []*ResponseData

Response contains response data

type ResponseData

type ResponseData struct {
	Value string `json:"value"`
}

ResponseData contains value for requested key

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL