Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/inspectit/inspectit-gepard-agent
This repository contains the inspectIT Gepard OpenTelemetry Extension.
https://github.com/inspectit/inspectit-gepard-agent
Last synced: 3 days ago
JSON representation
This repository contains the inspectIT Gepard OpenTelemetry Extension.
- Host: GitHub
- URL: https://github.com/inspectit/inspectit-gepard-agent
- Owner: inspectIT
- Created: 2024-05-16T13:09:23.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-10-21T09:32:04.000Z (24 days ago)
- Last Synced: 2024-10-21T13:37:50.189Z (24 days ago)
- Language: Java
- Size: 303 KB
- Stars: 1
- Watchers: 8
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# inspectIT Gepard Extension
Extension for the OpenTelemetry Java agent.
inspectIT Gepard is the further development of [inspectIT Ocelot](https://github.com/inspectIT/inspectit-ocelot).
While the inspectIT Ocelot Java agent is self-made, inspectIT Gepard uses the OpenTelemetry Java agent as basis
and extends it with features from inspectIT Ocelot.## Main Features
We want to enable **dynamic instrumentation** with the OpenTelemetry agent.
This means, that you can change your instrumentation **during runtime**.
For example, you can add new methods to your tracing or record data for new metrics, everything without restarting your application!The instrumentation configuration will be fetched from a remote server regularly.
The server's url is configurable via the property `inspectit.config.http.url`We are also developing our own [configuration server](https://github.com/inspectIT/inspectit-gepard-agentmanager).
## Installation
To build this extension project, run `./gradlew build` or `./gradlew extendedAgent` (no tests).
You can find the resulting jar file in `build/libs/`.To add the extension to the instrumentation agent:
1. Copy the jar file to a host that is running an application to which you've attached the OpenTelemetry Java instrumentation.
2. Modify the startup command to add the full path to the extension file. For example:```bash
java -javaagent:path/to/opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=build/libs/opentelemetry-javaagent.jar \
-Dotel.service.name="my-service"
-jar myapp.jar
```Note: to load multiple extensions, you can specify a comma-separated list of extension jars or directories (that
contain extension jars) for the `otel.javaagent.extensions` value.## Network communication
The extension contains a client, who is able to communicate with other servers via HTTPS.
You can set the server url via system or environmental properties.
You have the option to use a keystore for TLS:1. Provide a local keystore, which contains the certificate of your server
2. Modify the startup command to add the path to the keystore as well as the password. For example:```bash
java -javaagent:path/to/opentelemetry-javaagent.jar \
-Dotel.javaagent.extensions=build/libs/opentelemetry-javaagent.jar \
-Dotel.service.name="my-service" \
-Dinspectit.config.http.url="https://{server-host:port}/api/v1" \
-Djavax.net.ssl.trustStore="path\to\keystore\agent-keystore.jks" \
-Djavax.net.ssl.trustStorePassword="password"
-jar myapp.jar
```## Further Information
The repository was build upon this example project: https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/examples/extension
## Docker
To push a new Docker image, run the following commands:
1. `./gradlew dockerTag`
2. `docker login -u -p `
3. `docker push inspectit/inspectit-gepard-agent:`### Why Gepard?
Gepard is the German name for the animal cheetah as well as an acronym for:"**G**anzheitliche, **e**ffizienz-orientierte, **P**erformance **A**nwendungsüberwachung mit **R**eporting und **D**iagnose",
which means: holistic, efficiency-orientated, performance application monitoring with reporting and diagnostics.
### Limitations
Currently, it is not tested to instrument methods of **lambdas** or synthetic methods.