https://github.com/logicmonitor/lm-telemetry-sdk-java
LM Telemetry SDK for JAVA
https://github.com/logicmonitor/lm-telemetry-sdk-java
Last synced: 8 months ago
JSON representation
LM Telemetry SDK for JAVA
- Host: GitHub
- URL: https://github.com/logicmonitor/lm-telemetry-sdk-java
- Owner: logicmonitor
- Created: 2021-09-20T10:20:20.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-03-06T06:28:37.000Z (over 3 years ago)
- Last Synced: 2025-04-13T21:05:34.128Z (about 1 year ago)
- Language: Java
- Size: 130 KB
- Stars: 0
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# **LM Telemetry SDK Java**
[![Java CI with Gradle][ci-image]][ci-url]
[![codecov][codecov-image]][codecov-url]
LM Telemetry SDK java is a wrapper around OpenTelemetry SDK. If you are using LM Telemetry SDK in the application then no need to add OpenTelemetry SDK dependency as it is fetched transitively.
This SDK currently detects Resources on the platforms like
- AWS Elastic Compute Cloud
- AWS Lambda
- Azure VM
- Google Cloud Compute Engine (GCE)
## Getting Started
### Auto Instrumentation
Check [latest agent version](https://github.com/logicmonitor/lm-telemetry-sdk-java/releases/latest)
For java Auto instrumentation Logicmonitor provides lm-agent which have all Opentelemetry provided instrumentation support.
### Auto Instrument your app
```java
java -javaagent:/path/lm-telemetry-agent--alpha.jar \
-Dotel.exporter=otlp \
-Dotel.resource.attributes=service.namespace=,service.name= \
-Dotel.exporter.otlp.endpoint=http://localhost:4317 \
-Dotel.exporter.otlp.insecure=true \
-jar
```
By default, the lm-telemetry Java agent uses OTLP exporter configured to send data to lm-otel collector at http://localhost:4317.
### Manual Instrumentation
Check [Github Package](https://github.com/logicmonitor/lm-telemetry-sdk-java/packages/1615817)
### Gradle
```groovy
dependencies {
implementation ('com.logicmonitor:lm-telemetry-sdk:0.0.1-alpha')
}
```
### Maven
```xml
com.logicmonitor
lm-telemetry-sdk
0.0.1-alpha
```
##### Using LMResourceDetector to detect resource
```java
Resource serviceResource = LMResourceDetector.detect();
//Create Span Exporter
OtlpGrpcSpanExporter spanExporter = OtlpGrpcSpanExporter.builder()
.setEndpoint("http://localhost:4317")
.build();
//Create SdkTracerProvider
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(spanExporter)
.setScheduleDelay(100, TimeUnit.MILLISECONDS).build())
.setResource(serviceResource)
.build();
```
You can also use environment variable or system properties
listed on [OpenTelemetry Document](https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure/README.md#opentelemetry-resource)
to provide resource information.
| System property | Environment variable | Description |
|--------------------------|--------------------------|------------------------------------------------------------------------------------|
| otel.resource.attributes | OTEL_RESOURCE_ATTRIBUTES | Specify resource attributes in the following format: key1=val1,key2=val2,key3=val3 |
| otel.service.name | OTEL_SERVICE_NAME | Specify logical service name. Takes precedence over `service.name` defined with `otel.resource.attributes` |
For Manual Instrumentation refer [Example](https://github.com/logicmonitor/lm-telemetry-sdk-java/tree/main/example/java-manual-instrumentation)
## OpenTelemetry Component Dependency
List of OpenTelemetry Component Dependencies
| Component | Version |
|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------|
| [Trace API](https://github.com/open-telemetry/opentelemetry-java/tree/v1.20.1/api) | v1.20.1 |
| [Trace SDK](https://github.com/open-telemetry/opentelemetry-java/tree/v1.20.1/sdk) | v1.20.1 |
| [OpenTelemetry SDK Autoconfigure](https://github.com/open-telemetry/opentelemetry-java/tree/v1.20.1/sdk-extensions/autoconfigure) | v1.20.1-alpha |
| [OpenTelemetry AWS Utils](https://github.com/open-telemetry/opentelemetry-java-contrib/tree/v1.20.1/aws-resources) | v1.20.1 |
| [OpenTelemetry Semantic Conventions](https://github.com/open-telemetry/opentelemetry-java/tree/v1.20.1/semconv) | v1.20.1 |
| [OpenTelemetry Resource Providers](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/v1.20.1/instrumentation/resources/library) | v1.20.1 |
[ci-image]: https://github.com/logicmonitor/lm-telemetry-sdk-java/actions/workflows/gradle.yml/badge.svg?branch=main
[ci-url]: https://github.com/logicmonitor/lm-telemetry-sdk-java/actions/workflows/gradle.yml
[codecov-image]: https://codecov.io/gh/logicmonitor/lm-telemetry-sdk-java/branch/main/graph/badge.svg?token=ONPPMTKE7F
[codecov-url]: https://codecov.io/gh/logicmonitor/lm-telemetry-sdk-java