{"id":15137823,"url":"https://github.com/inspectit/inspectit-ocelot","last_synced_at":"2025-05-16T11:04:33.737Z","repository":{"id":37412651,"uuid":"160148747","full_name":"inspectIT/inspectit-ocelot","owner":"inspectIT","description":"inspectIT Ocelot - Java agent for collecting application performance, tracing and behavior data","archived":false,"fork":false,"pushed_at":"2025-05-14T09:25:20.000Z","size":115379,"stargazers_count":209,"open_issues_count":107,"forks_count":70,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-05-14T10:46:09.344Z","etag":null,"topics":["agent","apm","application-monitoring","configuration-server","java-agent","jvm","monitoring","observability","openapm","opencensus","opentelemetry"],"latest_commit_sha":null,"homepage":"http://www.inspectit.rocks/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inspectIT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-03T07:19:51.000Z","updated_at":"2025-05-13T13:50:23.000Z","dependencies_parsed_at":"2024-02-07T09:47:50.208Z","dependency_job_id":"bc056f92-dadb-41e0-8a8b-20326b4a577f","html_url":"https://github.com/inspectIT/inspectit-ocelot","commit_stats":{"total_commits":887,"total_committers":46,"mean_commits":"19.282608695652176","dds":0.7666290868094701,"last_synced_commit":"63a823020de094311c0b199e8a914f3285ff4934"},"previous_names":[],"tags_count":66,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspectIT%2Finspectit-ocelot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspectIT%2Finspectit-ocelot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspectIT%2Finspectit-ocelot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inspectIT%2Finspectit-ocelot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inspectIT","download_url":"https://codeload.github.com/inspectIT/inspectit-ocelot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518384,"owners_count":22084374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","apm","application-monitoring","configuration-server","java-agent","jvm","monitoring","observability","openapm","opencensus","opentelemetry"],"created_at":"2024-09-26T07:02:28.472Z","updated_at":"2025-05-16T11:04:28.722Z","avatar_url":"https://github.com/inspectIT.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![inspectIT Ocelot ](https://inspectit.github.io/inspectit-ocelot/images/inspectit-ocelot.png)\n\n# inspectIT Ocelot \n\n[![Release](https://jitpack.io/v/inspectit/inspectit-ocelot.svg)](https://jitpack.io/#inspectit/inspectit-ocelot)\n[![Code Coverage](https://codecov.io/gh/inspectit/inspectit-ocelot/branch/master/graph/badge.svg)](https://codecov.io/gh/inspectIT/inspectit-ocelot)\n[![Java Agent Tests](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/agent_test.yml/badge.svg)](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/agent_test.yml)\n[![Configuration Server Tests](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/configurationserver_test.yml/badge.svg)](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/configurationserver_test.yml)\n[![Configuration UI Tests](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/configuration_ui_test.yml/badge.svg)](https://github.com/inspectIT/inspectit-ocelot/actions/workflows/configuration_ui_test.yml)\n\n[inspectIT Ocelot](https://inspectit.rocks/) is a zero-configuration Java agent for dynamically collecting application performance,\n tracing and behavior data based on the [OpenTelemetry SDK](https://github.com/open-telemetry/opentelemetry-java) for Tracing and [OpenCensus library](https://opencensus.io/) for Metrics-Export.\nDespite the zero-configuration capability, it provides a powerful configuration feature\n which enables a full and in-depth customization of all features.\nIn order to use inspectIT Ocelot, the source code of the target application does\n**not** have to be touched, changed or modified - even access to the actual source code is not required.\nIt automatically injects all required components and executes the necessary actions by itself.\n\nCompared to the former [inspectIT](https://github.com/inspectIT/inspectIT),\nOcelot follows the approach of focusing on compatibility and interaction with other awesome open source tools.\nFor this purpose the agent includes data exporters for tools and frameworks like [Prometheus](https://prometheus.io/), [Zipkin](https://zipkin.io/) or [Jaeger](https://www.jaegertracing.io/).\nThis allows us to use and interact with well-known and established tools like [Elasticsearch](https://www.elastic.co/products/elasticsearch), [InfluxDB](https://www.influxdata.com/) or [Grafana](https://grafana.com/),\nreducing the amount of components which have to be introduced into an existing infrastructure or which need to be familiarized with.\n\n## Collected Data\n\nThe inspectIT Ocelot Java agent collects a lot of different data, namely metrics and traces.\nYou can fully customize the metrics and traces you want to collect via the [configuration](https://inspectit.github.io/inspectit-ocelot/docs/next/instrumentation/instrumentation).\nWith respect to our zero-configuration goal, the agent already ships with a default configuration capturing useful data for you.\n\nFor example, the following system and JVM metrics are captured by default:\n  * CPU (usage and number of cores)\n  * Disk Space (used, free and total)\n  * Memory (used and available for various regions like heap or non-heap)\n  * Threads (counts and states)\n  * Garbage Collection (pause times and collection statistics)\n  * Class Loading (loaded and unloaded counts)\n  \nIn addition, the response times for sent and received HTTP requests are collected\nand tagged with relevant information such as the response code or the HTTP method.\n\nOcelot also collects response times and invocation counts for remote calls between your services.\nHereby, it is automatically detected whether the call was made to an internal or external service.\nThe resulting metric can then then be visualized for example\nusing the [Grafana Service Graph Panel](https://github.com/NovatecConsulting/novatec-service-dependency-graph-panel):\n\n![Service Graph](https://inspectit.github.io/inspectit-ocelot/images/service-graph.PNG)\n\nIn addition, the agent provides out-of-the-box support for tracing, even across JVM borders.\nYou can easily record your traces and enrich them with metadata extracted from your application at runtime:\n\n![Distributed Tracing](https://inspectit.github.io/inspectit-ocelot/images/distributed-tracing.PNG)\n\nCheckout the [documentation](https://inspectit.github.io/inspectit-ocelot/) to find out how you can extract custom metrics and traces.\n\n## Demo\n\nYou want to see the inspectIT Ocelot Java agent in action?\nNo problem!\nWe've prepared a nice containerized demo to show what the agent is capable of.\nThe demo consists of two different scenarios, whereby we would like to emphasize the flexibility of the agent and therefore each scenario uses a different set of tools.\n\nAll you have to do is to download the [demo archive](https://github.com/inspectIT/inspectit-ocelot/releases/latest) and start it with docker-compose:\n\n* `$ docker-compose -f docker-compose-prometheus-jaeger.yml up`\n* `$ docker-compose -f docker-compose-influxdb-jaeger.yml up`\n* `$ docker-compose -f docker-compose-influxdb-zipkin.yml up`\n\nCheck out the [documentation's demo section](https://inspectit.github.io/inspectit-ocelot/docs/getting-started/docker-examples) for detailed information on each scenario.\n\n## Installation\n\nGetting started with the inspectIT Ocelot Java agent is very easy!\n\nFirst of all, you have to download the Java agent.\nYou can find all released versions in the release section of this repository: https://github.com/inspectIT/inspectit-ocelot/releases\n\nThe easiest way to use the inspectIT Ocelot Java agent is to attach it to your Java application during startup.\nThis can be achieved using the `-javaagent` command-line option of your JVM and referencing the agent Jar:\n\n    $ java -javaagent:\"/path/to/inspectit-ocelot-agent.jar\" -jar my-java-program.jar\n\n#### Attaching the Agent to a Running JVM\n\nWe also support attaching the inspectIT Ocelot Java agent to an already running JVM.\nIn such a scenario the collection of metrics and traces will start from the point of the attachment.\nPlease read the [documentation](https://inspectit.github.io/inspectit-ocelot/docs/getting-started/installation#attaching-the-agent-to-a-running-jvm) how this can be achieved.\n\n## Configuration\n\nThe inspectIT Ocelot Java agent offers a comprehensive configuration capability which allows you to customize all properties to your own needs.\nIn addition, the agent also supports **hot reloading** for its configuration which makes it possible to modify individual configuration settings during runtime without having to restart the application, which is usually the case.\n\nThe configuration hot reloading feature also allows you to start the agent in a kind of \"standby state\" with deactivated features and activate these at a later point in time.\n\nCurrently, the configuration values can be set using [environment variables, system properties](https://inspectit.github.io/inspectit-ocelot/docs/configuration/configuration-sources#java-system-properties) or [configuration files](https://inspectit.github.io/inspectit-ocelot/docs/configuration/external-configuration-sources#file-based-configuration).\nThis allows you to pass configuration values to the agents by, for example, using Puppet to set specific properties or using Ansible to roll out updated configuration files which then will be hot reloaded.\n \nFor detailed information about the configuration see the [related section of the documentation](https://inspectit.github.io/inspectit-ocelot/docs/configuration/configuration-sources).\n\n## Documentation\n\nA detailed user documentation can be found at: http://docs.inspectit.rocks/\n\nYou need a documentation of an earlier version? No problem! All the released documentation can be found [here](https://inspectit.github.io/inspectit-ocelot/versions).\n\nIf you cannot wait for the next stable release and want to use an agent based on the current master branch, the corresponding documentation can be found [here](https://inspectit.github.io/inspectit-ocelot/docs/next/doc1).  \n\n## Contribution and Development\n\nIf you want to contribute anything to this project, feel free to open a pull request or reach out to us!\nA good starting point is the [CONTRIBUTING.md](CONTRIBUTING.md).\n\nIf you need additional or in-depth information on the actual implementation of inspectIT Ocelot, check out the README files in the child projects of this repository. \n\n#### Thanks to all people who have already contributed!\n\n\u003ca href=\"https://github.com/inspectit/inspectit-ocelot/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contributors-img.web.app/image?repo=inspectit/inspectit-ocelot\" /\u003e\n\u003c/a\u003e\n\n## How to Release\n\nImportant tasks to check first are `dependencyUpdates` or `dependencyUpdates[Major|Minor]` for newer (patch, minor, major)\nversions, the `outdated` task for node modules and `dependencyCheckAnalyze` or `dependencyCheckAggregate` for security issues in the used dependencies (including node modules).\nAll dependency versions are maintained in one [catalog](gradle/libs.version.toml) file. The task `versionCatalogUpdate[ConfigServerLibs] --interactive` creates a copy of the catalog file with all version\nupdates. This file can also be edited manually and be applied with `versionCatalogApplyUpdates[ConfigServerLibs]`.\n\n## FAQ\n\n#### Is it pronounced inspect-\"IT\" or \"it\"?\n\nIt's like \"inspect it\" and not like IT in information technology. `/ɪnˈspektɪt/` :) \n\n#### Can I use the agent on an application using Java 6?\n\nNo. The Java agent is developed against Java 8, thus, the application which you want to attach the agent to have to be using a JVM running on Java 8 or higher.\n\n#### Does the agent require a specific JVM in order to run properly?\n\nNo. The agent is compatible to and can be used with any kind of JVM (Oracle JVM, an OpenJDK, an IBM JVM, ...), as long as it supports the `javaagent` argument and provides Java 8 or higher.\n\n#### My application is already using OpenCensus. Can I use the agent anyway?\n\nYes, you can use the inspectIT Ocelot Java agent if you already use the OpenCensus library.\nHowever, there are a few points that need to be considered to ensure a smooth operation.\nPlease read the [corresponding section in the documentation](https://inspectit.github.io/inspectit-ocelot/docs/next/configuration/open-census-configuration).\n\n#### How can I start my application with the inspectIT Ocelot Java agent?\n\nWe have a [detailed section in the documentation](https://inspectit.github.io/inspectit-ocelot/docs/next/getting-started/installation) about this topic.\nThe easiest way is to add the `javaagent` argument to your Java command like [described above](#installation).\n\n#### My Java application does not start or it exits immediately when I use the agent.\n\nIn this case, check your Java command and ensure that you have not accidentally removed your application.\nYou'll most likely have a command like `java -javaagent:inspectit-ocelot-agent.jar` or `java -javaagent:inspectit-ocelot-agent.jar -version`. \nStarting Java without an application but the agent will work but does not make sense because the agent will initialize itself and then the JVM will properly shut down because it has no application to execute.\nIt's like executing just `java`.\n\n## Behind the Scenes\n\ninspectIT Ocelot is mainly driven by [Novatec Consulting GmbH](https://www.novatec-gmbh.de/), a German consultancy firm that specializes in software performance.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspectit%2Finspectit-ocelot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finspectit%2Finspectit-ocelot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finspectit%2Finspectit-ocelot/lists"}