https://github.com/logicmonitor/lm-data-sdk-go
https://github.com/logicmonitor/lm-data-sdk-go
Last synced: 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/logicmonitor/lm-data-sdk-go
- Owner: logicmonitor
- License: mpl-2.0
- Created: 2022-05-24T05:48:42.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2025-07-04T06:30:54.000Z (12 months ago)
- Last Synced: 2026-02-12T07:07:40.499Z (4 months ago)
- Language: Go
- Size: 297 KB
- Stars: 1
- Watchers: 4
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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:
```bash
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:
```go
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](https://github.com/logicmonitor/lm-data-sdk-go/blob/main/example/metrics/metricsingestion.go) 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:
```go
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](https://github.com/logicmonitor/lm-data-sdk-go/blob/main/example/logs/logsingestion.go) 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/.