A client for the LogicMonitor REST API v3

Jonathan D. Storm 129e1d5948 Initial commit 1 vuosi sitten
.gitignore 129e1d5948 Initial commit 1 vuosi sitten
LICENSE 129e1d5948 Initial commit 1 vuosi sitten
README.md 129e1d5948 Initial commit 1 vuosi sitten
go.mod 129e1d5948 Initial commit 1 vuosi sitten
go.sum 129e1d5948 Initial commit 1 vuosi sitten
http_errors.go 129e1d5948 Initial commit 1 vuosi sitten
logicmonclient.go 129e1d5948 Initial commit 1 vuosi sitten
logicmonclient_test.go 129e1d5948 Initial commit 1 vuosi sitten

README.md

logicmonclient

A client for the LogicMonitor REST API v3.

Example

package main

import (
    "context"
    "net/http"
    "os"

    lmc "idio.link/go/logicmonclient"
)

func main() {
	accountName := os.GetEnv("LOGICMON_ACCOUNT")
	accessId := os.GetEnv("LOGICMON_ACCESSID")
	accessKey := os.GetEnv("LOGICMON_ACCESSKEY")

	// set up connection
	httpTransport := &http.Transport{
		TLSClientConfig:       &tls.Config{InsecureSkipVerify: false},
		TLSHandshakeTimeout:   15 * time.Second,
		IdleConnTimeout:       30 * time.Minute,
		ResponseHeaderTimeout: 180 * time.Second,
		ExpectContinueTimeout: 10 * time.Second,
	}
	httpClient := &http.Client{
		Transport: httpTransport,
		Timeout:   30 * time.Minute,
	}

    ctx := context.Background()

	cred := lmc.NewLMv1TokenBasedCredential(accessId, accessKey)
	client := lmc.NewLMClient(accountName, ctx, httpClient, cred)

	netflowFilter := lmc.LMNetflowFilter{
        Direction: lmc.LMFlowDirectionEgress,
		IPVersion: lmc.LMIPVersion4,
		Protocol:  lmc.LMProtocolGRE,
		Top:       lmc.LMTopCount100,
	}

    devPager := client.GetImmediateDeviceList(364)
    for dev := range devPager.Iter() {
        if ctx.Err() != nil {
            break
        }
        graph, err := client.GetTopTalkersGraph(
            dev.Id,
            window.Start.UnixMilli()/1000,
            window.End.UnixMilli()/1000,
            netflowFilter,
        )
        if err != nil {
            log.Printf("WARN: make edges: device %s: %v", dev.DisplayName, err)
            continue
        }

        // do things
    }
}