inspectIT Ocelot Demo Application
inspectIT Ocelot Demo
If you would like to see inspectIT Ocelot in action with a demo application, you can use the docker compose examples described below.
The distributed version of the Spring PetClinic sample application is used as the target application.
To demonstrate the flexibility of the OpenCensus based inspectIT agent, different demo scenarios covering different monitoring and APM components are provided.
All the demo scenarios are fully configured with predefined dashboards, so you can get started in 5 minutes.
Launching the Demo
warning
Currently, the demo is only available as Docker images for the AMD64 architecture.
On ARM platforms there may be problems with the execution.
Pre-requisites: To launch the demo, Docker needs to be installed on your system. If you are using Docker Desktop or running Docker in a virtual machine, ensure that Docker has at least 4GB main memory assigned.
Either download or clone the inspectIT Ocelot-Demo GitHub repository.
Change into the spring-petclinic-docker-demo/
directory and execute the following command to launch the desired demo scenario (replace [SCENARIO_POSTFIX] with the postfix of the scenario you would like to launch):
$ docker-compose -f docker-compose-[SCENARIO_POSTFIX].yml up
This will start all the Docker containers required for the corresponding demo scenario, including the PetClinic demo application.
You can access the demo application (PetClinic) under http://localhost:8080. Details on accessing monitoring infrastructure components are listed below, depending on the selected demo scenario.
Starting the Demo on Windows Using WSL
note
Using current versions of Docker Desktop and WSL 2 will work without this workaround.
If you want to execute the demo on Windows using the Windows subsystem for linux (WSL), you have to mount your hard drive to the WSL's root directory due to a problem of Docker for Windows and its volume mounting.
For example, mounting your C drive to the root file system can be achieved using the following commands:
sudo mkdir /c
sudo mount --bind /mnt/c /c
For more information, check out the following blog post: Setting Up Docker for Windows and WSL to Work Flawlessly
Demo Scenarios
In all scenarios you can use
admin
as username anddemo
as password for accessing Grafana and the inspectIT Ocelot Configuration Server.
Demo #1 - Prometheus, Grafana and Jaeger
Uses Prometheus Server for metrics gathering and storage, Grafana for Dashboards. Traces are exported to Jaeger.
- File:
docker-compose-prometheus-jaeger.yml
- OpenAPM Landscape
In this scenario the following components are preconfigured and used for monitoring:
- inspectIT Ocelot agent: Instruments all the target demo application components.
- inspectIT Ocelot EUM server: Records the user's behaviour or actions while using the demo application.
- Prometheus Server: Gathers metrics exposed by the agent.
- Grafana: Provides predefined example Dashboards visualizing the metrics collected by the inspectIT Ocelot agent.
- Jaeger: Jaeger is used to store and query all recorded traces.
You can access Grafana through http://localhost:3000 and the configuration server via http://localhost:8090.
The traces can be viewed in Jaeger on http://localhost:16686.
Prometheus can be accessed through http://localhost:9090.
note
Currently the EUM-Server dashboards are only supported for the InfluxDB demos. You may use the Explore
view in Grafana to view the EUM server metrics.
Demo #2 - InfluxDB and Jaeger
Uses InfluxDB for metrics storage and Grafana for Dashboards. Traces are exported to Jaeger.
- File:
docker-compose-influxdb-jaeger.yml
- OpenAPM Landscape
In this scenario the following components are preconfigured and used for monitoring:
- inspectIT Ocelot agent: Instruments all the target demo application components.
- inspectIT Ocelot EUM server: Records the user's behaviour or actions while using the demo application.
- InfluxDB: Stores metric data exported by OpenCensus as time series.
- Grafana: Provides predefined example Dashboards visualizing the metrics collected by the inspectIT Ocelot agent. The query language InfluxQL is used to query the data from InfluxDB.
- Jaeger: Jaeger is used to store and query all recorded traces.
You can access Grafana through http://localhost:3000 and the configuration server via http://localhost:8090. The traces can be viewed in Jaeger on http://localhost:16686.
Demo #3 - InfluxDB and Zipkin
Uses InfluxDB for metrics storage and Grafana for Dashboards. Traces are exported to Zipkin.
- File:
docker-compose-influxdb-zipkin.yml
- OpenAPM Landscape
In this scenario the following components are preconfigured and used for monitoring:
- inspectIT Ocelot agent: Instruments all the target demo application components.
- inspectIT Ocelot EUM server: Records the user's behaviour or actions while using the demo application.
- InfluxDB: Stores metric data exported by OpenCensus as time series.
- Grafana: Provides predefined example Dashboards visualizing the metrics collected by the inspectIT Ocelot agent. The query language InfluxQL is used to query the data from InfluxDB.
- Zipkin: Zipkin is used to store and query all recorded traces.
You can access Grafana through http://localhost:3000 and the configuration server via http://localhost:8090. The traces can be viewed in Zipkin on http://localhost:9411.
note
Currently, of the EUM dashboards only the Beacons one is working for this scenario.
Demo Grafana Dashboards
The InfluxDB and Prometheus demo scenarios include the following predefined Grafana Dashboards:
Agent
Name + Grafana Marketplace | Description | Screenshot |
---|---|---|
Service Graph [InfluxDB] [Prometheus] | Shows a graph of all instrumented and external services and their interaction. All flows are derived based on live metrics. | |
HTTP Metrics [InfluxDB] [Prometheus] | Shows statistics of incoming and outgoing HTTP requests for each instrumented service. | |
System Metrics [InfluxDB] [Prometheus] | Shows system metrics, such as system CPU utilization, load average and disk usage. | |
JVM Metrics [InfluxDB] [Prometheus] | Shows JVM metrics related to JVM CPU usage, Memory (Heap and Non-Heap) and Garbage Collection. | |
Self Monitoring [InfluxDB] [Prometheus] | Shows the instrumentation state and progress based on self monitoring metrics. |
End User Monitoring
Changing Agent Configurations
In all demo scenarios the inspectIT Ocelot agents already have their service names and used ports as well as a basic instrumentation set up. Each scenario uses the inspectIT Ocelot Configuration Server for managing and providing the configuration files to the agents. The web UI of the configuration server can be accessed via localhost:8090.
The demo starts the following services, of which each is instrumented with an inspectIT Ocelot Agent:
- config-server
- discovery-server
- customers-service
- visits-service
- vets-service
- api-gateway
Load Test
All demo scenarios launch with a load test written in artillery that simulates user behavior. For 10 minutes approximately every 3 seconds a new virtual user is created which either looks up a random owner from the database or edits the pet type of an existing animal. Therefore, no real user interaction with the PetClinic is needed to generate data.
Further Scenarios
For demonstrations on how to use inspectIT Ocelot with tools other than the ones in the demo scenarios described above, you can also take a look at the following blog posts:
- Ocelot meets Bits - Enhanced Observability for Datadog
- Ocelot meets Lightstep - Enhanced Tracing with Lightstep
- Ocelot meets Wavefront - Enhanced Tracing with Wavefront
- Ocelot meets Elastic - Better Java Instrumentation for Elastic APM via Jaeger
note
If you have any examples of your own, additions to this list are happily welcome!