Skip to content

logicmonitor/lm-data-sdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LogicMonitor Go Data SDK

LogicMonitor Go Data SDK is suitable for ingesting the metrics and logs into the LogicMonitor Platform.

Overview

LogicMonitor's Push Metrics feature allows you to send metrics directly to the LogicMonitor platform via a dedicated API, removing the need to route the data through a LogicMonitor Collector. Once ingested, these metrics are presented alongside all other metrics gathered via LogicMonitor, providing a single pane of glass for metric monitoring and alerting.

Similarly, If a log integration isn’t available or you have custom logs that you want to analyze, you can send the logs directly to your LogicMonitor account via the logs ingestion API.

Getting Started

Installation

To use the LogicMonitor Go Data SDK in your Go module, you can simply run the following command:

go get -u github.com/logicmonitor/lm-data-sdk-go

Authentication

While using LMv1 authentication set LOGICMONITOR_ACCESS_ID and LOGICMONITOR_ACCESS_KEY properties. In case of BearerToken authentication set LOGICMONITOR_BEARER_TOKEN property. Company's name or Account name must be passed to LOGICMONITOR_ACCOUNT property. All properties can be set using environment variable.

Environment variable Description
LOGICMONITOR_ACCOUNT Account name (Company Name) is your organization name
LOGICMONITOR_ACCESS_ID Access id while using LMv1 authentication.
LOGICMONITOR_ACCESS_KEY Access key while using LMv1 authentication.
LOGICMONITOR_BEARER_TOKEN BearerToken while using Bearer authentication.

Usage

Metrics Ingestion

This is how you can initialise metrics client:

import (
	"context"
	"fmt"
	"os"

	"github.com/logicmonitor/lm-data-sdk-go/api/metrics"
)

func main() {
	options := []metrics.Option{
		metrics.WithMetricBatchingInterval(3 * time.Second),
        ...
	}

	lmMetric, err := metrics.NewLMMetricIngest(context.Background(), options...)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when initializing metric client: %v\n", err)
		return
	}
    ...
}

Here is the complete example for metrics ingestion.

Options

Following options can be used to create the metrics api client.

Option Description
WithMetricBatchingInterval(batchinterval time.Duration) Sets time interval to wait before performing next batching of metrics. Default value is 10s.
WithMetricBatchingDisabled() Disables batching of metrics. Default value is Enabled.
WithGzipCompression(gzip bool) Enables / disables gzip compression of metric payload. Default value is Enabled.
WithRateLimit(requestCount int) Sets limit on the number of requests to metrics API per minute. Default value is 100.
WithHTTPClient(client *http.Client) Sets custom HTTP Client. Default http client is configured with timeout of 5s.
WithEndpoint(endpoint string) Sets endpoint to send the metrics to. Default value is https://${LOGICMONITOR_ACCOUNT}.logicmonitor.com/rest/.
WithAuthentication(authParams utils.AuthParams) Sets authentication parameters.

Logs Ingestion

This is how you can initialise logs client:

  import (
	"context"
	"fmt"
	"os"

	"github.com/logicmonitor/lm-data-sdk-go/api/logs"
)

func main() {
	options := []logs.Option{
		logs.WithLogBatchingDisabled(),
        ...
	}

	lmLog, err := logs.NewLMLogIngest(context.Background(), options...)
	if err != nil {
		fmt.Fprintf(os.Stderr, "Error when initializing log client: %v", err)
		return
	}
    ...
}

Here is the complete example for logs ingestion.

Options

Following options can be used to create the logs api client.

Option Description
WithLogBatchingInterval(batchinterval time.Duration) Sets time interval to wait before performing next batching of logs. Default value is 10s.
WithLogBatchingDisabled() Disables batching of logs. Default value is Enabled.
WithGzipCompression(gzip bool) Enables / disables gzip compression of logs payload. Default value is Enabled.
WithRateLimit(requestCount int) Sets limit on the number of requests to logs API per minute. Default value is 100.
WithHTTPClient(client *http.Client) Sets custom HTTP Client. Default http client is configured with timeout of 5s.
WithEndpoint(endpoint string) Sets endpoint to send the logs to. Default value is https://${LOGICMONITOR_ACCOUNT}.logicmonitor.com/rest/
WithResourceMappingOperation(op string) Sets resource mapping operation. Valid operations are AND & OR.
WithUserAgent(userAgent string) Sets user agent.
WithAuthentication(authParams utils.AuthParams) Sets authentication parameters.

License

Copyright, 2023, LogicMonitor, Inc.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/.