diff --git a/examples/notebooks/basics.ipynb b/examples/notebooks/basics.ipynb new file mode 100644 index 0000000..5128f06 --- /dev/null +++ b/examples/notebooks/basics.ipynb @@ -0,0 +1,51623 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "36bcf381-ba3b-4bb2-9181-27910333e69d", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "# OpenTelemetry for Developers, Data Engineers and Data Scientists\n", + "\n", + "> Welcome to our quick guide to [OpenTelemetry](https://opentelemetry.io/) for Developers, Data Engineers, Data Scientists and just about everyone who prefers to learn by looking at actual data.\n", + "> \n", + "> In the following sections we'll introduce the various OpenTelemetry signals - `logs`, `metrics`, `traces` and the upcoming `profiles` as well as additional concepts like `resources` and `scopes`.\n", + "> Samples shown are based on actual OpenTelemetry data emitted by a [demo Astronomy webshop app](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) and collected by [an OTLP Parquet collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) developed by [mishmash.io](https://mishmash.io/).\n", + ">\n", + "> At [mishmash.io](https://mishmash.io/) we use OpenTelemetry as a development tool to help us:\n", + "> - develop faster and more efficient distributed database\n", + "> - ensure the quality of each release\n", + "> - apply deep analytics to understand better the complexities of distributed computing\n", + ">\n", + "> To find out more visit our [Open Source Development Tools page.](https://mishmash.io/open_source)\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "# OpenTelemetry for Developers, Data Engineers and Data Scientists\n", + "\n", + "> Welcome to our quick guide to [OpenTelemetry](https://opentelemetry.io/) for Developers, Data Engineers, Data Scientists and just about everyone who prefers to learn by looking at actual data.\n", + "> \n", + "> In the following sections we'll introduce the various OpenTelemetry signals - `logs`, `metrics`, `traces` and the upcoming `profiles` as well as additional concepts like `resources` and `scopes`.\n", + "> Samples shown are based on actual OpenTelemetry data emitted by a [demo Astronomy webshop app](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) and collected by [an OTLP Parquet collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) developed by [mishmash.io](https://mishmash.io/).\n", + ">\n", + "> At [mishmash.io](https://mishmash.io/) we use OpenTelemetry as a development tool to help us:\n", + "> - develop faster and more efficient distributed database\n", + "> - ensure the quality of each release\n", + "> - apply deep analytics to understand better the complexities of distributed computing\n", + ">\n", + "> To find out more visit our [Open Source Development Tools page.](https://mishmash.io/open_source)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8d22f233-c45e-4938-81c9-88839d8be646", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# First, we'll need some imports\n", + "# To illustrate we'll use Pandas DataFrames\n", + "import pandas as pd\n", + "# PyArrow to read Apache Parquet files\n", + "import pyarrow as pa\n", + "# ...and NumPy\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "df51439f-8f25-4fe4-9e55-75bb6177bb55", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# As the example DataFrames might contain a lot of columns and rows, let's configure a more appropriate way of displaying them:\n", + "pd.set_option('display.max_columns', None)\n", + "pd.set_option('display.min_rows', 100)\n", + "pd.set_option('display.max_rows', 200)\n", + "pd.options.display.max_colwidth = 100\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e0de58e3-d24f-40ea-ba44-568b38f198aa", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "---\n", + "\n", + "# Logs signal\n", + "\n", + "Let's begin with the [OpenTelemetry logs signal.](https://opentelemetry.io/docs/specs/otel/logs/)\n", + "\n", + "As the name suggests it contains individual log messages generated by your code and the libraries you're using. Includes timestamps (in the \n", + "`time_unix_nano` and `observed_time_unix_nano` columns), severity level [INFO, WARNING, ERROR...] (in the `severity_number` and `severity_text` columns),\n", + "the log message itself (in the `body_*` columns) and additional `attributes` (more about attributes below).\n", + "\n", + "A notable OpenTelemetry extension over traditional logging is the ability to correlate log messages to the traces (`trace_id` column) and spans (`span_id` column) within which they were generated. (`traces` are intoduced later in this notebook.)\n", + "\n", + "Let's jump to exploring some raw `logs.`\n", + "\n", + "> ***Note:*** Raw data displayed below is ***as recorded by*** our [Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet), which adds a few extra columns:\n", + "> - `batch_timestamp`\n", + "> - `batch_UUID`\n", + "> - `seq_no`\n", + "> - `is_valid`\n", + "> - and `error_message`\n", + "> \n", + "> These columns are not part of the original OpenTelemetry data format and are added by our Parquet collector to simplify certain data operations. To find out more take a look at the [Parquet OTLP collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) docs.\n", + "\n", + "***Note:*** The DataFrame below might be too wide for your screen - use its horizontal scroller to see all columns.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "---\n", + "\n", + "# Logs signal\n", + "\n", + "Let's begin with the [OpenTelemetry logs signal.](https://opentelemetry.io/docs/specs/otel/logs/)\n", + "\n", + "As the name suggests it contains individual log messages generated by your code and the libraries you're using. Includes timestamps (in the \n", + "`time_unix_nano` and `observed_time_unix_nano` columns), severity level [INFO, WARNING, ERROR...] (in the `severity_number` and `severity_text` columns),\n", + "the log message itself (in the `body_*` columns) and additional `attributes` (more about attributes below).\n", + "\n", + "A notable OpenTelemetry extension over traditional logging is the ability to correlate log messages to the traces (`trace_id` column) and spans (`span_id` column) within which they were generated. (`traces` are intoduced later in this notebook.)\n", + "\n", + "Let's jump to exploring some raw `logs.`\n", + "\n", + "> ***Note:*** Raw data displayed below is ***as recorded by*** our [Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet), which adds a few extra columns:\n", + "> - `batch_timestamp`\n", + "> - `batch_UUID`\n", + "> - `seq_no`\n", + "> - `is_valid`\n", + "> - and `error_message`\n", + "> \n", + "> These columns are not part of the original OpenTelemetry data format and are added by our Parquet collector to simplify certain data operations. To find out more take a look at the [Parquet OTLP collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) docs.\n", + "\n", + "***Note:*** The DataFrame below might be too wide for your screen - use its horizontal scroller to see all columns." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "e1daaa35-515b-4087-997c-dbec164dbf3e", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
batch_timestampbatch_UUIDseq_noresource_attributesresource_dropped_attributes_countresource_schema_urlscope_namescope_versionscope_attributesscope_dropped_attributes_counttime_unix_nanoobserved_time_unix_nanoseverity_numberseverity_textbody_typebody_stringbody_boolbody_intbody_doublebody_arraybody_kvlistbody_bytesattributesdropped_attributes_countflagstrace_idspan_idlog_schema_urlis_validerror_message
017236269385847d3116f7-be82-47cb-8c71-1e7b63dfe62b0[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269334296604161723626933429750407b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUERecommendation service started, listening on port 8080[{'key': 'otelSpanID', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'do...00b''b''True
117236269387726284e3b9-642f-42b5-911e-5cd9032d89430[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0org.apache.kafka.common.utils.LoggingSignalHandler[]017236269382227491521723626938222760652b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUERegistered signal handlers for TERM, INT, HUP[]00b''b''True
217236269387726284e3b9-642f-42b5-911e-5cd9032d89431[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.utils.Log4jControllerRegistration$[]017236269378858823491723626937885898237b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUERegistered kafka:type=kafka.Log4jController MBean[]00b''b''True
317236269387726284e3b9-642f-42b5-911e-5cd9032d89432[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.ControllerServer[]017236269382289942681723626938229003786b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[ControllerServer id=1] Starting controller[]00b''b''True
417236269387726284e3b9-642f-42b5-911e-5cd9032d89433[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0org.apache.zookeeper.common.X509Util[]017236269380940349741723626938094042403b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUESetting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg...[]00b''b''True
51723626939174819ad977-36f4-4eff-830e-a5cdad589bf90[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269340661176320b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEInstrumentation complete[{'key': 'code.filepath', 'value': {'string_value': '/usr/src/app/locustfile.py', 'bool_value': ...00b''b''True
61723626939174819ad977-36f4-4eff-830e-a5cdad589bf91[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269340810923520b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEStarting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)[{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc...00b''b''True
71723626939174819ad977-36f4-4eff-830e-a5cdad589bf92[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269340949954560b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEStarting Locust 2.18.2[{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc...00b''b''True
81723626939174819ad977-36f4-4eff-830e-a5cdad589bf93[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269340951751680b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUENo run time limit set, use CTRL+C to interrupt[{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc...00b''b''True
91723626939174819ad977-36f4-4eff-830e-a5cdad589bf94[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269341023905280b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUERamping to 10 users at a rate of 1.00 per second[{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc...00b''b''True
101723626939174819ad977-36f4-4eff-830e-a5cdad589bf95[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.sdk._logs._internal[]017236269351282283520b'SEVERITY_NUMBER_ERROR'ERRORSTRING_VALUEError ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage'[{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/ope...00b''b''True
11172362693977876210e49-002e-4720-bb45-b37bd3d7d2530[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269391377097311723626939137715614b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[controller-1-to-controller-registration-channel-manager]: Starting[]00b''b''True
12172362693977876210e49-002e-4720-bb45-b37bd3d7d2531[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269391385677901723626939138571296b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ...[]00b''b''True
13172362693977876210e49-002e-4720-bb45-b37bd3d7d2532[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269391676772701723626939167687867b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-forwarding-channel-manager]: Starting[]00b''b''True
14172362693977876210e49-002e-4720-bb45-b37bd3d7d2533[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269391679208151723626939167924714b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u...[]00b''b''True
15172362693977876210e49-002e-4720-bb45-b37bd3d7d2534[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392078219881723626939207830541b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-alter-partition-channel-manager]: Starting[]00b''b''True
16172362693977876210e49-002e-4720-bb45-b37bd3d7d2535[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392081414461723626939208146097b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w...[]00b''b''True
17172362693977876210e49-002e-4720-bb45-b37bd3d7d2536[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392150809841723626939215090997b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-directory-assignments-channel-manager]: Starting[]00b''b''True
18172362693977876210e49-002e-4720-bb45-b37bd3d7d2537[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392153017331723626939215307547b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no...[]00b''b''True
19172362693977876210e49-002e-4720-bb45-b37bd3d7d2538[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392849115461723626939284919224b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-heartbeat-channel-manager]: Starting[]00b''b''True
20172362693977876210e49-002e-4720-bb45-b37bd3d7d2539[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.server.NodeToControllerRequestThread[]017236269392851565831723626939285160658b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUE[broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us...[]00b''b''True
21172362693977876210e49-002e-4720-bb45-b37bd3d7d25310[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0kafka.raft.KafkaMetadataLog$[]017236269388218523541723626938821863150b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEInitialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0[]00b''b''True
22172362693977876210e49-002e-4720-bb45-b37bd3d7d25311[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0org.apache.kafka.common.utils.AppInfoParser[]017236269394845186651723626939484521320b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEKafka version: 3.7.0[]00b''b''True
23172362693977876210e49-002e-4720-bb45-b37bd3d7d25312[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0org.apache.kafka.common.utils.AppInfoParser[]017236269394846139651723626939484615956b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEKafka commitId: 2ae524ed625438c5[]00b''b''True
24172362693977876210e49-002e-4720-bb45-b37bd3d7d25313[{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd...0https://opentelemetry.io/schemas/1.24.0org.apache.kafka.common.utils.AppInfoParser[]017236269394846587411723626939484659917b'SEVERITY_NUMBER_INFO'INFOSTRING_VALUEKafka startTimeMs: 1723626939484[]00b''b''True
\n", + "
" + ], + "text/plain": [ + " batch_timestamp batch_UUID seq_no \\\n", + "0 1723626938584 7d3116f7-be82-47cb-8c71-1e7b63dfe62b 0 \n", + "1 1723626938772 6284e3b9-642f-42b5-911e-5cd9032d8943 0 \n", + "2 1723626938772 6284e3b9-642f-42b5-911e-5cd9032d8943 1 \n", + "3 1723626938772 6284e3b9-642f-42b5-911e-5cd9032d8943 2 \n", + "4 1723626938772 6284e3b9-642f-42b5-911e-5cd9032d8943 3 \n", + "5 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 0 \n", + "6 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 1 \n", + "7 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 2 \n", + "8 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 3 \n", + "9 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 4 \n", + "10 1723626939174 819ad977-36f4-4eff-830e-a5cdad589bf9 5 \n", + "11 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 0 \n", + "12 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 1 \n", + "13 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 2 \n", + "14 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 3 \n", + "15 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 4 \n", + "16 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 5 \n", + "17 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 6 \n", + "18 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 7 \n", + "19 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 8 \n", + "20 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 9 \n", + "21 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 10 \n", + "22 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 11 \n", + "23 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 12 \n", + "24 1723626939778 76210e49-002e-4720-bb45-b37bd3d7d253 13 \n", + "\n", + " resource_attributes \\\n", + "0 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "1 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "2 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "3 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "4 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "5 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "6 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "7 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "8 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "9 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "10 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "11 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "12 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "13 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "14 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "15 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "16 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "17 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "18 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "19 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "20 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "21 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "22 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "23 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "24 [{'key': 'container.id', 'value': {'string_value': '21ff29407d6923d0abc595bfc6add4e77bb6a423dfbd... \n", + "\n", + " resource_dropped_attributes_count \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 \n", + "12 0 \n", + "13 0 \n", + "14 0 \n", + "15 0 \n", + "16 0 \n", + "17 0 \n", + "18 0 \n", + "19 0 \n", + "20 0 \n", + "21 0 \n", + "22 0 \n", + "23 0 \n", + "24 0 \n", + "\n", + " resource_schema_url \\\n", + "0 \n", + "1 https://opentelemetry.io/schemas/1.24.0 \n", + "2 https://opentelemetry.io/schemas/1.24.0 \n", + "3 https://opentelemetry.io/schemas/1.24.0 \n", + "4 https://opentelemetry.io/schemas/1.24.0 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 https://opentelemetry.io/schemas/1.24.0 \n", + "12 https://opentelemetry.io/schemas/1.24.0 \n", + "13 https://opentelemetry.io/schemas/1.24.0 \n", + "14 https://opentelemetry.io/schemas/1.24.0 \n", + "15 https://opentelemetry.io/schemas/1.24.0 \n", + "16 https://opentelemetry.io/schemas/1.24.0 \n", + "17 https://opentelemetry.io/schemas/1.24.0 \n", + "18 https://opentelemetry.io/schemas/1.24.0 \n", + "19 https://opentelemetry.io/schemas/1.24.0 \n", + "20 https://opentelemetry.io/schemas/1.24.0 \n", + "21 https://opentelemetry.io/schemas/1.24.0 \n", + "22 https://opentelemetry.io/schemas/1.24.0 \n", + "23 https://opentelemetry.io/schemas/1.24.0 \n", + "24 https://opentelemetry.io/schemas/1.24.0 \n", + "\n", + " scope_name scope_version \\\n", + "0 opentelemetry.sdk._logs._internal \n", + "1 org.apache.kafka.common.utils.LoggingSignalHandler \n", + "2 kafka.utils.Log4jControllerRegistration$ \n", + "3 kafka.server.ControllerServer \n", + "4 org.apache.zookeeper.common.X509Util \n", + "5 opentelemetry.sdk._logs._internal \n", + "6 opentelemetry.sdk._logs._internal \n", + "7 opentelemetry.sdk._logs._internal \n", + "8 opentelemetry.sdk._logs._internal \n", + "9 opentelemetry.sdk._logs._internal \n", + "10 opentelemetry.sdk._logs._internal \n", + "11 kafka.server.NodeToControllerRequestThread \n", + "12 kafka.server.NodeToControllerRequestThread \n", + "13 kafka.server.NodeToControllerRequestThread \n", + "14 kafka.server.NodeToControllerRequestThread \n", + "15 kafka.server.NodeToControllerRequestThread \n", + "16 kafka.server.NodeToControllerRequestThread \n", + "17 kafka.server.NodeToControllerRequestThread \n", + "18 kafka.server.NodeToControllerRequestThread \n", + "19 kafka.server.NodeToControllerRequestThread \n", + "20 kafka.server.NodeToControllerRequestThread \n", + "21 kafka.raft.KafkaMetadataLog$ \n", + "22 org.apache.kafka.common.utils.AppInfoParser \n", + "23 org.apache.kafka.common.utils.AppInfoParser \n", + "24 org.apache.kafka.common.utils.AppInfoParser \n", + "\n", + " scope_attributes scope_dropped_attributes_count time_unix_nano \\\n", + "0 [] 0 1723626933429660416 \n", + "1 [] 0 1723626938222749152 \n", + "2 [] 0 1723626937885882349 \n", + "3 [] 0 1723626938228994268 \n", + "4 [] 0 1723626938094034974 \n", + "5 [] 0 1723626934066117632 \n", + "6 [] 0 1723626934081092352 \n", + "7 [] 0 1723626934094995456 \n", + "8 [] 0 1723626934095175168 \n", + "9 [] 0 1723626934102390528 \n", + "10 [] 0 1723626935128228352 \n", + "11 [] 0 1723626939137709731 \n", + "12 [] 0 1723626939138567790 \n", + "13 [] 0 1723626939167677270 \n", + "14 [] 0 1723626939167920815 \n", + "15 [] 0 1723626939207821988 \n", + "16 [] 0 1723626939208141446 \n", + "17 [] 0 1723626939215080984 \n", + "18 [] 0 1723626939215301733 \n", + "19 [] 0 1723626939284911546 \n", + "20 [] 0 1723626939285156583 \n", + "21 [] 0 1723626938821852354 \n", + "22 [] 0 1723626939484518665 \n", + "23 [] 0 1723626939484613965 \n", + "24 [] 0 1723626939484658741 \n", + "\n", + " observed_time_unix_nano severity_number severity_text \\\n", + "0 1723626933429750407 b'SEVERITY_NUMBER_INFO' INFO \n", + "1 1723626938222760652 b'SEVERITY_NUMBER_INFO' INFO \n", + "2 1723626937885898237 b'SEVERITY_NUMBER_INFO' INFO \n", + "3 1723626938229003786 b'SEVERITY_NUMBER_INFO' INFO \n", + "4 1723626938094042403 b'SEVERITY_NUMBER_INFO' INFO \n", + "5 0 b'SEVERITY_NUMBER_INFO' INFO \n", + "6 0 b'SEVERITY_NUMBER_INFO' INFO \n", + "7 0 b'SEVERITY_NUMBER_INFO' INFO \n", + "8 0 b'SEVERITY_NUMBER_INFO' INFO \n", + "9 0 b'SEVERITY_NUMBER_INFO' INFO \n", + "10 0 b'SEVERITY_NUMBER_ERROR' ERROR \n", + "11 1723626939137715614 b'SEVERITY_NUMBER_INFO' INFO \n", + "12 1723626939138571296 b'SEVERITY_NUMBER_INFO' INFO \n", + "13 1723626939167687867 b'SEVERITY_NUMBER_INFO' INFO \n", + "14 1723626939167924714 b'SEVERITY_NUMBER_INFO' INFO \n", + "15 1723626939207830541 b'SEVERITY_NUMBER_INFO' INFO \n", + "16 1723626939208146097 b'SEVERITY_NUMBER_INFO' INFO \n", + "17 1723626939215090997 b'SEVERITY_NUMBER_INFO' INFO \n", + "18 1723626939215307547 b'SEVERITY_NUMBER_INFO' INFO \n", + "19 1723626939284919224 b'SEVERITY_NUMBER_INFO' INFO \n", + "20 1723626939285160658 b'SEVERITY_NUMBER_INFO' INFO \n", + "21 1723626938821863150 b'SEVERITY_NUMBER_INFO' INFO \n", + "22 1723626939484521320 b'SEVERITY_NUMBER_INFO' INFO \n", + "23 1723626939484615956 b'SEVERITY_NUMBER_INFO' INFO \n", + "24 1723626939484659917 b'SEVERITY_NUMBER_INFO' INFO \n", + "\n", + " body_type \\\n", + "0 STRING_VALUE \n", + "1 STRING_VALUE \n", + "2 STRING_VALUE \n", + "3 STRING_VALUE \n", + "4 STRING_VALUE \n", + "5 STRING_VALUE \n", + "6 STRING_VALUE \n", + "7 STRING_VALUE \n", + "8 STRING_VALUE \n", + "9 STRING_VALUE \n", + "10 STRING_VALUE \n", + "11 STRING_VALUE \n", + "12 STRING_VALUE \n", + "13 STRING_VALUE \n", + "14 STRING_VALUE \n", + "15 STRING_VALUE \n", + "16 STRING_VALUE \n", + "17 STRING_VALUE \n", + "18 STRING_VALUE \n", + "19 STRING_VALUE \n", + "20 STRING_VALUE \n", + "21 STRING_VALUE \n", + "22 STRING_VALUE \n", + "23 STRING_VALUE \n", + "24 STRING_VALUE \n", + "\n", + " body_string \\\n", + "0 Recommendation service started, listening on port 8080 \n", + "1 Registered signal handlers for TERM, INT, HUP \n", + "2 Registered kafka:type=kafka.Log4jController MBean \n", + "3 [ControllerServer id=1] Starting controller \n", + "4 Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg... \n", + "5 Instrumentation complete \n", + "6 Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) \n", + "7 Starting Locust 2.18.2 \n", + "8 No run time limit set, use CTRL+C to interrupt \n", + "9 Ramping to 10 users at a rate of 1.00 per second \n", + "10 Error ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage' \n", + "11 [controller-1-to-controller-registration-channel-manager]: Starting \n", + "12 [controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ... \n", + "13 [broker-1-to-controller-forwarding-channel-manager]: Starting \n", + "14 [broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u... \n", + "15 [broker-1-to-controller-alter-partition-channel-manager]: Starting \n", + "16 [broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w... \n", + "17 [broker-1-to-controller-directory-assignments-channel-manager]: Starting \n", + "18 [broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no... \n", + "19 [broker-1-to-controller-heartbeat-channel-manager]: Starting \n", + "20 [broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us... \n", + "21 Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0 \n", + "22 Kafka version: 3.7.0 \n", + "23 Kafka commitId: 2ae524ed625438c5 \n", + "24 Kafka startTimeMs: 1723626939484 \n", + "\n", + " body_bool body_int body_double body_array body_kvlist body_bytes \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " attributes \\\n", + "0 [{'key': 'otelSpanID', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'do... \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [{'key': 'code.filepath', 'value': {'string_value': '/usr/src/app/locustfile.py', 'bool_value': ... \n", + "6 [{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc... \n", + "7 [{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc... \n", + "8 [{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc... \n", + "9 [{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/loc... \n", + "10 [{'key': 'code.filepath', 'value': {'string_value': '/usr/local/lib/python3.12/site-packages/ope... \n", + "11 [] \n", + "12 [] \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " dropped_attributes_count flags trace_id span_id log_schema_url is_valid \\\n", + "0 0 0 b'' b'' True \n", + "1 0 0 b'' b'' True \n", + "2 0 0 b'' b'' True \n", + "3 0 0 b'' b'' True \n", + "4 0 0 b'' b'' True \n", + "5 0 0 b'' b'' True \n", + "6 0 0 b'' b'' True \n", + "7 0 0 b'' b'' True \n", + "8 0 0 b'' b'' True \n", + "9 0 0 b'' b'' True \n", + "10 0 0 b'' b'' True \n", + "11 0 0 b'' b'' True \n", + "12 0 0 b'' b'' True \n", + "13 0 0 b'' b'' True \n", + "14 0 0 b'' b'' True \n", + "15 0 0 b'' b'' True \n", + "16 0 0 b'' b'' True \n", + "17 0 0 b'' b'' True \n", + "18 0 0 b'' b'' True \n", + "19 0 0 b'' b'' True \n", + "20 0 0 b'' b'' True \n", + "21 0 0 b'' b'' True \n", + "22 0 0 b'' b'' True \n", + "23 0 0 b'' b'' True \n", + "24 0 0 b'' b'' True \n", + "\n", + " error_message \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Read all Parquet files in the specified directory as a single Pandas DataFrame. Make sure the directory contains only log Parquets.\n", + "raw_df = pd.read_parquet('otel-demo-app/logs_raw/', engine='pyarrow')\n", + "# Show some data\n", + "raw_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a98c1161-71ad-4ac8-b455-69f5947b1a7c", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Resources, scopes and signal attributes\n", + "\n", + "Before continuing with `logs` and other OpenTelemetry signals let's take a break for a moment and introduce a few concepts common to all signal types - [resources](https://opentelemetry.io/docs/concepts/resources/), [scopes](https://opentelemetry.io/docs/concepts/instrumentation-scope/)\n", + "and how, in general, OpenTelemetry adds meta-data (as 'attributes') to its signals.\n", + "\n", + "An OpenTelemetry `resource` is essentially one emitter of telemetry, a running instance of your app. For example - one jvm, one nodejs process, etc. A `scope` is a logical unit within a `resource`, a component of your app - a REST library, a database connector or just a module\n", + "that you've developed and would like to treat its telemetry separately.\n", + "\n", + "Within the data, the `resource_attributes` column contains meta-data of the `resource` generating a signal. These attributes are recorded by [resource detectors](https://opentelemetry.io/docs/concepts/resources/#resource-detectors) - OpenTelemetry plugins that know how to extract \n", + "additional information from the specific environment where your application runs - a Kubernetes cluster or a public cloud like AWS, Azure, GCP and other. You can also add extra details through configuration or code.\n", + "\n", + "> Use `resources` meta-data to:\n", + "> - 'group' signals originating from the same instance of an app\n", + "> - ... or all instances running on the same host\n", + "> - ... under the same environment\n", + "> - ... and so on\n", + "\n", + "Similarly, `scope_attributes` contains scope-related meta-data. The `scope_name` and `scope_version` columns typically contain the name and version of a module. Data about a `scope` is recorded by 'autoinstrumentation plugins' (OpenTelemetry provides telemetry plugins for many\n", + "popular libraries - see the [docs for your programming language](https://opentelemetry.io/docs/languages/) for details). You can also add more meta-data to a scope within your code.\n", + "\n", + "> Use the three `scope` columns to:\n", + "> - track database requests across all instances of your app\n", + "> - measure REST-request times\n", + "> - ...etc\n", + "\n", + "Finally, every emitted signal can have its own attributes - recorded by either you (by setting an attribute in your code) or automatically by a provided 'autoinstrumentation plugin'. These attributes can be, for example, the source file name and line number where a log message\n", + "was emitted, a stack trace where an error was encountered, the path of an HTTP request and so on.\n", + "\n", + "Attribute columns in OpenTelemetry data are basically lists of key-value pairs and as such are a bit difficult to work with. In these example notebooks we'll use a simple python function to extract all key-value pairs and turn them into individual columns - using the key as a column name:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Resources, scopes and signal attributes\n", + "\n", + "Before continuing with `logs` and other OpenTelemetry signals let's take a break for a moment and introduce a few concepts common to all signal types - [resources](https://opentelemetry.io/docs/concepts/resources/), [scopes](https://opentelemetry.io/docs/concepts/instrumentation-scope/)\n", + "and how, in general, OpenTelemetry adds meta-data (as 'attributes') to its signals.\n", + "\n", + "An OpenTelemetry `resource` is essentially one emitter of telemetry, a running instance of your app. For example - one jvm, one nodejs process, etc. A `scope` is a logical unit within a `resource`, a component of your app - a REST library, a database connector or just a module\n", + "that you've developed and would like to treat its telemetry separately.\n", + "\n", + "Within the data, the `resource_attributes` column contains meta-data of the `resource` generating a signal. These attributes are recorded by [resource detectors](https://opentelemetry.io/docs/concepts/resources/#resource-detectors) - OpenTelemetry plugins that know how to extract \n", + "additional information from the specific environment where your application runs - a Kubernetes cluster or a public cloud like AWS, Azure, GCP and other. You can also add extra details through configuration or code.\n", + "\n", + "> Use `resources` meta-data to:\n", + "> - 'group' signals originating from the same instance of an app\n", + "> - ... or all instances running on the same host\n", + "> - ... under the same environment\n", + "> - ... and so on\n", + "\n", + "Similarly, `scope_attributes` contains scope-related meta-data. The `scope_name` and `scope_version` columns typically contain the name and version of a module. Data about a `scope` is recorded by 'autoinstrumentation plugins' (OpenTelemetry provides telemetry plugins for many\n", + "popular libraries - see the [docs for your programming language](https://opentelemetry.io/docs/languages/) for details). You can also add more meta-data to a scope within your code.\n", + "\n", + "> Use the three `scope` columns to:\n", + "> - track database requests across all instances of your app\n", + "> - measure REST-request times\n", + "> - ...etc\n", + "\n", + "Finally, every emitted signal can have its own attributes - recorded by either you (by setting an attribute in your code) or automatically by a provided 'autoinstrumentation plugin'. These attributes can be, for example, the source file name and line number where a log message\n", + "was emitted, a stack trace where an error was encountered, the path of an HTTP request and so on.\n", + "\n", + "Attribute columns in OpenTelemetry data are basically lists of key-value pairs and as such are a bit difficult to work with. In these example notebooks we'll use a simple python function to extract all key-value pairs and turn them into individual columns - using the key as a column name:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "af90ffdf-9d76-4822-901d-7871fd8b72d2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Given an 'attributes' column value - return individual key-values as separate columns\n", + "def otel_attrs(series):\n", + " def get_val(v):\n", + " if v['bytes_value'] is not None:\n", + " return v['bytes_value']\n", + " elif v['kvlist_value'] is not None:\n", + " # ignore these for simplicity - dicts are difficult to compare/search for\n", + " return 'ignoring attribute dict value'\n", + " elif v['array_value'] is not None:\n", + " # same as above\n", + " return 'ignoring attribute list value'\n", + " elif v['double_value'] is not None:\n", + " return v['double_value']\n", + " elif v['int_value'] is not None:\n", + " return v['int_value']\n", + " elif v['bool_value'] is not None:\n", + " return v['bool_value']\n", + " elif v['string_value'] is not None:\n", + " return v['string_value']\n", + " else:\n", + " return None\n", + "\n", + " keys = [x['key'] for x in series.iloc[0]]\n", + " if not keys:\n", + " return pd.Series([], dtype=pd.StringDtype())\n", + " else:\n", + " values = [get_val(x['value']) for x in series.iloc[0]]\n", + " return pd.Series(values, index=keys)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3c21a514-3f8a-47c3-a627-e3b16b3dca60", + "metadata": {}, + "outputs": [], + "source": [ + "# Now, apply the above function to all 'attributes' columns in the logs DataFrame\n", + "resource_attrs_df=raw_df[['resource_attributes']].apply(otel_attrs, axis=1).add_prefix('ra_')\n", + "scope_attrs_df=raw_df[['scope_attributes']].apply(otel_attrs, axis=1).add_prefix('sa_')\n", + "attrs_df=raw_df[['attributes']].apply(otel_attrs, axis=1).add_prefix('a_')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "889acf07-01fd-4ca3-9634-bf26517166f7", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Explore logs resource meta-data\n", + "\n", + "Below you can see some examples of `resource` meta-data, as individual columns extracted from the `resource_attributes` column.\n", + "\n", + "You can see details about the Kubernetes environment, operating system, services, process, programming languages, etc.\n", + "\n", + "Note that individual rows may have a different set of populated columns, as different programming languages have different `resource detectors`. \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Explore logs resource meta-data\n", + "\n", + "Below you can see some examples of `resource` meta-data, as individual columns extracted from the `resource_attributes` column.\n", + "\n", + "You can see details about the Kubernetes environment, operating system, services, process, programming languages, etc.\n", + "\n", + "Note that individual rows may have a different set of populated columns, as different programming languages have different `resource detectors`. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0a21cdc9-0027-4ade-b3f4-15a51cec933c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0opentelemetry-demo-recommendationserviceotel-demo-parquetminikube10.244.1.52opentelemetry-demo-recommendationservice-64768c6df6-2wtjl2024-08-14T09:15:31Zb3d5bd61-c923-4f56-86b8-50f347fdbd78b3d5bd61-c923-4f56-86b8-50f347fdbd78recommendationserviceopentelemetry-demo-parquet1.11.1pythonopentelemetry1.25.0
121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
221ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
5opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
6opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
7opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
8opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
9opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
10opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
1121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1221ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1521ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1621ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1721ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1821ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1921ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2221ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
\n", + "
" + ], + "text/plain": [ + " ra_container.id \\\n", + "0 \n", + "1 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "2 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "3 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "4 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "12 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "13 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "14 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "15 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "16 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "17 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "18 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "19 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "20 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "21 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "22 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "23 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "24 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 \n", + "1 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "12 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "13 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "14 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "16 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "18 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "19 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "21 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "22 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "24 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name \\\n", + "0 opentelemetry-demo-recommendationservice otel-demo-parquet \n", + "1 opentelemetry-demo-kafka otel-demo-parquet \n", + "2 opentelemetry-demo-kafka otel-demo-parquet \n", + "3 opentelemetry-demo-kafka otel-demo-parquet \n", + "4 opentelemetry-demo-kafka otel-demo-parquet \n", + "5 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "6 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "7 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "8 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "9 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "10 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "11 opentelemetry-demo-kafka otel-demo-parquet \n", + "12 opentelemetry-demo-kafka otel-demo-parquet \n", + "13 opentelemetry-demo-kafka otel-demo-parquet \n", + "14 opentelemetry-demo-kafka otel-demo-parquet \n", + "15 opentelemetry-demo-kafka otel-demo-parquet \n", + "16 opentelemetry-demo-kafka otel-demo-parquet \n", + "17 opentelemetry-demo-kafka otel-demo-parquet \n", + "18 opentelemetry-demo-kafka otel-demo-parquet \n", + "19 opentelemetry-demo-kafka otel-demo-parquet \n", + "20 opentelemetry-demo-kafka otel-demo-parquet \n", + "21 opentelemetry-demo-kafka otel-demo-parquet \n", + "22 opentelemetry-demo-kafka otel-demo-parquet \n", + "23 opentelemetry-demo-kafka otel-demo-parquet \n", + "24 opentelemetry-demo-kafka otel-demo-parquet \n", + "\n", + " ra_k8s.node.name ra_k8s.pod.ip \\\n", + "0 minikube 10.244.1.52 \n", + "1 minikube 10.244.1.47 \n", + "2 minikube 10.244.1.47 \n", + "3 minikube 10.244.1.47 \n", + "4 minikube 10.244.1.47 \n", + "5 minikube 10.244.1.48 \n", + "6 minikube 10.244.1.48 \n", + "7 minikube 10.244.1.48 \n", + "8 minikube 10.244.1.48 \n", + "9 minikube 10.244.1.48 \n", + "10 minikube 10.244.1.48 \n", + "11 minikube 10.244.1.47 \n", + "12 minikube 10.244.1.47 \n", + "13 minikube 10.244.1.47 \n", + "14 minikube 10.244.1.47 \n", + "15 minikube 10.244.1.47 \n", + "16 minikube 10.244.1.47 \n", + "17 minikube 10.244.1.47 \n", + "18 minikube 10.244.1.47 \n", + "19 minikube 10.244.1.47 \n", + "20 minikube 10.244.1.47 \n", + "21 minikube 10.244.1.47 \n", + "22 minikube 10.244.1.47 \n", + "23 minikube 10.244.1.47 \n", + "24 minikube 10.244.1.47 \n", + "\n", + " ra_k8s.pod.name \\\n", + "0 opentelemetry-demo-recommendationservice-64768c6df6-2wtjl \n", + "1 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "5 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "6 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "7 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "8 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "9 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "10 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "11 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "12 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "13 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "14 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "16 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "18 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "19 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "21 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "22 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "24 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 2024-08-14T09:15:31Z b3d5bd61-c923-4f56-86b8-50f347fdbd78 \n", + "1 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "2 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "3 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "4 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "5 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "7 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "8 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "9 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "10 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "11 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "12 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "13 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "14 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "15 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "16 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "17 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "18 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "19 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "20 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "21 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "22 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "23 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "24 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "\n", + " ra_os.description ra_os.name ra_os.type ra_os.version \\\n", + "0 \n", + "1 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "2 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "3 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "4 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "12 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "13 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "14 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "15 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "16 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "17 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "18 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "19 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "20 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "21 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "22 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "23 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "24 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "\n", + " ra_process.command ra_process.command_args \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.command_line \\\n", + "0 \n", + "1 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "2 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "3 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "4 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "12 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "13 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "14 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "15 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "16 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "17 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "18 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "19 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "20 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "21 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "22 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "23 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "24 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "\n", + " ra_process.executable.path ra_process.owner ra_process.pid \\\n", + "0 \n", + "1 /opt/java/openjdk/bin/java 1.0 \n", + "2 /opt/java/openjdk/bin/java 1.0 \n", + "3 /opt/java/openjdk/bin/java 1.0 \n", + "4 /opt/java/openjdk/bin/java 1.0 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 /opt/java/openjdk/bin/java 1.0 \n", + "12 /opt/java/openjdk/bin/java 1.0 \n", + "13 /opt/java/openjdk/bin/java 1.0 \n", + "14 /opt/java/openjdk/bin/java 1.0 \n", + "15 /opt/java/openjdk/bin/java 1.0 \n", + "16 /opt/java/openjdk/bin/java 1.0 \n", + "17 /opt/java/openjdk/bin/java 1.0 \n", + "18 /opt/java/openjdk/bin/java 1.0 \n", + "19 /opt/java/openjdk/bin/java 1.0 \n", + "20 /opt/java/openjdk/bin/java 1.0 \n", + "21 /opt/java/openjdk/bin/java 1.0 \n", + "22 /opt/java/openjdk/bin/java 1.0 \n", + "23 /opt/java/openjdk/bin/java 1.0 \n", + "24 /opt/java/openjdk/bin/java 1.0 \n", + "\n", + " ra_process.runtime.description \\\n", + "0 \n", + "1 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "2 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "3 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "4 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "12 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "13 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "14 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "15 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "16 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "17 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "18 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "19 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "20 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "21 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "22 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "23 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "24 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "\n", + " ra_process.runtime.name ra_process.runtime.version \\\n", + "0 \n", + "1 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "2 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "3 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "4 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "12 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "13 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "14 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "15 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "16 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "17 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "18 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "19 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "20 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "21 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "22 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "23 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "24 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "\n", + " ra_service.instance.id ra_service.name \\\n", + "0 b3d5bd61-c923-4f56-86b8-50f347fdbd78 recommendationservice \n", + "1 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "2 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "3 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "4 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "5 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "6 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "7 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "8 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "9 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "10 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "11 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "12 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "13 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "14 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "15 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "16 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "17 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "18 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "19 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "20 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "21 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "22 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "23 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "24 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "\n", + " ra_service.namespace ra_service.version \\\n", + "0 opentelemetry-demo-parquet 1.11.1 \n", + "1 opentelemetry-demo-parquet 1.11.1 \n", + "2 opentelemetry-demo-parquet 1.11.1 \n", + "3 opentelemetry-demo-parquet 1.11.1 \n", + "4 opentelemetry-demo-parquet 1.11.1 \n", + "5 opentelemetry-demo-parquet 1.11.1 \n", + "6 opentelemetry-demo-parquet 1.11.1 \n", + "7 opentelemetry-demo-parquet 1.11.1 \n", + "8 opentelemetry-demo-parquet 1.11.1 \n", + "9 opentelemetry-demo-parquet 1.11.1 \n", + "10 opentelemetry-demo-parquet 1.11.1 \n", + "11 opentelemetry-demo-parquet 1.11.1 \n", + "12 opentelemetry-demo-parquet 1.11.1 \n", + "13 opentelemetry-demo-parquet 1.11.1 \n", + "14 opentelemetry-demo-parquet 1.11.1 \n", + "15 opentelemetry-demo-parquet 1.11.1 \n", + "16 opentelemetry-demo-parquet 1.11.1 \n", + "17 opentelemetry-demo-parquet 1.11.1 \n", + "18 opentelemetry-demo-parquet 1.11.1 \n", + "19 opentelemetry-demo-parquet 1.11.1 \n", + "20 opentelemetry-demo-parquet 1.11.1 \n", + "21 opentelemetry-demo-parquet 1.11.1 \n", + "22 opentelemetry-demo-parquet 1.11.1 \n", + "23 opentelemetry-demo-parquet 1.11.1 \n", + "24 opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.distro.name ra_telemetry.distro.version \\\n", + "0 \n", + "1 opentelemetry-java-instrumentation 2.4.0 \n", + "2 opentelemetry-java-instrumentation 2.4.0 \n", + "3 opentelemetry-java-instrumentation 2.4.0 \n", + "4 opentelemetry-java-instrumentation 2.4.0 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 opentelemetry-java-instrumentation 2.4.0 \n", + "12 opentelemetry-java-instrumentation 2.4.0 \n", + "13 opentelemetry-java-instrumentation 2.4.0 \n", + "14 opentelemetry-java-instrumentation 2.4.0 \n", + "15 opentelemetry-java-instrumentation 2.4.0 \n", + "16 opentelemetry-java-instrumentation 2.4.0 \n", + "17 opentelemetry-java-instrumentation 2.4.0 \n", + "18 opentelemetry-java-instrumentation 2.4.0 \n", + "19 opentelemetry-java-instrumentation 2.4.0 \n", + "20 opentelemetry-java-instrumentation 2.4.0 \n", + "21 opentelemetry-java-instrumentation 2.4.0 \n", + "22 opentelemetry-java-instrumentation 2.4.0 \n", + "23 opentelemetry-java-instrumentation 2.4.0 \n", + "24 opentelemetry-java-instrumentation 2.4.0 \n", + "\n", + " ra_telemetry.sdk.language ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 python opentelemetry 1.25.0 \n", + "1 java opentelemetry 1.38.0 \n", + "2 java opentelemetry 1.38.0 \n", + "3 java opentelemetry 1.38.0 \n", + "4 java opentelemetry 1.38.0 \n", + "5 python opentelemetry 1.23.0 \n", + "6 python opentelemetry 1.23.0 \n", + "7 python opentelemetry 1.23.0 \n", + "8 python opentelemetry 1.23.0 \n", + "9 python opentelemetry 1.23.0 \n", + "10 python opentelemetry 1.23.0 \n", + "11 java opentelemetry 1.38.0 \n", + "12 java opentelemetry 1.38.0 \n", + "13 java opentelemetry 1.38.0 \n", + "14 java opentelemetry 1.38.0 \n", + "15 java opentelemetry 1.38.0 \n", + "16 java opentelemetry 1.38.0 \n", + "17 java opentelemetry 1.38.0 \n", + "18 java opentelemetry 1.38.0 \n", + "19 java opentelemetry 1.38.0 \n", + "20 java opentelemetry 1.38.0 \n", + "21 java opentelemetry 1.38.0 \n", + "22 java opentelemetry 1.38.0 \n", + "23 java opentelemetry 1.38.0 \n", + "24 java opentelemetry 1.38.0 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e983aeb8-247d-4bf4-a7e6-936ca69b13cd", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Here are the individual programming languages that reported logs:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Here are the individual programming languages that reported logs:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f5b988cf-329c-4770-a866-6de3c3c44a02", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_telemetry.sdk.language
0python
1java
146dotnet
152cpp
852php
\n", + "
" + ], + "text/plain": [ + " ra_telemetry.sdk.language\n", + "0 python\n", + "1 java\n", + "146 dotnet\n", + "152 cpp\n", + "852 php" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df[['ra_telemetry.sdk.language']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "9df48030-2324-4b0a-a9cc-3594a9afcf28", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "#### ...a few resource attributes emitted by python:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "#### ...a few resource attributes emitted by python:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "09b2fd65-2aea-4c21-b398-146004c98fb4", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0opentelemetry-demo-recommendationserviceotel-demo-parquetminikube10.244.1.52opentelemetry-demo-recommendationservice-64768c6df6-2wtjl2024-08-14T09:15:31Zb3d5bd61-c923-4f56-86b8-50f347fdbd78b3d5bd61-c923-4f56-86b8-50f347fdbd78recommendationserviceopentelemetry-demo-parquet1.11.1pythonopentelemetry1.25.0
5opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
6opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
7opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
8opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
\n", + "
" + ], + "text/plain": [ + " ra_k8s.deployment.name ra_k8s.namespace.name \\\n", + "0 opentelemetry-demo-recommendationservice otel-demo-parquet \n", + "5 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "6 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "7 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "8 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "\n", + " ra_k8s.node.name ra_k8s.pod.ip \\\n", + "0 minikube 10.244.1.52 \n", + "5 minikube 10.244.1.48 \n", + "6 minikube 10.244.1.48 \n", + "7 minikube 10.244.1.48 \n", + "8 minikube 10.244.1.48 \n", + "\n", + " ra_k8s.pod.name \\\n", + "0 opentelemetry-demo-recommendationservice-64768c6df6-2wtjl \n", + "5 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "6 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "7 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "8 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 2024-08-14T09:15:31Z b3d5bd61-c923-4f56-86b8-50f347fdbd78 \n", + "5 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "7 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "8 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "\n", + " ra_service.instance.id ra_service.name \\\n", + "0 b3d5bd61-c923-4f56-86b8-50f347fdbd78 recommendationservice \n", + "5 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "6 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "7 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "8 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "\n", + " ra_service.namespace ra_service.version ra_telemetry.sdk.language \\\n", + "0 opentelemetry-demo-parquet 1.11.1 python \n", + "5 opentelemetry-demo-parquet 1.11.1 python \n", + "6 opentelemetry-demo-parquet 1.11.1 python \n", + "7 opentelemetry-demo-parquet 1.11.1 python \n", + "8 opentelemetry-demo-parquet 1.11.1 python \n", + "\n", + " ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 opentelemetry 1.25.0 \n", + "5 opentelemetry 1.23.0 \n", + "6 opentelemetry 1.23.0 \n", + "7 opentelemetry 1.23.0 \n", + "8 opentelemetry 1.23.0 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df[resource_attrs_df['ra_telemetry.sdk.language'] == 'python'].head(5).dropna(axis=1, how='all')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5485bc55-27ee-47c2-9907-b9caed348cc7", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and some more, emitted by java:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and some more, emitted by java:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "4d5db6c0-ab03-4dd7-a067-f27993726844", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.typera_process.command_linera_process.executable.pathra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
221ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
1121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
\n", + "
" + ], + "text/plain": [ + " ra_container.id \\\n", + "1 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "2 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "3 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "4 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "11 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "1 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "11 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "1 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "2 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "3 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "4 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "11 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "1 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "11 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "1 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "2 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "3 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "4 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "11 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "\n", + " ra_os.description ra_os.type \\\n", + "1 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "2 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "3 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "4 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "11 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "\n", + " ra_process.command_line \\\n", + "1 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "2 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "3 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "4 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "11 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "\n", + " ra_process.executable.path ra_process.pid \\\n", + "1 /opt/java/openjdk/bin/java 1.0 \n", + "2 /opt/java/openjdk/bin/java 1.0 \n", + "3 /opt/java/openjdk/bin/java 1.0 \n", + "4 /opt/java/openjdk/bin/java 1.0 \n", + "11 /opt/java/openjdk/bin/java 1.0 \n", + "\n", + " ra_process.runtime.description \\\n", + "1 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "2 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "3 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "4 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "11 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "\n", + " ra_process.runtime.name ra_process.runtime.version \\\n", + "1 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "2 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "3 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "4 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "11 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "\n", + " ra_service.instance.id ra_service.name \\\n", + "1 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "2 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "3 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "4 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "11 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "\n", + " ra_service.namespace ra_service.version \\\n", + "1 opentelemetry-demo-parquet 1.11.1 \n", + "2 opentelemetry-demo-parquet 1.11.1 \n", + "3 opentelemetry-demo-parquet 1.11.1 \n", + "4 opentelemetry-demo-parquet 1.11.1 \n", + "11 opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.distro.name ra_telemetry.distro.version \\\n", + "1 opentelemetry-java-instrumentation 2.4.0 \n", + "2 opentelemetry-java-instrumentation 2.4.0 \n", + "3 opentelemetry-java-instrumentation 2.4.0 \n", + "4 opentelemetry-java-instrumentation 2.4.0 \n", + "11 opentelemetry-java-instrumentation 2.4.0 \n", + "\n", + " ra_telemetry.sdk.language ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "1 java opentelemetry 1.38.0 \n", + "2 java opentelemetry 1.38.0 \n", + "3 java opentelemetry 1.38.0 \n", + "4 java opentelemetry 1.38.0 \n", + "11 java opentelemetry 1.38.0 " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df[resource_attrs_df['ra_telemetry.sdk.language'] == 'java'].head(5).dropna(axis=1, how='all')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "f31743fe-312c-4e74-9fdf-3ce17e3eb518", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### The distinct (by name) scopes in our logs data:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### The distinct (by name) scopes in our logs data:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "642150c5-9000-4453-a95d-43719aaa627a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_name
0opentelemetry.sdk._logs._internal
1org.apache.kafka.common.utils.LoggingSignalHandler
2kafka.utils.Log4jControllerRegistration$
3kafka.server.ControllerServer
4org.apache.zookeeper.common.X509Util
11kafka.server.NodeToControllerRequestThread
21kafka.raft.KafkaMetadataLog$
22org.apache.kafka.common.utils.AppInfoParser
25kafka.raft.TimingWheelExpirationService$ExpiredOperationReaper
26org.apache.kafka.raft.QuorumState
29org.apache.kafka.metadata.publisher.FeaturesPublisher
30kafka.log.LogManager
36kafka.server.AddPartitionsToTxnManager
37kafka.server.metadata.BrokerMetadataPublisher
40kafka.coordinator.transaction.TransactionMarkerChannelManager
41kafka.raft.KafkaRaftManager$RaftIoThread
42org.apache.kafka.image.loader.MetadataLoader
57org.apache.kafka.raft.LeaderState
58kafka.server.ClientQuotaManager$ThrottledChannelReaper
66kafka.log.LogCleaner$CleanerThread
67kafka.server.ReplicaManager$LogDirFailureHandler
68kafka.network.SocketServer
72org.apache.kafka.server.network.EndpointReadyFutures
74kafka.server.ControllerRegistrationManager
78kafka.server.BrokerServer
103kafka.server.SharedServer
104org.apache.kafka.controller.OffsetControlManager
106kafka.network.DataPlaneAcceptor
108kafka.log.UnifiedLog$
111org.apache.kafka.raft.KafkaRaftClient
113org.apache.kafka.controller.ClusterControlManager
117kafka.server.BrokerLifecycleManager
122kafka.log.LogCleaner
123kafka.server.KafkaConfig
124org.apache.kafka.controller.QuorumController
127kafka.network.ConnectionQuotas
129kafka.server.KafkaRaftServer
130org.apache.kafka.raft.KafkaNetworkChannel$SendThread
131org.apache.kafka.controller.FeatureControlManager
132kafka.coordinator.group.GroupCoordinator
134kafka.coordinator.transaction.TransactionCoordinator
136org.apache.kafka.controller.BrokerHeartbeatManager
137kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper
146cartservice.cartstore.ValkeyCartStore
147Microsoft.AspNetCore.Hosting.Diagnostics
148Microsoft.Hosting.Lifetime
152currencyservice
160org.apache.kafka.controller.ConfigurationControlManager
163kafka.server.ReplicaFetcherManager
214kafka.cluster.Partition
314kafka.server.DefaultAutoTopicCreationManager
315org.apache.kafka.image.publisher.SnapshotGenerator
316state.change.logger
467kafka.server.metadata.DynamicConfigPublisher
468org.apache.kafka.image.publisher.SnapshotEmitter
469kafka.coordinator.group.GroupMetadataManager
619org.apache.kafka.controller.ReplicationControlManager
687io.grpc.internal.ManagedChannelImpl
752org.apache.kafka.storage.internals.log.ProducerStateManager
753kafka.log.LocalLog
852slim-app
873frauddetectionservice
921oteldemo.AdService
1202kafka.log.UnifiedLog
1208kafka.raft.KafkaMetadataLog
1562kafka.log.LocalLog$
1565org.apache.kafka.snapshot.Snapshots
1568org.apache.kafka.storage.internals.log.LogSegment
1580org.apache.kafka.storage.internals.log.SnapshotFile
3482org.apache.kafka.clients.NetworkClient
\n", + "
" + ], + "text/plain": [ + " scope_name\n", + "0 opentelemetry.sdk._logs._internal\n", + "1 org.apache.kafka.common.utils.LoggingSignalHandler\n", + "2 kafka.utils.Log4jControllerRegistration$\n", + "3 kafka.server.ControllerServer\n", + "4 org.apache.zookeeper.common.X509Util\n", + "11 kafka.server.NodeToControllerRequestThread\n", + "21 kafka.raft.KafkaMetadataLog$\n", + "22 org.apache.kafka.common.utils.AppInfoParser\n", + "25 kafka.raft.TimingWheelExpirationService$ExpiredOperationReaper\n", + "26 org.apache.kafka.raft.QuorumState\n", + "29 org.apache.kafka.metadata.publisher.FeaturesPublisher\n", + "30 kafka.log.LogManager\n", + "36 kafka.server.AddPartitionsToTxnManager\n", + "37 kafka.server.metadata.BrokerMetadataPublisher\n", + "40 kafka.coordinator.transaction.TransactionMarkerChannelManager\n", + "41 kafka.raft.KafkaRaftManager$RaftIoThread\n", + "42 org.apache.kafka.image.loader.MetadataLoader\n", + "57 org.apache.kafka.raft.LeaderState\n", + "58 kafka.server.ClientQuotaManager$ThrottledChannelReaper\n", + "66 kafka.log.LogCleaner$CleanerThread\n", + "67 kafka.server.ReplicaManager$LogDirFailureHandler\n", + "68 kafka.network.SocketServer\n", + "72 org.apache.kafka.server.network.EndpointReadyFutures\n", + "74 kafka.server.ControllerRegistrationManager\n", + "78 kafka.server.BrokerServer\n", + "103 kafka.server.SharedServer\n", + "104 org.apache.kafka.controller.OffsetControlManager\n", + "106 kafka.network.DataPlaneAcceptor\n", + "108 kafka.log.UnifiedLog$\n", + "111 org.apache.kafka.raft.KafkaRaftClient\n", + "113 org.apache.kafka.controller.ClusterControlManager\n", + "117 kafka.server.BrokerLifecycleManager\n", + "122 kafka.log.LogCleaner\n", + "123 kafka.server.KafkaConfig\n", + "124 org.apache.kafka.controller.QuorumController\n", + "127 kafka.network.ConnectionQuotas\n", + "129 kafka.server.KafkaRaftServer\n", + "130 org.apache.kafka.raft.KafkaNetworkChannel$SendThread\n", + "131 org.apache.kafka.controller.FeatureControlManager\n", + "132 kafka.coordinator.group.GroupCoordinator\n", + "134 kafka.coordinator.transaction.TransactionCoordinator\n", + "136 org.apache.kafka.controller.BrokerHeartbeatManager\n", + "137 kafka.server.DelayedOperationPurgatory$ExpiredOperationReaper\n", + "146 cartservice.cartstore.ValkeyCartStore\n", + "147 Microsoft.AspNetCore.Hosting.Diagnostics\n", + "148 Microsoft.Hosting.Lifetime\n", + "152 currencyservice\n", + "160 org.apache.kafka.controller.ConfigurationControlManager\n", + "163 kafka.server.ReplicaFetcherManager\n", + "214 kafka.cluster.Partition\n", + "314 kafka.server.DefaultAutoTopicCreationManager\n", + "315 org.apache.kafka.image.publisher.SnapshotGenerator\n", + "316 state.change.logger\n", + "467 kafka.server.metadata.DynamicConfigPublisher\n", + "468 org.apache.kafka.image.publisher.SnapshotEmitter\n", + "469 kafka.coordinator.group.GroupMetadataManager\n", + "619 org.apache.kafka.controller.ReplicationControlManager\n", + "687 io.grpc.internal.ManagedChannelImpl\n", + "752 org.apache.kafka.storage.internals.log.ProducerStateManager\n", + "753 kafka.log.LocalLog\n", + "852 slim-app\n", + "873 frauddetectionservice\n", + "921 oteldemo.AdService\n", + "1202 kafka.log.UnifiedLog\n", + "1208 kafka.raft.KafkaMetadataLog\n", + "1562 kafka.log.LocalLog$\n", + "1565 org.apache.kafka.snapshot.Snapshots\n", + "1568 org.apache.kafka.storage.internals.log.LogSegment\n", + "1580 org.apache.kafka.storage.internals.log.SnapshotFile\n", + "3482 org.apache.kafka.clients.NetworkClient" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[['scope_name']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f505132f-88ba-4850-8a54-96366152cdf5", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and example logs of one of the scopes (the fraud detection demo microservice):\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and example logs of one of the scopes (the fraud detection demo microservice):" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "beff8b0a-10c8-4ab9-84d2-956564b3606b", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
observed_time_unix_nanoseverity_textbody_string
8731723626979939766881INFOConsumed record with orderId: ddaaaf61-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 1
10291723627032386865386INFOConsumed record with orderId: fd57826a-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 2
10451723627034196975395INFOConsumed record with orderId: fe68f06e-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 3
12871723627071462831737INFOConsumed record with orderId: 0a951e83-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 4
25351723627310413152876INFOConsumed record with orderId: 483e066c-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 5
25361723627310417941710INFOConsumed record with orderId: 3afa16ba-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 6
25371723627310418373499INFOConsumed record with orderId: 72ee62e3-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 7
25511723627311750640939INFOConsumed record with orderId: 92e0c7dd-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 8
25521723627311752001327INFOConsumed record with orderId: 804c1d2d-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 9
25681723627315980693436INFOConsumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10
\n", + "
" + ], + "text/plain": [ + " observed_time_unix_nano severity_text \\\n", + "873 1723626979939766881 INFO \n", + "1029 1723627032386865386 INFO \n", + "1045 1723627034196975395 INFO \n", + "1287 1723627071462831737 INFO \n", + "2535 1723627310413152876 INFO \n", + "2536 1723627310417941710 INFO \n", + "2537 1723627310418373499 INFO \n", + "2551 1723627311750640939 INFO \n", + "2552 1723627311752001327 INFO \n", + "2568 1723627315980693436 INFO \n", + "\n", + " body_string \n", + "873 Consumed record with orderId: ddaaaf61-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 1 \n", + "1029 Consumed record with orderId: fd57826a-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 2 \n", + "1045 Consumed record with orderId: fe68f06e-5a1d-11ef-ac87-9e6131d66c8e, and updated total count to: 3 \n", + "1287 Consumed record with orderId: 0a951e83-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 4 \n", + "2535 Consumed record with orderId: 483e066c-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 5 \n", + "2536 Consumed record with orderId: 3afa16ba-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 6 \n", + "2537 Consumed record with orderId: 72ee62e3-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 7 \n", + "2551 Consumed record with orderId: 92e0c7dd-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 8 \n", + "2552 Consumed record with orderId: 804c1d2d-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 9 \n", + "2568 Consumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[raw_df['scope_name'] == 'frauddetectionservice'][['observed_time_unix_nano', 'severity_text', 'body_string']].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "71cdc479-a633-4f68-b0f9-b1d67a941adc", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...or the Apache Kafka logs:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...or the Apache Kafka logs:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "bab44d12-f9c3-43dc-b5f5-294c82f1ee37", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
observed_time_unix_nanoseverity_textbody_string
11723626938222760652INFORegistered signal handlers for TERM, INT, HUP
21723626937885898237INFORegistered kafka:type=kafka.Log4jController MBean
31723626938229003786INFO[ControllerServer id=1] Starting controller
41723626938094042403INFOSetting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg...
111723626939137715614INFO[controller-1-to-controller-registration-channel-manager]: Starting
121723626939138571296INFO[controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ...
131723626939167687867INFO[broker-1-to-controller-forwarding-channel-manager]: Starting
141723626939167924714INFO[broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u...
151723626939207830541INFO[broker-1-to-controller-alter-partition-channel-manager]: Starting
161723626939208146097INFO[broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w...
171723626939215090997INFO[broker-1-to-controller-directory-assignments-channel-manager]: Starting
181723626939215307547INFO[broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no...
191723626939284919224INFO[broker-1-to-controller-heartbeat-channel-manager]: Starting
201723626939285160658INFO[broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us...
211723626938821863150INFOInitialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0
221723626939484521320INFOKafka version: 3.7.0
231723626939484615956INFOKafka commitId: 2ae524ed625438c5
241723626939484659917INFOKafka startTimeMs: 1723626939484
251723626938844456516INFO[raft-expiration-reaper]: Starting
261723626938984954563INFO[RaftManager id=1] Completed transition to Unattached(epoch=0, voters=[1], electionTimeoutMs=138...
271723626938990154725INFO[RaftManager id=1] Completed transition to CandidateState(localId=1, epoch=1, retries=1, voteSta...
281723626938997233618INFO[RaftManager id=1] Completed transition to Leader(localId=1, epoch=1, epochStartOffset=0, highWa...
291723626939126983717INFO[ControllerServer id=1] Loaded new metadata Features(version=3.7-IV4, finalizedFeatures={metadat...
301723626939284174452INFOUnable to read the broker epoch in /tmp/kafka-logs.
311723626939309830853INFOLoading logs from log dirs ArraySeq(/tmp/kafka-logs)
321723626939311689236INFONo logs found to be loaded in /tmp/kafka-logs
331723626939314626802INFOLoaded 0 logs in 5ms
341723626939314885930INFOStarting log cleanup with a period of 300000 ms.
351723626939316550924INFOStarting log flusher with a default period of 9223372036854775807 ms.
361723626939405605455INFO[AddPartitionsToTxnSenderThread-1]: Starting
371723626939309303323INFO[BrokerMetadataPublisher id=1] Publishing initial metadata at offset OffsetAndEpoch(offset=5, ep...
381723626939413421237INFO[BrokerMetadataPublisher id=1] Updating metadata.version to 19 at offset OffsetAndEpoch(offset=5...
391723626939414338381INFO[BrokerMetadataPublisher id=1] Resending BrokerRegistration with existing incarnation-id to info...
401723626939412686782INFO[TxnMarkerSenderThread-1]: Starting
411723626939014967583INFO[kafka-1-raft-io-thread]: Starting
421723626939037068407INFO[MetadataLoader id=1] initializeNewPublishers: The loader is still catching up because we have l...
431723626939047909008INFO[MetadataLoader id=1] maybePublishMetadata(LOG_DELTA): The loader is still catching up because w...
441723626939123199865INFO[MetadataLoader id=1] maybePublishMetadata(LOG_DELTA): The loader finished catching up to the cu...
451723626939126111330INFO[MetadataLoader id=1] InitializeNewPublishers: initializing SnapshotGenerator with a snapshot at...
461723626939126737644INFO[MetadataLoader id=1] InitializeNewPublishers: initializing KRaftMetadataCachePublisher with a s...
471723626939126853418INFO[MetadataLoader id=1] InitializeNewPublishers: initializing FeaturesPublisher with a snapshot at...
481723626939127069459INFO[MetadataLoader id=1] InitializeNewPublishers: initializing ControllerRegistrationsPublisher wit...
491723626939127221158INFO[MetadataLoader id=1] InitializeNewPublishers: initializing ControllerRegistrationManager with a...
501723626939127721950INFO[MetadataLoader id=1] InitializeNewPublishers: initializing DynamicConfigPublisher controller id...
511723626939128479370INFO[MetadataLoader id=1] InitializeNewPublishers: initializing DynamicClientQuotaPublisher controll...
521723626939129155914INFO[MetadataLoader id=1] InitializeNewPublishers: initializing ScramPublisher controller id=1 with ...
531723626939130408317INFO[MetadataLoader id=1] InitializeNewPublishers: initializing DelegationTokenPublisher controller ...
541723626939131773051INFO[MetadataLoader id=1] InitializeNewPublishers: initializing ControllerMetadataMetricsPublisher w...
551723626939132170988INFO[MetadataLoader id=1] InitializeNewPublishers: initializing AclPublisher controller id=1 with a ...
561723626939308856607INFO[MetadataLoader id=1] InitializeNewPublishers: initializing BrokerMetadataPublisher with a snaps...
............
61591723628199444873555INFODeleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.log.deleted.
61601723628199444902726INFODeleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.index.deleted.
61611723628199444938090INFODeleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.timeindex.deleted.
61621723628199444984361INFODeleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.log.deleted.
61631723628199445003203INFODeleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.index.deleted.
61641723628199445025972INFODeleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.timeindex.deleted.
61651723628199445065303INFODeleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.snapsh...
61661723628199445082945INFODeleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.snapsh...
62031723628211029478002INFO[SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002608-0000000001
62041723628210935219181INFO[SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002608-00000000...
62121723628214438445921INFO[ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2614 wit...
62131723628214438279419INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ...
62671723628229463323439INFO[ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2644 wit...
62681723628229452322438INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ...
62781723628230528778163INFO[SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002647-0000000001
62791723628230439655676INFO[SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002647-00000000...
63871723628244457173489INFO[ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2674 wit...
63881723628244455422241INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ...
64331723628249969525139INFO[SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002686-0000000001
64341723628249944252775INFO[SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002686-00000000...
64751723628259450728221INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ...
64761723628259450851386INFO[ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2704 wit...
64771723628259131921895INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to...
64781723628259133811838INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st...
64791723628259135343829INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to...
64801723628259135761685INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st...
64811723628259137955899INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to...
64821723628259138787752INFO[UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st...
64831723628259134650608INFO[MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=24...
64841723628259136205270INFO[MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=25...
64851723628259139081508INFO[MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=25...
64861723628259435365630INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment...
64871723628259443663749INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment...
64881723628259540757613INFO[LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment...
64891723628259443586940INFODeleted snapshot files for snapshot OffsetAndEpoch(offset=2374, epoch=1).
64901723628259446392184INFODeleted snapshot files for snapshot OffsetAndEpoch(offset=2413, epoch=1).
64911723628259543852866INFODeleted snapshot files for snapshot OffsetAndEpoch(offset=2452, epoch=1).
64921723628259435541509INFODeleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.log.deleted.
64931723628259435586066INFODeleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.index.deleted.
64941723628259435640110INFODeleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.timeindex.deleted.
64951723628259443747929INFODeleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.log.deleted.
64961723628259443806131INFODeleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.index.deleted.
64971723628259443862755INFODeleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.timeindex.deleted.
64981723628259540905895INFODeleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.log.deleted.
64991723628259540963218INFODeleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.index.deleted.
65001723628259541017034INFODeleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.timeindex.deleted.
65011723628259440709246INFODeleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.snapsh...
65021723628259443928188INFODeleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.snapsh...
65031723628259541126145INFODeleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.snapsh...
65781723628269461503649INFO[SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002725-0000000001
\n", + "

1660 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " observed_time_unix_nano severity_text \\\n", + "1 1723626938222760652 INFO \n", + "2 1723626937885898237 INFO \n", + "3 1723626938229003786 INFO \n", + "4 1723626938094042403 INFO \n", + "11 1723626939137715614 INFO \n", + "12 1723626939138571296 INFO \n", + "13 1723626939167687867 INFO \n", + "14 1723626939167924714 INFO \n", + "15 1723626939207830541 INFO \n", + "16 1723626939208146097 INFO \n", + "17 1723626939215090997 INFO \n", + "18 1723626939215307547 INFO \n", + "19 1723626939284919224 INFO \n", + "20 1723626939285160658 INFO \n", + "21 1723626938821863150 INFO \n", + "22 1723626939484521320 INFO \n", + "23 1723626939484615956 INFO \n", + "24 1723626939484659917 INFO \n", + "25 1723626938844456516 INFO \n", + "26 1723626938984954563 INFO \n", + "27 1723626938990154725 INFO \n", + "28 1723626938997233618 INFO \n", + "29 1723626939126983717 INFO \n", + "30 1723626939284174452 INFO \n", + "31 1723626939309830853 INFO \n", + "32 1723626939311689236 INFO \n", + "33 1723626939314626802 INFO \n", + "34 1723626939314885930 INFO \n", + "35 1723626939316550924 INFO \n", + "36 1723626939405605455 INFO \n", + "37 1723626939309303323 INFO \n", + "38 1723626939413421237 INFO \n", + "39 1723626939414338381 INFO \n", + "40 1723626939412686782 INFO \n", + "41 1723626939014967583 INFO \n", + "42 1723626939037068407 INFO \n", + "43 1723626939047909008 INFO \n", + "44 1723626939123199865 INFO \n", + "45 1723626939126111330 INFO \n", + "46 1723626939126737644 INFO \n", + "47 1723626939126853418 INFO \n", + "48 1723626939127069459 INFO \n", + "49 1723626939127221158 INFO \n", + "50 1723626939127721950 INFO \n", + "51 1723626939128479370 INFO \n", + "52 1723626939129155914 INFO \n", + "53 1723626939130408317 INFO \n", + "54 1723626939131773051 INFO \n", + "55 1723626939132170988 INFO \n", + "56 1723626939308856607 INFO \n", + "... ... ... \n", + "6159 1723628199444873555 INFO \n", + "6160 1723628199444902726 INFO \n", + "6161 1723628199444938090 INFO \n", + "6162 1723628199444984361 INFO \n", + "6163 1723628199445003203 INFO \n", + "6164 1723628199445025972 INFO \n", + "6165 1723628199445065303 INFO \n", + "6166 1723628199445082945 INFO \n", + "6203 1723628211029478002 INFO \n", + "6204 1723628210935219181 INFO \n", + "6212 1723628214438445921 INFO \n", + "6213 1723628214438279419 INFO \n", + "6267 1723628229463323439 INFO \n", + "6268 1723628229452322438 INFO \n", + "6278 1723628230528778163 INFO \n", + "6279 1723628230439655676 INFO \n", + "6387 1723628244457173489 INFO \n", + "6388 1723628244455422241 INFO \n", + "6433 1723628249969525139 INFO \n", + "6434 1723628249944252775 INFO \n", + "6475 1723628259450728221 INFO \n", + "6476 1723628259450851386 INFO \n", + "6477 1723628259131921895 INFO \n", + "6478 1723628259133811838 INFO \n", + "6479 1723628259135343829 INFO \n", + "6480 1723628259135761685 INFO \n", + "6481 1723628259137955899 INFO \n", + "6482 1723628259138787752 INFO \n", + "6483 1723628259134650608 INFO \n", + "6484 1723628259136205270 INFO \n", + "6485 1723628259139081508 INFO \n", + "6486 1723628259435365630 INFO \n", + "6487 1723628259443663749 INFO \n", + "6488 1723628259540757613 INFO \n", + "6489 1723628259443586940 INFO \n", + "6490 1723628259446392184 INFO \n", + "6491 1723628259543852866 INFO \n", + "6492 1723628259435541509 INFO \n", + "6493 1723628259435586066 INFO \n", + "6494 1723628259435640110 INFO \n", + "6495 1723628259443747929 INFO \n", + "6496 1723628259443806131 INFO \n", + "6497 1723628259443862755 INFO \n", + "6498 1723628259540905895 INFO \n", + "6499 1723628259540963218 INFO \n", + "6500 1723628259541017034 INFO \n", + "6501 1723628259440709246 INFO \n", + "6502 1723628259443928188 INFO \n", + "6503 1723628259541126145 INFO \n", + "6578 1723628269461503649 INFO \n", + "\n", + " body_string \n", + "1 Registered signal handlers for TERM, INT, HUP \n", + "2 Registered kafka:type=kafka.Log4jController MBean \n", + "3 [ControllerServer id=1] Starting controller \n", + "4 Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg... \n", + "11 [controller-1-to-controller-registration-channel-manager]: Starting \n", + "12 [controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ... \n", + "13 [broker-1-to-controller-forwarding-channel-manager]: Starting \n", + "14 [broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u... \n", + "15 [broker-1-to-controller-alter-partition-channel-manager]: Starting \n", + "16 [broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w... \n", + "17 [broker-1-to-controller-directory-assignments-channel-manager]: Starting \n", + "18 [broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no... \n", + "19 [broker-1-to-controller-heartbeat-channel-manager]: Starting \n", + "20 [broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us... \n", + "21 Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0 \n", + "22 Kafka version: 3.7.0 \n", + "23 Kafka commitId: 2ae524ed625438c5 \n", + "24 Kafka startTimeMs: 1723626939484 \n", + "25 [raft-expiration-reaper]: Starting \n", + "26 [RaftManager id=1] Completed transition to Unattached(epoch=0, voters=[1], electionTimeoutMs=138... \n", + "27 [RaftManager id=1] Completed transition to CandidateState(localId=1, epoch=1, retries=1, voteSta... \n", + "28 [RaftManager id=1] Completed transition to Leader(localId=1, epoch=1, epochStartOffset=0, highWa... \n", + "29 [ControllerServer id=1] Loaded new metadata Features(version=3.7-IV4, finalizedFeatures={metadat... \n", + "30 Unable to read the broker epoch in /tmp/kafka-logs. \n", + "31 Loading logs from log dirs ArraySeq(/tmp/kafka-logs) \n", + "32 No logs found to be loaded in /tmp/kafka-logs \n", + "33 Loaded 0 logs in 5ms \n", + "34 Starting log cleanup with a period of 300000 ms. \n", + "35 Starting log flusher with a default period of 9223372036854775807 ms. \n", + "36 [AddPartitionsToTxnSenderThread-1]: Starting \n", + "37 [BrokerMetadataPublisher id=1] Publishing initial metadata at offset OffsetAndEpoch(offset=5, ep... \n", + "38 [BrokerMetadataPublisher id=1] Updating metadata.version to 19 at offset OffsetAndEpoch(offset=5... \n", + "39 [BrokerMetadataPublisher id=1] Resending BrokerRegistration with existing incarnation-id to info... \n", + "40 [TxnMarkerSenderThread-1]: Starting \n", + "41 [kafka-1-raft-io-thread]: Starting \n", + "42 [MetadataLoader id=1] initializeNewPublishers: The loader is still catching up because we have l... \n", + "43 [MetadataLoader id=1] maybePublishMetadata(LOG_DELTA): The loader is still catching up because w... \n", + "44 [MetadataLoader id=1] maybePublishMetadata(LOG_DELTA): The loader finished catching up to the cu... \n", + "45 [MetadataLoader id=1] InitializeNewPublishers: initializing SnapshotGenerator with a snapshot at... \n", + "46 [MetadataLoader id=1] InitializeNewPublishers: initializing KRaftMetadataCachePublisher with a s... \n", + "47 [MetadataLoader id=1] InitializeNewPublishers: initializing FeaturesPublisher with a snapshot at... \n", + "48 [MetadataLoader id=1] InitializeNewPublishers: initializing ControllerRegistrationsPublisher wit... \n", + "49 [MetadataLoader id=1] InitializeNewPublishers: initializing ControllerRegistrationManager with a... \n", + "50 [MetadataLoader id=1] InitializeNewPublishers: initializing DynamicConfigPublisher controller id... \n", + "51 [MetadataLoader id=1] InitializeNewPublishers: initializing DynamicClientQuotaPublisher controll... \n", + "52 [MetadataLoader id=1] InitializeNewPublishers: initializing ScramPublisher controller id=1 with ... \n", + "53 [MetadataLoader id=1] InitializeNewPublishers: initializing DelegationTokenPublisher controller ... \n", + "54 [MetadataLoader id=1] InitializeNewPublishers: initializing ControllerMetadataMetricsPublisher w... \n", + "55 [MetadataLoader id=1] InitializeNewPublishers: initializing AclPublisher controller id=1 with a ... \n", + "56 [MetadataLoader id=1] InitializeNewPublishers: initializing BrokerMetadataPublisher with a snaps... \n", + "... ... \n", + "6159 Deleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.log.deleted. \n", + "6160 Deleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.index.deleted. \n", + "6161 Deleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.timeindex.deleted. \n", + "6162 Deleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.log.deleted. \n", + "6163 Deleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.index.deleted. \n", + "6164 Deleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.timeindex.deleted. \n", + "6165 Deleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002314.snapsh... \n", + "6166 Deleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002344.snapsh... \n", + "6203 [SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002608-0000000001 \n", + "6204 [SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002608-00000000... \n", + "6212 [ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2614 wit... \n", + "6213 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ... \n", + "6267 [ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2644 wit... \n", + "6268 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ... \n", + "6278 [SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002647-0000000001 \n", + "6279 [SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002647-00000000... \n", + "6387 [ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2674 wit... \n", + "6388 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ... \n", + "6433 [SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002686-0000000001 \n", + "6434 [SnapshotGenerator id=1] Creating new KRaft snapshot file snapshot 00000000000000002686-00000000... \n", + "6475 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Rolled new log segment at offset ... \n", + "6476 [ProducerStateManager partition=__cluster_metadata-0] Wrote producer snapshot at offset 2704 wit... \n", + "6477 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to... \n", + "6478 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st... \n", + "6479 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to... \n", + "6480 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st... \n", + "6481 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Incremented log start offset to... \n", + "6482 [UnifiedLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segments due to log st... \n", + "6483 [MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=24... \n", + "6484 [MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=25... \n", + "6485 [MetadataLog partition=__cluster_metadata-0, nodeId=1] Marking snapshot OffsetAndEpoch(offset=25... \n", + "6486 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment... \n", + "6487 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment... \n", + "6488 [LocalLog partition=__cluster_metadata-0, dir=/tmp/kafka-logs] Deleting segment files LogSegment... \n", + "6489 Deleted snapshot files for snapshot OffsetAndEpoch(offset=2374, epoch=1). \n", + "6490 Deleted snapshot files for snapshot OffsetAndEpoch(offset=2413, epoch=1). \n", + "6491 Deleted snapshot files for snapshot OffsetAndEpoch(offset=2452, epoch=1). \n", + "6492 Deleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.log.deleted. \n", + "6493 Deleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.index.deleted. \n", + "6494 Deleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.timeindex.deleted. \n", + "6495 Deleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.log.deleted. \n", + "6496 Deleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.index.deleted. \n", + "6497 Deleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.timeindex.deleted. \n", + "6498 Deleted log /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.log.deleted. \n", + "6499 Deleted offset index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.index.deleted. \n", + "6500 Deleted time index /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.timeindex.deleted. \n", + "6501 Deleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002374.snapsh... \n", + "6502 Deleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002404.snapsh... \n", + "6503 Deleted producer state snapshot /tmp/kafka-logs/__cluster_metadata-0/00000000000000002434.snapsh... \n", + "6578 [SnapshotEmitter id=1] Successfully wrote snapshot 00000000000000002725-0000000001 \n", + "\n", + "[1660 rows x 3 columns]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[resource_attrs_df['ra_service.name'] == 'kafka'][['observed_time_unix_nano', 'severity_text', 'body_string']]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "55edbba2-70a7-4175-9e65-32fe10239c3e", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Individual log message attributes\n", + "\n", + "As noted above, each `logs` message may contain additional metadata:\n", + " \n", + "> ***Hint:*** use the horizontal scroller below\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Individual log message attributes\n", + "\n", + "As noted above, each `logs` message may contain additional metadata:\n", + " \n", + "> ***Hint:*** use the horizontal scroller below" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "3b666709-2670-405c-9974-e6e107fb7b41", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_ContentRoota_EnvNamea_addressa_code.filepatha_code.functiona_code.linenoa_contexta_exception.messagea_exception.stacktracea_exception.typea_httpa_httpsa_otelServiceNamea_otelSpanIDa_otelTraceIDa_otelTraceSampleda_productIda_quantitya_urlsa_userId
0/usr/src/app/recommendation_server.py<module>172.0recommendationservice00False
1
2
3
4
5/usr/src/app/locustfile.py<module>69.0
6/usr/local/lib/python3.12/site-packages/locust/main.pymain307.0
7/usr/local/lib/python3.12/site-packages/locust/main.pymain507.0
8/usr/local/lib/python3.12/site-packages/locust/main.pystart_automatic_run419.0
9/usr/local/lib/python3.12/site-packages/locust/runners.py_start489.0
10/usr/local/lib/python3.12/site-packages/openfeature/client.pyevaluate_flag_details364.0received grpc status code StatusCode.UNAVAILABLETraceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/...GeneralError
11
12
13
14
15
16
17
18
19
20
21
22
23
24
\n", + "
" + ], + "text/plain": [ + " a_ContentRoot a_EnvName a_address \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.filepath \\\n", + "0 /usr/src/app/recommendation_server.py \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 /usr/src/app/locustfile.py \n", + "6 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "7 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "8 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "9 /usr/local/lib/python3.12/site-packages/locust/runners.py \n", + "10 /usr/local/lib/python3.12/site-packages/openfeature/client.py \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.function a_code.lineno a_context \\\n", + "0 172.0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 69.0 \n", + "6 main 307.0 \n", + "7 main 507.0 \n", + "8 start_automatic_run 419.0 \n", + "9 _start 489.0 \n", + "10 evaluate_flag_details 364.0 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.message \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 received grpc status code StatusCode.UNAVAILABLE \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.stacktrace \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 Traceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/... \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.type a_http a_https a_otelServiceName a_otelSpanID \\\n", + "0 recommendationservice 0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 GeneralError \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_otelTraceID a_otelTraceSampled a_productId a_quantity a_urls a_userId \n", + "0 0 False \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "28dbd179-658d-4556-9848-182136255d72", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Python, for example, adds attributes for the source file name, function and line number:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Python, for example, adds attributes for the source file name, function and line number:" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "502d58cd-17b7-4c80-b6f8-33086b189f59", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_code.filepatha_code.functiona_code.linenoa_exception.messagea_exception.stacktracea_exception.typea_otelServiceNamea_otelSpanIDa_otelTraceIDa_otelTraceSampled
0/usr/src/app/recommendation_server.py<module>172.0NaNNaNNaNrecommendationservice00False
5/usr/src/app/locustfile.py<module>69.0NaNNaNNaNNaNNaNNaNNaN
6/usr/local/lib/python3.12/site-packages/locust/main.pymain307.0NaNNaNNaNNaNNaNNaNNaN
7/usr/local/lib/python3.12/site-packages/locust/main.pymain507.0NaNNaNNaNNaNNaNNaNNaN
8/usr/local/lib/python3.12/site-packages/locust/main.pystart_automatic_run419.0NaNNaNNaNNaNNaNNaNNaN
9/usr/local/lib/python3.12/site-packages/locust/runners.py_start489.0NaNNaNNaNNaNNaNNaNNaN
10/usr/local/lib/python3.12/site-packages/openfeature/client.pyevaluate_flag_details364.0received grpc status code StatusCode.UNAVAILABLETraceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/...GeneralErrorNaNNaNNaNNaN
157/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice09f9aa6c3369abcfd0d72da1bbd44c36eaeddfd50bc08716True
158/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationserviceff5f08f07dc36b87ef12a39efadfe10b568585a0f85c4185True
159/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice508ecb1395bd53ca3300b293bf9dc71fb8570216a3dd6a55True
700/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice2b12cca89d415767efd92e7638c5021f222a5abf7fdf2da9True
701/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice07f0fc0c6fc2c7060b958cff9d2b86a87e7466bef3008e22True
702/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice224c4863b6e670439ccd8e31f285c452e82f86e702149ca5True
729/usr/src/app/locustfile.py<module>69.0NaNNaNNaNNaNNaNNaNNaN
730/usr/local/lib/python3.12/site-packages/locust/main.pymain307.0NaNNaNNaNNaNNaNNaNNaN
731/usr/local/lib/python3.12/site-packages/locust/main.pymain507.0NaNNaNNaNNaNNaNNaNNaN
732/usr/local/lib/python3.12/site-packages/locust/main.pystart_automatic_run419.0NaNNaNNaNNaNNaNNaNNaN
733/usr/local/lib/python3.12/site-packages/locust/runners.py_start489.0NaNNaNNaNNaNNaNNaNNaN
736/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice25ac2fdec07a4fb6299519809e6545cb1e91cf5f97dc37fcTrue
737/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice5e79eeaf0b8e368ceb93f89d01f63e59c450e226f509887bTrue
738/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice19767d94bff8c8c2020dfcb91b1f3b7535910c6c746bc848True
739/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservicee0f0e005b28d4d54beba5c9f58c9e1ef3f6e20c5c404e52eTrue
740/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservicec226bee4c25920366fbafa1b4bdc29dcddb5c8686084967cTrue
741/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice15cd0a834cb5f17c21cffdde1f3628dce703b8b4da685a7aTrue
742/usr/src/app/recommendation_server.pyListRecommendations47.0NaNNaNNaNrecommendationservice6d9d2c52bb7a78110efc228efc5c46cf7b953d2971ebd94dTrue
\n", + "
" + ], + "text/plain": [ + " a_code.filepath \\\n", + "0 /usr/src/app/recommendation_server.py \n", + "5 /usr/src/app/locustfile.py \n", + "6 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "7 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "8 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "9 /usr/local/lib/python3.12/site-packages/locust/runners.py \n", + "10 /usr/local/lib/python3.12/site-packages/openfeature/client.py \n", + "157 /usr/src/app/recommendation_server.py \n", + "158 /usr/src/app/recommendation_server.py \n", + "159 /usr/src/app/recommendation_server.py \n", + "700 /usr/src/app/recommendation_server.py \n", + "701 /usr/src/app/recommendation_server.py \n", + "702 /usr/src/app/recommendation_server.py \n", + "729 /usr/src/app/locustfile.py \n", + "730 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "731 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "732 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "733 /usr/local/lib/python3.12/site-packages/locust/runners.py \n", + "736 /usr/src/app/recommendation_server.py \n", + "737 /usr/src/app/recommendation_server.py \n", + "738 /usr/src/app/recommendation_server.py \n", + "739 /usr/src/app/recommendation_server.py \n", + "740 /usr/src/app/recommendation_server.py \n", + "741 /usr/src/app/recommendation_server.py \n", + "742 /usr/src/app/recommendation_server.py \n", + "\n", + " a_code.function a_code.lineno \\\n", + "0 172.0 \n", + "5 69.0 \n", + "6 main 307.0 \n", + "7 main 507.0 \n", + "8 start_automatic_run 419.0 \n", + "9 _start 489.0 \n", + "10 evaluate_flag_details 364.0 \n", + "157 ListRecommendations 47.0 \n", + "158 ListRecommendations 47.0 \n", + "159 ListRecommendations 47.0 \n", + "700 ListRecommendations 47.0 \n", + "701 ListRecommendations 47.0 \n", + "702 ListRecommendations 47.0 \n", + "729 69.0 \n", + "730 main 307.0 \n", + "731 main 507.0 \n", + "732 start_automatic_run 419.0 \n", + "733 _start 489.0 \n", + "736 ListRecommendations 47.0 \n", + "737 ListRecommendations 47.0 \n", + "738 ListRecommendations 47.0 \n", + "739 ListRecommendations 47.0 \n", + "740 ListRecommendations 47.0 \n", + "741 ListRecommendations 47.0 \n", + "742 ListRecommendations 47.0 \n", + "\n", + " a_exception.message \\\n", + "0 NaN \n", + "5 NaN \n", + "6 NaN \n", + "7 NaN \n", + "8 NaN \n", + "9 NaN \n", + "10 received grpc status code StatusCode.UNAVAILABLE \n", + "157 NaN \n", + "158 NaN \n", + "159 NaN \n", + "700 NaN \n", + "701 NaN \n", + "702 NaN \n", + "729 NaN \n", + "730 NaN \n", + "731 NaN \n", + "732 NaN \n", + "733 NaN \n", + "736 NaN \n", + "737 NaN \n", + "738 NaN \n", + "739 NaN \n", + "740 NaN \n", + "741 NaN \n", + "742 NaN \n", + "\n", + " a_exception.stacktrace \\\n", + "0 NaN \n", + "5 NaN \n", + "6 NaN \n", + "7 NaN \n", + "8 NaN \n", + "9 NaN \n", + "10 Traceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/... \n", + "157 NaN \n", + "158 NaN \n", + "159 NaN \n", + "700 NaN \n", + "701 NaN \n", + "702 NaN \n", + "729 NaN \n", + "730 NaN \n", + "731 NaN \n", + "732 NaN \n", + "733 NaN \n", + "736 NaN \n", + "737 NaN \n", + "738 NaN \n", + "739 NaN \n", + "740 NaN \n", + "741 NaN \n", + "742 NaN \n", + "\n", + " a_exception.type a_otelServiceName a_otelSpanID \\\n", + "0 NaN recommendationservice 0 \n", + "5 NaN NaN NaN \n", + "6 NaN NaN NaN \n", + "7 NaN NaN NaN \n", + "8 NaN NaN NaN \n", + "9 NaN NaN NaN \n", + "10 GeneralError NaN NaN \n", + "157 NaN recommendationservice 09f9aa6c3369abcf \n", + "158 NaN recommendationservice ff5f08f07dc36b87 \n", + "159 NaN recommendationservice 508ecb1395bd53ca \n", + "700 NaN recommendationservice 2b12cca89d415767 \n", + "701 NaN recommendationservice 07f0fc0c6fc2c706 \n", + "702 NaN recommendationservice 224c4863b6e67043 \n", + "729 NaN NaN NaN \n", + "730 NaN NaN NaN \n", + "731 NaN NaN NaN \n", + "732 NaN NaN NaN \n", + "733 NaN NaN NaN \n", + "736 NaN recommendationservice 25ac2fdec07a4fb6 \n", + "737 NaN recommendationservice 5e79eeaf0b8e368c \n", + "738 NaN recommendationservice 19767d94bff8c8c2 \n", + "739 NaN recommendationservice e0f0e005b28d4d54 \n", + "740 NaN recommendationservice c226bee4c2592036 \n", + "741 NaN recommendationservice 15cd0a834cb5f17c \n", + "742 NaN recommendationservice 6d9d2c52bb7a7811 \n", + "\n", + " a_otelTraceID a_otelTraceSampled \n", + "0 0 False \n", + "5 NaN NaN \n", + "6 NaN NaN \n", + "7 NaN NaN \n", + "8 NaN NaN \n", + "9 NaN NaN \n", + "10 NaN NaN \n", + "157 d0d72da1bbd44c36eaeddfd50bc08716 True \n", + "158 ef12a39efadfe10b568585a0f85c4185 True \n", + "159 3300b293bf9dc71fb8570216a3dd6a55 True \n", + "700 efd92e7638c5021f222a5abf7fdf2da9 True \n", + "701 0b958cff9d2b86a87e7466bef3008e22 True \n", + "702 9ccd8e31f285c452e82f86e702149ca5 True \n", + "729 NaN NaN \n", + "730 NaN NaN \n", + "731 NaN NaN \n", + "732 NaN NaN \n", + "733 NaN NaN \n", + "736 299519809e6545cb1e91cf5f97dc37fc True \n", + "737 eb93f89d01f63e59c450e226f509887b True \n", + "738 020dfcb91b1f3b7535910c6c746bc848 True \n", + "739 beba5c9f58c9e1ef3f6e20c5c404e52e True \n", + "740 6fbafa1b4bdc29dcddb5c8686084967c True \n", + "741 21cffdde1f3628dce703b8b4da685a7a True \n", + "742 0efc228efc5c46cf7b953d2971ebd94d True " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df[attrs_df['a_code.filepath'].notna()].head(25).dropna(axis=1, how='all')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "20c1baa0-757e-4836-8040-f055a27e6002", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Your code can attach custom attributes\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) adds details about a product id, quantity and a user id: \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Your code can attach custom attributes\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) adds details about a product id, quantity and a user id: " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "b8e1b565-acef-45f5-a5e3-0e2290850c38", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_productIda_quantitya_userId
86666VCHSJNUP4.0dd867ea0-5a1d-11ef-b321-32eb2a9fa2f1
8689SIQT8TOJO2.0dd867ea0-5a1d-11ef-b321-32eb2a9fa2f1
1019OLJCESPC7Z3.0fbc2cc0c-5a1d-11ef-88c4-32eb2a9fa2f1
104966VCHSJNUP3.0fd507b14-5a1d-11ef-88c4-32eb2a9fa2f1
10519SIQT8TOJO2.0fd507b14-5a1d-11ef-88c4-32eb2a9fa2f1
10571YMWWN1N4O2.0fe639748-5a1d-11ef-88c4-32eb2a9fa2f1
1100LS4PSXUNUM4.0008f200a-5a1e-11ef-88c4-32eb2a9fa2f1
11819SIQT8TOJO10.00a8ff8ae-5a1e-11ef-88c4-32eb2a9fa2f1
12801YMWWN1N4O3.013d73166-5a1e-11ef-88c4-32eb2a9fa2f1
13332ZYFJ3GM2N1.017d6738a-5a1e-11ef-88c4-32eb2a9fa2f1
\n", + "
" + ], + "text/plain": [ + " a_productId a_quantity a_userId\n", + "866 66VCHSJNUP 4.0 dd867ea0-5a1d-11ef-b321-32eb2a9fa2f1\n", + "868 9SIQT8TOJO 2.0 dd867ea0-5a1d-11ef-b321-32eb2a9fa2f1\n", + "1019 OLJCESPC7Z 3.0 fbc2cc0c-5a1d-11ef-88c4-32eb2a9fa2f1\n", + "1049 66VCHSJNUP 3.0 fd507b14-5a1d-11ef-88c4-32eb2a9fa2f1\n", + "1051 9SIQT8TOJO 2.0 fd507b14-5a1d-11ef-88c4-32eb2a9fa2f1\n", + "1057 1YMWWN1N4O 2.0 fe639748-5a1d-11ef-88c4-32eb2a9fa2f1\n", + "1100 LS4PSXUNUM 4.0 008f200a-5a1e-11ef-88c4-32eb2a9fa2f1\n", + "1181 9SIQT8TOJO 10.0 0a8ff8ae-5a1e-11ef-88c4-32eb2a9fa2f1\n", + "1280 1YMWWN1N4O 3.0 13d73166-5a1e-11ef-88c4-32eb2a9fa2f1\n", + "1333 2ZYFJ3GM2N 1.0 17d6738a-5a1e-11ef-88c4-32eb2a9fa2f1" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df[attrs_df['a_productId'].notna()][['a_productId', 'a_quantity', 'a_userId']].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "411034ed-3755-46ed-a066-080fdb13483f", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Transforming logs data\n", + "\n", + "Let's reformat the raw `logs` data to something easier to use. Below, we'll extract only a few meaningful columns from the raw data and 'join' \n", + "the `resource`, `scope` and entry attributes to form a new DataFrame.\n", + "\n", + "***Note:*** As mentioned above, the [Parquet Collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) adds extra\n", + "columns. We'll use one of them - `is_valid` to filter out records that were received in error.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Transforming logs data\n", + "\n", + "Let's reformat the raw `logs` data to something easier to use. Below, we'll extract only a few meaningful columns from the raw data and 'join' \n", + "the `resource`, `scope` and entry attributes to form a new DataFrame.\n", + "\n", + "***Note:*** As mentioned above, the [Parquet Collector](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) adds extra\n", + "columns. We'll use one of them - `is_valid` to filter out records that were received in error." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "b8e784f5-f960-42ec-b7e8-9a7cb3a2a647", + "metadata": {}, + "outputs": [], + "source": [ + "# Grab only some columns\n", + "base_df=raw_df.loc[raw_df['is_valid'] == True][\n", + " [\n", + " 'scope_name',\n", + " 'scope_version',\n", + " 'time_unix_nano',\n", + " 'observed_time_unix_nano',\n", + " 'severity_number',\n", + " 'severity_text',\n", + " 'flags',\n", + " 'trace_id',\n", + " 'span_id'\n", + " ]\n", + "]\n", + "# Here, we're not interested in log messages that are not strings, so, only get the string-valued messages\n", + "base_df['body'] = raw_df.loc[raw_df['body_type'] == 'STRING_VALUE']['body_string']" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "91bf9b95-23d2-4506-9ca4-bf2fe3624f0e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versiontime_unix_nanoobserved_time_unix_nanoseverity_numberseverity_textflagstrace_idspan_idbody
0opentelemetry.sdk._logs._internal17236269334296604161723626933429750407b'SEVERITY_NUMBER_INFO'INFO0b''b''Recommendation service started, listening on port 8080
1org.apache.kafka.common.utils.LoggingSignalHandler17236269382227491521723626938222760652b'SEVERITY_NUMBER_INFO'INFO0b''b''Registered signal handlers for TERM, INT, HUP
2kafka.utils.Log4jControllerRegistration$17236269378858823491723626937885898237b'SEVERITY_NUMBER_INFO'INFO0b''b''Registered kafka:type=kafka.Log4jController MBean
3kafka.server.ControllerServer17236269382289942681723626938229003786b'SEVERITY_NUMBER_INFO'INFO0b''b''[ControllerServer id=1] Starting controller
4org.apache.zookeeper.common.X509Util17236269380940349741723626938094042403b'SEVERITY_NUMBER_INFO'INFO0b''b''Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg...
5opentelemetry.sdk._logs._internal17236269340661176320b'SEVERITY_NUMBER_INFO'INFO0b''b''Instrumentation complete
6opentelemetry.sdk._logs._internal17236269340810923520b'SEVERITY_NUMBER_INFO'INFO0b''b''Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)
7opentelemetry.sdk._logs._internal17236269340949954560b'SEVERITY_NUMBER_INFO'INFO0b''b''Starting Locust 2.18.2
8opentelemetry.sdk._logs._internal17236269340951751680b'SEVERITY_NUMBER_INFO'INFO0b''b''No run time limit set, use CTRL+C to interrupt
9opentelemetry.sdk._logs._internal17236269341023905280b'SEVERITY_NUMBER_INFO'INFO0b''b''Ramping to 10 users at a rate of 1.00 per second
10opentelemetry.sdk._logs._internal17236269351282283520b'SEVERITY_NUMBER_ERROR'ERROR0b''b''Error ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage'
11kafka.server.NodeToControllerRequestThread17236269391377097311723626939137715614b'SEVERITY_NUMBER_INFO'INFO0b''b''[controller-1-to-controller-registration-channel-manager]: Starting
12kafka.server.NodeToControllerRequestThread17236269391385677901723626939138571296b'SEVERITY_NUMBER_INFO'INFO0b''b''[controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ...
13kafka.server.NodeToControllerRequestThread17236269391676772701723626939167687867b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-forwarding-channel-manager]: Starting
14kafka.server.NodeToControllerRequestThread17236269391679208151723626939167924714b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u...
15kafka.server.NodeToControllerRequestThread17236269392078219881723626939207830541b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-alter-partition-channel-manager]: Starting
16kafka.server.NodeToControllerRequestThread17236269392081414461723626939208146097b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w...
17kafka.server.NodeToControllerRequestThread17236269392150809841723626939215090997b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-directory-assignments-channel-manager]: Starting
18kafka.server.NodeToControllerRequestThread17236269392153017331723626939215307547b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no...
19kafka.server.NodeToControllerRequestThread17236269392849115461723626939284919224b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-heartbeat-channel-manager]: Starting
20kafka.server.NodeToControllerRequestThread17236269392851565831723626939285160658b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us...
21kafka.raft.KafkaMetadataLog$17236269388218523541723626938821863150b'SEVERITY_NUMBER_INFO'INFO0b''b''Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0
22org.apache.kafka.common.utils.AppInfoParser17236269394845186651723626939484521320b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka version: 3.7.0
23org.apache.kafka.common.utils.AppInfoParser17236269394846139651723626939484615956b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka commitId: 2ae524ed625438c5
24org.apache.kafka.common.utils.AppInfoParser17236269394846587411723626939484659917b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka startTimeMs: 1723626939484
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version \\\n", + "0 opentelemetry.sdk._logs._internal \n", + "1 org.apache.kafka.common.utils.LoggingSignalHandler \n", + "2 kafka.utils.Log4jControllerRegistration$ \n", + "3 kafka.server.ControllerServer \n", + "4 org.apache.zookeeper.common.X509Util \n", + "5 opentelemetry.sdk._logs._internal \n", + "6 opentelemetry.sdk._logs._internal \n", + "7 opentelemetry.sdk._logs._internal \n", + "8 opentelemetry.sdk._logs._internal \n", + "9 opentelemetry.sdk._logs._internal \n", + "10 opentelemetry.sdk._logs._internal \n", + "11 kafka.server.NodeToControllerRequestThread \n", + "12 kafka.server.NodeToControllerRequestThread \n", + "13 kafka.server.NodeToControllerRequestThread \n", + "14 kafka.server.NodeToControllerRequestThread \n", + "15 kafka.server.NodeToControllerRequestThread \n", + "16 kafka.server.NodeToControllerRequestThread \n", + "17 kafka.server.NodeToControllerRequestThread \n", + "18 kafka.server.NodeToControllerRequestThread \n", + "19 kafka.server.NodeToControllerRequestThread \n", + "20 kafka.server.NodeToControllerRequestThread \n", + "21 kafka.raft.KafkaMetadataLog$ \n", + "22 org.apache.kafka.common.utils.AppInfoParser \n", + "23 org.apache.kafka.common.utils.AppInfoParser \n", + "24 org.apache.kafka.common.utils.AppInfoParser \n", + "\n", + " time_unix_nano observed_time_unix_nano severity_number \\\n", + "0 1723626933429660416 1723626933429750407 b'SEVERITY_NUMBER_INFO' \n", + "1 1723626938222749152 1723626938222760652 b'SEVERITY_NUMBER_INFO' \n", + "2 1723626937885882349 1723626937885898237 b'SEVERITY_NUMBER_INFO' \n", + "3 1723626938228994268 1723626938229003786 b'SEVERITY_NUMBER_INFO' \n", + "4 1723626938094034974 1723626938094042403 b'SEVERITY_NUMBER_INFO' \n", + "5 1723626934066117632 0 b'SEVERITY_NUMBER_INFO' \n", + "6 1723626934081092352 0 b'SEVERITY_NUMBER_INFO' \n", + "7 1723626934094995456 0 b'SEVERITY_NUMBER_INFO' \n", + "8 1723626934095175168 0 b'SEVERITY_NUMBER_INFO' \n", + "9 1723626934102390528 0 b'SEVERITY_NUMBER_INFO' \n", + "10 1723626935128228352 0 b'SEVERITY_NUMBER_ERROR' \n", + "11 1723626939137709731 1723626939137715614 b'SEVERITY_NUMBER_INFO' \n", + "12 1723626939138567790 1723626939138571296 b'SEVERITY_NUMBER_INFO' \n", + "13 1723626939167677270 1723626939167687867 b'SEVERITY_NUMBER_INFO' \n", + "14 1723626939167920815 1723626939167924714 b'SEVERITY_NUMBER_INFO' \n", + "15 1723626939207821988 1723626939207830541 b'SEVERITY_NUMBER_INFO' \n", + "16 1723626939208141446 1723626939208146097 b'SEVERITY_NUMBER_INFO' \n", + "17 1723626939215080984 1723626939215090997 b'SEVERITY_NUMBER_INFO' \n", + "18 1723626939215301733 1723626939215307547 b'SEVERITY_NUMBER_INFO' \n", + "19 1723626939284911546 1723626939284919224 b'SEVERITY_NUMBER_INFO' \n", + "20 1723626939285156583 1723626939285160658 b'SEVERITY_NUMBER_INFO' \n", + "21 1723626938821852354 1723626938821863150 b'SEVERITY_NUMBER_INFO' \n", + "22 1723626939484518665 1723626939484521320 b'SEVERITY_NUMBER_INFO' \n", + "23 1723626939484613965 1723626939484615956 b'SEVERITY_NUMBER_INFO' \n", + "24 1723626939484658741 1723626939484659917 b'SEVERITY_NUMBER_INFO' \n", + "\n", + " severity_text flags trace_id span_id \\\n", + "0 INFO 0 b'' b'' \n", + "1 INFO 0 b'' b'' \n", + "2 INFO 0 b'' b'' \n", + "3 INFO 0 b'' b'' \n", + "4 INFO 0 b'' b'' \n", + "5 INFO 0 b'' b'' \n", + "6 INFO 0 b'' b'' \n", + "7 INFO 0 b'' b'' \n", + "8 INFO 0 b'' b'' \n", + "9 INFO 0 b'' b'' \n", + "10 ERROR 0 b'' b'' \n", + "11 INFO 0 b'' b'' \n", + "12 INFO 0 b'' b'' \n", + "13 INFO 0 b'' b'' \n", + "14 INFO 0 b'' b'' \n", + "15 INFO 0 b'' b'' \n", + "16 INFO 0 b'' b'' \n", + "17 INFO 0 b'' b'' \n", + "18 INFO 0 b'' b'' \n", + "19 INFO 0 b'' b'' \n", + "20 INFO 0 b'' b'' \n", + "21 INFO 0 b'' b'' \n", + "22 INFO 0 b'' b'' \n", + "23 INFO 0 b'' b'' \n", + "24 INFO 0 b'' b'' \n", + "\n", + " body \n", + "0 Recommendation service started, listening on port 8080 \n", + "1 Registered signal handlers for TERM, INT, HUP \n", + "2 Registered kafka:type=kafka.Log4jController MBean \n", + "3 [ControllerServer id=1] Starting controller \n", + "4 Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg... \n", + "5 Instrumentation complete \n", + "6 Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) \n", + "7 Starting Locust 2.18.2 \n", + "8 No run time limit set, use CTRL+C to interrupt \n", + "9 Ramping to 10 users at a rate of 1.00 per second \n", + "10 Error ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage' \n", + "11 [controller-1-to-controller-registration-channel-manager]: Starting \n", + "12 [controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ... \n", + "13 [broker-1-to-controller-forwarding-channel-manager]: Starting \n", + "14 [broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u... \n", + "15 [broker-1-to-controller-alter-partition-channel-manager]: Starting \n", + "16 [broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w... \n", + "17 [broker-1-to-controller-directory-assignments-channel-manager]: Starting \n", + "18 [broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no... \n", + "19 [broker-1-to-controller-heartbeat-channel-manager]: Starting \n", + "20 [broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us... \n", + "21 Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0 \n", + "22 Kafka version: 3.7.0 \n", + "23 Kafka commitId: 2ae524ed625438c5 \n", + "24 Kafka startTimeMs: 1723626939484 " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "base_df.head(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "5625b2fd-48b9-407e-8954-3dc33c032a4a", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Now 'join' the base columns above with all attributes:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Now 'join' the base columns above with all attributes:" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "8951673a-ded5-4fa0-99ee-1c8793e429b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versiontime_unix_nanoobserved_time_unix_nanoseverity_numberseverity_textflagstrace_idspan_idbodya_ContentRoota_EnvNamea_addressa_code.filepatha_code.functiona_code.linenoa_contexta_exception.messagea_exception.stacktracea_exception.typea_httpa_httpsa_otelServiceNamea_otelSpanIDa_otelTraceIDa_otelTraceSampleda_productIda_quantitya_urlsa_userIdra_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0opentelemetry.sdk._logs._internal17236269334296604161723626933429750407b'SEVERITY_NUMBER_INFO'INFO0b''b''Recommendation service started, listening on port 8080/usr/src/app/recommendation_server.py<module>172.0recommendationservice00Falseopentelemetry-demo-recommendationserviceotel-demo-parquetminikube10.244.1.52opentelemetry-demo-recommendationservice-64768c6df6-2wtjl2024-08-14T09:15:31Zb3d5bd61-c923-4f56-86b8-50f347fdbd78b3d5bd61-c923-4f56-86b8-50f347fdbd78recommendationserviceopentelemetry-demo-parquet1.11.1pythonopentelemetry1.25.0
1org.apache.kafka.common.utils.LoggingSignalHandler17236269382227491521723626938222760652b'SEVERITY_NUMBER_INFO'INFO0b''b''Registered signal handlers for TERM, INT, HUP21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
2kafka.utils.Log4jControllerRegistration$17236269378858823491723626937885898237b'SEVERITY_NUMBER_INFO'INFO0b''b''Registered kafka:type=kafka.Log4jController MBean21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
3kafka.server.ControllerServer17236269382289942681723626938229003786b'SEVERITY_NUMBER_INFO'INFO0b''b''[ControllerServer id=1] Starting controller21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
4org.apache.zookeeper.common.X509Util17236269380940349741723626938094042403b'SEVERITY_NUMBER_INFO'INFO0b''b''Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
5opentelemetry.sdk._logs._internal17236269340661176320b'SEVERITY_NUMBER_INFO'INFO0b''b''Instrumentation complete/usr/src/app/locustfile.py<module>69.0opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
6opentelemetry.sdk._logs._internal17236269340810923520b'SEVERITY_NUMBER_INFO'INFO0b''b''Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)/usr/local/lib/python3.12/site-packages/locust/main.pymain307.0opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
7opentelemetry.sdk._logs._internal17236269340949954560b'SEVERITY_NUMBER_INFO'INFO0b''b''Starting Locust 2.18.2/usr/local/lib/python3.12/site-packages/locust/main.pymain507.0opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
8opentelemetry.sdk._logs._internal17236269340951751680b'SEVERITY_NUMBER_INFO'INFO0b''b''No run time limit set, use CTRL+C to interrupt/usr/local/lib/python3.12/site-packages/locust/main.pystart_automatic_run419.0opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
9opentelemetry.sdk._logs._internal17236269341023905280b'SEVERITY_NUMBER_INFO'INFO0b''b''Ramping to 10 users at a rate of 1.00 per second/usr/local/lib/python3.12/site-packages/locust/runners.py_start489.0opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
10opentelemetry.sdk._logs._internal17236269351282283520b'SEVERITY_NUMBER_ERROR'ERROR0b''b''Error ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage'/usr/local/lib/python3.12/site-packages/openfeature/client.pyevaluate_flag_details364.0received grpc status code StatusCode.UNAVAILABLETraceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/...GeneralErroropentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
11kafka.server.NodeToControllerRequestThread17236269391377097311723626939137715614b'SEVERITY_NUMBER_INFO'INFO0b''b''[controller-1-to-controller-registration-channel-manager]: Starting21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
12kafka.server.NodeToControllerRequestThread17236269391385677901723626939138571296b'SEVERITY_NUMBER_INFO'INFO0b''b''[controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
13kafka.server.NodeToControllerRequestThread17236269391676772701723626939167687867b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-forwarding-channel-manager]: Starting21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
14kafka.server.NodeToControllerRequestThread17236269391679208151723626939167924714b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
15kafka.server.NodeToControllerRequestThread17236269392078219881723626939207830541b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-alter-partition-channel-manager]: Starting21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
16kafka.server.NodeToControllerRequestThread17236269392081414461723626939208146097b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
17kafka.server.NodeToControllerRequestThread17236269392150809841723626939215090997b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-directory-assignments-channel-manager]: Starting21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
18kafka.server.NodeToControllerRequestThread17236269392153017331723626939215307547b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
19kafka.server.NodeToControllerRequestThread17236269392849115461723626939284919224b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-heartbeat-channel-manager]: Starting21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
20kafka.server.NodeToControllerRequestThread17236269392851565831723626939285160658b'SEVERITY_NUMBER_INFO'INFO0b''b''[broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us...21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
21kafka.raft.KafkaMetadataLog$17236269388218523541723626938821863150b'SEVERITY_NUMBER_INFO'INFO0b''b''Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
22org.apache.kafka.common.utils.AppInfoParser17236269394845186651723626939484521320b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka version: 3.7.021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
23org.apache.kafka.common.utils.AppInfoParser17236269394846139651723626939484615956b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka commitId: 2ae524ed625438c521ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
24org.apache.kafka.common.utils.AppInfoParser17236269394846587411723626939484659917b'SEVERITY_NUMBER_INFO'INFO0b''b''Kafka startTimeMs: 172362693948421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version \\\n", + "0 opentelemetry.sdk._logs._internal \n", + "1 org.apache.kafka.common.utils.LoggingSignalHandler \n", + "2 kafka.utils.Log4jControllerRegistration$ \n", + "3 kafka.server.ControllerServer \n", + "4 org.apache.zookeeper.common.X509Util \n", + "5 opentelemetry.sdk._logs._internal \n", + "6 opentelemetry.sdk._logs._internal \n", + "7 opentelemetry.sdk._logs._internal \n", + "8 opentelemetry.sdk._logs._internal \n", + "9 opentelemetry.sdk._logs._internal \n", + "10 opentelemetry.sdk._logs._internal \n", + "11 kafka.server.NodeToControllerRequestThread \n", + "12 kafka.server.NodeToControllerRequestThread \n", + "13 kafka.server.NodeToControllerRequestThread \n", + "14 kafka.server.NodeToControllerRequestThread \n", + "15 kafka.server.NodeToControllerRequestThread \n", + "16 kafka.server.NodeToControllerRequestThread \n", + "17 kafka.server.NodeToControllerRequestThread \n", + "18 kafka.server.NodeToControllerRequestThread \n", + "19 kafka.server.NodeToControllerRequestThread \n", + "20 kafka.server.NodeToControllerRequestThread \n", + "21 kafka.raft.KafkaMetadataLog$ \n", + "22 org.apache.kafka.common.utils.AppInfoParser \n", + "23 org.apache.kafka.common.utils.AppInfoParser \n", + "24 org.apache.kafka.common.utils.AppInfoParser \n", + "\n", + " time_unix_nano observed_time_unix_nano severity_number \\\n", + "0 1723626933429660416 1723626933429750407 b'SEVERITY_NUMBER_INFO' \n", + "1 1723626938222749152 1723626938222760652 b'SEVERITY_NUMBER_INFO' \n", + "2 1723626937885882349 1723626937885898237 b'SEVERITY_NUMBER_INFO' \n", + "3 1723626938228994268 1723626938229003786 b'SEVERITY_NUMBER_INFO' \n", + "4 1723626938094034974 1723626938094042403 b'SEVERITY_NUMBER_INFO' \n", + "5 1723626934066117632 0 b'SEVERITY_NUMBER_INFO' \n", + "6 1723626934081092352 0 b'SEVERITY_NUMBER_INFO' \n", + "7 1723626934094995456 0 b'SEVERITY_NUMBER_INFO' \n", + "8 1723626934095175168 0 b'SEVERITY_NUMBER_INFO' \n", + "9 1723626934102390528 0 b'SEVERITY_NUMBER_INFO' \n", + "10 1723626935128228352 0 b'SEVERITY_NUMBER_ERROR' \n", + "11 1723626939137709731 1723626939137715614 b'SEVERITY_NUMBER_INFO' \n", + "12 1723626939138567790 1723626939138571296 b'SEVERITY_NUMBER_INFO' \n", + "13 1723626939167677270 1723626939167687867 b'SEVERITY_NUMBER_INFO' \n", + "14 1723626939167920815 1723626939167924714 b'SEVERITY_NUMBER_INFO' \n", + "15 1723626939207821988 1723626939207830541 b'SEVERITY_NUMBER_INFO' \n", + "16 1723626939208141446 1723626939208146097 b'SEVERITY_NUMBER_INFO' \n", + "17 1723626939215080984 1723626939215090997 b'SEVERITY_NUMBER_INFO' \n", + "18 1723626939215301733 1723626939215307547 b'SEVERITY_NUMBER_INFO' \n", + "19 1723626939284911546 1723626939284919224 b'SEVERITY_NUMBER_INFO' \n", + "20 1723626939285156583 1723626939285160658 b'SEVERITY_NUMBER_INFO' \n", + "21 1723626938821852354 1723626938821863150 b'SEVERITY_NUMBER_INFO' \n", + "22 1723626939484518665 1723626939484521320 b'SEVERITY_NUMBER_INFO' \n", + "23 1723626939484613965 1723626939484615956 b'SEVERITY_NUMBER_INFO' \n", + "24 1723626939484658741 1723626939484659917 b'SEVERITY_NUMBER_INFO' \n", + "\n", + " severity_text flags trace_id span_id \\\n", + "0 INFO 0 b'' b'' \n", + "1 INFO 0 b'' b'' \n", + "2 INFO 0 b'' b'' \n", + "3 INFO 0 b'' b'' \n", + "4 INFO 0 b'' b'' \n", + "5 INFO 0 b'' b'' \n", + "6 INFO 0 b'' b'' \n", + "7 INFO 0 b'' b'' \n", + "8 INFO 0 b'' b'' \n", + "9 INFO 0 b'' b'' \n", + "10 ERROR 0 b'' b'' \n", + "11 INFO 0 b'' b'' \n", + "12 INFO 0 b'' b'' \n", + "13 INFO 0 b'' b'' \n", + "14 INFO 0 b'' b'' \n", + "15 INFO 0 b'' b'' \n", + "16 INFO 0 b'' b'' \n", + "17 INFO 0 b'' b'' \n", + "18 INFO 0 b'' b'' \n", + "19 INFO 0 b'' b'' \n", + "20 INFO 0 b'' b'' \n", + "21 INFO 0 b'' b'' \n", + "22 INFO 0 b'' b'' \n", + "23 INFO 0 b'' b'' \n", + "24 INFO 0 b'' b'' \n", + "\n", + " body \\\n", + "0 Recommendation service started, listening on port 8080 \n", + "1 Registered signal handlers for TERM, INT, HUP \n", + "2 Registered kafka:type=kafka.Log4jController MBean \n", + "3 [ControllerServer id=1] Starting controller \n", + "4 Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS reneg... \n", + "5 Instrumentation complete \n", + "6 Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) \n", + "7 Starting Locust 2.18.2 \n", + "8 No run time limit set, use CTRL+C to interrupt \n", + "9 Ramping to 10 users at a rate of 1.00 per second \n", + "10 Error ErrorCode.GENERAL while evaluating flag with key: 'loadgeneratorFloodHomepage' \n", + "11 [controller-1-to-controller-registration-channel-manager]: Starting \n", + "12 [controller-1-to-controller-registration-channel-manager]: Recorded new controller, from now on ... \n", + "13 [broker-1-to-controller-forwarding-channel-manager]: Starting \n", + "14 [broker-1-to-controller-forwarding-channel-manager]: Recorded new controller, from now on will u... \n", + "15 [broker-1-to-controller-alter-partition-channel-manager]: Starting \n", + "16 [broker-1-to-controller-alter-partition-channel-manager]: Recorded new controller, from now on w... \n", + "17 [broker-1-to-controller-directory-assignments-channel-manager]: Starting \n", + "18 [broker-1-to-controller-directory-assignments-channel-manager]: Recorded new controller, from no... \n", + "19 [broker-1-to-controller-heartbeat-channel-manager]: Starting \n", + "20 [broker-1-to-controller-heartbeat-channel-manager]: Recorded new controller, from now on will us... \n", + "21 Initialized snapshots with IDs SortedSet() from /tmp/kafka-logs/__cluster_metadata-0 \n", + "22 Kafka version: 3.7.0 \n", + "23 Kafka commitId: 2ae524ed625438c5 \n", + "24 Kafka startTimeMs: 1723626939484 \n", + "\n", + " a_ContentRoot a_EnvName a_address \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.filepath \\\n", + "0 /usr/src/app/recommendation_server.py \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 /usr/src/app/locustfile.py \n", + "6 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "7 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "8 /usr/local/lib/python3.12/site-packages/locust/main.py \n", + "9 /usr/local/lib/python3.12/site-packages/locust/runners.py \n", + "10 /usr/local/lib/python3.12/site-packages/openfeature/client.py \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.function a_code.lineno a_context \\\n", + "0 172.0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 69.0 \n", + "6 main 307.0 \n", + "7 main 507.0 \n", + "8 start_automatic_run 419.0 \n", + "9 _start 489.0 \n", + "10 evaluate_flag_details 364.0 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.message \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 received grpc status code StatusCode.UNAVAILABLE \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.stacktrace \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 Traceback (most recent call last):\\n File \"/usr/local/lib/python3.12/site-packages/openfeature/... \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_exception.type a_http a_https a_otelServiceName a_otelSpanID \\\n", + "0 recommendationservice 0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 GeneralError \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_otelTraceID a_otelTraceSampled a_productId a_quantity a_urls a_userId \\\n", + "0 0 False \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_container.id \\\n", + "0 \n", + "1 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "2 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "3 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "4 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "12 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "13 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "14 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "15 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "16 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "17 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "18 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "19 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "20 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "21 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "22 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "23 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "24 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 \n", + "1 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "12 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "13 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "14 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "16 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "18 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "19 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "21 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "22 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "24 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name \\\n", + "0 opentelemetry-demo-recommendationservice otel-demo-parquet \n", + "1 opentelemetry-demo-kafka otel-demo-parquet \n", + "2 opentelemetry-demo-kafka otel-demo-parquet \n", + "3 opentelemetry-demo-kafka otel-demo-parquet \n", + "4 opentelemetry-demo-kafka otel-demo-parquet \n", + "5 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "6 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "7 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "8 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "9 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "10 opentelemetry-demo-loadgenerator otel-demo-parquet \n", + "11 opentelemetry-demo-kafka otel-demo-parquet \n", + "12 opentelemetry-demo-kafka otel-demo-parquet \n", + "13 opentelemetry-demo-kafka otel-demo-parquet \n", + "14 opentelemetry-demo-kafka otel-demo-parquet \n", + "15 opentelemetry-demo-kafka otel-demo-parquet \n", + "16 opentelemetry-demo-kafka otel-demo-parquet \n", + "17 opentelemetry-demo-kafka otel-demo-parquet \n", + "18 opentelemetry-demo-kafka otel-demo-parquet \n", + "19 opentelemetry-demo-kafka otel-demo-parquet \n", + "20 opentelemetry-demo-kafka otel-demo-parquet \n", + "21 opentelemetry-demo-kafka otel-demo-parquet \n", + "22 opentelemetry-demo-kafka otel-demo-parquet \n", + "23 opentelemetry-demo-kafka otel-demo-parquet \n", + "24 opentelemetry-demo-kafka otel-demo-parquet \n", + "\n", + " ra_k8s.node.name ra_k8s.pod.ip \\\n", + "0 minikube 10.244.1.52 \n", + "1 minikube 10.244.1.47 \n", + "2 minikube 10.244.1.47 \n", + "3 minikube 10.244.1.47 \n", + "4 minikube 10.244.1.47 \n", + "5 minikube 10.244.1.48 \n", + "6 minikube 10.244.1.48 \n", + "7 minikube 10.244.1.48 \n", + "8 minikube 10.244.1.48 \n", + "9 minikube 10.244.1.48 \n", + "10 minikube 10.244.1.48 \n", + "11 minikube 10.244.1.47 \n", + "12 minikube 10.244.1.47 \n", + "13 minikube 10.244.1.47 \n", + "14 minikube 10.244.1.47 \n", + "15 minikube 10.244.1.47 \n", + "16 minikube 10.244.1.47 \n", + "17 minikube 10.244.1.47 \n", + "18 minikube 10.244.1.47 \n", + "19 minikube 10.244.1.47 \n", + "20 minikube 10.244.1.47 \n", + "21 minikube 10.244.1.47 \n", + "22 minikube 10.244.1.47 \n", + "23 minikube 10.244.1.47 \n", + "24 minikube 10.244.1.47 \n", + "\n", + " ra_k8s.pod.name \\\n", + "0 opentelemetry-demo-recommendationservice-64768c6df6-2wtjl \n", + "1 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "2 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "3 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "5 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "6 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "7 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "8 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "9 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "10 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "11 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "12 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "13 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "14 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "16 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "18 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "19 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "21 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "22 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "24 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 2024-08-14T09:15:31Z b3d5bd61-c923-4f56-86b8-50f347fdbd78 \n", + "1 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "2 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "3 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "4 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "5 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "7 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "8 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "9 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "10 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "11 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "12 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "13 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "14 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "15 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "16 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "17 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "18 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "19 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "20 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "21 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "22 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "23 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "24 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "\n", + " ra_os.description ra_os.name ra_os.type ra_os.version \\\n", + "0 \n", + "1 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "2 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "3 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "4 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "12 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "13 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "14 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "15 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "16 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "17 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "18 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "19 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "20 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "21 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "22 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "23 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "24 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "\n", + " ra_process.command ra_process.command_args \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.command_line \\\n", + "0 \n", + "1 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "2 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "3 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "4 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "12 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "13 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "14 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "15 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "16 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "17 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "18 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "19 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "20 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "21 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "22 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "23 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "24 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "\n", + " ra_process.executable.path ra_process.owner ra_process.pid \\\n", + "0 \n", + "1 /opt/java/openjdk/bin/java 1.0 \n", + "2 /opt/java/openjdk/bin/java 1.0 \n", + "3 /opt/java/openjdk/bin/java 1.0 \n", + "4 /opt/java/openjdk/bin/java 1.0 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 /opt/java/openjdk/bin/java 1.0 \n", + "12 /opt/java/openjdk/bin/java 1.0 \n", + "13 /opt/java/openjdk/bin/java 1.0 \n", + "14 /opt/java/openjdk/bin/java 1.0 \n", + "15 /opt/java/openjdk/bin/java 1.0 \n", + "16 /opt/java/openjdk/bin/java 1.0 \n", + "17 /opt/java/openjdk/bin/java 1.0 \n", + "18 /opt/java/openjdk/bin/java 1.0 \n", + "19 /opt/java/openjdk/bin/java 1.0 \n", + "20 /opt/java/openjdk/bin/java 1.0 \n", + "21 /opt/java/openjdk/bin/java 1.0 \n", + "22 /opt/java/openjdk/bin/java 1.0 \n", + "23 /opt/java/openjdk/bin/java 1.0 \n", + "24 /opt/java/openjdk/bin/java 1.0 \n", + "\n", + " ra_process.runtime.description \\\n", + "0 \n", + "1 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "2 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "3 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "4 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "12 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "13 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "14 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "15 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "16 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "17 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "18 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "19 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "20 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "21 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "22 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "23 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "24 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "\n", + " ra_process.runtime.name ra_process.runtime.version \\\n", + "0 \n", + "1 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "2 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "3 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "4 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "12 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "13 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "14 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "15 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "16 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "17 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "18 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "19 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "20 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "21 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "22 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "23 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "24 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "\n", + " ra_service.instance.id ra_service.name \\\n", + "0 b3d5bd61-c923-4f56-86b8-50f347fdbd78 recommendationservice \n", + "1 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "2 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "3 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "4 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "5 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "6 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "7 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "8 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "9 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "10 c8245f82-76f9-409b-848b-1f322ab0558c loadgenerator \n", + "11 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "12 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "13 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "14 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "15 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "16 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "17 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "18 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "19 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "20 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "21 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "22 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "23 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "24 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "\n", + " ra_service.namespace ra_service.version \\\n", + "0 opentelemetry-demo-parquet 1.11.1 \n", + "1 opentelemetry-demo-parquet 1.11.1 \n", + "2 opentelemetry-demo-parquet 1.11.1 \n", + "3 opentelemetry-demo-parquet 1.11.1 \n", + "4 opentelemetry-demo-parquet 1.11.1 \n", + "5 opentelemetry-demo-parquet 1.11.1 \n", + "6 opentelemetry-demo-parquet 1.11.1 \n", + "7 opentelemetry-demo-parquet 1.11.1 \n", + "8 opentelemetry-demo-parquet 1.11.1 \n", + "9 opentelemetry-demo-parquet 1.11.1 \n", + "10 opentelemetry-demo-parquet 1.11.1 \n", + "11 opentelemetry-demo-parquet 1.11.1 \n", + "12 opentelemetry-demo-parquet 1.11.1 \n", + "13 opentelemetry-demo-parquet 1.11.1 \n", + "14 opentelemetry-demo-parquet 1.11.1 \n", + "15 opentelemetry-demo-parquet 1.11.1 \n", + "16 opentelemetry-demo-parquet 1.11.1 \n", + "17 opentelemetry-demo-parquet 1.11.1 \n", + "18 opentelemetry-demo-parquet 1.11.1 \n", + "19 opentelemetry-demo-parquet 1.11.1 \n", + "20 opentelemetry-demo-parquet 1.11.1 \n", + "21 opentelemetry-demo-parquet 1.11.1 \n", + "22 opentelemetry-demo-parquet 1.11.1 \n", + "23 opentelemetry-demo-parquet 1.11.1 \n", + "24 opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.distro.name ra_telemetry.distro.version \\\n", + "0 \n", + "1 opentelemetry-java-instrumentation 2.4.0 \n", + "2 opentelemetry-java-instrumentation 2.4.0 \n", + "3 opentelemetry-java-instrumentation 2.4.0 \n", + "4 opentelemetry-java-instrumentation 2.4.0 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 opentelemetry-java-instrumentation 2.4.0 \n", + "12 opentelemetry-java-instrumentation 2.4.0 \n", + "13 opentelemetry-java-instrumentation 2.4.0 \n", + "14 opentelemetry-java-instrumentation 2.4.0 \n", + "15 opentelemetry-java-instrumentation 2.4.0 \n", + "16 opentelemetry-java-instrumentation 2.4.0 \n", + "17 opentelemetry-java-instrumentation 2.4.0 \n", + "18 opentelemetry-java-instrumentation 2.4.0 \n", + "19 opentelemetry-java-instrumentation 2.4.0 \n", + "20 opentelemetry-java-instrumentation 2.4.0 \n", + "21 opentelemetry-java-instrumentation 2.4.0 \n", + "22 opentelemetry-java-instrumentation 2.4.0 \n", + "23 opentelemetry-java-instrumentation 2.4.0 \n", + "24 opentelemetry-java-instrumentation 2.4.0 \n", + "\n", + " ra_telemetry.sdk.language ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 python opentelemetry 1.25.0 \n", + "1 java opentelemetry 1.38.0 \n", + "2 java opentelemetry 1.38.0 \n", + "3 java opentelemetry 1.38.0 \n", + "4 java opentelemetry 1.38.0 \n", + "5 python opentelemetry 1.23.0 \n", + "6 python opentelemetry 1.23.0 \n", + "7 python opentelemetry 1.23.0 \n", + "8 python opentelemetry 1.23.0 \n", + "9 python opentelemetry 1.23.0 \n", + "10 python opentelemetry 1.23.0 \n", + "11 java opentelemetry 1.38.0 \n", + "12 java opentelemetry 1.38.0 \n", + "13 java opentelemetry 1.38.0 \n", + "14 java opentelemetry 1.38.0 \n", + "15 java opentelemetry 1.38.0 \n", + "16 java opentelemetry 1.38.0 \n", + "17 java opentelemetry 1.38.0 \n", + "18 java opentelemetry 1.38.0 \n", + "19 java opentelemetry 1.38.0 \n", + "20 java opentelemetry 1.38.0 \n", + "21 java opentelemetry 1.38.0 \n", + "22 java opentelemetry 1.38.0 \n", + "23 java opentelemetry 1.38.0 \n", + "24 java opentelemetry 1.38.0 " + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ext_df=base_df.join(attrs_df).join(resource_attrs_df).join(scope_attrs_df)\n", + "ext_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "d1b1ba7b-0cd1-48bb-a0c8-76096ecae362", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Correlating log messages\n", + "\n", + "Earlier, we noted one great improvement over traditional logging: OpenTelemetry's ability to correlate signals emitted within the same `trace`,\n", + "even as the `trace` 'propagates' across separate microservices, running on different cluster nodes.\n", + "\n", + "The `trace` signal will be introduced in more detail later, but for now, consider the `trace_id` as way of grouping together `logs` signals emitted by \n", + "separate instances working together on the same request.\n", + "\n", + "In the exapmle below, it's a user's shopping cart request, that required various operations like currency convertion, a price quote and fraud analysis.\n", + "As the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) microservices were calling each other to fulfill the business logic behind the user's request - each one of them 'attached' the same `trace_id`\n", + "to its `logs`. This mechanism is known as [Context Propagation.](https://opentelemetry.io/docs/concepts/context-propagation/)\n", + "\n", + "Thanks to it, we can now see all log messages related to the same user's request in one single view, despite that they were emitted from completely different \n", + "environments:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Correlating log messages\n", + "\n", + "Earlier, we noted one great improvement over traditional logging: OpenTelemetry's ability to correlate signals emitted within the same `trace`,\n", + "even as the `trace` 'propagates' across separate microservices, running on different cluster nodes.\n", + "\n", + "The `trace` signal will be introduced in more detail later, but for now, consider the `trace_id` as way of grouping together `logs` signals emitted by \n", + "separate instances working together on the same request.\n", + "\n", + "In the exapmle below, it's a user's shopping cart request, that required various operations like currency convertion, a price quote and fraud analysis.\n", + "As the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) microservices were calling each other to fulfill the business logic behind the user's request - each one of them 'attached' the same `trace_id`\n", + "to its `logs`. This mechanism is known as [Context Propagation.](https://opentelemetry.io/docs/concepts/context-propagation/)\n", + "\n", + "Thanks to it, we can now see all log messages related to the same user's request in one single view, despite that they were emitted from completely different \n", + "environments:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "197fee33-d769-4a23-b7c7-8c0017cdaf83", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_k8s.pod.namera_k8s.pod.ipra_service.namera_telemetry.sdk.languagescope_nameobserved_time_unix_nanoseverity_textbodya_userIdtrace_idspan_id
1605opentelemetry-demo-currencyservice-597bbd47c4-dj9g210.244.1.34currencyservicecppcurrencyservice1723627134102665414INFOConvert conversion successfulb'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7'
1606opentelemetry-demo-currencyservice-597bbd47c4-dj9g210.244.1.34currencyservicecppcurrencyservice1723627134104169898INFOConvert conversion successfulb'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A'
1607opentelemetry-demo-currencyservice-597bbd47c4-dj9g210.244.1.34currencyservicecppcurrencyservice1723627134106806444INFOConvert conversion successfulb'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f'
1608opentelemetry-demo-quoteservice-787985cdb9-hdlfz10.244.1.51quoteservicephpslim-app1723627134106146048INFOCalculated quoteb'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\xaa\\xb6\\xba-\\x11-{\\xe0'
1633opentelemetry-demo-cartservice-6787d8bc8c-qwnj710.244.1.40cartservicedotnetcartservice.cartstore.ValkeyCartStore1723627134101558000InformationGetCartAsync called with userId={userId}39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$'
2568opentelemetry-demo-frauddetectionservice-6bc9d4d9f9-6sssc10.244.1.43frauddetectionservicejavafrauddetectionservice1723627315980693436INFOConsumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc'
2572opentelemetry-demo-cartservice-6787d8bc8c-qwnj710.244.1.40cartservicedotnetcartservice.cartstore.ValkeyCartStore1723627315972342200InformationEmptyCartAsync called with userId={userId}39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'b'\\xb4A-n1\\x1b\\\\\\xb1'
\n", + "
" + ], + "text/plain": [ + " ra_k8s.pod.name ra_k8s.pod.ip \\\n", + "1605 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 10.244.1.34 \n", + "1606 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 10.244.1.34 \n", + "1607 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 10.244.1.34 \n", + "1608 opentelemetry-demo-quoteservice-787985cdb9-hdlfz 10.244.1.51 \n", + "1633 opentelemetry-demo-cartservice-6787d8bc8c-qwnj7 10.244.1.40 \n", + "2568 opentelemetry-demo-frauddetectionservice-6bc9d4d9f9-6sssc 10.244.1.43 \n", + "2572 opentelemetry-demo-cartservice-6787d8bc8c-qwnj7 10.244.1.40 \n", + "\n", + " ra_service.name ra_telemetry.sdk.language \\\n", + "1605 currencyservice cpp \n", + "1606 currencyservice cpp \n", + "1607 currencyservice cpp \n", + "1608 quoteservice php \n", + "1633 cartservice dotnet \n", + "2568 frauddetectionservice java \n", + "2572 cartservice dotnet \n", + "\n", + " scope_name observed_time_unix_nano \\\n", + "1605 currencyservice 1723627134102665414 \n", + "1606 currencyservice 1723627134104169898 \n", + "1607 currencyservice 1723627134106806444 \n", + "1608 slim-app 1723627134106146048 \n", + "1633 cartservice.cartstore.ValkeyCartStore 1723627134101558000 \n", + "2568 frauddetectionservice 1723627315980693436 \n", + "2572 cartservice.cartstore.ValkeyCartStore 1723627315972342200 \n", + "\n", + " severity_text \\\n", + "1605 INFO \n", + "1606 INFO \n", + "1607 INFO \n", + "1608 INFO \n", + "1633 Information \n", + "2568 INFO \n", + "2572 Information \n", + "\n", + " body \\\n", + "1605 Convert conversion successful \n", + "1606 Convert conversion successful \n", + "1607 Convert conversion successful \n", + "1608 Calculated quote \n", + "1633 GetCartAsync called with userId={userId} \n", + "2568 Consumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10 \n", + "2572 EmptyCartAsync called with userId={userId} \n", + "\n", + " a_userId \\\n", + "1605 \n", + "1606 \n", + "1607 \n", + "1608 \n", + "1633 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "2568 \n", + "2572 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "\n", + " trace_id \\\n", + "1605 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "1606 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "1607 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "1608 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "1633 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "2568 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "2572 b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91' \n", + "\n", + " span_id \n", + "1605 b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "1606 b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "1607 b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "1608 b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "1633 b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "2568 b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "2572 b'\\xb4A-n1\\x1b\\\\\\xb1' " + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# lets keep this data frame for a later example\n", + "trace_id = b'cV\\x84$\\xcd\\xb1\\x05\\x82v\\xdcl\\xab\\xbf\\xc8\\x0c\\x91'\n", + "trace_logs = ext_df[ext_df['trace_id'] == trace_id][[\n", + " 'ra_k8s.pod.name',\n", + " 'ra_k8s.pod.ip',\n", + " 'ra_service.name',\n", + " 'ra_telemetry.sdk.language',\n", + " 'scope_name',\n", + " 'observed_time_unix_nano',\n", + " 'severity_text',\n", + " 'body',\n", + " 'a_userId',\n", + " 'trace_id',\n", + " 'span_id']]\n", + "\n", + "trace_logs.fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "ab2bb988-4c7a-4e5b-827a-abcae820dad6", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "### Finally, let's save the pre-processed logs for later use\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "### Finally, let's save the pre-processed logs for later use" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "d0779f88-8d18-480a-8e52-183ea8a42312", + "metadata": {}, + "outputs": [], + "source": [ + "# convert the column data types to something more 'native'\n", + "ext_df=ext_df.convert_dtypes()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "b64361bc-0a50-4d7e-96d8-4ec717eba793", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "##### Deduplicate\n", + "\n", + "***Note:*** Logs may be retransmitted (due to network errors, for example). Retransmissions may cause the same `log` entry to be recorded twice. For futher processing it's good to deduplicate the data to get rid of potential retransmits.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "##### Deduplicate\n", + "\n", + "***Note:*** Logs may be retransmitted (due to network errors, for example). Retransmissions may cause the same `log` entry to be recorded twice. For futher processing it's good to deduplicate the data to get rid of potential retransmits." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "e46eb2c8-85fe-4c07-95d4-7d3f08ab753a", + "metadata": {}, + "outputs": [], + "source": [ + "# deduplicate\n", + "ext_df=ext_df.drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "166ab258-a6d4-43b8-989b-f6da5ac60eff", + "metadata": {}, + "outputs": [], + "source": [ + "# and finally, save to a preprocessed Parquet file\n", + "ext_df.to_parquet('otel-demo-app/logs.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "a267b6b7-3feb-483f-b275-e87b659d101c", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "---\n", + "\n", + "# Metrics signal\n", + "\n", + "Moving away from `logs` now and into the next OpenTelemetry signal type - [metrics.](https://opentelemetry.io/docs/specs/otel/metrics/)\n", + "\n", + "Unlike `logs`, which are single events recorded at a fixed point in time, `metrics` are observed over a configurable time interval and reported only once \n", + "for that interval. Typically, the reported value will be 'aggregated' in some way - like to a sum, or a histogram (as seen in the `type` column).\n", + "\n", + "The time interval will be reported in columns `start_time_unix_nano` and `time_unix_nano`. However, their exact interpretation may change depending on the \n", + "`aggregation_temporality` and possibly `is_monotonic` columns.\n", + "\n", + "How to properly extract values out of `metrics` datasets is covered in a separate notebook. Before heading to it though, take a look at the basics examples below.\n", + "For a quick glimpse of what's typically measured (and how) go through the `name`, `description`, `unit` and `type` columns. Depending on `type` you can find the \n", + "repoted value in the `gauge_*`, `sum_*`, `histogram_*`, `exponential_histogram_*` and `summary_*` columns. In `metrics` data you will also find `resource` and \n", + "`scope` meta-data, as well as `attributes` for each individual data point (for more on these look at the `logs` examples above).\n", + "\n", + "The [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) does a bit of unpacking of the OpenTelemetry \n", + "data that it receives (basically extracting each data point of each `metric`, of each `scope` and each `resource`). As it does so, a number of columns are added:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `seq_no`\n", + "- `datapoint_seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "These columns are not part of the original OpenTelemetry schema, they're only added to help with some more complex operations on the data.\n", + "\n", + "We'll now drop the `logs` DataFrame used above and replace it with the raw `metrics.` Then, in a similar way we'll extract all attributes:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "---\n", + "\n", + "# Metrics signal\n", + "\n", + "Moving away from `logs` now and into the next OpenTelemetry signal type - [metrics.](https://opentelemetry.io/docs/specs/otel/metrics/)\n", + "\n", + "Unlike `logs`, which are single events recorded at a fixed point in time, `metrics` are observed over a configurable time interval and reported only once \n", + "for that interval. Typically, the reported value will be 'aggregated' in some way - like to a sum, or a histogram (as seen in the `type` column).\n", + "\n", + "The time interval will be reported in columns `start_time_unix_nano` and `time_unix_nano`. However, their exact interpretation may change depending on the \n", + "`aggregation_temporality` and possibly `is_monotonic` columns.\n", + "\n", + "How to properly extract values out of `metrics` datasets is covered in a separate notebook. Before heading to it though, take a look at the basics examples below.\n", + "For a quick glimpse of what's typically measured (and how) go through the `name`, `description`, `unit` and `type` columns. Depending on `type` you can find the \n", + "repoted value in the `gauge_*`, `sum_*`, `histogram_*`, `exponential_histogram_*` and `summary_*` columns. In `metrics` data you will also find `resource` and \n", + "`scope` meta-data, as well as `attributes` for each individual data point (for more on these look at the `logs` examples above).\n", + "\n", + "The [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) does a bit of unpacking of the OpenTelemetry \n", + "data that it receives (basically extracting each data point of each `metric`, of each `scope` and each `resource`). As it does so, a number of columns are added:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `seq_no`\n", + "- `datapoint_seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "These columns are not part of the original OpenTelemetry schema, they're only added to help with some more complex operations on the data.\n", + "\n", + "We'll now drop the `logs` DataFrame used above and replace it with the raw `metrics.` Then, in a similar way we'll extract all attributes:" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "f2f8c922-c095-4519-a110-b086aa91b04e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
batch_timestampbatch_UUIDseq_noresource_attributesresource_dropped_attributes_countresource_schema_urlscope_namescope_versionscope_attributesscope_dropped_attributes_countnamedescriptionunittypedatapoint_seq_noattributesstart_time_unix_nanotime_unix_nanoexemplarsflagsgauge_typegauge_doublegauge_intsum_typesum_doublesum_inthistogram_counthistogram_sumhistogram_bucket_countshistogram_explicit_boundshistogram_minhistogram_maxexponential_histogram_countexponential_histogram_sumexponential_histogram_scaleexponential_histogram_zero_countexponential_histogram_positiveexponential_histogram_negativeexponential_histogram_minexponential_histogram_maxexponential_histogram_zero_thresholdsummary_countsummary_sumsummary_quantile_valuesaggregation_temporalityis_monotonicmetric_schema_urlmetric_metadatais_validerror_message
01723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef970[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.durationMeasures the duration of the HTTP check.msGAUGE0[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.02.0[][][][]True
11723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef971[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.errorRecords errors occurring during HTTP check.{error}SUM0[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
21723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef972[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM0[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
31723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef972[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM1[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
41723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef972[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM2[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
51723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef972[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM3[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
61723626938249daaf2f22-874a-4ec9-b3fd-2d1bdd94ef972[]0otelcol/httpcheckreceiver0.105.0[]0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM4[{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '...17236269303353246121723626931381380943[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
71723626941995f8941e51-73fd-4108-b32b-e52541b96b450[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM0[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654051381723626941865978359[]01.00.001969[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...0.0019690.001969[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
81723626941995f8941e51-73fd-4108-b32b-e52541b96b450[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM1[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654051381723626941865978359[]03.00.016641[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...0.0018910.010135[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
91723626941995f8941e51-73fd-4108-b32b-e52541b96b450[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM2[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654051381723626941865978359[]03.00.003235[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...0.0004370.002229[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
101723626941995f8941e51-73fd-4108-b32b-e52541b96b451[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM0[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654194511723626941865985661[]03.0132.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...44.044.0[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
111723626941995f8941e51-73fd-4108-b32b-e52541b96b451[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM1[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654194511723626941865985661[]03.0117.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...39.039.0[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
121723626941995f8941e51-73fd-4108-b32b-e52541b96b451[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM2[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654194511723626941865985661[]01.0235.0[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...235.0235.0[]b'AGGREGATION_TEMPORALITY_CUMULATIVE'[]True
131723626941995f8941e51-73fd-4108-b32b-e52541b96b452[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUM0[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654324951723626941865987025[]0AS_INT0.03.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
141723626941995f8941e51-73fd-4108-b32b-e52541b96b452[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUM1[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654324951723626941865987025[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
151723626941995f8941e51-73fd-4108-b32b-e52541b96b452[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUM2[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654324951723626941865987025[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
161723626941995f8941e51-73fd-4108-b32b-e52541b96b452[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUM3[{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,...17236269298654324951723626941865987025[]0AS_INT0.00.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'False[]True
171723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM0[{'key': 'feature_flag.key', 'value': {'string_value': 'kafkaQueueProblems', 'bool_value': None,...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
181723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM1[{'key': 'feature_flag.key', 'value': {'string_value': 'adServiceManualGc', 'bool_value': None, ...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
191723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM2[{'key': 'feature_flag.key', 'value': {'string_value': 'adServiceHighCpu', 'bool_value': None, '...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
201723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM3[{'key': 'feature_flag.key', 'value': {'string_value': 'productCatalogFailure', 'bool_value': No...17236269298654416561723626941865990468[]0AS_INT0.04.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
211723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM4[{'key': 'feature_flag.key', 'value': {'string_value': 'loadgeneratorFloodHomepage', 'bool_value...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
221723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM5[{'key': 'feature_flag.key', 'value': {'string_value': 'cartServiceFailure', 'bool_value': None,...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
231723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM6[{'key': 'feature_flag.key', 'value': {'string_value': 'recommendationServiceCacheFailure', 'boo...17236269298654416561723626941865990468[]0AS_INT0.04.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
241723626941995f8941e51-73fd-4108-b32b-e52541b96b453[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0flagd[]0feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUM7[{'key': 'feature_flag.key', 'value': {'string_value': 'paymentServiceUnreachable', 'bool_value'...17236269298654416561723626941865990468[]0AS_INT0.01.0[][][]b'AGGREGATION_TEMPORALITY_CUMULATIVE'True[]True
\n", + "
" + ], + "text/plain": [ + " batch_timestamp batch_UUID seq_no \\\n", + "0 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 0 \n", + "1 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 1 \n", + "2 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 2 \n", + "3 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 2 \n", + "4 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 2 \n", + "5 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 2 \n", + "6 1723626938249 daaf2f22-874a-4ec9-b3fd-2d1bdd94ef97 2 \n", + "7 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 0 \n", + "8 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 0 \n", + "9 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 0 \n", + "10 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 1 \n", + "11 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 1 \n", + "12 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 1 \n", + "13 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 2 \n", + "14 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 2 \n", + "15 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 2 \n", + "16 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 2 \n", + "17 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "18 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "19 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "20 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "21 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "22 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "23 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "24 1723626941995 f8941e51-73fd-4108-b32b-e52541b96b45 3 \n", + "\n", + " resource_attributes \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "8 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "9 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "10 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "11 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "12 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "13 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "14 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "15 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "16 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "17 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "18 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "19 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "20 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "21 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "22 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "23 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "24 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "\n", + " resource_dropped_attributes_count \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 \n", + "12 0 \n", + "13 0 \n", + "14 0 \n", + "15 0 \n", + "16 0 \n", + "17 0 \n", + "18 0 \n", + "19 0 \n", + "20 0 \n", + "21 0 \n", + "22 0 \n", + "23 0 \n", + "24 0 \n", + "\n", + " resource_schema_url scope_name \\\n", + "0 otelcol/httpcheckreceiver \n", + "1 otelcol/httpcheckreceiver \n", + "2 otelcol/httpcheckreceiver \n", + "3 otelcol/httpcheckreceiver \n", + "4 otelcol/httpcheckreceiver \n", + "5 otelcol/httpcheckreceiver \n", + "6 otelcol/httpcheckreceiver \n", + "7 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "8 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "9 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "10 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "11 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "12 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "13 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "14 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "15 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "16 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "17 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "18 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "19 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "20 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "21 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "22 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "23 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "24 https://opentelemetry.io/schemas/1.26.0 flagd \n", + "\n", + " scope_version scope_attributes scope_dropped_attributes_count \\\n", + "0 0.105.0 [] 0 \n", + "1 0.105.0 [] 0 \n", + "2 0.105.0 [] 0 \n", + "3 0.105.0 [] 0 \n", + "4 0.105.0 [] 0 \n", + "5 0.105.0 [] 0 \n", + "6 0.105.0 [] 0 \n", + "7 [] 0 \n", + "8 [] 0 \n", + "9 [] 0 \n", + "10 [] 0 \n", + "11 [] 0 \n", + "12 [] 0 \n", + "13 [] 0 \n", + "14 [] 0 \n", + "15 [] 0 \n", + "16 [] 0 \n", + "17 [] 0 \n", + "18 [] 0 \n", + "19 [] 0 \n", + "20 [] 0 \n", + "21 [] 0 \n", + "22 [] 0 \n", + "23 [] 0 \n", + "24 [] 0 \n", + "\n", + " name \\\n", + "0 httpcheck.duration \n", + "1 httpcheck.error \n", + "2 httpcheck.status \n", + "3 httpcheck.status \n", + "4 httpcheck.status \n", + "5 httpcheck.status \n", + "6 httpcheck.status \n", + "7 http.server.duration \n", + "8 http.server.duration \n", + "9 http.server.duration \n", + "10 http.server.response.size \n", + "11 http.server.response.size \n", + "12 http.server.response.size \n", + "13 http.server.active_requests \n", + "14 http.server.active_requests \n", + "15 http.server.active_requests \n", + "16 http.server.active_requests \n", + "17 feature_flag.flagd.impression \n", + "18 feature_flag.flagd.impression \n", + "19 feature_flag.flagd.impression \n", + "20 feature_flag.flagd.impression \n", + "21 feature_flag.flagd.impression \n", + "22 feature_flag.flagd.impression \n", + "23 feature_flag.flagd.impression \n", + "24 feature_flag.flagd.impression \n", + "\n", + " description \\\n", + "0 Measures the duration of the HTTP check. \n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "3 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "4 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "5 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "6 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "7 Measures the duration of inbound HTTP requests. \n", + "8 Measures the duration of inbound HTTP requests. \n", + "9 Measures the duration of inbound HTTP requests. \n", + "10 Measures the size of HTTP request messages (compressed). \n", + "11 Measures the size of HTTP request messages (compressed). \n", + "12 Measures the size of HTTP request messages (compressed). \n", + "13 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "14 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "15 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "16 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "17 Measures the number of evaluations for a given flag. \n", + "18 Measures the number of evaluations for a given flag. \n", + "19 Measures the number of evaluations for a given flag. \n", + "20 Measures the number of evaluations for a given flag. \n", + "21 Measures the number of evaluations for a given flag. \n", + "22 Measures the number of evaluations for a given flag. \n", + "23 Measures the number of evaluations for a given flag. \n", + "24 Measures the number of evaluations for a given flag. \n", + "\n", + " unit type datapoint_seq_no \\\n", + "0 ms GAUGE 0 \n", + "1 {error} SUM 0 \n", + "2 1 SUM 0 \n", + "3 1 SUM 1 \n", + "4 1 SUM 2 \n", + "5 1 SUM 3 \n", + "6 1 SUM 4 \n", + "7 s HISTOGRAM 0 \n", + "8 s HISTOGRAM 1 \n", + "9 s HISTOGRAM 2 \n", + "10 By HISTOGRAM 0 \n", + "11 By HISTOGRAM 1 \n", + "12 By HISTOGRAM 2 \n", + "13 {request} SUM 0 \n", + "14 {request} SUM 1 \n", + "15 {request} SUM 2 \n", + "16 {request} SUM 3 \n", + "17 {impression} SUM 0 \n", + "18 {impression} SUM 1 \n", + "19 {impression} SUM 2 \n", + "20 {impression} SUM 3 \n", + "21 {impression} SUM 4 \n", + "22 {impression} SUM 5 \n", + "23 {impression} SUM 6 \n", + "24 {impression} SUM 7 \n", + "\n", + " attributes \\\n", + "0 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "1 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "2 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "3 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "4 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "5 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "6 [{'key': 'http.url', 'value': {'string_value': 'http://opentelemetry-demo-frontendproxy:8080', '... \n", + "7 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "8 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "9 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "10 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "11 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "12 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "13 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "14 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "15 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "16 [{'key': 'http.method', 'value': {'string_value': 'POST', 'bool_value': None, 'int_value': None,... \n", + "17 [{'key': 'feature_flag.key', 'value': {'string_value': 'kafkaQueueProblems', 'bool_value': None,... \n", + "18 [{'key': 'feature_flag.key', 'value': {'string_value': 'adServiceManualGc', 'bool_value': None, ... \n", + "19 [{'key': 'feature_flag.key', 'value': {'string_value': 'adServiceHighCpu', 'bool_value': None, '... \n", + "20 [{'key': 'feature_flag.key', 'value': {'string_value': 'productCatalogFailure', 'bool_value': No... \n", + "21 [{'key': 'feature_flag.key', 'value': {'string_value': 'loadgeneratorFloodHomepage', 'bool_value... \n", + "22 [{'key': 'feature_flag.key', 'value': {'string_value': 'cartServiceFailure', 'bool_value': None,... \n", + "23 [{'key': 'feature_flag.key', 'value': {'string_value': 'recommendationServiceCacheFailure', 'boo... \n", + "24 [{'key': 'feature_flag.key', 'value': {'string_value': 'paymentServiceUnreachable', 'bool_value'... \n", + "\n", + " start_time_unix_nano time_unix_nano exemplars flags gauge_type \\\n", + "0 1723626930335324612 1723626931381380943 [] 0 AS_INT \n", + "1 1723626930335324612 1723626931381380943 [] 0 \n", + "2 1723626930335324612 1723626931381380943 [] 0 \n", + "3 1723626930335324612 1723626931381380943 [] 0 \n", + "4 1723626930335324612 1723626931381380943 [] 0 \n", + "5 1723626930335324612 1723626931381380943 [] 0 \n", + "6 1723626930335324612 1723626931381380943 [] 0 \n", + "7 1723626929865405138 1723626941865978359 [] 0 \n", + "8 1723626929865405138 1723626941865978359 [] 0 \n", + "9 1723626929865405138 1723626941865978359 [] 0 \n", + "10 1723626929865419451 1723626941865985661 [] 0 \n", + "11 1723626929865419451 1723626941865985661 [] 0 \n", + "12 1723626929865419451 1723626941865985661 [] 0 \n", + "13 1723626929865432495 1723626941865987025 [] 0 \n", + "14 1723626929865432495 1723626941865987025 [] 0 \n", + "15 1723626929865432495 1723626941865987025 [] 0 \n", + "16 1723626929865432495 1723626941865987025 [] 0 \n", + "17 1723626929865441656 1723626941865990468 [] 0 \n", + "18 1723626929865441656 1723626941865990468 [] 0 \n", + "19 1723626929865441656 1723626941865990468 [] 0 \n", + "20 1723626929865441656 1723626941865990468 [] 0 \n", + "21 1723626929865441656 1723626941865990468 [] 0 \n", + "22 1723626929865441656 1723626941865990468 [] 0 \n", + "23 1723626929865441656 1723626941865990468 [] 0 \n", + "24 1723626929865441656 1723626941865990468 [] 0 \n", + "\n", + " gauge_double gauge_int sum_type sum_double sum_int histogram_count \\\n", + "0 0.0 2.0 \n", + "1 AS_INT 0.0 1.0 \n", + "2 AS_INT 0.0 0.0 \n", + "3 AS_INT 0.0 0.0 \n", + "4 AS_INT 0.0 0.0 \n", + "5 AS_INT 0.0 0.0 \n", + "6 AS_INT 0.0 0.0 \n", + "7 1.0 \n", + "8 3.0 \n", + "9 3.0 \n", + "10 3.0 \n", + "11 3.0 \n", + "12 1.0 \n", + "13 AS_INT 0.0 3.0 \n", + "14 AS_INT 0.0 0.0 \n", + "15 AS_INT 0.0 0.0 \n", + "16 AS_INT 0.0 0.0 \n", + "17 AS_INT 0.0 1.0 \n", + "18 AS_INT 0.0 1.0 \n", + "19 AS_INT 0.0 1.0 \n", + "20 AS_INT 0.0 4.0 \n", + "21 AS_INT 0.0 1.0 \n", + "22 AS_INT 0.0 1.0 \n", + "23 AS_INT 0.0 4.0 \n", + "24 AS_INT 0.0 1.0 \n", + "\n", + " histogram_sum histogram_bucket_counts \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 0.001969 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "8 0.016641 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "9 0.003235 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "10 132.0 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "11 117.0 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "12 235.0 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " histogram_explicit_bounds \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "8 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "9 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "10 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "11 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "12 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " histogram_min histogram_max exponential_histogram_count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 0.001969 0.001969 \n", + "8 0.001891 0.010135 \n", + "9 0.000437 0.002229 \n", + "10 44.0 44.0 \n", + "11 39.0 39.0 \n", + "12 235.0 235.0 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " exponential_histogram_sum exponential_histogram_scale \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " exponential_histogram_zero_count exponential_histogram_positive \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " exponential_histogram_negative exponential_histogram_min \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " exponential_histogram_max exponential_histogram_zero_threshold \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " summary_count summary_sum summary_quantile_values \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [] \n", + "8 [] \n", + "9 [] \n", + "10 [] \n", + "11 [] \n", + "12 [] \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " aggregation_temporality is_monotonic metric_schema_url \\\n", + "0 \n", + "1 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "2 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "3 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "4 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "5 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "6 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "7 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "9 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "11 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "12 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "13 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "14 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "15 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "16 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "17 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "18 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "19 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "20 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "21 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "22 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "23 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "24 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "\n", + " metric_metadata is_valid error_message \n", + "0 [] True \n", + "1 [] True \n", + "2 [] True \n", + "3 [] True \n", + "4 [] True \n", + "5 [] True \n", + "6 [] True \n", + "7 [] True \n", + "8 [] True \n", + "9 [] True \n", + "10 [] True \n", + "11 [] True \n", + "12 [] True \n", + "13 [] True \n", + "14 [] True \n", + "15 [] True \n", + "16 [] True \n", + "17 [] True \n", + "18 [] True \n", + "19 [] True \n", + "20 [] True \n", + "21 [] True \n", + "22 [] True \n", + "23 [] True \n", + "24 [] True " + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Read all files in a directory (make sure they're only metrics parquets):\n", + "raw_df = pd.read_parquet('otel-demo-app/metrics_raw/', engine='pyarrow')\n", + "raw_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "a22c8ac2-01fd-4cce-819d-0835e89e4f82", + "metadata": {}, + "outputs": [], + "source": [ + "# Apply the same otel_attrs function defined at the beginning of this notebook, get the attributes\n", + "resource_attrs_df=raw_df[['resource_attributes']].apply(otel_attrs, axis=1).add_prefix('ra_')\n", + "scope_attrs_df=raw_df[['scope_attributes']].apply(otel_attrs, axis=1).add_prefix('sa_')\n", + "attrs_df=raw_df[['attributes']].apply(otel_attrs, axis=1).add_prefix('a_')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "90e72b2f-175e-40fc-affd-6befb2351f85", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Metrics cover aspects like load, usage, amount of work done, number of errors encountered and more:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Metrics cover aspects like load, usage, amount of work done, number of errors encountered and more:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "196da60b-4f20-4863-9a3f-0c5cf72ad9c6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescription
0httpcheck.durationMeasures the duration of the HTTP check.
1httpcheck.errorRecords errors occurring during HTTP check.
2httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.
7http.server.durationMeasures the duration of inbound HTTP requests.
10http.server.response.sizeMeasures the size of HTTP request messages (compressed).
13http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.
17feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.
28feature_flag.flagd.evaluation.reasonMeasures the number of evaluations for a given reason.
39http.client.durationmeasures the duration of the outbound HTTP request
43system.cpu.timeSystem CPU time
75system.cpu.utilizationSystem CPU utilization
107system.memory.usageSystem memory usage
110system.memory.utilizationSystem memory utilization
113system.swap.usageSystem swap usage
115system.swap.utilizationSystem swap utilization
117system.disk.ioSystem disk IO
129system.disk.operationsSystem disk operations
141system.disk.timeSystem disk time
153system.network.dropped_packetsSystem network dropped_packets
157system.network.packetsSystem network packets
161system.network.errorsSystem network errors
165system.network.ioSystem network io
169system.network.connectionsSystem network connections
173system.thread_countSystem active threads count
174process.runtime.cpython.memoryRuntime cpython memory
176process.runtime.cpython.cpu_timeRuntime cpython CPU time
178process.runtime.cpython.gc_countRuntime cpython GC count
181process.runtime.cpython.thread_countRuntime active threads count
182process.runtime.cpython.cpu.utilizationRuntime CPU utilization
183process.runtime.cpython.context_switchesRuntime context switches
1332app.currency_counter
1374calls
1380duration
1604otlp.exporter.seen
1606otlp.exporter.exported
1610app.ads.ad_requestsCounts ad requests by request and response type
1612queueSizeThe number of items queued
1613processedLogsThe number of logs processed by the BatchLogRecordProcessor. [dropped=true if they were dropped ...
1614rpc.client.durationThe duration of an outbound RPC invocation
1616rpc.server.durationThe duration of an inbound RPC invocation
1617jvm.cpu.timeCPU time used by the process as reported by the JVM.
1618jvm.class.loadedNumber of classes loaded since JVM start.
1619jvm.memory.limitMeasure of max obtainable memory.
1626jvm.cpu.recent_utilizationRecent CPU utilization for the process as reported by the JVM.
1627jvm.cpu.countNumber of processors available to the Java virtual machine.
1628jvm.memory.committedMeasure of memory committed.
1636jvm.thread.countNumber of executing platform threads.
1640jvm.class.countNumber of classes currently loaded.
1641jvm.class.unloadedNumber of classes unloaded since JVM start.
1642jvm.memory.used_after_last_gcMeasure of memory used, as measured after the most recent garbage collection event on this pool.
.........
2252kafka.consumer.last_rebalance_seconds_agoThe number of seconds since the last successful rebalance event
2253kafka.consumer.connection_countThe current number of active connections.
2254kafka.consumer.network_io_totalThe total number of network operations (reads or writes) on all connections
2255kafka.consumer.rebalance_latency_maxThe max time taken for a group to complete a successful rebalance, which may be composed of seve...
2256kafka.consumer.rebalance_rate_per_hourThe number of successful rebalance events per hour, each event is composed of several failed re-...
2257kafka.consumer.io_wait_time_ns_totalThe total time the I/O thread spent waiting
2258kafka.consumer.failed_reauthentication_totalThe total number of failed re-authentication of connections
2259kafka.consumer.fetch_latency_maxThe max time taken for any fetch request.
2260kafka.consumer.successful_reauthentication_rateThe number of successful re-authentication of connections per second
2261kafka.consumer.successful_reauthentication_totalThe total number of successful re-authentication of connections
2262kafka.consumer.partition_assigned_latency_avgThe average time taken for a partition-assigned rebalance listener callback
2263kafka.consumer.fetch_totalThe total number of fetch requests.
2264kafka.consumer.successful_authentication_no_reauth_totalThe total number of connections with successful authentication where the client does not support...
2265kafka.consumer.records_lag_maxThe maximum lag in terms of number of records for any partition in this window. NOTE: This is ba...
2266kafka.consumer.fetch_throttle_time_avgThe average throttle time in ms
2267kafka.consumer.assigned_partitionsThe number of partitions currently assigned to this consumer
2268kafka.consumer.bytes_consumed_totalThe total number of bytes consumed
2269kafka.consumer.response_rateThe number of responses received per second
2272kafka.consumer.fetch_rateThe number of fetch requests per second.
2273kafka.consumer.rebalance_latency_avgThe average time taken for a group to complete a successful rebalance, which may be composed of ...
2274kafka.consumer.records_lead_avgThe average lead of the partition
2282http.client.request.sizeMeasures the size of HTTP request messages.
2283http.client.response.sizeMeasures the size of HTTP response messages.
2299rpc.client.durationMeasures the duration of inbound RPC.
2306rpc.client.request.sizeMeasures size of RPC request messages (uncompressed).
2313rpc.client.response.sizeMeasures size of RPC response messages (uncompressed).
2320rpc.client.requests_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.
2327rpc.client.responses_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.
3782kafka.logs.flush.time.99pLog flush time - 99th percentile
3783kafka.logs.flush.time.50pLog flush time - 50th percentile
3784kafka.request.queueSize of the request queue
3785kafka.request.time.99pThe 99th percentile time the broker has taken to service requests
3788kafka.request.time.totalThe total time the broker has taken to service requests
3791kafka.network.ioThe bytes received or sent by the broker
3793kafka.message.countThe number of messages received by the broker
3794kafka.partition.countThe number of partitions on the broker
3795kafka.isr.operation.countThe number of in-sync replica shrink and expand operations
3797kafka.partition.offlineThe number of partitions offline
3798kafka.request.time.50pThe 50th percentile time the broker has taken to service requests
3801kafka.purgatory.sizeThe number of requests waiting in purgatory
3803kafka.partition.underReplicatedThe number of under replicated partitions
3804kafka.lag.maxThe max lag in messages between follower and leader replicas
3805kafka.request.failedThe number of requests to the broker resulting in a failure
3807kafka.controller.active.countThe number of controllers active on the broker
3808kafka.logs.flush.CountLog flush count
3809kafka.request.countThe number of requests received by the broker
6763process.runtime.dotnet.gc.committed_memory.sizeThe amount of committed virtual memory for the managed GC heap, as observed during the latest ga...
6764process.runtime.dotnet.gc.heap.sizeThe heap size (including fragmentation), as observed during the latest garbage collection. The v...
6769process.runtime.dotnet.gc.heap.fragmentation.sizeThe heap fragmentation, as observed during the latest garbage collection. The value will be unav...
6784process.runtime.dotnet.exceptions.countCount of exceptions that have been thrown in managed code, since the observation started. The va...
\n", + "

218 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 httpcheck.duration \n", + "1 httpcheck.error \n", + "2 httpcheck.status \n", + "7 http.server.duration \n", + "10 http.server.response.size \n", + "13 http.server.active_requests \n", + "17 feature_flag.flagd.impression \n", + "28 feature_flag.flagd.evaluation.reason \n", + "39 http.client.duration \n", + "43 system.cpu.time \n", + "75 system.cpu.utilization \n", + "107 system.memory.usage \n", + "110 system.memory.utilization \n", + "113 system.swap.usage \n", + "115 system.swap.utilization \n", + "117 system.disk.io \n", + "129 system.disk.operations \n", + "141 system.disk.time \n", + "153 system.network.dropped_packets \n", + "157 system.network.packets \n", + "161 system.network.errors \n", + "165 system.network.io \n", + "169 system.network.connections \n", + "173 system.thread_count \n", + "174 process.runtime.cpython.memory \n", + "176 process.runtime.cpython.cpu_time \n", + "178 process.runtime.cpython.gc_count \n", + "181 process.runtime.cpython.thread_count \n", + "182 process.runtime.cpython.cpu.utilization \n", + "183 process.runtime.cpython.context_switches \n", + "1332 app.currency_counter \n", + "1374 calls \n", + "1380 duration \n", + "1604 otlp.exporter.seen \n", + "1606 otlp.exporter.exported \n", + "1610 app.ads.ad_requests \n", + "1612 queueSize \n", + "1613 processedLogs \n", + "1614 rpc.client.duration \n", + "1616 rpc.server.duration \n", + "1617 jvm.cpu.time \n", + "1618 jvm.class.loaded \n", + "1619 jvm.memory.limit \n", + "1626 jvm.cpu.recent_utilization \n", + "1627 jvm.cpu.count \n", + "1628 jvm.memory.committed \n", + "1636 jvm.thread.count \n", + "1640 jvm.class.count \n", + "1641 jvm.class.unloaded \n", + "1642 jvm.memory.used_after_last_gc \n", + "... ... \n", + "2252 kafka.consumer.last_rebalance_seconds_ago \n", + "2253 kafka.consumer.connection_count \n", + "2254 kafka.consumer.network_io_total \n", + "2255 kafka.consumer.rebalance_latency_max \n", + "2256 kafka.consumer.rebalance_rate_per_hour \n", + "2257 kafka.consumer.io_wait_time_ns_total \n", + "2258 kafka.consumer.failed_reauthentication_total \n", + "2259 kafka.consumer.fetch_latency_max \n", + "2260 kafka.consumer.successful_reauthentication_rate \n", + "2261 kafka.consumer.successful_reauthentication_total \n", + "2262 kafka.consumer.partition_assigned_latency_avg \n", + "2263 kafka.consumer.fetch_total \n", + "2264 kafka.consumer.successful_authentication_no_reauth_total \n", + "2265 kafka.consumer.records_lag_max \n", + "2266 kafka.consumer.fetch_throttle_time_avg \n", + "2267 kafka.consumer.assigned_partitions \n", + "2268 kafka.consumer.bytes_consumed_total \n", + "2269 kafka.consumer.response_rate \n", + "2272 kafka.consumer.fetch_rate \n", + "2273 kafka.consumer.rebalance_latency_avg \n", + "2274 kafka.consumer.records_lead_avg \n", + "2282 http.client.request.size \n", + "2283 http.client.response.size \n", + "2299 rpc.client.duration \n", + "2306 rpc.client.request.size \n", + "2313 rpc.client.response.size \n", + "2320 rpc.client.requests_per_rpc \n", + "2327 rpc.client.responses_per_rpc \n", + "3782 kafka.logs.flush.time.99p \n", + "3783 kafka.logs.flush.time.50p \n", + "3784 kafka.request.queue \n", + "3785 kafka.request.time.99p \n", + "3788 kafka.request.time.total \n", + "3791 kafka.network.io \n", + "3793 kafka.message.count \n", + "3794 kafka.partition.count \n", + "3795 kafka.isr.operation.count \n", + "3797 kafka.partition.offline \n", + "3798 kafka.request.time.50p \n", + "3801 kafka.purgatory.size \n", + "3803 kafka.partition.underReplicated \n", + "3804 kafka.lag.max \n", + "3805 kafka.request.failed \n", + "3807 kafka.controller.active.count \n", + "3808 kafka.logs.flush.Count \n", + "3809 kafka.request.count \n", + "6763 process.runtime.dotnet.gc.committed_memory.size \n", + "6764 process.runtime.dotnet.gc.heap.size \n", + "6769 process.runtime.dotnet.gc.heap.fragmentation.size \n", + "6784 process.runtime.dotnet.exceptions.count \n", + "\n", + " description \n", + "0 Measures the duration of the HTTP check. \n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "7 Measures the duration of inbound HTTP requests. \n", + "10 Measures the size of HTTP request messages (compressed). \n", + "13 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "17 Measures the number of evaluations for a given flag. \n", + "28 Measures the number of evaluations for a given reason. \n", + "39 measures the duration of the outbound HTTP request \n", + "43 System CPU time \n", + "75 System CPU utilization \n", + "107 System memory usage \n", + "110 System memory utilization \n", + "113 System swap usage \n", + "115 System swap utilization \n", + "117 System disk IO \n", + "129 System disk operations \n", + "141 System disk time \n", + "153 System network dropped_packets \n", + "157 System network packets \n", + "161 System network errors \n", + "165 System network io \n", + "169 System network connections \n", + "173 System active threads count \n", + "174 Runtime cpython memory \n", + "176 Runtime cpython CPU time \n", + "178 Runtime cpython GC count \n", + "181 Runtime active threads count \n", + "182 Runtime CPU utilization \n", + "183 Runtime context switches \n", + "1332 \n", + "1374 \n", + "1380 \n", + "1604 \n", + "1606 \n", + "1610 Counts ad requests by request and response type \n", + "1612 The number of items queued \n", + "1613 The number of logs processed by the BatchLogRecordProcessor. [dropped=true if they were dropped ... \n", + "1614 The duration of an outbound RPC invocation \n", + "1616 The duration of an inbound RPC invocation \n", + "1617 CPU time used by the process as reported by the JVM. \n", + "1618 Number of classes loaded since JVM start. \n", + "1619 Measure of max obtainable memory. \n", + "1626 Recent CPU utilization for the process as reported by the JVM. \n", + "1627 Number of processors available to the Java virtual machine. \n", + "1628 Measure of memory committed. \n", + "1636 Number of executing platform threads. \n", + "1640 Number of classes currently loaded. \n", + "1641 Number of classes unloaded since JVM start. \n", + "1642 Measure of memory used, as measured after the most recent garbage collection event on this pool. \n", + "... ... \n", + "2252 The number of seconds since the last successful rebalance event \n", + "2253 The current number of active connections. \n", + "2254 The total number of network operations (reads or writes) on all connections \n", + "2255 The max time taken for a group to complete a successful rebalance, which may be composed of seve... \n", + "2256 The number of successful rebalance events per hour, each event is composed of several failed re-... \n", + "2257 The total time the I/O thread spent waiting \n", + "2258 The total number of failed re-authentication of connections \n", + "2259 The max time taken for any fetch request. \n", + "2260 The number of successful re-authentication of connections per second \n", + "2261 The total number of successful re-authentication of connections \n", + "2262 The average time taken for a partition-assigned rebalance listener callback \n", + "2263 The total number of fetch requests. \n", + "2264 The total number of connections with successful authentication where the client does not support... \n", + "2265 The maximum lag in terms of number of records for any partition in this window. NOTE: This is ba... \n", + "2266 The average throttle time in ms \n", + "2267 The number of partitions currently assigned to this consumer \n", + "2268 The total number of bytes consumed \n", + "2269 The number of responses received per second \n", + "2272 The number of fetch requests per second. \n", + "2273 The average time taken for a group to complete a successful rebalance, which may be composed of ... \n", + "2274 The average lead of the partition \n", + "2282 Measures the size of HTTP request messages. \n", + "2283 Measures the size of HTTP response messages. \n", + "2299 Measures the duration of inbound RPC. \n", + "2306 Measures size of RPC request messages (uncompressed). \n", + "2313 Measures size of RPC response messages (uncompressed). \n", + "2320 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "2327 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "3782 Log flush time - 99th percentile \n", + "3783 Log flush time - 50th percentile \n", + "3784 Size of the request queue \n", + "3785 The 99th percentile time the broker has taken to service requests \n", + "3788 The total time the broker has taken to service requests \n", + "3791 The bytes received or sent by the broker \n", + "3793 The number of messages received by the broker \n", + "3794 The number of partitions on the broker \n", + "3795 The number of in-sync replica shrink and expand operations \n", + "3797 The number of partitions offline \n", + "3798 The 50th percentile time the broker has taken to service requests \n", + "3801 The number of requests waiting in purgatory \n", + "3803 The number of under replicated partitions \n", + "3804 The max lag in messages between follower and leader replicas \n", + "3805 The number of requests to the broker resulting in a failure \n", + "3807 The number of controllers active on the broker \n", + "3808 Log flush count \n", + "3809 The number of requests received by the broker \n", + "6763 The amount of committed virtual memory for the managed GC heap, as observed during the latest ga... \n", + "6764 The heap size (including fragmentation), as observed during the latest garbage collection. The v... \n", + "6769 The heap fragmentation, as observed during the latest garbage collection. The value will be unav... \n", + "6784 Count of exceptions that have been thrown in managed code, since the observation started. The va... \n", + "\n", + "[218 rows x 2 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[['name', 'description']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f50298e9-fb13-46f9-9182-feb5ba673ddf", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Resource attributes are quite similar to the logs signal above:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Resource attributes are quite similar to the logs signal above:" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "cd6764bb-1220-4c3b-b092-5f2faa1fb857", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.typera_process.runtime.versionra_service.instance.idra_service.namera_service.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
7opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
8opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
9opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
10opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
11opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
12opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
13opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
14opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
15opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
16opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
17opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
18opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
19opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
20opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
21opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
22opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
23opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
24opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
\n", + "
" + ], + "text/plain": [ + " ra_host.name ra_k8s.deployment.name \\\n", + "7 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "8 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "9 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "10 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "11 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "12 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "13 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "14 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "15 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "16 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "17 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "18 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "19 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "20 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "21 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "22 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "23 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "24 opentelemetry-demo-flagd-6d57f47cb8-t8jgb opentelemetry-demo-flagd \n", + "\n", + " ra_k8s.namespace.name ra_k8s.node.name ra_k8s.pod.ip \\\n", + "7 otel-demo-parquet minikube 10.244.1.42 \n", + "8 otel-demo-parquet minikube 10.244.1.42 \n", + "9 otel-demo-parquet minikube 10.244.1.42 \n", + "10 otel-demo-parquet minikube 10.244.1.42 \n", + "11 otel-demo-parquet minikube 10.244.1.42 \n", + "12 otel-demo-parquet minikube 10.244.1.42 \n", + "13 otel-demo-parquet minikube 10.244.1.42 \n", + "14 otel-demo-parquet minikube 10.244.1.42 \n", + "15 otel-demo-parquet minikube 10.244.1.42 \n", + "16 otel-demo-parquet minikube 10.244.1.42 \n", + "17 otel-demo-parquet minikube 10.244.1.42 \n", + "18 otel-demo-parquet minikube 10.244.1.42 \n", + "19 otel-demo-parquet minikube 10.244.1.42 \n", + "20 otel-demo-parquet minikube 10.244.1.42 \n", + "21 otel-demo-parquet minikube 10.244.1.42 \n", + "22 otel-demo-parquet minikube 10.244.1.42 \n", + "23 otel-demo-parquet minikube 10.244.1.42 \n", + "24 otel-demo-parquet minikube 10.244.1.42 \n", + "\n", + " ra_k8s.pod.name ra_k8s.pod.start_time \\\n", + "7 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "8 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "9 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "10 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "11 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "12 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "13 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "14 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "15 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "16 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "17 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "18 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "19 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "20 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "21 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "22 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "23 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "24 opentelemetry-demo-flagd-6d57f47cb8-t8jgb 2024-08-14T09:15:28Z \n", + "\n", + " ra_k8s.pod.uid \\\n", + "7 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "8 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "9 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "10 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "11 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "12 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "13 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "14 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "15 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "17 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "18 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "19 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "20 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "21 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "22 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "23 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "24 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "\n", + " ra_os.description \\\n", + "7 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "8 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "9 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "10 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "11 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "12 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "13 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "14 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "15 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "16 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "17 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "18 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "19 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "20 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "21 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "22 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "23 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "24 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "\n", + " ra_os.type ra_process.runtime.version \\\n", + "7 linux go1.22.5 \n", + "8 linux go1.22.5 \n", + "9 linux go1.22.5 \n", + "10 linux go1.22.5 \n", + "11 linux go1.22.5 \n", + "12 linux go1.22.5 \n", + "13 linux go1.22.5 \n", + "14 linux go1.22.5 \n", + "15 linux go1.22.5 \n", + "16 linux go1.22.5 \n", + "17 linux go1.22.5 \n", + "18 linux go1.22.5 \n", + "19 linux go1.22.5 \n", + "20 linux go1.22.5 \n", + "21 linux go1.22.5 \n", + "22 linux go1.22.5 \n", + "23 linux go1.22.5 \n", + "24 linux go1.22.5 \n", + "\n", + " ra_service.instance.id ra_service.name ra_service.version \\\n", + "7 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "8 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "9 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "10 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "11 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "12 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "13 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "14 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "15 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "16 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "17 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "18 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "19 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "20 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "21 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "22 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "23 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "24 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf flagd v0.11.1 \n", + "\n", + " ra_telemetry.sdk.language ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "7 go opentelemetry 1.28.0 \n", + "8 go opentelemetry 1.28.0 \n", + "9 go opentelemetry 1.28.0 \n", + "10 go opentelemetry 1.28.0 \n", + "11 go opentelemetry 1.28.0 \n", + "12 go opentelemetry 1.28.0 \n", + "13 go opentelemetry 1.28.0 \n", + "14 go opentelemetry 1.28.0 \n", + "15 go opentelemetry 1.28.0 \n", + "16 go opentelemetry 1.28.0 \n", + "17 go opentelemetry 1.28.0 \n", + "18 go opentelemetry 1.28.0 \n", + "19 go opentelemetry 1.28.0 \n", + "20 go opentelemetry 1.28.0 \n", + "21 go opentelemetry 1.28.0 \n", + "22 go opentelemetry 1.28.0 \n", + "23 go opentelemetry 1.28.0 \n", + "24 go opentelemetry 1.28.0 " + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df.head(25).dropna(axis=1, how='all').dropna(axis=0, how='all').fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "c281e8b8-6439-41b8-ac46-dccdb3839cd8", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...but we see a few more systems reporting their metrics:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...but we see a few more systems reporting their metrics:" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "14e55654-04a2-4a51-8252-5b2a7fe26994", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_telemetry.sdk.language
0<NA>
7go
39python
1332cpp
1374java
1392ruby
1424webjs
1434php
1440rust
1462nodejs
1506NaN
1516dotnet
\n", + "
" + ], + "text/plain": [ + " ra_telemetry.sdk.language\n", + "0 \n", + "7 go\n", + "39 python\n", + "1332 cpp\n", + "1374 java\n", + "1392 ruby\n", + "1424 webjs\n", + "1434 php\n", + "1440 rust\n", + "1462 nodejs\n", + "1506 NaN\n", + "1516 dotnet" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df[['ra_telemetry.sdk.language']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "3e596c08-4d6a-45b9-9e43-8aa94bd79d24", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Also a slightly different list of scopes:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Also a slightly different list of scopes:" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "277b14fc-130b-46b4-8522-2814ffdb0773", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_name
0otelcol/httpcheckreceiver
7flagd
39opentelemetry.instrumentation.requests
43opentelemetry.instrumentation.system_metrics
1332app.currency
1374spanmetricsconnector
1604io.opentelemetry.exporters.otlp-http
1610adservice
1612io.opentelemetry.sdk.logs
1614io.opentelemetry.grpc-1.6
1617io.opentelemetry.runtime-telemetry-java8
1655io.opentelemetry.sdk.trace
1657go.opentelemetry.io/contrib/instrumentation/runtime
1671go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
1727@opentelemetry/instrumentation-http
1733frontend
1746quotes
1747recommendationservice
1890paymentservice
1931OpenTelemetry.Instrumentation.Process
1937OpenTelemetry.Instrumentation.Runtime
1952Microsoft.AspNetCore.Server.Kestrel
1955Microsoft.AspNetCore.Hosting
1959Microsoft.AspNetCore.Routing
2167io.opentelemetry.kafka-clients-0.11
2282go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
3782io.opentelemetry.jmx
\n", + "
" + ], + "text/plain": [ + " scope_name\n", + "0 otelcol/httpcheckreceiver\n", + "7 flagd\n", + "39 opentelemetry.instrumentation.requests\n", + "43 opentelemetry.instrumentation.system_metrics\n", + "1332 app.currency\n", + "1374 spanmetricsconnector\n", + "1604 io.opentelemetry.exporters.otlp-http\n", + "1610 adservice\n", + "1612 io.opentelemetry.sdk.logs\n", + "1614 io.opentelemetry.grpc-1.6\n", + "1617 io.opentelemetry.runtime-telemetry-java8\n", + "1655 io.opentelemetry.sdk.trace\n", + "1657 go.opentelemetry.io/contrib/instrumentation/runtime\n", + "1671 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\n", + "1727 @opentelemetry/instrumentation-http\n", + "1733 frontend\n", + "1746 quotes\n", + "1747 recommendationservice\n", + "1890 paymentservice\n", + "1931 OpenTelemetry.Instrumentation.Process\n", + "1937 OpenTelemetry.Instrumentation.Runtime\n", + "1952 Microsoft.AspNetCore.Server.Kestrel\n", + "1955 Microsoft.AspNetCore.Hosting\n", + "1959 Microsoft.AspNetCore.Routing\n", + "2167 io.opentelemetry.kafka-clients-0.11\n", + "2282 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp\n", + "3782 io.opentelemetry.jmx" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[['scope_name']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "7b1241f0-1b75-4712-91dd-2be44b6ec1c8", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and a much richer set of metric attributes\n", + "\n", + "Including, for example, http protocol attributes, cpu and resource usage, error details and so on:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and a much richer set of metric attributes\n", + "\n", + "Including, for example, http protocol attributes, cpu and resource usage, error details and so on:" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "3faafeb3-97fe-42f3-9bff-3eef30131ce7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_app.ads.ad_request_typea_app.ads.ad_response_typea_app.payment.currencya_aspnetcore.routing.is_fallbacka_aspnetcore.routing.match_statusa_client-ida_counta_cpua_currency_codea_devicea_directiona_droppeda_error.messagea_familya_feature_flag.keya_feature_flag.provider_namea_feature_flag.reasona_feature_flag.varianta_generationa_http.flavora_http.hosta_http.methoda_http.request.methoda_http.response.status_codea_http.routea_http.schemea_http.status_classa_http.status_codea_http.urla_jvm.gc.actiona_jvm.gc.namea_jvm.memory.pool.namea_jvm.memory.typea_jvm.thread.daemona_jvm.thread.statea_methoda_net.host.namea_net.host.porta_net.peer.namea_net.peer.porta_network.protocol.namea_network.protocol.versiona_network.transporta_network.typea_node-ida_number_of_itemsa_operationa_partitiona_process.cpu.statea_processorTypea_protocola_recommendation.typea_rpc.grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_server.addressa_server.porta_service.namea_span.kinda_span.namea_statea_statusa_status.codea_successa_targeta_topica_typea_url.scheme
0http://opentelemetry-demo-frontendproxy:8080
1Get \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend...http://opentelemetry-demo-frontendproxy:8080
2GET1xx0.0http://opentelemetry-demo-frontendproxy:8080
3GET2xx0.0http://opentelemetry-demo-frontendproxy:8080
4GET3xx0.0http://opentelemetry-demo-frontendproxy:8080
5GET4xx0.0http://opentelemetry-demo-frontendproxy:8080
6GET5xx0.0http://opentelemetry-demo-frontendproxy:8080
7POST200/flagd.evaluation.v1.Service/ResolveAllflagd
8POST200/schema.v1.Service/ResolveBooleanflagd
9POST200/flagd.evaluation.v1.Service/ResolveBooleanflagd
10POST200/schema.v1.Service/ResolveBooleanflagd
11POST200/flagd.evaluation.v1.Service/ResolveBooleanflagd
12POST200/flagd.evaluation.v1.Service/ResolveAllflagd
13POST200/flagd.evaluation.v1.Service/EventStreamflagd
14POST200/flagd.evaluation.v1.Service/ResolveAllflagd
15POST200/schema.v1.Service/ResolveBooleanflagd
16POST200/flagd.evaluation.v1.Service/ResolveBooleanflagd
17kafkaQueueProblemsflagdSTATICoff
18adServiceManualGcflagdSTATICoff
19adServiceHighCpuflagdSTATICoff
20productCatalogFailureflagdSTATICoff
21loadgeneratorFloodHomepageflagdSTATICoff
22cartServiceFailureflagdSTATICoff
23recommendationServiceCacheFailureflagdSTATICoff
24paymentServiceUnreachableflagdSTATICoff
\n", + "
" + ], + "text/plain": [ + " a_app.ads.ad_request_type a_app.ads.ad_response_type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.currency a_aspnetcore.routing.is_fallback \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_aspnetcore.routing.match_status a_client-id a_count a_cpu \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_currency_code a_device a_direction a_dropped \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_error.message \\\n", + "0 \n", + "1 Get \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend... \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_family a_feature_flag.key a_feature_flag.provider_name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 kafkaQueueProblems flagd \n", + "18 adServiceManualGc flagd \n", + "19 adServiceHighCpu flagd \n", + "20 productCatalogFailure flagd \n", + "21 loadgeneratorFloodHomepage flagd \n", + "22 cartServiceFailure flagd \n", + "23 recommendationServiceCacheFailure flagd \n", + "24 paymentServiceUnreachable flagd \n", + "\n", + " a_feature_flag.reason a_feature_flag.variant a_generation a_http.flavor \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 STATIC off \n", + "18 STATIC off \n", + "19 STATIC off \n", + "20 STATIC off \n", + "21 STATIC off \n", + "22 STATIC off \n", + "23 STATIC off \n", + "24 STATIC off \n", + "\n", + " a_http.host a_http.method a_http.request.method \\\n", + "0 \n", + "1 \n", + "2 GET \n", + "3 GET \n", + "4 GET \n", + "5 GET \n", + "6 GET \n", + "7 POST \n", + "8 POST \n", + "9 POST \n", + "10 POST \n", + "11 POST \n", + "12 POST \n", + "13 POST \n", + "14 POST \n", + "15 POST \n", + "16 POST \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response.status_code a_http.route a_http.scheme a_http.status_class \\\n", + "0 \n", + "1 \n", + "2 1xx \n", + "3 2xx \n", + "4 3xx \n", + "5 4xx \n", + "6 5xx \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.status_code a_http.url \\\n", + "0 http://opentelemetry-demo-frontendproxy:8080 \n", + "1 http://opentelemetry-demo-frontendproxy:8080 \n", + "2 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "3 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "4 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "5 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "6 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "7 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "8 200 /schema.v1.Service/ResolveBoolean \n", + "9 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "10 200 /schema.v1.Service/ResolveBoolean \n", + "11 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "12 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "13 200 /flagd.evaluation.v1.Service/EventStream \n", + "14 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "15 200 /schema.v1.Service/ResolveBoolean \n", + "16 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_jvm.gc.action a_jvm.gc.name a_jvm.memory.pool.name a_jvm.memory.type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_jvm.thread.daemon a_jvm.thread.state a_method a_net.host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.host.port a_net.peer.name a_net.peer.port a_network.protocol.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.protocol.version a_network.transport a_network.type a_node-id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_number_of_items a_operation a_partition a_process.cpu.state \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_processorType a_protocol a_recommendation.type a_rpc.grpc.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_rpc.method a_rpc.service a_rpc.system a_server.address a_server.port \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_service.name a_span.kind a_span.name a_state a_status a_status.code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 flagd \n", + "8 flagd \n", + "9 flagd \n", + "10 flagd \n", + "11 flagd \n", + "12 flagd \n", + "13 flagd \n", + "14 flagd \n", + "15 flagd \n", + "16 flagd \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_success a_target a_topic a_type a_url.scheme \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "e7627b99-7776-4b2b-8fe2-f9678273a1ce", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Pre-processing metrics data\n", + "\n", + "As with the `logs` above, we'll extract some valuable columns from the raw `metrics` data, join it with extracted attributes and save a new file.\n", + "\n", + "We'll use this new file in another [notebook dedicated to metrics.](metrics.ipynb) \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Pre-processing metrics data\n", + "\n", + "As with the `logs` above, we'll extract some valuable columns from the raw `metrics` data, join it with extracted attributes and save a new file.\n", + "\n", + "We'll use this new file in another [notebook dedicated to metrics.](metrics.ipynb) " + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "8471ad4c-81b8-4367-98c1-a60c3427bc61", + "metadata": {}, + "outputs": [], + "source": [ + "base_df=raw_df.loc[raw_df['is_valid'] == True][\n", + " [\n", + " 'scope_name',\n", + " 'scope_version',\n", + " 'name',\n", + " 'description',\n", + " 'unit',\n", + " 'type',\n", + " 'gauge_type',\n", + " 'gauge_int',\n", + " 'gauge_double',\n", + " 'sum_type',\n", + " 'sum_int',\n", + " 'sum_double',\n", + " 'histogram_count',\n", + " 'histogram_sum',\n", + " 'histogram_min',\n", + " 'histogram_max',\n", + " 'histogram_bucket_counts',\n", + " 'histogram_explicit_bounds',\n", + " 'start_time_unix_nano',\n", + " 'time_unix_nano',\n", + " 'aggregation_temporality',\n", + " 'is_monotonic'\n", + " ]\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "f6ec88e9-f54e-4967-a33c-19f454b81c48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versionnamedescriptionunittypegauge_typegauge_intgauge_doublesum_typesum_intsum_doublehistogram_counthistogram_sumhistogram_minhistogram_maxhistogram_bucket_countshistogram_explicit_boundsstart_time_unix_nanotime_unix_nanoaggregation_temporalityis_monotonica_app.ads.ad_request_typea_app.ads.ad_response_typea_app.payment.currencya_aspnetcore.routing.is_fallbacka_aspnetcore.routing.match_statusa_client-ida_counta_cpua_currency_codea_devicea_directiona_droppeda_error.messagea_familya_feature_flag.keya_feature_flag.provider_namea_feature_flag.reasona_feature_flag.varianta_generationa_http.flavora_http.hosta_http.methoda_http.request.methoda_http.response.status_codea_http.routea_http.schemea_http.status_classa_http.status_codea_http.urla_jvm.gc.actiona_jvm.gc.namea_jvm.memory.pool.namea_jvm.memory.typea_jvm.thread.daemona_jvm.thread.statea_methoda_net.host.namea_net.host.porta_net.peer.namea_net.peer.porta_network.protocol.namea_network.protocol.versiona_network.transporta_network.typea_node-ida_number_of_itemsa_operationa_partitiona_process.cpu.statea_processorTypea_protocola_recommendation.typea_rpc.grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_server.addressa_server.porta_service.namea_span.kinda_span.namea_statea_statusa_status.codea_successa_targeta_topica_typea_url.schemera_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.namera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.auto.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0otelcol/httpcheckreceiver0.105.0httpcheck.durationMeasures the duration of the HTTP check.msGAUGEAS_INT2.00.0[][]17236269303353246121723626931381380943http://opentelemetry-demo-frontendproxy:8080
1otelcol/httpcheckreceiver0.105.0httpcheck.errorRecords errors occurring during HTTP check.{error}SUMAS_INT1.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGet \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend...http://opentelemetry-demo-frontendproxy:8080
2otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT0.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGET1xx0.0http://opentelemetry-demo-frontendproxy:8080
3otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT0.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGET2xx0.0http://opentelemetry-demo-frontendproxy:8080
4otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT0.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGET3xx0.0http://opentelemetry-demo-frontendproxy:8080
5otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT0.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGET4xx0.0http://opentelemetry-demo-frontendproxy:8080
6otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT0.00.0[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalseGET5xx0.0http://opentelemetry-demo-frontendproxy:8080
7flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM1.00.0019690.0019690.001969[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/flagd.evaluation.v1.Service/ResolveAllflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
8flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM3.00.0166410.0018910.010135[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/schema.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
9flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM3.00.0032350.0004370.002229[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/flagd.evaluation.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
10flagdhttp.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM3.0132.044.044.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/schema.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
11flagdhttp.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM3.0117.039.039.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/flagd.evaluation.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
12flagdhttp.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM1.0235.0235.0235.0[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'POST200/flagd.evaluation.v1.Service/ResolveAllflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
13flagdhttp.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT3.00.0[][]17236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalsePOST200/flagd.evaluation.v1.Service/EventStreamflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
14flagdhttp.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT0.00.0[][]17236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalsePOST200/flagd.evaluation.v1.Service/ResolveAllflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
15flagdhttp.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT0.00.0[][]17236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalsePOST200/schema.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
16flagdhttp.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT0.00.0[][]17236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'FalsePOST200/flagd.evaluation.v1.Service/ResolveBooleanflagdopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
17flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TruekafkaQueueProblemsflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
18flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TrueadServiceManualGcflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
19flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TrueadServiceHighCpuflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
20flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT4.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TrueproductCatalogFailureflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
21flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TrueloadgeneratorFloodHomepageflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
22flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TruecartServiceFailureflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
23flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT4.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TruerecommendationServiceCacheFailureflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
24flagdfeature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}SUMAS_INT1.00.0[][]17236269298654416561723626941865990468b'AGGREGATION_TEMPORALITY_CUMULATIVE'TruepaymentServiceUnreachableflagdSTATICoffopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdv0.11.1goopentelemetry1.28.0
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version name \\\n", + "0 otelcol/httpcheckreceiver 0.105.0 httpcheck.duration \n", + "1 otelcol/httpcheckreceiver 0.105.0 httpcheck.error \n", + "2 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "3 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "4 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "5 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "6 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "7 flagd http.server.duration \n", + "8 flagd http.server.duration \n", + "9 flagd http.server.duration \n", + "10 flagd http.server.response.size \n", + "11 flagd http.server.response.size \n", + "12 flagd http.server.response.size \n", + "13 flagd http.server.active_requests \n", + "14 flagd http.server.active_requests \n", + "15 flagd http.server.active_requests \n", + "16 flagd http.server.active_requests \n", + "17 flagd feature_flag.flagd.impression \n", + "18 flagd feature_flag.flagd.impression \n", + "19 flagd feature_flag.flagd.impression \n", + "20 flagd feature_flag.flagd.impression \n", + "21 flagd feature_flag.flagd.impression \n", + "22 flagd feature_flag.flagd.impression \n", + "23 flagd feature_flag.flagd.impression \n", + "24 flagd feature_flag.flagd.impression \n", + "\n", + " description \\\n", + "0 Measures the duration of the HTTP check. \n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "3 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "4 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "5 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "6 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "7 Measures the duration of inbound HTTP requests. \n", + "8 Measures the duration of inbound HTTP requests. \n", + "9 Measures the duration of inbound HTTP requests. \n", + "10 Measures the size of HTTP request messages (compressed). \n", + "11 Measures the size of HTTP request messages (compressed). \n", + "12 Measures the size of HTTP request messages (compressed). \n", + "13 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "14 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "15 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "16 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "17 Measures the number of evaluations for a given flag. \n", + "18 Measures the number of evaluations for a given flag. \n", + "19 Measures the number of evaluations for a given flag. \n", + "20 Measures the number of evaluations for a given flag. \n", + "21 Measures the number of evaluations for a given flag. \n", + "22 Measures the number of evaluations for a given flag. \n", + "23 Measures the number of evaluations for a given flag. \n", + "24 Measures the number of evaluations for a given flag. \n", + "\n", + " unit type gauge_type gauge_int gauge_double sum_type \\\n", + "0 ms GAUGE AS_INT 2.0 0.0 \n", + "1 {error} SUM AS_INT \n", + "2 1 SUM AS_INT \n", + "3 1 SUM AS_INT \n", + "4 1 SUM AS_INT \n", + "5 1 SUM AS_INT \n", + "6 1 SUM AS_INT \n", + "7 s HISTOGRAM \n", + "8 s HISTOGRAM \n", + "9 s HISTOGRAM \n", + "10 By HISTOGRAM \n", + "11 By HISTOGRAM \n", + "12 By HISTOGRAM \n", + "13 {request} SUM AS_INT \n", + "14 {request} SUM AS_INT \n", + "15 {request} SUM AS_INT \n", + "16 {request} SUM AS_INT \n", + "17 {impression} SUM AS_INT \n", + "18 {impression} SUM AS_INT \n", + "19 {impression} SUM AS_INT \n", + "20 {impression} SUM AS_INT \n", + "21 {impression} SUM AS_INT \n", + "22 {impression} SUM AS_INT \n", + "23 {impression} SUM AS_INT \n", + "24 {impression} SUM AS_INT \n", + "\n", + " sum_int sum_double histogram_count histogram_sum histogram_min \\\n", + "0 \n", + "1 1.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "5 0.0 0.0 \n", + "6 0.0 0.0 \n", + "7 1.0 0.001969 0.001969 \n", + "8 3.0 0.016641 0.001891 \n", + "9 3.0 0.003235 0.000437 \n", + "10 3.0 132.0 44.0 \n", + "11 3.0 117.0 39.0 \n", + "12 1.0 235.0 235.0 \n", + "13 3.0 0.0 \n", + "14 0.0 0.0 \n", + "15 0.0 0.0 \n", + "16 0.0 0.0 \n", + "17 1.0 0.0 \n", + "18 1.0 0.0 \n", + "19 1.0 0.0 \n", + "20 4.0 0.0 \n", + "21 1.0 0.0 \n", + "22 1.0 0.0 \n", + "23 4.0 0.0 \n", + "24 1.0 0.0 \n", + "\n", + " histogram_max histogram_bucket_counts \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 0.001969 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "8 0.010135 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "9 0.002229 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "10 44.0 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "11 39.0 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "12 235.0 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " histogram_explicit_bounds \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "8 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "9 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "10 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "11 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "12 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "0 1723626930335324612 1723626931381380943 \n", + "1 1723626930335324612 1723626931381380943 \n", + "2 1723626930335324612 1723626931381380943 \n", + "3 1723626930335324612 1723626931381380943 \n", + "4 1723626930335324612 1723626931381380943 \n", + "5 1723626930335324612 1723626931381380943 \n", + "6 1723626930335324612 1723626931381380943 \n", + "7 1723626929865405138 1723626941865978359 \n", + "8 1723626929865405138 1723626941865978359 \n", + "9 1723626929865405138 1723626941865978359 \n", + "10 1723626929865419451 1723626941865985661 \n", + "11 1723626929865419451 1723626941865985661 \n", + "12 1723626929865419451 1723626941865985661 \n", + "13 1723626929865432495 1723626941865987025 \n", + "14 1723626929865432495 1723626941865987025 \n", + "15 1723626929865432495 1723626941865987025 \n", + "16 1723626929865432495 1723626941865987025 \n", + "17 1723626929865441656 1723626941865990468 \n", + "18 1723626929865441656 1723626941865990468 \n", + "19 1723626929865441656 1723626941865990468 \n", + "20 1723626929865441656 1723626941865990468 \n", + "21 1723626929865441656 1723626941865990468 \n", + "22 1723626929865441656 1723626941865990468 \n", + "23 1723626929865441656 1723626941865990468 \n", + "24 1723626929865441656 1723626941865990468 \n", + "\n", + " aggregation_temporality is_monotonic \\\n", + "0 \n", + "1 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "2 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "3 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "4 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "5 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "6 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "7 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "9 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "11 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "12 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "13 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "14 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "15 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "16 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "17 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "18 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "19 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "20 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "21 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "22 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "23 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "24 b'AGGREGATION_TEMPORALITY_CUMULATIVE' True \n", + "\n", + " a_app.ads.ad_request_type a_app.ads.ad_response_type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.currency a_aspnetcore.routing.is_fallback \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_aspnetcore.routing.match_status a_client-id a_count a_cpu \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_currency_code a_device a_direction a_dropped \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_error.message \\\n", + "0 \n", + "1 Get \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend... \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_family a_feature_flag.key a_feature_flag.provider_name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 kafkaQueueProblems flagd \n", + "18 adServiceManualGc flagd \n", + "19 adServiceHighCpu flagd \n", + "20 productCatalogFailure flagd \n", + "21 loadgeneratorFloodHomepage flagd \n", + "22 cartServiceFailure flagd \n", + "23 recommendationServiceCacheFailure flagd \n", + "24 paymentServiceUnreachable flagd \n", + "\n", + " a_feature_flag.reason a_feature_flag.variant a_generation a_http.flavor \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 STATIC off \n", + "18 STATIC off \n", + "19 STATIC off \n", + "20 STATIC off \n", + "21 STATIC off \n", + "22 STATIC off \n", + "23 STATIC off \n", + "24 STATIC off \n", + "\n", + " a_http.host a_http.method a_http.request.method \\\n", + "0 \n", + "1 \n", + "2 GET \n", + "3 GET \n", + "4 GET \n", + "5 GET \n", + "6 GET \n", + "7 POST \n", + "8 POST \n", + "9 POST \n", + "10 POST \n", + "11 POST \n", + "12 POST \n", + "13 POST \n", + "14 POST \n", + "15 POST \n", + "16 POST \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response.status_code a_http.route a_http.scheme a_http.status_class \\\n", + "0 \n", + "1 \n", + "2 1xx \n", + "3 2xx \n", + "4 3xx \n", + "5 4xx \n", + "6 5xx \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.status_code a_http.url \\\n", + "0 http://opentelemetry-demo-frontendproxy:8080 \n", + "1 http://opentelemetry-demo-frontendproxy:8080 \n", + "2 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "3 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "4 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "5 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "6 0.0 http://opentelemetry-demo-frontendproxy:8080 \n", + "7 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "8 200 /schema.v1.Service/ResolveBoolean \n", + "9 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "10 200 /schema.v1.Service/ResolveBoolean \n", + "11 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "12 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "13 200 /flagd.evaluation.v1.Service/EventStream \n", + "14 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "15 200 /schema.v1.Service/ResolveBoolean \n", + "16 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_jvm.gc.action a_jvm.gc.name a_jvm.memory.pool.name a_jvm.memory.type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_jvm.thread.daemon a_jvm.thread.state a_method a_net.host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.host.port a_net.peer.name a_net.peer.port a_network.protocol.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.protocol.version a_network.transport a_network.type a_node-id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_number_of_items a_operation a_partition a_process.cpu.state \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_processorType a_protocol a_recommendation.type a_rpc.grpc.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_rpc.method a_rpc.service a_rpc.system a_server.address a_server.port \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_service.name a_span.kind a_span.name a_state a_status a_status.code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 flagd \n", + "8 flagd \n", + "9 flagd \n", + "10 flagd \n", + "11 flagd \n", + "12 flagd \n", + "13 flagd \n", + "14 flagd \n", + "15 flagd \n", + "16 flagd \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_success a_target a_topic a_type a_url.scheme ra_container.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "8 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "9 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "10 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "11 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "12 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "13 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "14 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "15 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "17 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "18 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "19 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "20 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "21 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "22 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "23 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "24 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "8 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "9 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "10 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "11 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "12 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "13 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "14 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "15 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "16 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "17 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "18 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "19 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "20 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "21 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "22 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "23 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "24 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "8 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "9 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "10 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "11 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "12 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "13 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "14 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "15 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "17 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "18 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "19 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "20 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "21 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "22 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "23 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "24 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "8 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "9 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "10 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "11 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "12 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "13 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "14 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "15 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "17 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "18 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "19 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "20 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "21 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "22 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "23 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "24 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "\n", + " ra_os.description \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "8 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "9 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "10 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "11 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "12 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "13 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "14 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "15 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "16 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "17 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "18 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "19 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "20 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "21 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "22 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "23 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "24 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "\n", + " ra_os.name ra_os.type ra_os.version ra_process.command \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 linux \n", + "8 linux \n", + "9 linux \n", + "10 linux \n", + "11 linux \n", + "12 linux \n", + "13 linux \n", + "14 linux \n", + "15 linux \n", + "16 linux \n", + "17 linux \n", + "18 linux \n", + "19 linux \n", + "20 linux \n", + "21 linux \n", + "22 linux \n", + "23 linux \n", + "24 linux \n", + "\n", + " ra_process.command_args ra_process.command_line ra_process.executable.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.executable.path ra_process.owner ra_process.pid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.runtime.description ra_process.runtime.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.runtime.version ra_service.instance.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "8 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "9 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "10 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "11 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "12 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "13 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "14 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "15 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "17 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "18 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "19 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "20 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "21 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "22 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "23 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "24 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "\n", + " ra_service.name ra_service.namespace ra_service.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 flagd v0.11.1 \n", + "8 flagd v0.11.1 \n", + "9 flagd v0.11.1 \n", + "10 flagd v0.11.1 \n", + "11 flagd v0.11.1 \n", + "12 flagd v0.11.1 \n", + "13 flagd v0.11.1 \n", + "14 flagd v0.11.1 \n", + "15 flagd v0.11.1 \n", + "16 flagd v0.11.1 \n", + "17 flagd v0.11.1 \n", + "18 flagd v0.11.1 \n", + "19 flagd v0.11.1 \n", + "20 flagd v0.11.1 \n", + "21 flagd v0.11.1 \n", + "22 flagd v0.11.1 \n", + "23 flagd v0.11.1 \n", + "24 flagd v0.11.1 \n", + "\n", + " ra_telemetry.auto.version ra_telemetry.distro.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_telemetry.distro.version ra_telemetry.sdk.language \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 go \n", + "8 go \n", + "9 go \n", + "10 go \n", + "11 go \n", + "12 go \n", + "13 go \n", + "14 go \n", + "15 go \n", + "16 go \n", + "17 go \n", + "18 go \n", + "19 go \n", + "20 go \n", + "21 go \n", + "22 go \n", + "23 go \n", + "24 go \n", + "\n", + " ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 opentelemetry 1.28.0 \n", + "8 opentelemetry 1.28.0 \n", + "9 opentelemetry 1.28.0 \n", + "10 opentelemetry 1.28.0 \n", + "11 opentelemetry 1.28.0 \n", + "12 opentelemetry 1.28.0 \n", + "13 opentelemetry 1.28.0 \n", + "14 opentelemetry 1.28.0 \n", + "15 opentelemetry 1.28.0 \n", + "16 opentelemetry 1.28.0 \n", + "17 opentelemetry 1.28.0 \n", + "18 opentelemetry 1.28.0 \n", + "19 opentelemetry 1.28.0 \n", + "20 opentelemetry 1.28.0 \n", + "21 opentelemetry 1.28.0 \n", + "22 opentelemetry 1.28.0 \n", + "23 opentelemetry 1.28.0 \n", + "24 opentelemetry 1.28.0 " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Join attributes to the base DataFrame\n", + "ext_df=base_df.join(attrs_df).join(resource_attrs_df).join(scope_attrs_df)\n", + "ext_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "b5d2c5fe-38ca-4674-b936-7b2e1d00cc14", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Out-of-the-box metrics\n", + "\n", + "Thanks to its large ecosystem of plugins (and auto-instrumentation labraries) OpenTelemetry is capable of providing `metrics` (and in fact other signals) out-of-the-box.\n", + "\n", + "Here's an example of how it collected Apache Kafka `metrics` automatically, with the help of a Java JMX plugin:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Out-of-the-box metrics\n", + "\n", + "Thanks to its large ecosystem of plugins (and auto-instrumentation labraries) OpenTelemetry is capable of providing `metrics` (and in fact other signals) out-of-the-box.\n", + "\n", + "Here's an example of how it collected Apache Kafka `metrics` automatically, with the help of a Java JMX plugin:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "eaa5764d-6fd7-40f1-86cc-98a9fc86fb82", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_service.namenamedescriptionunittypegauge_intgauge_doublesum_intsum_doublestart_time_unix_nanotime_unix_nanoaggregation_temporalitya_type
3782kafkakafka.logs.flush.time.99pLog flush time - 99th percentilemsGAUGE0.037.18349417236269365406815561723627056546499014
3783kafkakafka.logs.flush.time.50pLog flush time - 50th percentilemsGAUGE0.02.66879217236269365406815561723627056546499014
3784kafkakafka.request.queueSize of the request queue{requests}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3785kafkakafka.request.time.99pThe 99th percentile time the broker has taken to service requestsmsGAUGE0.00.017236269365406815561723627056546499014FetchFollower
3786kafkakafka.request.time.99pThe 99th percentile time the broker has taken to service requestsmsGAUGE0.030.017236269365406815561723627056546499014Produce
3787kafkakafka.request.time.99pThe 99th percentile time the broker has taken to service requestsmsGAUGE0.0514.5917236269365406815561723627056546499014FetchConsumer
3788kafkakafka.request.time.totalThe total time the broker has taken to service requestsmsSUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'FetchFollower
3789kafkakafka.request.time.totalThe total time the broker has taken to service requestsmsSUM3.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'Produce
3790kafkakafka.request.time.totalThe total time the broker has taken to service requestsmsSUM446.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'FetchConsumer
3791kafkakafka.network.ioThe bytes received or sent by the brokerBySUM5224.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3792kafkakafka.network.ioThe bytes received or sent by the brokerBySUM2568.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3793kafkakafka.message.countThe number of messages received by the broker{messages}SUM30.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3794kafkakafka.partition.countThe number of partitions on the broker{partitions}SUM51.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3795kafkakafka.isr.operation.countThe number of in-sync replica shrink and expand operations{operations}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3796kafkakafka.isr.operation.countThe number of in-sync replica shrink and expand operations{operations}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3797kafkakafka.partition.offlineThe number of partitions offline{partitions}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3798kafkakafka.request.time.50pThe 50th percentile time the broker has taken to service requestsmsGAUGE0.00.017236269365406815561723627056546499014FetchFollower
3799kafkakafka.request.time.50pThe 50th percentile time the broker has taken to service requestsmsGAUGE0.02.017236269365406815561723627056546499014Produce
3800kafkakafka.request.time.50pThe 50th percentile time the broker has taken to service requestsmsGAUGE0.0501.017236269365406815561723627056546499014FetchConsumer
3801kafkakafka.purgatory.sizeThe number of requests waiting in purgatory{requests}SUM90.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'Fetch
3802kafkakafka.purgatory.sizeThe number of requests waiting in purgatory{requests}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'Produce
3803kafkakafka.partition.underReplicatedThe number of under replicated partitions{partitions}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3804kafkakafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGE0.00.017236269365406815561723627056546499014
3805kafkakafka.request.failedThe number of requests to the broker resulting in a failure{requests}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'produce
3806kafkakafka.request.failedThe number of requests to the broker resulting in a failure{requests}SUM0.00.017236269365406815561723627056546499014b'AGGREGATION_TEMPORALITY_CUMULATIVE'fetch
\n", + "
" + ], + "text/plain": [ + " ra_service.name name \\\n", + "3782 kafka kafka.logs.flush.time.99p \n", + "3783 kafka kafka.logs.flush.time.50p \n", + "3784 kafka kafka.request.queue \n", + "3785 kafka kafka.request.time.99p \n", + "3786 kafka kafka.request.time.99p \n", + "3787 kafka kafka.request.time.99p \n", + "3788 kafka kafka.request.time.total \n", + "3789 kafka kafka.request.time.total \n", + "3790 kafka kafka.request.time.total \n", + "3791 kafka kafka.network.io \n", + "3792 kafka kafka.network.io \n", + "3793 kafka kafka.message.count \n", + "3794 kafka kafka.partition.count \n", + "3795 kafka kafka.isr.operation.count \n", + "3796 kafka kafka.isr.operation.count \n", + "3797 kafka kafka.partition.offline \n", + "3798 kafka kafka.request.time.50p \n", + "3799 kafka kafka.request.time.50p \n", + "3800 kafka kafka.request.time.50p \n", + "3801 kafka kafka.purgatory.size \n", + "3802 kafka kafka.purgatory.size \n", + "3803 kafka kafka.partition.underReplicated \n", + "3804 kafka kafka.lag.max \n", + "3805 kafka kafka.request.failed \n", + "3806 kafka kafka.request.failed \n", + "\n", + " description \\\n", + "3782 Log flush time - 99th percentile \n", + "3783 Log flush time - 50th percentile \n", + "3784 Size of the request queue \n", + "3785 The 99th percentile time the broker has taken to service requests \n", + "3786 The 99th percentile time the broker has taken to service requests \n", + "3787 The 99th percentile time the broker has taken to service requests \n", + "3788 The total time the broker has taken to service requests \n", + "3789 The total time the broker has taken to service requests \n", + "3790 The total time the broker has taken to service requests \n", + "3791 The bytes received or sent by the broker \n", + "3792 The bytes received or sent by the broker \n", + "3793 The number of messages received by the broker \n", + "3794 The number of partitions on the broker \n", + "3795 The number of in-sync replica shrink and expand operations \n", + "3796 The number of in-sync replica shrink and expand operations \n", + "3797 The number of partitions offline \n", + "3798 The 50th percentile time the broker has taken to service requests \n", + "3799 The 50th percentile time the broker has taken to service requests \n", + "3800 The 50th percentile time the broker has taken to service requests \n", + "3801 The number of requests waiting in purgatory \n", + "3802 The number of requests waiting in purgatory \n", + "3803 The number of under replicated partitions \n", + "3804 The max lag in messages between follower and leader replicas \n", + "3805 The number of requests to the broker resulting in a failure \n", + "3806 The number of requests to the broker resulting in a failure \n", + "\n", + " unit type gauge_int gauge_double sum_int sum_double \\\n", + "3782 ms GAUGE 0.0 37.183494 \n", + "3783 ms GAUGE 0.0 2.668792 \n", + "3784 {requests} SUM 0.0 0.0 \n", + "3785 ms GAUGE 0.0 0.0 \n", + "3786 ms GAUGE 0.0 30.0 \n", + "3787 ms GAUGE 0.0 514.59 \n", + "3788 ms SUM 0.0 0.0 \n", + "3789 ms SUM 3.0 0.0 \n", + "3790 ms SUM 446.0 0.0 \n", + "3791 By SUM 5224.0 0.0 \n", + "3792 By SUM 2568.0 0.0 \n", + "3793 {messages} SUM 30.0 0.0 \n", + "3794 {partitions} SUM 51.0 0.0 \n", + "3795 {operations} SUM 0.0 0.0 \n", + "3796 {operations} SUM 0.0 0.0 \n", + "3797 {partitions} SUM 0.0 0.0 \n", + "3798 ms GAUGE 0.0 0.0 \n", + "3799 ms GAUGE 0.0 2.0 \n", + "3800 ms GAUGE 0.0 501.0 \n", + "3801 {requests} SUM 90.0 0.0 \n", + "3802 {requests} SUM 0.0 0.0 \n", + "3803 {partitions} SUM 0.0 0.0 \n", + "3804 {messages} GAUGE 0.0 0.0 \n", + "3805 {requests} SUM 0.0 0.0 \n", + "3806 {requests} SUM 0.0 0.0 \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "3782 1723626936540681556 1723627056546499014 \n", + "3783 1723626936540681556 1723627056546499014 \n", + "3784 1723626936540681556 1723627056546499014 \n", + "3785 1723626936540681556 1723627056546499014 \n", + "3786 1723626936540681556 1723627056546499014 \n", + "3787 1723626936540681556 1723627056546499014 \n", + "3788 1723626936540681556 1723627056546499014 \n", + "3789 1723626936540681556 1723627056546499014 \n", + "3790 1723626936540681556 1723627056546499014 \n", + "3791 1723626936540681556 1723627056546499014 \n", + "3792 1723626936540681556 1723627056546499014 \n", + "3793 1723626936540681556 1723627056546499014 \n", + "3794 1723626936540681556 1723627056546499014 \n", + "3795 1723626936540681556 1723627056546499014 \n", + "3796 1723626936540681556 1723627056546499014 \n", + "3797 1723626936540681556 1723627056546499014 \n", + "3798 1723626936540681556 1723627056546499014 \n", + "3799 1723626936540681556 1723627056546499014 \n", + "3800 1723626936540681556 1723627056546499014 \n", + "3801 1723626936540681556 1723627056546499014 \n", + "3802 1723626936540681556 1723627056546499014 \n", + "3803 1723626936540681556 1723627056546499014 \n", + "3804 1723626936540681556 1723627056546499014 \n", + "3805 1723626936540681556 1723627056546499014 \n", + "3806 1723626936540681556 1723627056546499014 \n", + "\n", + " aggregation_temporality a_type \n", + "3782 \n", + "3783 \n", + "3784 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3785 FetchFollower \n", + "3786 Produce \n", + "3787 FetchConsumer \n", + "3788 b'AGGREGATION_TEMPORALITY_CUMULATIVE' FetchFollower \n", + "3789 b'AGGREGATION_TEMPORALITY_CUMULATIVE' Produce \n", + "3790 b'AGGREGATION_TEMPORALITY_CUMULATIVE' FetchConsumer \n", + "3791 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3792 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3793 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3794 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3795 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3796 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3797 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3798 FetchFollower \n", + "3799 Produce \n", + "3800 FetchConsumer \n", + "3801 b'AGGREGATION_TEMPORALITY_CUMULATIVE' Fetch \n", + "3802 b'AGGREGATION_TEMPORALITY_CUMULATIVE' Produce \n", + "3803 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3804 \n", + "3805 b'AGGREGATION_TEMPORALITY_CUMULATIVE' produce \n", + "3806 b'AGGREGATION_TEMPORALITY_CUMULATIVE' fetch " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ext_df[ext_df['scope_name'] == 'io.opentelemetry.jmx'][\n", + " [\n", + " 'ra_service.name',\n", + " 'name',\n", + " 'description',\n", + " 'unit',\n", + " 'type',\n", + " 'gauge_int',\n", + " 'gauge_double',\n", + " 'sum_int',\n", + " 'sum_double',\n", + " 'start_time_unix_nano',\n", + " 'time_unix_nano',\n", + " 'aggregation_temporality',\n", + " 'a_type'\n", + " ]\n", + "].head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "37893436-d446-43b6-b4b7-ecd97ef91875", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Custom metrics\n", + "\n", + "Through OpenTelemetry instrumentation APIs your code can emit `metrics` specific to your app.\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet)'s currency convertion microservice measures how much of a given currency it has converted:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Custom metrics\n", + "\n", + "Through OpenTelemetry instrumentation APIs your code can emit `metrics` specific to your app.\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet)'s currency convertion microservice measures how much of a given currency it has converted:" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "53e19aef-15a2-480b-8c7b-fa2dc335222e", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_k8s.pod.namescope_namenamedescriptionunittypesum_typesum_inta_currency_codetime_unix_nanostart_time_unix_nanoaggregation_temporality
1332opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT3.0USD17236269897705577131723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
1333opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT56.0CHF17236269897705577131723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3259opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT104.0CHF17236270497711202491723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
3260opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT8.0USD17236270497711202491723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
4199opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT10.0USD17236271097720619811723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
4200opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT164.0CHF17236271097720619811723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
5937opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT47.0USD17236277097780220581723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
5938opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236277097780220581723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
5939opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT9.0CAD17236277097780220581723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
6266opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT9.0CAD17236277697787837821723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
6267opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236277697787837821723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
6268opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT54.0USD17236277697787837821723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
7217opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236278297795306191723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
7218opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT9.0CAD17236278297795306191723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
7219opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT56.0USD17236278297795306191723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
8202opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT9.0CAD17236278897802845761723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
8203opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236278897802845761723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
8204opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT60.0USD17236278897802845761723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
10940opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT60.0USD17236279497811504851723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
10941opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236279497811504851723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
10942opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT9.0CAD17236279497811504851723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
13755opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT374.0CHF17236280097820374141723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
13756opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT11.0CAD17236280097820374141723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
13757opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT62.0USD17236280097820374141723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
17199opentelemetry-demo-currencyservice-597bbd47c4-dj9g2app.currencyapp.currency_counterSUMAS_INT62.0USD17236280697828488721723626929769926474b'AGGREGATION_TEMPORALITY_CUMULATIVE'
\n", + "
" + ], + "text/plain": [ + " ra_k8s.pod.name scope_name \\\n", + "1332 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "1333 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "3259 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "3260 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "4199 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "4200 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "5937 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "5938 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "5939 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "6266 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "6267 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "6268 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "7217 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "7218 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "7219 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "8202 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "8203 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "8204 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "10940 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "10941 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "10942 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "13755 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "13756 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "13757 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "17199 opentelemetry-demo-currencyservice-597bbd47c4-dj9g2 app.currency \n", + "\n", + " name description unit type sum_type sum_int \\\n", + "1332 app.currency_counter SUM AS_INT 3.0 \n", + "1333 app.currency_counter SUM AS_INT 56.0 \n", + "3259 app.currency_counter SUM AS_INT 104.0 \n", + "3260 app.currency_counter SUM AS_INT 8.0 \n", + "4199 app.currency_counter SUM AS_INT 10.0 \n", + "4200 app.currency_counter SUM AS_INT 164.0 \n", + "5937 app.currency_counter SUM AS_INT 47.0 \n", + "5938 app.currency_counter SUM AS_INT 374.0 \n", + "5939 app.currency_counter SUM AS_INT 9.0 \n", + "6266 app.currency_counter SUM AS_INT 9.0 \n", + "6267 app.currency_counter SUM AS_INT 374.0 \n", + "6268 app.currency_counter SUM AS_INT 54.0 \n", + "7217 app.currency_counter SUM AS_INT 374.0 \n", + "7218 app.currency_counter SUM AS_INT 9.0 \n", + "7219 app.currency_counter SUM AS_INT 56.0 \n", + "8202 app.currency_counter SUM AS_INT 9.0 \n", + "8203 app.currency_counter SUM AS_INT 374.0 \n", + "8204 app.currency_counter SUM AS_INT 60.0 \n", + "10940 app.currency_counter SUM AS_INT 60.0 \n", + "10941 app.currency_counter SUM AS_INT 374.0 \n", + "10942 app.currency_counter SUM AS_INT 9.0 \n", + "13755 app.currency_counter SUM AS_INT 374.0 \n", + "13756 app.currency_counter SUM AS_INT 11.0 \n", + "13757 app.currency_counter SUM AS_INT 62.0 \n", + "17199 app.currency_counter SUM AS_INT 62.0 \n", + "\n", + " a_currency_code time_unix_nano start_time_unix_nano \\\n", + "1332 USD 1723626989770557713 1723626929769926474 \n", + "1333 CHF 1723626989770557713 1723626929769926474 \n", + "3259 CHF 1723627049771120249 1723626929769926474 \n", + "3260 USD 1723627049771120249 1723626929769926474 \n", + "4199 USD 1723627109772061981 1723626929769926474 \n", + "4200 CHF 1723627109772061981 1723626929769926474 \n", + "5937 USD 1723627709778022058 1723626929769926474 \n", + "5938 CHF 1723627709778022058 1723626929769926474 \n", + "5939 CAD 1723627709778022058 1723626929769926474 \n", + "6266 CAD 1723627769778783782 1723626929769926474 \n", + "6267 CHF 1723627769778783782 1723626929769926474 \n", + "6268 USD 1723627769778783782 1723626929769926474 \n", + "7217 CHF 1723627829779530619 1723626929769926474 \n", + "7218 CAD 1723627829779530619 1723626929769926474 \n", + "7219 USD 1723627829779530619 1723626929769926474 \n", + "8202 CAD 1723627889780284576 1723626929769926474 \n", + "8203 CHF 1723627889780284576 1723626929769926474 \n", + "8204 USD 1723627889780284576 1723626929769926474 \n", + "10940 USD 1723627949781150485 1723626929769926474 \n", + "10941 CHF 1723627949781150485 1723626929769926474 \n", + "10942 CAD 1723627949781150485 1723626929769926474 \n", + "13755 CHF 1723628009782037414 1723626929769926474 \n", + "13756 CAD 1723628009782037414 1723626929769926474 \n", + "13757 USD 1723628009782037414 1723626929769926474 \n", + "17199 USD 1723628069782848872 1723626929769926474 \n", + "\n", + " aggregation_temporality \n", + "1332 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "1333 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3259 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "3260 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "4199 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "4200 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "5937 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "5938 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "5939 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "6266 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "6267 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "6268 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "7217 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "7218 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "7219 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8202 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8203 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8204 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10940 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10941 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10942 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "13755 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "13756 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "13757 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "17199 b'AGGREGATION_TEMPORALITY_CUMULATIVE' " + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ext_df[ext_df['scope_name'] == 'app.currency'][\n", + " [\n", + " 'ra_k8s.pod.name',\n", + " 'scope_name',\n", + " 'name',\n", + " 'description',\n", + " 'unit',\n", + " 'type',\n", + " 'sum_type',\n", + " 'sum_int',\n", + " 'a_currency_code',\n", + " 'time_unix_nano',\n", + " 'start_time_unix_nano',\n", + " 'aggregation_temporality'\n", + " ]\n", + "].head(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "117221ce-6c2c-4f6d-8e95-29679860771f", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Correlating metrics\n", + "\n", + "As mentioned earlier, a great feature of OpenTelemetry is the ability to ***correlate signals,*** allowing you to dig deeper into the behaviour of your apps.\n", + "\n", + "We introduced `logs` correlation earlier and we'll show now how `metrics` can be correlated too.\n", + "\n", + "`Metrics` correlation is a bit harder though. `Logs`, being one-off events, are easily mapped 1:1 to the current `trace`. `Metrics`, on the other hand, are updated \n", + "multiple times, possibly within multiple `traces`, or even outside of any `trace`. So, they have to be mapped in a more N:M fashion.\n", + "For this reason, OpenTelemetry can add [Exemplars](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exemplars) to its `metrics` reporting.\n", + "These exemplars are basically individual exact values selected during the reporting interval and their main purpose is to record \n", + "`trace_id`s and `span_id`s that can later be used for signal correaltion.\n", + "\n", + "Exemplars are written in the `exemplars` column and contain an array of objects.\n", + "\n", + "Let's take the `rpc.server.duration` metric, as reported by **gRPC**, and 'explode' the list of `exemplars` into extra rows for a quick view:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Correlating metrics\n", + "\n", + "As mentioned earlier, a great feature of OpenTelemetry is the ability to ***correlate signals,*** allowing you to dig deeper into the behaviour of your apps.\n", + "\n", + "We introduced `logs` correlation earlier and we'll show now how `metrics` can be correlated too.\n", + "\n", + "`Metrics` correlation is a bit harder though. `Logs`, being one-off events, are easily mapped 1:1 to the current `trace`. `Metrics`, on the other hand, are updated \n", + "multiple times, possibly within multiple `traces`, or even outside of any `trace`. So, they have to be mapped in a more N:M fashion.\n", + "For this reason, OpenTelemetry can add [Exemplars](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exemplars) to its `metrics` reporting.\n", + "These exemplars are basically individual exact values selected during the reporting interval and their main purpose is to record \n", + "`trace_id`s and `span_id`s that can later be used for signal correaltion.\n", + "\n", + "Exemplars are written in the `exemplars` column and contain an array of objects.\n", + "\n", + "Let's take the `rpc.server.duration` metric, as reported by **gRPC**, and 'explode' the list of `exemplars` into extra rows for a quick view:" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "a46e402d-1fb7-460c-9f95-69bacbef8a59", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namenamedescriptionunittypestart_time_unix_nanotime_unix_nanoexemplars
1616io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723626990691310448{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
3506io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627050690892769{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
3506io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627050690892769{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
4449io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627110690872218{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
5258io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627110690872218{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
33851io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627170691991446{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
34807io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627230690873998{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
35764io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
35764io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
47509io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...
\n", + "
" + ], + "text/plain": [ + " scope_name name \\\n", + "1616 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "3506 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "3506 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "4449 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "5258 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "33851 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "34807 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "35764 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "35764 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "47509 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "\n", + " description unit type \\\n", + "1616 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "3506 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "3506 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "4449 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "5258 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "33851 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "34807 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "35764 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "35764 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "47509 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "1616 1723626930684586610 1723626990691310448 \n", + "3506 1723626930684586610 1723627050690892769 \n", + "3506 1723626930684586610 1723627050690892769 \n", + "4449 1723626930684586610 1723627110690872218 \n", + "5258 1723626930684586610 1723627110690872218 \n", + "33851 1723626930684586610 1723627170691991446 \n", + "34807 1723626930684586610 1723627230690873998 \n", + "35764 1723626930684586610 1723627290690861235 \n", + "35764 1723626930684586610 1723627290690861235 \n", + "47509 1723626930684586610 1723627290690861235 \n", + "\n", + " exemplars \n", + "1616 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "3506 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "3506 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "4449 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "5258 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "33851 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "34807 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "35764 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "35764 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "47509 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... " + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exemplars_df=raw_df[\n", + " (raw_df['name'] == 'rpc.server.duration') & (raw_df['exemplars'].apply(lambda e: e.size) > 0)\n", + "].sort_values(by=['start_time_unix_nano', 'time_unix_nano'])[\n", + " [\n", + " 'scope_name', 'name', 'description', 'unit', 'type', 'start_time_unix_nano', 'time_unix_nano', 'exemplars' \n", + " ]\n", + "].explode('exemplars')\n", + "\n", + "exemplars_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "eba3c7df-6021-4e5e-80dc-f9ceb205af1e", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### So, what's in an exemplar?\n", + "\n", + "An exemplar records an exact value (in `as_double` or `as_int`, depending on the metric unit type), at a specific time (`time_unix_nano`), during a specific `trace_id` and `span_id`:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### So, what's in an exemplar?\n", + "\n", + "An exemplar records an exact value (in `as_double` or `as_int`, depending on the metric unit type), at a specific time (`time_unix_nano`), during a specific `trace_id` and `span_id`:" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "10f6f54c-ec4e-470d-8092-9cc5731a2ce9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filtered_attributestime_unix_nanoas_doubleas_intspan_idtrace_id
1616[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...1723626941986000000240.269815Noneb'\\xf0\\x9fc\\xf6\\xda\"\\x1c\\x15'b'\\xa64[\\x94<\\xeb\\x88\\xb70!\\xb3\\xb2z\\xd2U\\xa2'
3506[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270362170000003.029536Noneb'\\xd0[&7\\x05O$\\xc4'b'c\\xab\\xb1\\xa3\"\\xec\\xa1koN\\x93C\\x91\\x05\\xad\\x89'
3506[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...172362701653800000028.312800Noneb'\\xe7\\x92I\\x99\\x97gr\\xc1'b'\\x94{\\xa8\\xe3?\\xea\\xc2~\\xeeK\\xf8\\x96\\x91+J\\xd0'
4449[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270969080000001.966614Noneb'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m'b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85'
5258[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270969080000001.966614Noneb'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m'b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85'
33851[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236271333680000002.024193Noneb'E\\xb6&\\xf1\\xc7\\xe6Z0'b'\\xadx\\x15?\\x96\\x1b\\xae\\x0c2f\\xab\\x879.\\x14\\xdc'
34807[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236271749320000002.099705Noneb'\\x81s\\xbeYI\\xef5\\x01'b'x\\xdd\\xe8\\xe6\\xf3\\x8f\\xe7\\xbc\\xcf`\\xd5\\xbea\\x00\\x10\\x8e'
35764[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272780800000004.773562Noneb'P\\x97jq\\x13\\xc1\\xe1\\xfe'b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1'
35764[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272525250000005.076302Noneb'k\\xfb\\x9d\\x0e\\xa7V\\x97\\x0b'b'\\xa5r\\xab\\x04\\xfc\\xe1ZC\\xbb\\xe2\\xa6\\xd5\\xcb\\xc2\\x17E'
47509[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272780800000004.773562Noneb'P\\x97jq\\x13\\xc1\\xe1\\xfe'b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1'
\n", + "
" + ], + "text/plain": [ + " filtered_attributes \\\n", + "1616 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "3506 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "3506 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "4449 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "5258 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "33851 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "34807 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "35764 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "35764 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "47509 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "\n", + " time_unix_nano as_double as_int span_id \\\n", + "1616 1723626941986000000 240.269815 None b'\\xf0\\x9fc\\xf6\\xda\"\\x1c\\x15' \n", + "3506 1723627036217000000 3.029536 None b'\\xd0[&7\\x05O$\\xc4' \n", + "3506 1723627016538000000 28.312800 None b'\\xe7\\x92I\\x99\\x97gr\\xc1' \n", + "4449 1723627096908000000 1.966614 None b'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m' \n", + "5258 1723627096908000000 1.966614 None b'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m' \n", + "33851 1723627133368000000 2.024193 None b'E\\xb6&\\xf1\\xc7\\xe6Z0' \n", + "34807 1723627174932000000 2.099705 None b'\\x81s\\xbeYI\\xef5\\x01' \n", + "35764 1723627278080000000 4.773562 None b'P\\x97jq\\x13\\xc1\\xe1\\xfe' \n", + "35764 1723627252525000000 5.076302 None b'k\\xfb\\x9d\\x0e\\xa7V\\x97\\x0b' \n", + "47509 1723627278080000000 4.773562 None b'P\\x97jq\\x13\\xc1\\xe1\\xfe' \n", + "\n", + " trace_id \n", + "1616 b'\\xa64[\\x94<\\xeb\\x88\\xb70!\\xb3\\xb2z\\xd2U\\xa2' \n", + "3506 b'c\\xab\\xb1\\xa3\"\\xec\\xa1koN\\x93C\\x91\\x05\\xad\\x89' \n", + "3506 b'\\x94{\\xa8\\xe3?\\xea\\xc2~\\xeeK\\xf8\\x96\\x91+J\\xd0' \n", + "4449 b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85' \n", + "5258 b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85' \n", + "33851 b'\\xadx\\x15?\\x96\\x1b\\xae\\x0c2f\\xab\\x879.\\x14\\xdc' \n", + "34807 b'x\\xdd\\xe8\\xe6\\xf3\\x8f\\xe7\\xbc\\xcf`\\xd5\\xbea\\x00\\x10\\x8e' \n", + "35764 b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1' \n", + "35764 b'\\xa5r\\xab\\x04\\xfc\\xe1ZC\\xbb\\xe2\\xa6\\xd5\\xcb\\xc2\\x17E' \n", + "47509 b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1' " + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(exemplars_df['exemplars'].apply(pd.Series)).head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "5da5bc1e-d899-4848-aa47-192cb3097e6b", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Let's bring back the extracted exemplar columns:\n", + "\n", + "Now note how one `metric` data point can get more than one exemplar, within different `traces`. (Hint: look at repeating indexes in the left-most column):\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Let's bring back the extracted exemplar columns:\n", + "\n", + "Now note how one `metric` data point can get more than one exemplar, within different `traces`. (Hint: look at repeating indexes in the left-most column):" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "a0937907-30ec-4beb-8961-f2fc3d837c04", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namenamedescriptionunittypestart_time_unix_nanotime_unix_nanoexemplarsfiltered_attributestime_unix_nanoas_doubleas_intspan_idtrace_id
1616io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723626990691310448{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...1723626941986000000240.269815Noneb'\\xf0\\x9fc\\xf6\\xda\"\\x1c\\x15'b'\\xa64[\\x94<\\xeb\\x88\\xb70!\\xb3\\xb2z\\xd2U\\xa2'
3506io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627050690892769{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270362170000003.029536Noneb'\\xd0[&7\\x05O$\\xc4'b'c\\xab\\xb1\\xa3\"\\xec\\xa1koN\\x93C\\x91\\x05\\xad\\x89'
3506io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627050690892769{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...172362701653800000028.312800Noneb'\\xe7\\x92I\\x99\\x97gr\\xc1'b'\\x94{\\xa8\\xe3?\\xea\\xc2~\\xeeK\\xf8\\x96\\x91+J\\xd0'
4449io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627110690872218{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270969080000001.966614Noneb'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m'b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85'
5258io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627110690872218{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236270969080000001.966614Noneb'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m'b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85'
33851io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627170691991446{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236271333680000002.024193Noneb'E\\xb6&\\xf1\\xc7\\xe6Z0'b'\\xadx\\x15?\\x96\\x1b\\xae\\x0c2f\\xab\\x879.\\x14\\xdc'
34807io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627230690873998{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236271749320000002.099705Noneb'\\x81s\\xbeYI\\xef5\\x01'b'x\\xdd\\xe8\\xe6\\xf3\\x8f\\xe7\\xbc\\xcf`\\xd5\\xbea\\x00\\x10\\x8e'
35764io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272780800000004.773562Noneb'P\\x97jq\\x13\\xc1\\xe1\\xfe'b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1'
35764io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272525250000005.076302Noneb'k\\xfb\\x9d\\x0e\\xa7V\\x97\\x0b'b'\\xa5r\\xab\\x04\\xfc\\xe1ZC\\xbb\\xe2\\xa6\\xd5\\xcb\\xc2\\x17E'
47509io.opentelemetry.grpc-1.6rpc.server.durationThe duration of an inbound RPC invocationmsHISTOGRAM17236269306845866101723627290690861235{'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'...[{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i...17236272780800000004.773562Noneb'P\\x97jq\\x13\\xc1\\xe1\\xfe'b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1'
\n", + "
" + ], + "text/plain": [ + " scope_name name \\\n", + "1616 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "3506 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "3506 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "4449 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "5258 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "33851 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "34807 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "35764 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "35764 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "47509 io.opentelemetry.grpc-1.6 rpc.server.duration \n", + "\n", + " description unit type \\\n", + "1616 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "3506 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "3506 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "4449 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "5258 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "33851 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "34807 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "35764 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "35764 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "47509 The duration of an inbound RPC invocation ms HISTOGRAM \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "1616 1723626930684586610 1723626990691310448 \n", + "3506 1723626930684586610 1723627050690892769 \n", + "3506 1723626930684586610 1723627050690892769 \n", + "4449 1723626930684586610 1723627110690872218 \n", + "5258 1723626930684586610 1723627110690872218 \n", + "33851 1723626930684586610 1723627170691991446 \n", + "34807 1723626930684586610 1723627230690873998 \n", + "35764 1723626930684586610 1723627290690861235 \n", + "35764 1723626930684586610 1723627290690861235 \n", + "47509 1723626930684586610 1723627290690861235 \n", + "\n", + " exemplars \\\n", + "1616 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "3506 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "3506 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "4449 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "5258 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "33851 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "34807 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "35764 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "35764 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "47509 {'filtered_attributes': [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44'... \n", + "\n", + " filtered_attributes \\\n", + "1616 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "3506 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "3506 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "4449 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "5258 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "33851 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "34807 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "35764 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "35764 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "47509 [{'key': 'network.peer.address', 'value': {'string_value': '10.244.1.44', 'bool_value': None, 'i... \n", + "\n", + " time_unix_nano as_double as_int span_id \\\n", + "1616 1723626941986000000 240.269815 None b'\\xf0\\x9fc\\xf6\\xda\"\\x1c\\x15' \n", + "3506 1723627036217000000 3.029536 None b'\\xd0[&7\\x05O$\\xc4' \n", + "3506 1723627016538000000 28.312800 None b'\\xe7\\x92I\\x99\\x97gr\\xc1' \n", + "4449 1723627096908000000 1.966614 None b'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m' \n", + "5258 1723627096908000000 1.966614 None b'\\x07\\xa5\\x1b\\xc8\\xa9l\\x88m' \n", + "33851 1723627133368000000 2.024193 None b'E\\xb6&\\xf1\\xc7\\xe6Z0' \n", + "34807 1723627174932000000 2.099705 None b'\\x81s\\xbeYI\\xef5\\x01' \n", + "35764 1723627278080000000 4.773562 None b'P\\x97jq\\x13\\xc1\\xe1\\xfe' \n", + "35764 1723627252525000000 5.076302 None b'k\\xfb\\x9d\\x0e\\xa7V\\x97\\x0b' \n", + "47509 1723627278080000000 4.773562 None b'P\\x97jq\\x13\\xc1\\xe1\\xfe' \n", + "\n", + " trace_id \n", + "1616 b'\\xa64[\\x94<\\xeb\\x88\\xb70!\\xb3\\xb2z\\xd2U\\xa2' \n", + "3506 b'c\\xab\\xb1\\xa3\"\\xec\\xa1koN\\x93C\\x91\\x05\\xad\\x89' \n", + "3506 b'\\x94{\\xa8\\xe3?\\xea\\xc2~\\xeeK\\xf8\\x96\\x91+J\\xd0' \n", + "4449 b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85' \n", + "5258 b'Z\\x04\\xd7\\xc23d3b\\x96\\xc8eC7\\xcc\\x8d\\x85' \n", + "33851 b'\\xadx\\x15?\\x96\\x1b\\xae\\x0c2f\\xab\\x879.\\x14\\xdc' \n", + "34807 b'x\\xdd\\xe8\\xe6\\xf3\\x8f\\xe7\\xbc\\xcf`\\xd5\\xbea\\x00\\x10\\x8e' \n", + "35764 b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1' \n", + "35764 b'\\xa5r\\xab\\x04\\xfc\\xe1ZC\\xbb\\xe2\\xa6\\xd5\\xcb\\xc2\\x17E' \n", + "47509 b'8\\xb1\\xfd\\xf8\\xd0\\xf8\\xce\\xc1\\x81\\xd3\\xe2\\xd7$\\x97\\x9b1' " + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "exemplars_df=pd.concat([exemplars_df, exemplars_df['exemplars'].apply(pd.Series)], axis=1)\n", + "\n", + "exemplars_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "80499240-ffc0-4121-a4ca-59106ef842ac", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Now, let's save the pre-processed metrics data as we will need it later:\n", + "\n", + "***Note:*** OpenTelemetry data packets may have been retransmitted (due to network errors for example). Retransmitted data may be present more than\n", + "once in the output Parquet files. For this reason - we'll also deduplicate our metrics before saving them.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Now, let's save the pre-processed metrics data as we will need it later:\n", + "\n", + "***Note:*** OpenTelemetry data packets may have been retransmitted (due to network errors for example). Retransmitted data may be present more than\n", + "once in the output Parquet files. For this reason - we'll also deduplicate our metrics before saving them." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "c6e12bb8-2c5a-4a7b-84e9-f4acd025ab18", + "metadata": {}, + "outputs": [], + "source": [ + "# Convert data types to native representation and save to a pre-processed file for later use\n", + "ext_df['a_http.status_code']=pd.to_numeric(ext_df['a_http.status_code'], errors='coerce')\n", + "ext_df=ext_df.astype({'a_type': 'string'})\n", + "ext_df=ext_df.convert_dtypes()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "f25169ef-300b-4943-af7d-f86557b5968a", + "metadata": {}, + "outputs": [], + "source": [ + "# deduplicate based on resources, scopes, attribtes, etc...\n", + "dedup_cols=[c for c in ext_df.columns if c not in [\n", + " 'gauge_int', 'gauge_double',\n", + " 'sum_int', 'sum_double',\n", + " 'histogram_bucket_counts', 'histogram_explicit_bounds']\n", + "]\n", + "\n", + "ext_df = ext_df.drop_duplicates(subset=dedup_cols)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "998fad12-b462-4e66-b86f-c0fc60fcee1e", + "metadata": {}, + "outputs": [], + "source": [ + "ext_df.to_parquet('otel-demo-app/metrics.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "7ce6b3a4-2772-437e-9b96-af36f40dc8be", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "> ### ***To dive deeper*** into metrics data switch now to the [metrics notebook](metrics.ipynb)\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "> ### ***To dive deeper*** into metrics data switch now to the [metrics notebook](metrics.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "e2483076-6cd4-4a72-a878-c927ad80fcd7", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "---\n", + "\n", + "# Traces signal\n", + "\n", + "The next OpenTelemetry signal type in this demo is the [traces signal.](https://opentelemetry.io/docs/concepts/signals/traces/)\n", + "\n", + "This signal 'traces' the path through your app's code as it gets executed in order to fulfill a particular task, like, for example - to handle an incoming\n", + "client request.\n", + "\n", + "A `trace_id` is assigned to each trace. Within a `trace`, `spans` (identified by `span_id`, `name` and `kind`) are opened and closed (at \n", + "`start_time_unix_nano` and `end_time_unix_nano` respectively) to wrap around key procedures in your code - like around a database query or a REST request to another \n", + "microservice.\n", + "\n", + "`Spans` can also be nested and when so - the parent `span_id` will be recorded in `parent_span_id`. Another way of linking `spans` is through the `links` column.\n", + "During the time your app spends within a `span` it can record key `events` as they occur. If the procedure inside a `span` fails completely - the `span` \n", + "can be closed with an error marked in the `status` column.\n", + "\n", + "As with the above signal types - `traces` contain `resource`, `scope` and `span` meta-data. See the `logs` examples above for more details on `resources`, \n", + "`scopes` and `attributes`.\n", + "\n", + "When the [Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) receives `traces` it extracts each each \n", + "`span` and saves it as a single row in the output Parquet file. In doing so it also adds a few columns to help with more complex data processing. These \n", + "columns are not part of the original OpenTelemetry format:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "Now, let's get to loading `traces` data from Parquet files and exploring it. Similarly to the above examples, we'll also extract the meta-data:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "---\n", + "\n", + "# Traces signal\n", + "\n", + "The next OpenTelemetry signal type in this demo is the [traces signal.](https://opentelemetry.io/docs/concepts/signals/traces/)\n", + "\n", + "This signal 'traces' the path through your app's code as it gets executed in order to fulfill a particular task, like, for example - to handle an incoming\n", + "client request.\n", + "\n", + "A `trace_id` is assigned to each trace. Within a `trace`, `spans` (identified by `span_id`, `name` and `kind`) are opened and closed (at \n", + "`start_time_unix_nano` and `end_time_unix_nano` respectively) to wrap around key procedures in your code - like around a database query or a REST request to another \n", + "microservice.\n", + "\n", + "`Spans` can also be nested and when so - the parent `span_id` will be recorded in `parent_span_id`. Another way of linking `spans` is through the `links` column.\n", + "During the time your app spends within a `span` it can record key `events` as they occur. If the procedure inside a `span` fails completely - the `span` \n", + "can be closed with an error marked in the `status` column.\n", + "\n", + "As with the above signal types - `traces` contain `resource`, `scope` and `span` meta-data. See the `logs` examples above for more details on `resources`, \n", + "`scopes` and `attributes`.\n", + "\n", + "When the [Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) receives `traces` it extracts each each \n", + "`span` and saves it as a single row in the output Parquet file. In doing so it also adds a few columns to help with more complex data processing. These \n", + "columns are not part of the original OpenTelemetry format:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "Now, let's get to loading `traces` data from Parquet files and exploring it. Similarly to the above examples, we'll also extract the meta-data:" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "8e44e524-6f80-48d7-845f-768ad2351e91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
batch_timestampbatch_UUIDseq_noresource_attributesresource_dropped_attributes_countresource_schema_urlscope_namescope_versionscope_attributesscope_dropped_attributes_counttrace_idspan_idtrace_stateparent_span_idflagsnamekindstart_time_unix_nanoend_time_unix_nanoattributesdropped_attributes_counteventsdropped_events_countlinksdropped_links_countstatusspan_schema_urlis_validerror_message
0172362693822824c7d982-037f-4bd3-955f-870d2a2661dd0[{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ...0@opentelemetry/instrumentation-http0.52.1[]0b'\\xaa\\x12\\x15\\xbe\\xc1d\\x16\\xc5\\x12\\x18\\xc4\\xf2\\xf8\\xbd\\xc0W'b'|\\xc8\\xb1\\\\\\t\\xda \\xa4'b''0GETb'SPAN_KIND_CLIENT'17236269328500000001723626933041738697[{'key': 'http.url', 'value': {'string_value': 'http://metadata.google.internal./computeMetadata...0[{'time_unix_nano': 1723626933041528195, 'name': 'exception', 'attributes': [{'key': 'exception....0[]0{'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'}True
1172362693822824c7d982-037f-4bd3-955f-870d2a2661dd1[{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ...0@opentelemetry/instrumentation-http0.52.1[]0b'\\xc0\\xdeJd\\xb9\\xcdP\\xab\\x83\\xa8{\\xf5\\x8b\\xcf\\rc'b'\\xde$\\xf2i,\\xc3\\x16\\x14'b''0GETb'SPAN_KIND_CLIENT'17236269330500000001723626933446602174[{'key': 'http.url', 'value': {'string_value': 'https://kubernetes.default.svc/api/v1/namespaces...0[]0[]0{'message': '', 'code': b'STATUS_CODE_ERROR'}True
2172362693822824c7d982-037f-4bd3-955f-870d2a2661dd2[{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ...0@opentelemetry/instrumentation-http0.52.1[]0b\"\\x943\\xcdBt\\x88LW\\xf5\\xffB*'\\x1b\\x07L\"b'\\xfev\\x96\\xde\\xcb.\\xc2\\xed'b''0GETb'SPAN_KIND_CLIENT'17236269328460000001723626935855233118[{'key': 'http.url', 'value': {'string_value': 'http://169.254.169.254/computeMetadata/v1/instan...0[{'time_unix_nano': 1723626935855224099, 'name': 'exception', 'attributes': [{'key': 'exception....0[]0{'message': 'socket hang up', 'code': b'STATUS_CODE_ERROR'}True
31723626939175e8aed589-1370-4f70-857a-34b3e087a1350[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.instrumentation.requests0.44b0[]0b'\\xb7\\xd9!V\\xacL\\x8a\\xc7\\x12\\xae\\x97\\x90N\\xc2\\xba\\xc8'b'\\xd0)\\x90\\x8d\\x9c\\xc1\\xdfA'b''0GETb'SPAN_KIND_CLIENT'17236269351053755231723626935119673381[{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ...0[{'time_unix_nano': 1723626935119621929, 'name': 'exception', 'attributes': [{'key': 'exception....0[]0{'message': 'ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8...True
41723626939175e8aed589-1370-4f70-857a-34b3e087a1351[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.instrumentation.requests0.44b0[]0b'\\t1\\xa7\\xa6\\x14\\x9d\\x05\\xaf5\\xd2\\xe8\\xca\\xbd\\xf3\\xdf~'b'\\xeb\\xfdn\\xbf\\x8a\\xcc\\xa6o'b''0GETb'SPAN_KIND_CLIENT'17236269371061489781723626937109171178[{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ...0[]0[]0{'message': '', 'code': b'STATUS_CODE_ERROR'}True
51723626939175e8aed589-1370-4f70-857a-34b3e087a1352[{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_...0opentelemetry.instrumentation.requests0.44b0[]0b'\\xfa\\x06\\x184\\xf9>\\xfe\\x1aZ\\xcf\\xfbT#\\xe9\\x89\\xae'b'y\\xb8\\x10\\x0cn\\xb2cF'b''0GETb'SPAN_KIND_CLIENT'17236269371097616691723626937111121307[{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ...0[]0[]0{'message': '', 'code': b'STATUS_CODE_ERROR'}True
61723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb0[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-dns0.36.1[]0b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\xb3\\xad\\xcf\\x83\\x89H\\xcf\\xb8'b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'0dns.lookupb'SPAN_KIND_CLIENT'17236269343530000001723626934355248522[{'key': 'dns.error_message', 'value': {'string_value': 'getaddrinfo ENOTFOUND metadata.google.i...0[]0[]0{'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'}True
71723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb1[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-dns0.36.1[]0b'0\\xb0\\x1br\\xac\\xca$U\\xa1\\x83\\xd2{\\x94M\\x9f2'b'?#\\x88\\x0b\\xb6\\xfdb\\x01'b''0dns.lookupb'SPAN_KIND_CLIENT'17236269343620000001723626934362231235[{'key': 'peer.ipv4', 'value': {'string_value': '0.0.0.0', 'bool_value': None, 'int_value': None...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
81723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb2[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-dns0.36.1[]0b'\\xf0`T\\xea\\x95Z!s{1\\x1a<\\n\\x9a\\x7f\\xc9'b'Y\\x97$\\xcb\\xdc\\xd3w 'b''0dns.lookupb'SPAN_KIND_CLIENT'17236269344080000001723626934415438858[{'key': 'peer.ipv4', 'value': {'string_value': '10.96.0.1', 'bool_value': None, 'int_value': No...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
91723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb3[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-net0.36.0[]0b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\x94\\xd2\\x8a\\x7f\\xe6\\xc1\\xd2('b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'0tcp.connectb'SPAN_KIND_INTERNAL'17236269343520000001723626934356514142[{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N...0[]0[]0{'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'}True
101723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb4[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-net0.36.0[]0b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a'b')\\x18\\xbb\\xae\\x15\\x0f\\x05\\xb3'b'\\x16K\\x8aGF\\x8e\\x0b\\x89'0tcp.connectb'SPAN_KIND_INTERNAL'17236269344070000001723626934415556229[{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
111723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb5[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-net0.36.0[]0b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a'b'\\x16K\\x8aGF\\x8e\\x0b\\x89'b''0tls.connectb'SPAN_KIND_INTERNAL'17236269344070000001723626934424946550[{'key': 'tls.protocol', 'value': {'string_value': 'TLSv1.3', 'bool_value': None, 'int_value': N...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
121723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb6[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-net0.36.0[]0b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15'b'OV\\x08\\xbd\\xa3\\xcd\\xb6\\xbd'b'^\\x8d\\x18B>*x\\x8b'0tcp.connectb'SPAN_KIND_INTERNAL'17236269343480000001723626937354133382[{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
131723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb7[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-http0.51.1[]0b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'b''0GETb'SPAN_KIND_CLIENT'17236269343500000001723626934356365738[{'key': 'http.url', 'value': {'string_value': 'http://metadata.google.internal./computeMetadata...0[{'time_unix_nano': 1723626934356311987, 'name': 'exception', 'attributes': [{'key': 'exception....0[]0{'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'}True
141723626939574c0737187-6efd-4a9a-b96b-52467f1f10bb8[{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va...0@opentelemetry/instrumentation-http0.51.1[]0b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15'b'^\\x8d\\x18B>*x\\x8b'b''0GETb'SPAN_KIND_CLIENT'17236269343450000001723626937354598370[{'key': 'http.url', 'value': {'string_value': 'http://169.254.169.254/computeMetadata/v1/instan...0[{'time_unix_nano': 1723626937354592963, 'name': 'exception', 'attributes': [{'key': 'exception....0[]0{'message': 'socket hang up', 'code': b'STATUS_CODE_ERROR'}True
1517236269399737f4f5443-4081-422f-8265-4bc1ca0bfdca0[{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo...0https://opentelemetry.io/schemas/1.26.0jsonEvaluator[]0b'I\\xb2\\xcb\\xfc\\xf6N\\xc3\\xd4\\x0b\\x00bkV3\\x13t'b'\\x87\\x13\\x84f\\xf3\\x93p{'b''256flagSyncb'SPAN_KIND_INTERNAL'17236269298685410971723626929872638220[{'key': 'feature_flag.source', 'value': {'string_value': './etc/flagd/demo.flagd.json', 'bool_v...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
161723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab20[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9'b'\\xe8\\xc6\\xb4\\xb7bV1\\xa9'b'\\xdcnn\\xb7\\xe3JWI'0router frontend egressb'SPAN_KIND_CLIENT'17236269410059630001723626941017004000[{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
171723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab21[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9'b'\\xdcnn\\xb7\\xe3JWI'b''0ingressb'SPAN_KIND_SERVER'17236269410058440001723626941017056000[{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
181723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab22[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5'b'\\xf7\\x95T\\xb3\"\\xcfHq'b\"'\\x97!\\x11\\x99\\xceoe\"0router frontend egressb'SPAN_KIND_CLIENT'17236269410078920001723626941022615000[{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
191723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab23[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5'b\"'\\x97!\\x11\\x99\\xceoe\"b''0ingressb'SPAN_KIND_SERVER'17236269410077580001723626941022651000[{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
201723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab24[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'B\\x88\\xc4>\\xf7\\xab\\xd1-n\\xa6\\x80I<\\x99\\xf0\\x97'b'E\\x9d\\x8aw\\xe0\\x92\\xda\\x83'b'\\xed\\x85\\xfb\\x90\\xc5\\n\\x19\\x17'0router frontend egressb'SPAN_KIND_CLIENT'17236269410184200001723626941029608000[{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
211723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab25[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd'b'9\\xc6\\x040\\xcf~:v'b'K\\xbf\"\\x81_\\xd2[~'0router frontend egressb'SPAN_KIND_CLIENT'17236269408670290001723626940988985000[{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
221723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab26[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd'b'K\\xbf\"\\x81_\\xd2[~'b''0ingressb'SPAN_KIND_SERVER'17236269408658100001723626940989017000[{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
231723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab27[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx'b'\\xbdf\\xc7\\xe6\\xebd-\\xb3'b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81'0router frontend egressb'SPAN_KIND_CLIENT'17236269410020890001723626941008845000[{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
241723626941178ef6d1160-2bc3-4332-9ba2-d14b682e7ab28[{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val...0[]0b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx'b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81'b''0ingressb'SPAN_KIND_SERVER'17236269410019280001723626941008888000[{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double...0[]0[]0{'message': '', 'code': b'STATUS_CODE_UNSET'}True
\n", + "
" + ], + "text/plain": [ + " batch_timestamp batch_UUID seq_no \\\n", + "0 1723626938228 24c7d982-037f-4bd3-955f-870d2a2661dd 0 \n", + "1 1723626938228 24c7d982-037f-4bd3-955f-870d2a2661dd 1 \n", + "2 1723626938228 24c7d982-037f-4bd3-955f-870d2a2661dd 2 \n", + "3 1723626939175 e8aed589-1370-4f70-857a-34b3e087a135 0 \n", + "4 1723626939175 e8aed589-1370-4f70-857a-34b3e087a135 1 \n", + "5 1723626939175 e8aed589-1370-4f70-857a-34b3e087a135 2 \n", + "6 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 0 \n", + "7 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 1 \n", + "8 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 2 \n", + "9 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 3 \n", + "10 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 4 \n", + "11 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 5 \n", + "12 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 6 \n", + "13 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 7 \n", + "14 1723626939574 c0737187-6efd-4a9a-b96b-52467f1f10bb 8 \n", + "15 1723626939973 7f4f5443-4081-422f-8265-4bc1ca0bfdca 0 \n", + "16 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 0 \n", + "17 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 1 \n", + "18 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 2 \n", + "19 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 3 \n", + "20 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 4 \n", + "21 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 5 \n", + "22 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 6 \n", + "23 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 7 \n", + "24 1723626941178 ef6d1160-2bc3-4332-9ba2-d14b682e7ab2 8 \n", + "\n", + " resource_attributes \\\n", + "0 [{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ... \n", + "1 [{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ... \n", + "2 [{'key': 'service.name', 'value': {'string_value': 'frontend', 'bool_value': None, 'int_value': ... \n", + "3 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "4 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "5 [{'key': 'telemetry.sdk.language', 'value': {'string_value': 'python', 'bool_value': None, 'int_... \n", + "6 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "7 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "8 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "9 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "10 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "11 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "12 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "13 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "14 [{'key': 'service.name', 'value': {'string_value': 'paymentservice', 'bool_value': None, 'int_va... \n", + "15 [{'key': 'host.name', 'value': {'string_value': 'opentelemetry-demo-flagd-6d57f47cb8-t8jgb', 'bo... \n", + "16 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "17 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "18 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "19 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "20 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "21 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "22 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "23 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "24 [{'key': 'service.name', 'value': {'string_value': 'frontendproxy', 'bool_value': None, 'int_val... \n", + "\n", + " resource_dropped_attributes_count \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 \n", + "12 0 \n", + "13 0 \n", + "14 0 \n", + "15 0 \n", + "16 0 \n", + "17 0 \n", + "18 0 \n", + "19 0 \n", + "20 0 \n", + "21 0 \n", + "22 0 \n", + "23 0 \n", + "24 0 \n", + "\n", + " resource_schema_url \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 https://opentelemetry.io/schemas/1.26.0 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " scope_name scope_version scope_attributes \\\n", + "0 @opentelemetry/instrumentation-http 0.52.1 [] \n", + "1 @opentelemetry/instrumentation-http 0.52.1 [] \n", + "2 @opentelemetry/instrumentation-http 0.52.1 [] \n", + "3 opentelemetry.instrumentation.requests 0.44b0 [] \n", + "4 opentelemetry.instrumentation.requests 0.44b0 [] \n", + "5 opentelemetry.instrumentation.requests 0.44b0 [] \n", + "6 @opentelemetry/instrumentation-dns 0.36.1 [] \n", + "7 @opentelemetry/instrumentation-dns 0.36.1 [] \n", + "8 @opentelemetry/instrumentation-dns 0.36.1 [] \n", + "9 @opentelemetry/instrumentation-net 0.36.0 [] \n", + "10 @opentelemetry/instrumentation-net 0.36.0 [] \n", + "11 @opentelemetry/instrumentation-net 0.36.0 [] \n", + "12 @opentelemetry/instrumentation-net 0.36.0 [] \n", + "13 @opentelemetry/instrumentation-http 0.51.1 [] \n", + "14 @opentelemetry/instrumentation-http 0.51.1 [] \n", + "15 jsonEvaluator [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " scope_dropped_attributes_count \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 \n", + "12 0 \n", + "13 0 \n", + "14 0 \n", + "15 0 \n", + "16 0 \n", + "17 0 \n", + "18 0 \n", + "19 0 \n", + "20 0 \n", + "21 0 \n", + "22 0 \n", + "23 0 \n", + "24 0 \n", + "\n", + " trace_id \\\n", + "0 b'\\xaa\\x12\\x15\\xbe\\xc1d\\x16\\xc5\\x12\\x18\\xc4\\xf2\\xf8\\xbd\\xc0W' \n", + "1 b'\\xc0\\xdeJd\\xb9\\xcdP\\xab\\x83\\xa8{\\xf5\\x8b\\xcf\\rc' \n", + "2 b\"\\x943\\xcdBt\\x88LW\\xf5\\xffB*'\\x1b\\x07L\" \n", + "3 b'\\xb7\\xd9!V\\xacL\\x8a\\xc7\\x12\\xae\\x97\\x90N\\xc2\\xba\\xc8' \n", + "4 b'\\t1\\xa7\\xa6\\x14\\x9d\\x05\\xaf5\\xd2\\xe8\\xca\\xbd\\xf3\\xdf~' \n", + "5 b'\\xfa\\x06\\x184\\xf9>\\xfe\\x1aZ\\xcf\\xfbT#\\xe9\\x89\\xae' \n", + "6 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "7 b'0\\xb0\\x1br\\xac\\xca$U\\xa1\\x83\\xd2{\\x94M\\x9f2' \n", + "8 b'\\xf0`T\\xea\\x95Z!s{1\\x1a<\\n\\x9a\\x7f\\xc9' \n", + "9 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "10 b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a' \n", + "11 b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a' \n", + "12 b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15' \n", + "13 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "14 b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15' \n", + "15 b'I\\xb2\\xcb\\xfc\\xf6N\\xc3\\xd4\\x0b\\x00bkV3\\x13t' \n", + "16 b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9' \n", + "17 b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9' \n", + "18 b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5' \n", + "19 b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5' \n", + "20 b'B\\x88\\xc4>\\xf7\\xab\\xd1-n\\xa6\\x80I<\\x99\\xf0\\x97' \n", + "21 b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd' \n", + "22 b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd' \n", + "23 b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx' \n", + "24 b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx' \n", + "\n", + " span_id trace_state \\\n", + "0 b'|\\xc8\\xb1\\\\\\t\\xda \\xa4' \n", + "1 b'\\xde$\\xf2i,\\xc3\\x16\\x14' \n", + "2 b'\\xfev\\x96\\xde\\xcb.\\xc2\\xed' \n", + "3 b'\\xd0)\\x90\\x8d\\x9c\\xc1\\xdfA' \n", + "4 b'\\xeb\\xfdn\\xbf\\x8a\\xcc\\xa6o' \n", + "5 b'y\\xb8\\x10\\x0cn\\xb2cF' \n", + "6 b'\\xb3\\xad\\xcf\\x83\\x89H\\xcf\\xb8' \n", + "7 b'?#\\x88\\x0b\\xb6\\xfdb\\x01' \n", + "8 b'Y\\x97$\\xcb\\xdc\\xd3w ' \n", + "9 b'\\x94\\xd2\\x8a\\x7f\\xe6\\xc1\\xd2(' \n", + "10 b')\\x18\\xbb\\xae\\x15\\x0f\\x05\\xb3' \n", + "11 b'\\x16K\\x8aGF\\x8e\\x0b\\x89' \n", + "12 b'OV\\x08\\xbd\\xa3\\xcd\\xb6\\xbd' \n", + "13 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' \n", + "14 b'^\\x8d\\x18B>*x\\x8b' \n", + "15 b'\\x87\\x13\\x84f\\xf3\\x93p{' \n", + "16 b'\\xe8\\xc6\\xb4\\xb7bV1\\xa9' \n", + "17 b'\\xdcnn\\xb7\\xe3JWI' \n", + "18 b'\\xf7\\x95T\\xb3\"\\xcfHq' \n", + "19 b\"'\\x97!\\x11\\x99\\xceoe\" \n", + "20 b'E\\x9d\\x8aw\\xe0\\x92\\xda\\x83' \n", + "21 b'9\\xc6\\x040\\xcf~:v' \n", + "22 b'K\\xbf\"\\x81_\\xd2[~' \n", + "23 b'\\xbdf\\xc7\\xe6\\xebd-\\xb3' \n", + "24 b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81' \n", + "\n", + " parent_span_id flags name \\\n", + "0 b'' 0 GET \n", + "1 b'' 0 GET \n", + "2 b'' 0 GET \n", + "3 b'' 0 GET \n", + "4 b'' 0 GET \n", + "5 b'' 0 GET \n", + "6 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' 0 dns.lookup \n", + "7 b'' 0 dns.lookup \n", + "8 b'' 0 dns.lookup \n", + "9 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' 0 tcp.connect \n", + "10 b'\\x16K\\x8aGF\\x8e\\x0b\\x89' 0 tcp.connect \n", + "11 b'' 0 tls.connect \n", + "12 b'^\\x8d\\x18B>*x\\x8b' 0 tcp.connect \n", + "13 b'' 0 GET \n", + "14 b'' 0 GET \n", + "15 b'' 256 flagSync \n", + "16 b'\\xdcnn\\xb7\\xe3JWI' 0 router frontend egress \n", + "17 b'' 0 ingress \n", + "18 b\"'\\x97!\\x11\\x99\\xceoe\" 0 router frontend egress \n", + "19 b'' 0 ingress \n", + "20 b'\\xed\\x85\\xfb\\x90\\xc5\\n\\x19\\x17' 0 router frontend egress \n", + "21 b'K\\xbf\"\\x81_\\xd2[~' 0 router frontend egress \n", + "22 b'' 0 ingress \n", + "23 b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81' 0 router frontend egress \n", + "24 b'' 0 ingress \n", + "\n", + " kind start_time_unix_nano end_time_unix_nano \\\n", + "0 b'SPAN_KIND_CLIENT' 1723626932850000000 1723626933041738697 \n", + "1 b'SPAN_KIND_CLIENT' 1723626933050000000 1723626933446602174 \n", + "2 b'SPAN_KIND_CLIENT' 1723626932846000000 1723626935855233118 \n", + "3 b'SPAN_KIND_CLIENT' 1723626935105375523 1723626935119673381 \n", + "4 b'SPAN_KIND_CLIENT' 1723626937106148978 1723626937109171178 \n", + "5 b'SPAN_KIND_CLIENT' 1723626937109761669 1723626937111121307 \n", + "6 b'SPAN_KIND_CLIENT' 1723626934353000000 1723626934355248522 \n", + "7 b'SPAN_KIND_CLIENT' 1723626934362000000 1723626934362231235 \n", + "8 b'SPAN_KIND_CLIENT' 1723626934408000000 1723626934415438858 \n", + "9 b'SPAN_KIND_INTERNAL' 1723626934352000000 1723626934356514142 \n", + "10 b'SPAN_KIND_INTERNAL' 1723626934407000000 1723626934415556229 \n", + "11 b'SPAN_KIND_INTERNAL' 1723626934407000000 1723626934424946550 \n", + "12 b'SPAN_KIND_INTERNAL' 1723626934348000000 1723626937354133382 \n", + "13 b'SPAN_KIND_CLIENT' 1723626934350000000 1723626934356365738 \n", + "14 b'SPAN_KIND_CLIENT' 1723626934345000000 1723626937354598370 \n", + "15 b'SPAN_KIND_INTERNAL' 1723626929868541097 1723626929872638220 \n", + "16 b'SPAN_KIND_CLIENT' 1723626941005963000 1723626941017004000 \n", + "17 b'SPAN_KIND_SERVER' 1723626941005844000 1723626941017056000 \n", + "18 b'SPAN_KIND_CLIENT' 1723626941007892000 1723626941022615000 \n", + "19 b'SPAN_KIND_SERVER' 1723626941007758000 1723626941022651000 \n", + "20 b'SPAN_KIND_CLIENT' 1723626941018420000 1723626941029608000 \n", + "21 b'SPAN_KIND_CLIENT' 1723626940867029000 1723626940988985000 \n", + "22 b'SPAN_KIND_SERVER' 1723626940865810000 1723626940989017000 \n", + "23 b'SPAN_KIND_CLIENT' 1723626941002089000 1723626941008845000 \n", + "24 b'SPAN_KIND_SERVER' 1723626941001928000 1723626941008888000 \n", + "\n", + " attributes \\\n", + "0 [{'key': 'http.url', 'value': {'string_value': 'http://metadata.google.internal./computeMetadata... \n", + "1 [{'key': 'http.url', 'value': {'string_value': 'https://kubernetes.default.svc/api/v1/namespaces... \n", + "2 [{'key': 'http.url', 'value': {'string_value': 'http://169.254.169.254/computeMetadata/v1/instan... \n", + "3 [{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ... \n", + "4 [{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ... \n", + "5 [{'key': 'http.method', 'value': {'string_value': 'GET', 'bool_value': None, 'int_value': None, ... \n", + "6 [{'key': 'dns.error_message', 'value': {'string_value': 'getaddrinfo ENOTFOUND metadata.google.i... \n", + "7 [{'key': 'peer.ipv4', 'value': {'string_value': '0.0.0.0', 'bool_value': None, 'int_value': None... \n", + "8 [{'key': 'peer.ipv4', 'value': {'string_value': '10.96.0.1', 'bool_value': None, 'int_value': No... \n", + "9 [{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N... \n", + "10 [{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N... \n", + "11 [{'key': 'tls.protocol', 'value': {'string_value': 'TLSv1.3', 'bool_value': None, 'int_value': N... \n", + "12 [{'key': 'net.transport', 'value': {'string_value': 'ip_tcp', 'bool_value': None, 'int_value': N... \n", + "13 [{'key': 'http.url', 'value': {'string_value': 'http://metadata.google.internal./computeMetadata... \n", + "14 [{'key': 'http.url', 'value': {'string_value': 'http://169.254.169.254/computeMetadata/v1/instan... \n", + "15 [{'key': 'feature_flag.source', 'value': {'string_value': './etc/flagd/demo.flagd.json', 'bool_v... \n", + "16 [{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':... \n", + "17 [{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double... \n", + "18 [{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':... \n", + "19 [{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double... \n", + "20 [{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':... \n", + "21 [{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':... \n", + "22 [{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double... \n", + "23 [{'key': 'http.protocol', 'value': {'string_value': 'HTTP/1.1', 'bool_value': None, 'int_value':... \n", + "24 [{'key': 'node_id', 'value': {'string_value': '', 'bool_value': None, 'int_value': None, 'double... \n", + "\n", + " dropped_attributes_count \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 \n", + "12 0 \n", + "13 0 \n", + "14 0 \n", + "15 0 \n", + "16 0 \n", + "17 0 \n", + "18 0 \n", + "19 0 \n", + "20 0 \n", + "21 0 \n", + "22 0 \n", + "23 0 \n", + "24 0 \n", + "\n", + " events \\\n", + "0 [{'time_unix_nano': 1723626933041528195, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "1 [] \n", + "2 [{'time_unix_nano': 1723626935855224099, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "3 [{'time_unix_nano': 1723626935119621929, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [] \n", + "8 [] \n", + "9 [] \n", + "10 [] \n", + "11 [] \n", + "12 [] \n", + "13 [{'time_unix_nano': 1723626934356311987, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "14 [{'time_unix_nano': 1723626937354592963, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " dropped_events_count links dropped_links_count \\\n", + "0 0 [] 0 \n", + "1 0 [] 0 \n", + "2 0 [] 0 \n", + "3 0 [] 0 \n", + "4 0 [] 0 \n", + "5 0 [] 0 \n", + "6 0 [] 0 \n", + "7 0 [] 0 \n", + "8 0 [] 0 \n", + "9 0 [] 0 \n", + "10 0 [] 0 \n", + "11 0 [] 0 \n", + "12 0 [] 0 \n", + "13 0 [] 0 \n", + "14 0 [] 0 \n", + "15 0 [] 0 \n", + "16 0 [] 0 \n", + "17 0 [] 0 \n", + "18 0 [] 0 \n", + "19 0 [] 0 \n", + "20 0 [] 0 \n", + "21 0 [] 0 \n", + "22 0 [] 0 \n", + "23 0 [] 0 \n", + "24 0 [] 0 \n", + "\n", + " status \\\n", + "0 {'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'} \n", + "1 {'message': '', 'code': b'STATUS_CODE_ERROR'} \n", + "2 {'message': 'socket hang up', 'code': b'STATUS_CODE_ERROR'} \n", + "3 {'message': 'ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8... \n", + "4 {'message': '', 'code': b'STATUS_CODE_ERROR'} \n", + "5 {'message': '', 'code': b'STATUS_CODE_ERROR'} \n", + "6 {'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'} \n", + "7 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "8 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "9 {'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'} \n", + "10 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "11 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "12 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "13 {'message': 'getaddrinfo ENOTFOUND metadata.google.internal.', 'code': b'STATUS_CODE_ERROR'} \n", + "14 {'message': 'socket hang up', 'code': b'STATUS_CODE_ERROR'} \n", + "15 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "16 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "17 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "18 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "19 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "20 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "21 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "22 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "23 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "24 {'message': '', 'code': b'STATUS_CODE_UNSET'} \n", + "\n", + " span_schema_url is_valid error_message \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "5 True \n", + "6 True \n", + "7 True \n", + "8 True \n", + "9 True \n", + "10 True \n", + "11 True \n", + "12 True \n", + "13 True \n", + "14 True \n", + "15 True \n", + "16 True \n", + "17 True \n", + "18 True \n", + "19 True \n", + "20 True \n", + "21 True \n", + "22 True \n", + "23 True \n", + "24 True " + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Replace the raw_df DataFrame with parquet data from a given directory (note: it should only contain traces parquets):\n", + "raw_df = pd.read_parquet('otel-demo-app/traces_raw/', engine='pyarrow')\n", + "raw_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "8aba5560-b9ad-4c4a-a435-baed3bda02bf", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "resource_attrs_df=raw_df[['resource_attributes']].apply(otel_attrs, axis=1).add_prefix('ra_')\n", + "scope_attrs_df=raw_df[['scope_attributes']].apply(otel_attrs, axis=1).add_prefix('sa_')\n", + "attrs_df=raw_df[['attributes']].apply(otel_attrs, axis=1).add_prefix('a_')" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "30adf8cb-244e-4570-a994-469ae004107c", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Resource attributes follow the same concepts as other signals:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Resource attributes follow the same concepts as other signals:" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "db23cdc8-fb64-47c8-8eed-8dd2f4447f81", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.namera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.auto.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
1b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
2b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
3opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
4opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
5opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
6amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
7amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
8amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
9amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
10amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
11amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
12amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
13amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
14amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
15opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdopentelemetry-demo-parquetv0.11.1goopentelemetry1.28.0
16opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
17opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
18opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
19opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
20opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
21opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
22opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
23opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
24opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
\n", + "
" + ], + "text/plain": [ + " ra_container.id \\\n", + "0 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "1 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "2 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "1 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "2 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "3 \n", + "4 \n", + "5 \n", + "6 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "7 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "8 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "9 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "10 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "11 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "12 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "13 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "14 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "15 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "0 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "1 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "2 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "3 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "4 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "5 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "6 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "7 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "8 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "9 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "10 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "11 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "12 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "13 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "14 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "15 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "16 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "17 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "18 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "19 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "20 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "21 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "22 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "23 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "24 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "0 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "1 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "2 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "3 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "4 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "5 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "6 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "7 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "8 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "9 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "10 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "11 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "12 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "13 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "14 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "15 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "17 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "18 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "19 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "20 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "21 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "22 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "23 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "24 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "1 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "2 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "3 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "4 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "5 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "7 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "8 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "9 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "10 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "11 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "12 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "13 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "14 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "15 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "17 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "18 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "19 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "20 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "21 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "22 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "23 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "24 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "\n", + " ra_os.description \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_os.name ra_os.type ra_os.version ra_process.command \\\n", + "0 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "1 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "2 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "3 \n", + "4 \n", + "5 \n", + "6 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "7 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "8 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "9 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "10 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "11 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "12 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "13 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "14 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "15 linux \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.command_args ra_process.command_line \\\n", + "0 ignoring attribute list value \n", + "1 ignoring attribute list value \n", + "2 ignoring attribute list value \n", + "3 \n", + "4 \n", + "5 \n", + "6 ignoring attribute list value \n", + "7 ignoring attribute list value \n", + "8 ignoring attribute list value \n", + "9 ignoring attribute list value \n", + "10 ignoring attribute list value \n", + "11 ignoring attribute list value \n", + "12 ignoring attribute list value \n", + "13 ignoring attribute list value \n", + "14 ignoring attribute list value \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.executable.name ra_process.executable.path ra_process.owner \\\n", + "0 node /usr/local/bin/node nextjs \n", + "1 node /usr/local/bin/node nextjs \n", + "2 node /usr/local/bin/node nextjs \n", + "3 \n", + "4 \n", + "5 \n", + "6 node /usr/local/bin/node node \n", + "7 node /usr/local/bin/node node \n", + "8 node /usr/local/bin/node node \n", + "9 node /usr/local/bin/node node \n", + "10 node /usr/local/bin/node node \n", + "11 node /usr/local/bin/node node \n", + "12 node /usr/local/bin/node node \n", + "13 node /usr/local/bin/node node \n", + "14 node /usr/local/bin/node node \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.pid ra_process.runtime.description ra_process.runtime.name \\\n", + "0 16.0 Node.js nodejs \n", + "1 16.0 Node.js nodejs \n", + "2 16.0 Node.js nodejs \n", + "3 \n", + "4 \n", + "5 \n", + "6 16.0 Node.js nodejs \n", + "7 16.0 Node.js nodejs \n", + "8 16.0 Node.js nodejs \n", + "9 16.0 Node.js nodejs \n", + "10 16.0 Node.js nodejs \n", + "11 16.0 Node.js nodejs \n", + "12 16.0 Node.js nodejs \n", + "13 16.0 Node.js nodejs \n", + "14 16.0 Node.js nodejs \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.runtime.version ra_service.instance.id \\\n", + "0 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "1 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "2 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "3 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "4 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "5 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "7 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "8 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "9 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "10 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "11 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "12 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "13 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "14 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "15 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "17 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "18 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "19 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "20 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "21 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "22 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "23 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "24 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "\n", + " ra_service.name ra_service.namespace ra_service.version \\\n", + "0 frontend opentelemetry-demo-parquet 1.11.1 \n", + "1 frontend opentelemetry-demo-parquet 1.11.1 \n", + "2 frontend opentelemetry-demo-parquet 1.11.1 \n", + "3 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "4 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "5 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "6 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "7 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "8 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "9 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "10 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "11 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "12 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "13 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "14 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "15 flagd opentelemetry-demo-parquet v0.11.1 \n", + "16 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "17 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "18 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "19 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "20 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "21 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "22 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "23 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "24 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.auto.version ra_telemetry.distro.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_telemetry.distro.version ra_telemetry.sdk.language \\\n", + "0 nodejs \n", + "1 nodejs \n", + "2 nodejs \n", + "3 python \n", + "4 python \n", + "5 python \n", + "6 nodejs \n", + "7 nodejs \n", + "8 nodejs \n", + "9 nodejs \n", + "10 nodejs \n", + "11 nodejs \n", + "12 nodejs \n", + "13 nodejs \n", + "14 nodejs \n", + "15 go \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 opentelemetry 1.25.1 \n", + "1 opentelemetry 1.25.1 \n", + "2 opentelemetry 1.25.1 \n", + "3 opentelemetry 1.23.0 \n", + "4 opentelemetry 1.23.0 \n", + "5 opentelemetry 1.23.0 \n", + "6 opentelemetry 1.24.1 \n", + "7 opentelemetry 1.24.1 \n", + "8 opentelemetry 1.24.1 \n", + "9 opentelemetry 1.24.1 \n", + "10 opentelemetry 1.24.1 \n", + "11 opentelemetry 1.24.1 \n", + "12 opentelemetry 1.24.1 \n", + "13 opentelemetry 1.24.1 \n", + "14 opentelemetry 1.24.1 \n", + "15 opentelemetry 1.28.0 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "ff0f988b-ac64-4343-919b-214bbf411a4b", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and we see some familiar and some new scopes:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and we see some familiar and some new scopes:" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "0175e636-1472-461f-bac0-0b4de8ceece2", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_name
0@opentelemetry/instrumentation-http
3opentelemetry.instrumentation.requests
6@opentelemetry/instrumentation-dns
9@opentelemetry/instrumentation-net
15jsonEvaluator
16
46currencyservice
91@opentelemetry/instrumentation-document-load
107@opentelemetry/instrumentation-fetch
119opentelemetry.instrumentation.grpc
128recommendationservice
147flagd.evaluation.v1
151connectrpc.com/otelconnect
159flagEvaluationService
162nginx
168Microsoft.AspNetCore
171System.Net.Http
172OpenTelemetry.Instrumentation.StackExchangeRedis
175OpenFeature/dev.openfeature.contrib.providers.flagd
181io.opentelemetry.grpc-1.6
190adservice
191io.opentelemetry.opentelemetry-instrumentation-annotations-1.16
202next.js
270@opentelemetry/instrumentation-grpc
296go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
4169OpenTelemetry.Instrumentation.GrpcNetClient
4222io.opentelemetry.kafka-clients-0.11
4686checkoutservice
4736manual-instrumentation
4739io.opentelemetry.contrib.php.slim
4745opentelemetry-otlp
4746shippingservice
4960paymentservice
19936OpenTelemetry::Instrumentation::Sinatra
19942emailservice
19945OpenTelemetry::Instrumentation::Rack
20116go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp
\n", + "
" + ], + "text/plain": [ + " scope_name\n", + "0 @opentelemetry/instrumentation-http\n", + "3 opentelemetry.instrumentation.requests\n", + "6 @opentelemetry/instrumentation-dns\n", + "9 @opentelemetry/instrumentation-net\n", + "15 jsonEvaluator\n", + "16 \n", + "46 currencyservice\n", + "91 @opentelemetry/instrumentation-document-load\n", + "107 @opentelemetry/instrumentation-fetch\n", + "119 opentelemetry.instrumentation.grpc\n", + "128 recommendationservice\n", + "147 flagd.evaluation.v1\n", + "151 connectrpc.com/otelconnect\n", + "159 flagEvaluationService\n", + "162 nginx\n", + "168 Microsoft.AspNetCore\n", + "171 System.Net.Http\n", + "172 OpenTelemetry.Instrumentation.StackExchangeRedis\n", + "175 OpenFeature/dev.openfeature.contrib.providers.flagd\n", + "181 io.opentelemetry.grpc-1.6\n", + "190 adservice\n", + "191 io.opentelemetry.opentelemetry-instrumentation-annotations-1.16\n", + "202 next.js\n", + "270 @opentelemetry/instrumentation-grpc\n", + "296 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc\n", + "4169 OpenTelemetry.Instrumentation.GrpcNetClient\n", + "4222 io.opentelemetry.kafka-clients-0.11\n", + "4686 checkoutservice\n", + "4736 manual-instrumentation\n", + "4739 io.opentelemetry.contrib.php.slim\n", + "4745 opentelemetry-otlp\n", + "4746 shippingservice\n", + "4960 paymentservice\n", + "19936 OpenTelemetry::Instrumentation::Sinatra\n", + "19942 emailservice\n", + "19945 OpenTelemetry::Instrumentation::Rack\n", + "20116 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[['scope_name']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "5021961d-4eb9-4892-8466-a221633521e8", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and a variety of span meta-data:\n", + "\n", + "***Hint:*** Use the horizontal scrollbar at the bottom\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and a variety of span meta-data:\n", + "\n", + "***Hint:*** Use the horizontal scrollbar at the bottom" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "id": "aee0b8a0-573d-4560-970e-60bfaf967240", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_app.ads.ad_request_typea_app.ads.ad_response_typea_app.ads.categorya_app.ads.contextKeysa_app.ads.contextKeys.counta_app.ads.counta_app.cart.items.counta_app.currency.conversion.froma_app.currency.conversion.toa_app.email.recipienta_app.filtered_products.counta_app.filtered_products.lista_app.order.amounta_app.order.ida_app.order.items.counta_app.payment.amounta_app.payment.card_typea_app.payment.card_valida_app.payment.chargeda_app.product.ida_app.product.namea_app.product.quantitya_app.products.counta_app.products_recommended.counta_app.quote.cost.totala_app.quote.items.counta_app.recommendation.cache_enableda_app.shipping.amounta_app.shipping.cost.totala_app.shipping.items.counta_app.shipping.tracking.ida_app.shipping.zip_codea_app.synthetic_requesta_app.user.currencya_app.user.ida_busy_nsa_canceleda_code.filepatha_code.functiona_code.linenoa_code.namespacea_componenta_db.redis.database_indexa_db.redis.flagsa_db.statementa_db.systema_dns.error_messagea_dns.error_namea_downstream_clustera_errora_error.reasona_error.typea_feature_flag.change_counta_feature_flag.counta_feature_flag.keya_feature_flag.provider_namea_feature_flag.sourcea_feature_flag.sync_typea_feature_flag.varianta_grpc.error_messagea_grpc.error_namea_grpc.methoda_grpc.status_codea_guid:x-request-ida_http.error_messagea_http.error_namea_http.flavora_http.hosta_http.methoda_http.protocola_http.request.body.sizea_http.request.methoda_http.request_content_lengtha_http.request_content_length_uncompresseda_http.response.body.sizea_http.response.status_codea_http.response_content_lengtha_http.response_content_length_uncompresseda_http.routea_http.schemea_http.status_codea_http.status_texta_http.targeta_http.urla_http.user_agenta_idle_nsa_messaging.client_ida_messaging.destination.namea_messaging.destination.partition.ida_messaging.kafka.consumer.groupa_messaging.kafka.destination.partitiona_messaging.kafka.message.offseta_messaging.kafka.producer.duration_msa_messaging.kafka.producer.successa_messaging.message.body.sizea_messaging.operationa_messaging.systema_net.host.ipa_net.host.namea_net.host.porta_net.peer.ipa_net.peer.namea_net.peer.porta_net.sock.peer.addra_net.sock.peer.porta_net.transporta_network.peer.addressa_network.peer.porta_network.protocol.versiona_network.transporta_network.typea_next.routea_next.rsca_next.span_namea_next.span_typea_node_ida_peer.addressa_peer.ipv4a_peer.servicea_request_sizea_response_flagsa_response_sizea_rpc.connect_rpc.error_codea_rpc.grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_rpc.user_agenta_server.addressa_server.porta_session.ida_sinatra.template_namea_thread.ida_thread.namea_tls.alpnProtocola_tls.authorizeda_tls.certificate.fingerprinta_tls.certificate.serialNumbera_tls.certificate.validFroma_tls.certificate.validToa_tls.cipher.namea_tls.cipher.versiona_tls.protocola_upstream_addressa_upstream_clustera_upstream_cluster.namea_url.fulla_url.patha_url.schemea_user_agenta_user_agent.originala_zone
0getaddrinfo ENOTFOUND metadata.google.internal.Errormetadata.google.internal.:80GET/computeMetadata/v1/instancehttp://metadata.google.internal./computeMetadata/v1/instancemetadata.google.internal.
11.1kubernetes.default.svc:443GET355.0403.0FORBIDDEN/api/v1/namespaces/kube-system/configmaps/aws-authhttps://kubernetes.default.svc/api/v1/namespaces/kube-system/configmaps/aws-auth10.96.0.1kubernetes.default.svc443.0ip_tcp
2socket hang upError169.254.169.254:80GET/computeMetadata/v1/instancehttp://169.254.169.254/computeMetadata/v1/instance169.254.169.254
3GEThttp://opentelemetry-demo-frontendproxy:8080/
4GET503.0http://opentelemetry-demo-frontendproxy:8080/
5GET503.0http://opentelemetry-demo-frontendproxy:8080/api/products/9SIQT8TOJO
6getaddrinfo ENOTFOUND metadata.google.internal.Error
70.0.0.0
810.96.0.1
9metadata.google.internal.80.0ip_tcp
1010.244.1.4938258.010.96.0.1kubernetes.default.svc443.0ip_tcp
11true9C:42:6A:89:89:F3:18:BC:37:01:1C:F8:59:EA:86:8C:1A:C0:48:0F02Jul 8 07:40:58 2024 GMTJul 9 07:40:58 2027 GMTTLS_AES_128_GCM_SHA256TLSv1.3TLSv1.3
12169.254.169.25480.0ip_tcp
13getaddrinfo ENOTFOUND metadata.google.internal.Errormetadata.google.internal.:80GET/computeMetadata/v1/instancehttp://metadata.google.internal./computeMetadata/v1/instancemetadata.google.internal.
14socket hang upError169.254.169.254:80GET/computeMetadata/v1/instancehttp://169.254.169.254/computeMetadata/v1/instance169.254.169.254
1511.0./etc/flagd/demo.flagd.jsonALL
16proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontend
17proxy-491e6807-a0a5-9c99-8425-4dd8ef5063a0GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/_next/static/chunks/webpack-f164db4954bac6ec.js10.244.1.480-829frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...
18proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontend
19proxy-338f7165-bc10-995d-9a4e-a9c0610ac379GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/icons/Chevron.svg10.244.1.480-793frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...
20proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontend
21proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontend
22proxy-0dd20adc-edd6-99c6-9366-0aa50e2638b2GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/cart10.244.1.480-5747frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...
23proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontend
24proxy-1f769ea3-ce2f-9944-a363-379b411f03fdGETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/_next/static/css/885c0a76d639b07f.css10.244.1.480-177frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...
\n", + "
" + ], + "text/plain": [ + " a_app.ads.ad_request_type a_app.ads.ad_response_type a_app.ads.category \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.ads.contextKeys a_app.ads.contextKeys.count a_app.ads.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.cart.items.count a_app.currency.conversion.from \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.currency.conversion.to a_app.email.recipient \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.filtered_products.count a_app.filtered_products.list \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.order.amount a_app.order.id a_app.order.items.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.amount a_app.payment.card_type a_app.payment.card_valid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.charged a_app.product.id a_app.product.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.product.quantity a_app.products.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.products_recommended.count a_app.quote.cost.total \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.quote.items.count a_app.recommendation.cache_enabled \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.shipping.amount a_app.shipping.cost.total a_app.shipping.items.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.shipping.tracking.id a_app.shipping.zip_code a_app.synthetic_request \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.user.currency a_app.user.id a_busy_ns a_canceled a_code.filepath \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.function a_code.lineno a_code.namespace a_component \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 proxy \n", + "17 proxy \n", + "18 proxy \n", + "19 proxy \n", + "20 proxy \n", + "21 proxy \n", + "22 proxy \n", + "23 proxy \n", + "24 proxy \n", + "\n", + " a_db.redis.database_index a_db.redis.flags a_db.statement a_db.system \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_dns.error_message a_dns.error_name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_downstream_cluster a_error a_error.reason a_error.type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 - \n", + "18 \n", + "19 - \n", + "20 \n", + "21 \n", + "22 - \n", + "23 \n", + "24 - \n", + "\n", + " a_feature_flag.change_count a_feature_flag.count a_feature_flag.key \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 11.0 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_feature_flag.provider_name a_feature_flag.source \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 ./etc/flagd/demo.flagd.json \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_feature_flag.sync_type a_feature_flag.variant a_grpc.error_message \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 ALL \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_grpc.error_name a_grpc.method a_grpc.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_guid:x-request-id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 491e6807-a0a5-9c99-8425-4dd8ef5063a0 \n", + "18 \n", + "19 338f7165-bc10-995d-9a4e-a9c0610ac379 \n", + "20 \n", + "21 \n", + "22 0dd20adc-edd6-99c6-9366-0aa50e2638b2 \n", + "23 \n", + "24 1f769ea3-ce2f-9944-a363-379b411f03fd \n", + "\n", + " a_http.error_message a_http.error_name \\\n", + "0 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "1 \n", + "2 socket hang up Error \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "14 socket hang up Error \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.flavor a_http.host a_http.method a_http.protocol \\\n", + "0 metadata.google.internal.:80 GET \n", + "1 1.1 kubernetes.default.svc:443 GET \n", + "2 169.254.169.254:80 GET \n", + "3 GET \n", + "4 GET \n", + "5 GET \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 metadata.google.internal.:80 GET \n", + "14 169.254.169.254:80 GET \n", + "15 \n", + "16 HTTP/1.1 \n", + "17 GET HTTP/1.1 \n", + "18 HTTP/1.1 \n", + "19 GET HTTP/1.1 \n", + "20 HTTP/1.1 \n", + "21 HTTP/1.1 \n", + "22 GET HTTP/1.1 \n", + "23 HTTP/1.1 \n", + "24 GET HTTP/1.1 \n", + "\n", + " a_http.request.body.size a_http.request.method \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.request_content_length a_http.request_content_length_uncompressed \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response.body.size a_http.response.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response_content_length a_http.response_content_length_uncompressed \\\n", + "0 \n", + "1 355.0 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.route a_http.scheme a_http.status_code a_http.status_text \\\n", + "0 \n", + "1 403.0 FORBIDDEN \n", + "2 \n", + "3 \n", + "4 503.0 \n", + "5 503.0 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 200 \n", + "17 200 \n", + "18 200 \n", + "19 200 \n", + "20 200 \n", + "21 200 \n", + "22 200 \n", + "23 200 \n", + "24 200 \n", + "\n", + " a_http.target \\\n", + "0 /computeMetadata/v1/instance \n", + "1 /api/v1/namespaces/kube-system/configmaps/aws-auth \n", + "2 /computeMetadata/v1/instance \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 /computeMetadata/v1/instance \n", + "14 /computeMetadata/v1/instance \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.url \\\n", + "0 http://metadata.google.internal./computeMetadata/v1/instance \n", + "1 https://kubernetes.default.svc/api/v1/namespaces/kube-system/configmaps/aws-auth \n", + "2 http://169.254.169.254/computeMetadata/v1/instance \n", + "3 http://opentelemetry-demo-frontendproxy:8080/ \n", + "4 http://opentelemetry-demo-frontendproxy:8080/ \n", + "5 http://opentelemetry-demo-frontendproxy:8080/api/products/9SIQT8TOJO \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 http://metadata.google.internal./computeMetadata/v1/instance \n", + "14 http://169.254.169.254/computeMetadata/v1/instance \n", + "15 \n", + "16 \n", + "17 http://opentelemetry-demo-frontendproxy:8080/_next/static/chunks/webpack-f164db4954bac6ec.js \n", + "18 \n", + "19 http://opentelemetry-demo-frontendproxy:8080/icons/Chevron.svg \n", + "20 \n", + "21 \n", + "22 http://opentelemetry-demo-frontendproxy:8080/cart \n", + "23 \n", + "24 http://opentelemetry-demo-frontendproxy:8080/_next/static/css/885c0a76d639b07f.css \n", + "\n", + " a_http.user_agent a_idle_ns a_messaging.client_id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.destination.name a_messaging.destination.partition.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.consumer.group a_messaging.kafka.destination.partition \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.message.offset a_messaging.kafka.producer.duration_ms \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.producer.success a_messaging.message.body.size \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.operation a_messaging.system a_net.host.ip a_net.host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 10.244.1.49 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.host.port a_net.peer.ip a_net.peer.name a_net.peer.port \\\n", + "0 metadata.google.internal. \n", + "1 10.96.0.1 kubernetes.default.svc 443.0 \n", + "2 169.254.169.254 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 metadata.google.internal. 80.0 \n", + "10 38258.0 10.96.0.1 kubernetes.default.svc 443.0 \n", + "11 \n", + "12 169.254.169.254 80.0 \n", + "13 metadata.google.internal. \n", + "14 169.254.169.254 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.sock.peer.addr a_net.sock.peer.port a_net.transport \\\n", + "0 \n", + "1 ip_tcp \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 ip_tcp \n", + "10 ip_tcp \n", + "11 \n", + "12 ip_tcp \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.peer.address a_network.peer.port a_network.protocol.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.transport a_network.type a_next.route a_next.rsc \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_next.span_name a_next.span_type a_node_id a_peer.address \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 10.103.118.48:8080 \n", + "17 10.244.1.48 \n", + "18 10.103.118.48:8080 \n", + "19 10.244.1.48 \n", + "20 10.103.118.48:8080 \n", + "21 10.103.118.48:8080 \n", + "22 10.244.1.48 \n", + "23 10.103.118.48:8080 \n", + "24 10.244.1.48 \n", + "\n", + " a_peer.ipv4 a_peer.service a_request_size a_response_flags a_response_size \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 0.0.0.0 \n", + "8 10.96.0.1 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 - \n", + "17 0 - 829 \n", + "18 - \n", + "19 0 - 793 \n", + "20 - \n", + "21 - \n", + "22 0 - 5747 \n", + "23 - \n", + "24 0 - 177 \n", + "\n", + " a_rpc.connect_rpc.error_code a_rpc.grpc.status_code a_rpc.method \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_rpc.service a_rpc.system a_rpc.user_agent a_server.address a_server.port \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_session.id a_sinatra.template_name a_thread.id a_thread.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.alpnProtocol a_tls.authorized \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 true \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.fingerprint \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 9C:42:6A:89:89:F3:18:BC:37:01:1C:F8:59:EA:86:8C:1A:C0:48:0F \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.serialNumber a_tls.certificate.validFrom \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 02 Jul 8 07:40:58 2024 GMT \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.validTo a_tls.cipher.name a_tls.cipher.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Jul 9 07:40:58 2027 GMT TLS_AES_128_GCM_SHA256 TLSv1.3 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.protocol a_upstream_address a_upstream_cluster \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 TLSv1.3 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 10.103.118.48:8080 frontend \n", + "17 frontend \n", + "18 10.103.118.48:8080 frontend \n", + "19 frontend \n", + "20 10.103.118.48:8080 frontend \n", + "21 10.103.118.48:8080 frontend \n", + "22 frontend \n", + "23 10.103.118.48:8080 frontend \n", + "24 frontend \n", + "\n", + " a_upstream_cluster.name a_url.full a_url.path a_url.scheme \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 frontend \n", + "17 frontend \n", + "18 frontend \n", + "19 frontend \n", + "20 frontend \n", + "21 frontend \n", + "22 frontend \n", + "23 frontend \n", + "24 frontend \n", + "\n", + " a_user_agent \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "18 \n", + "19 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "20 \n", + "21 \n", + "22 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "23 \n", + "24 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "\n", + " a_user_agent.original a_zone \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "id": "5156d4c8-c575-423d-9eb7-d246eaab30da", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Spans\n", + "\n", + "The `traces` signal records a few useful parameters about each span:\n", + "- a `name` that typically contains a way of identifying what operation is performed within it (like a HTTP request, a method in your code or similar)\n", + "- a `kind` that labels a span as `CLIENT`, `SERVER`, `PRODUCER`, `CONSUMER` or `INTERNAL`\n", + "\n", + " These values can help you identify which ***side*** the span is running on. For example, a span around a HTTP GET method to a particular URL can \n", + " be opened by the HTTP ***client*** and also by the HTTP ***server*** handling it. Typically, in this case the ***client-side*** span will be marked \n", + " as `SPAN_KIND_CLIENT` and the ***server-side*** as `SPAN_KIND_SERVER`.\n", + " \n", + " Also, thanks to \n", + " [OpenTelemetry Context Propagation](https://opentelemetry.io/docs/concepts/context-propagation/)\n", + " the 'server-side' span can be correlated to its corresponding 'client-side' and have its `parent_span_id` column set.\n", + "\n", + " For more, go to [OpenTelemetry Span Kinds.](https://opentelemetry.io/docs/concepts/signals/traces/#span-kind)\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Spans\n", + "\n", + "The `traces` signal records a few useful parameters about each span:\n", + "- a `name` that typically contains a way of identifying what operation is performed within it (like a HTTP request, a method in your code or similar)\n", + "- a `kind` that labels a span as `CLIENT`, `SERVER`, `PRODUCER`, `CONSUMER` or `INTERNAL`\n", + "\n", + " These values can help you identify which ***side*** the span is running on. For example, a span around a HTTP GET method to a particular URL can \n", + " be opened by the HTTP ***client*** and also by the HTTP ***server*** handling it. Typically, in this case the ***client-side*** span will be marked \n", + " as `SPAN_KIND_CLIENT` and the ***server-side*** as `SPAN_KIND_SERVER`.\n", + " \n", + " Also, thanks to \n", + " [OpenTelemetry Context Propagation](https://opentelemetry.io/docs/concepts/context-propagation/)\n", + " the 'server-side' span can be correlated to its corresponding 'client-side' and have its `parent_span_id` column set.\n", + "\n", + " For more, go to [OpenTelemetry Span Kinds.](https://opentelemetry.io/docs/concepts/signals/traces/#span-kind)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "db6ac3a4-b79f-4d6a-90fe-de6e71e4e312", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namekind
0GETb'SPAN_KIND_CLIENT'
6dns.lookupb'SPAN_KIND_CLIENT'
9tcp.connectb'SPAN_KIND_INTERNAL'
11tls.connectb'SPAN_KIND_INTERNAL'
15flagSyncb'SPAN_KIND_INTERNAL'
16router frontend egressb'SPAN_KIND_CLIENT'
17ingressb'SPAN_KIND_SERVER'
43router flagservice egressb'SPAN_KIND_CLIENT'
46CurrencyService/GetSupportedCurrenciesb'SPAN_KIND_SERVER'
52router imageprovider egressb'SPAN_KIND_CLIENT'
62CurrencyService/Convertb'SPAN_KIND_SERVER'
91documentFetchb'SPAN_KIND_INTERNAL'
92resourceFetchb'SPAN_KIND_INTERNAL'
106documentLoadb'SPAN_KIND_INTERNAL'
107HTTP POSTb'SPAN_KIND_CLIENT'
108HTTP GETb'SPAN_KIND_CLIENT'
119/schema.v1.Service/ResolveBooleanb'SPAN_KIND_CLIENT'
121/oteldemo.ProductCatalogService/ListProductsb'SPAN_KIND_CLIENT'
122/oteldemo.RecommendationService/ListRecommendationsb'SPAN_KIND_SERVER'
128get_product_listb'SPAN_KIND_INTERNAL'
134POSTb'SPAN_KIND_CLIENT'
140resolveAllb'SPAN_KIND_INTERNAL'
141resolveBooleanb'SPAN_KIND_INTERNAL'
147resolveAllb'SPAN_KIND_SERVER'
148resolveBooleanb'SPAN_KIND_SERVER'
151flagd.evaluation.v1.Service/ResolveAllb'SPAN_KIND_SERVER'
152schema.v1.Service/ResolveBooleanb'SPAN_KIND_SERVER'
154flagd.evaluation.v1.Service/ResolveBooleanb'SPAN_KIND_SERVER'
158flagd.evaluation.v1.Service/EventStreamb'SPAN_KIND_SERVER'
162imageproviderb'SPAN_KIND_SERVER'
168POST /oteldemo.CartService/GetCartb'SPAN_KIND_SERVER'
172HGETb'SPAN_KIND_CLIENT'
175resolveb'SPAN_KIND_CLIENT'
181flagd.evaluation.v1.Service/EventStreamb'SPAN_KIND_CLIENT'
182flagd.evaluation.v1.Service/ResolveBooleanb'SPAN_KIND_CLIENT'
188oteldemo.AdService/GetAdsb'SPAN_KIND_SERVER'
190getRandomAdsb'SPAN_KIND_INTERNAL'
191getAdsByCategoryb'SPAN_KIND_INTERNAL'
202resolve page componentsb'SPAN_KIND_INTERNAL'
203render route (pages) /cartb'SPAN_KIND_INTERNAL'
204GET /cartb'SPAN_KIND_SERVER'
206render route (pages) /b'SPAN_KIND_INTERNAL'
207GET /b'SPAN_KIND_SERVER'
208executing api route (pages) /api/currencyb'SPAN_KIND_INTERNAL'
209GET /api/currencyb'SPAN_KIND_SERVER'
210executing api route (pages) /api/products/[productId]b'SPAN_KIND_INTERNAL'
211GET /api/products/{productId}b'SPAN_KIND_SERVER'
212executing api route (pages) /api/recommendationsb'SPAN_KIND_INTERNAL'
213GET /api/recommendationsb'SPAN_KIND_SERVER'
218executing api route (pages) /api/cartb'SPAN_KIND_INTERNAL'
219GET /api/cartb'SPAN_KIND_SERVER'
224executing api route (pages) /api/datab'SPAN_KIND_INTERNAL'
225GET /api/datab'SPAN_KIND_SERVER'
228GETb'SPAN_KIND_SERVER'
270grpc.oteldemo.CurrencyService/GetSupportedCurrenciesb'SPAN_KIND_CLIENT'
271grpc.oteldemo.RecommendationService/ListRecommendationsb'SPAN_KIND_CLIENT'
273grpc.oteldemo.ProductCatalogService/GetProductb'SPAN_KIND_CLIENT'
287grpc.oteldemo.CurrencyService/Convertb'SPAN_KIND_CLIENT'
291grpc.oteldemo.CartService/GetCartb'SPAN_KIND_CLIENT'
294grpc.oteldemo.AdService/GetAdsb'SPAN_KIND_CLIENT'
296oteldemo.ProductCatalogService/ListProductsb'SPAN_KIND_SERVER'
298oteldemo.ProductCatalogService/GetProductb'SPAN_KIND_SERVER'
546resolveIntb'SPAN_KIND_INTERNAL'
557resolveIntb'SPAN_KIND_SERVER'
568schema.v1.Service/ResolveIntb'SPAN_KIND_SERVER'
2149executing api route (pages) /api/productsb'SPAN_KIND_INTERNAL'
2150GET /api/productsb'SPAN_KIND_SERVER'
2420grpc.oteldemo.ProductCatalogService/ListProductsb'SPAN_KIND_CLIENT'
4060flagd.evaluation.v1.Service/ResolveIntb'SPAN_KIND_SERVER'
4162POST /oteldemo.CartService/AddItemb'SPAN_KIND_SERVER'
4167POST /oteldemo.CartService/EmptyCartb'SPAN_KIND_SERVER'
4222orders processb'SPAN_KIND_CONSUMER'
4438POSTb'SPAN_KIND_SERVER'
4482grpc.oteldemo.CartService/AddItemb'SPAN_KIND_CLIENT'
4531POST /api/cartb'SPAN_KIND_SERVER'
4627HMSETb'SPAN_KIND_CLIENT'
4628EXPIREb'SPAN_KIND_CLIENT'
4670oteldemo.CartService/GetCartb'SPAN_KIND_CLIENT'
4671oteldemo.ProductCatalogService/GetProductb'SPAN_KIND_CLIENT'
4672oteldemo.CurrencyService/Convertb'SPAN_KIND_CLIENT'
4675oteldemo.ShippingService/GetQuoteb'SPAN_KIND_CLIENT'
4677oteldemo.PaymentService/Chargeb'SPAN_KIND_CLIENT'
4678oteldemo.ShippingService/ShipOrderb'SPAN_KIND_CLIENT'
4686prepareOrderItemsAndShippingQuoteFromCartb'SPAN_KIND_INTERNAL'
4736calculate-quoteb'SPAN_KIND_INTERNAL'
4739{closure}b'SPAN_KIND_INTERNAL'
4740POST /getquoteb'SPAN_KIND_SERVER'
4746oteldemo.ShippingService/GetQuoteb'SPAN_KIND_SERVER'
4747oteldemo.ShippingService/ShipOrderb'SPAN_KIND_SERVER'
4960chargeb'SPAN_KIND_INTERNAL'
4963grpc.oteldemo.PaymentService/Chargeb'SPAN_KIND_SERVER'
19936sinatra.render_templateb'SPAN_KIND_INTERNAL'
19942send_emailb'SPAN_KIND_INTERNAL'
19945POST /send_order_confirmationb'SPAN_KIND_SERVER'
20028grpc.oteldemo.CheckoutService/PlaceOrderb'SPAN_KIND_CLIENT'
20104oteldemo.CartService/EmptyCartb'SPAN_KIND_CLIENT'
20107oteldemo.CheckoutService/PlaceOrderb'SPAN_KIND_SERVER'
20119orders publishb'SPAN_KIND_PRODUCER'
20563executing api route (pages) /api/checkoutb'SPAN_KIND_INTERNAL'
20564POST /api/checkoutb'SPAN_KIND_SERVER'
23740flagd.evaluation.v1.Service/ResolveIntb'SPAN_KIND_CLIENT'
24559grpc.flagd.evaluation.v1.Service/ResolveBooleanb'SPAN_KIND_CLIENT'
66361grpc.flagd.evaluation.v1.Service/EventStreamb'SPAN_KIND_CLIENT'
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 GET \n", + "6 dns.lookup \n", + "9 tcp.connect \n", + "11 tls.connect \n", + "15 flagSync \n", + "16 router frontend egress \n", + "17 ingress \n", + "43 router flagservice egress \n", + "46 CurrencyService/GetSupportedCurrencies \n", + "52 router imageprovider egress \n", + "62 CurrencyService/Convert \n", + "91 documentFetch \n", + "92 resourceFetch \n", + "106 documentLoad \n", + "107 HTTP POST \n", + "108 HTTP GET \n", + "119 /schema.v1.Service/ResolveBoolean \n", + "121 /oteldemo.ProductCatalogService/ListProducts \n", + "122 /oteldemo.RecommendationService/ListRecommendations \n", + "128 get_product_list \n", + "134 POST \n", + "140 resolveAll \n", + "141 resolveBoolean \n", + "147 resolveAll \n", + "148 resolveBoolean \n", + "151 flagd.evaluation.v1.Service/ResolveAll \n", + "152 schema.v1.Service/ResolveBoolean \n", + "154 flagd.evaluation.v1.Service/ResolveBoolean \n", + "158 flagd.evaluation.v1.Service/EventStream \n", + "162 imageprovider \n", + "168 POST /oteldemo.CartService/GetCart \n", + "172 HGET \n", + "175 resolve \n", + "181 flagd.evaluation.v1.Service/EventStream \n", + "182 flagd.evaluation.v1.Service/ResolveBoolean \n", + "188 oteldemo.AdService/GetAds \n", + "190 getRandomAds \n", + "191 getAdsByCategory \n", + "202 resolve page components \n", + "203 render route (pages) /cart \n", + "204 GET /cart \n", + "206 render route (pages) / \n", + "207 GET / \n", + "208 executing api route (pages) /api/currency \n", + "209 GET /api/currency \n", + "210 executing api route (pages) /api/products/[productId] \n", + "211 GET /api/products/{productId} \n", + "212 executing api route (pages) /api/recommendations \n", + "213 GET /api/recommendations \n", + "218 executing api route (pages) /api/cart \n", + "219 GET /api/cart \n", + "224 executing api route (pages) /api/data \n", + "225 GET /api/data \n", + "228 GET \n", + "270 grpc.oteldemo.CurrencyService/GetSupportedCurrencies \n", + "271 grpc.oteldemo.RecommendationService/ListRecommendations \n", + "273 grpc.oteldemo.ProductCatalogService/GetProduct \n", + "287 grpc.oteldemo.CurrencyService/Convert \n", + "291 grpc.oteldemo.CartService/GetCart \n", + "294 grpc.oteldemo.AdService/GetAds \n", + "296 oteldemo.ProductCatalogService/ListProducts \n", + "298 oteldemo.ProductCatalogService/GetProduct \n", + "546 resolveInt \n", + "557 resolveInt \n", + "568 schema.v1.Service/ResolveInt \n", + "2149 executing api route (pages) /api/products \n", + "2150 GET /api/products \n", + "2420 grpc.oteldemo.ProductCatalogService/ListProducts \n", + "4060 flagd.evaluation.v1.Service/ResolveInt \n", + "4162 POST /oteldemo.CartService/AddItem \n", + "4167 POST /oteldemo.CartService/EmptyCart \n", + "4222 orders process \n", + "4438 POST \n", + "4482 grpc.oteldemo.CartService/AddItem \n", + "4531 POST /api/cart \n", + "4627 HMSET \n", + "4628 EXPIRE \n", + "4670 oteldemo.CartService/GetCart \n", + "4671 oteldemo.ProductCatalogService/GetProduct \n", + "4672 oteldemo.CurrencyService/Convert \n", + "4675 oteldemo.ShippingService/GetQuote \n", + "4677 oteldemo.PaymentService/Charge \n", + "4678 oteldemo.ShippingService/ShipOrder \n", + "4686 prepareOrderItemsAndShippingQuoteFromCart \n", + "4736 calculate-quote \n", + "4739 {closure} \n", + "4740 POST /getquote \n", + "4746 oteldemo.ShippingService/GetQuote \n", + "4747 oteldemo.ShippingService/ShipOrder \n", + "4960 charge \n", + "4963 grpc.oteldemo.PaymentService/Charge \n", + "19936 sinatra.render_template \n", + "19942 send_email \n", + "19945 POST /send_order_confirmation \n", + "20028 grpc.oteldemo.CheckoutService/PlaceOrder \n", + "20104 oteldemo.CartService/EmptyCart \n", + "20107 oteldemo.CheckoutService/PlaceOrder \n", + "20119 orders publish \n", + "20563 executing api route (pages) /api/checkout \n", + "20564 POST /api/checkout \n", + "23740 flagd.evaluation.v1.Service/ResolveInt \n", + "24559 grpc.flagd.evaluation.v1.Service/ResolveBoolean \n", + "66361 grpc.flagd.evaluation.v1.Service/EventStream \n", + "\n", + " kind \n", + "0 b'SPAN_KIND_CLIENT' \n", + "6 b'SPAN_KIND_CLIENT' \n", + "9 b'SPAN_KIND_INTERNAL' \n", + "11 b'SPAN_KIND_INTERNAL' \n", + "15 b'SPAN_KIND_INTERNAL' \n", + "16 b'SPAN_KIND_CLIENT' \n", + "17 b'SPAN_KIND_SERVER' \n", + "43 b'SPAN_KIND_CLIENT' \n", + "46 b'SPAN_KIND_SERVER' \n", + "52 b'SPAN_KIND_CLIENT' \n", + "62 b'SPAN_KIND_SERVER' \n", + "91 b'SPAN_KIND_INTERNAL' \n", + "92 b'SPAN_KIND_INTERNAL' \n", + "106 b'SPAN_KIND_INTERNAL' \n", + "107 b'SPAN_KIND_CLIENT' \n", + "108 b'SPAN_KIND_CLIENT' \n", + "119 b'SPAN_KIND_CLIENT' \n", + "121 b'SPAN_KIND_CLIENT' \n", + "122 b'SPAN_KIND_SERVER' \n", + "128 b'SPAN_KIND_INTERNAL' \n", + "134 b'SPAN_KIND_CLIENT' \n", + "140 b'SPAN_KIND_INTERNAL' \n", + "141 b'SPAN_KIND_INTERNAL' \n", + "147 b'SPAN_KIND_SERVER' \n", + "148 b'SPAN_KIND_SERVER' \n", + "151 b'SPAN_KIND_SERVER' \n", + "152 b'SPAN_KIND_SERVER' \n", + "154 b'SPAN_KIND_SERVER' \n", + "158 b'SPAN_KIND_SERVER' \n", + "162 b'SPAN_KIND_SERVER' \n", + "168 b'SPAN_KIND_SERVER' \n", + "172 b'SPAN_KIND_CLIENT' \n", + "175 b'SPAN_KIND_CLIENT' \n", + "181 b'SPAN_KIND_CLIENT' \n", + "182 b'SPAN_KIND_CLIENT' \n", + "188 b'SPAN_KIND_SERVER' \n", + "190 b'SPAN_KIND_INTERNAL' \n", + "191 b'SPAN_KIND_INTERNAL' \n", + "202 b'SPAN_KIND_INTERNAL' \n", + "203 b'SPAN_KIND_INTERNAL' \n", + "204 b'SPAN_KIND_SERVER' \n", + "206 b'SPAN_KIND_INTERNAL' \n", + "207 b'SPAN_KIND_SERVER' \n", + "208 b'SPAN_KIND_INTERNAL' \n", + "209 b'SPAN_KIND_SERVER' \n", + "210 b'SPAN_KIND_INTERNAL' \n", + "211 b'SPAN_KIND_SERVER' \n", + "212 b'SPAN_KIND_INTERNAL' \n", + "213 b'SPAN_KIND_SERVER' \n", + "218 b'SPAN_KIND_INTERNAL' \n", + "219 b'SPAN_KIND_SERVER' \n", + "224 b'SPAN_KIND_INTERNAL' \n", + "225 b'SPAN_KIND_SERVER' \n", + "228 b'SPAN_KIND_SERVER' \n", + "270 b'SPAN_KIND_CLIENT' \n", + "271 b'SPAN_KIND_CLIENT' \n", + "273 b'SPAN_KIND_CLIENT' \n", + "287 b'SPAN_KIND_CLIENT' \n", + "291 b'SPAN_KIND_CLIENT' \n", + "294 b'SPAN_KIND_CLIENT' \n", + "296 b'SPAN_KIND_SERVER' \n", + "298 b'SPAN_KIND_SERVER' \n", + "546 b'SPAN_KIND_INTERNAL' \n", + "557 b'SPAN_KIND_SERVER' \n", + "568 b'SPAN_KIND_SERVER' \n", + "2149 b'SPAN_KIND_INTERNAL' \n", + "2150 b'SPAN_KIND_SERVER' \n", + "2420 b'SPAN_KIND_CLIENT' \n", + "4060 b'SPAN_KIND_SERVER' \n", + "4162 b'SPAN_KIND_SERVER' \n", + "4167 b'SPAN_KIND_SERVER' \n", + "4222 b'SPAN_KIND_CONSUMER' \n", + "4438 b'SPAN_KIND_SERVER' \n", + "4482 b'SPAN_KIND_CLIENT' \n", + "4531 b'SPAN_KIND_SERVER' \n", + "4627 b'SPAN_KIND_CLIENT' \n", + "4628 b'SPAN_KIND_CLIENT' \n", + "4670 b'SPAN_KIND_CLIENT' \n", + "4671 b'SPAN_KIND_CLIENT' \n", + "4672 b'SPAN_KIND_CLIENT' \n", + "4675 b'SPAN_KIND_CLIENT' \n", + "4677 b'SPAN_KIND_CLIENT' \n", + "4678 b'SPAN_KIND_CLIENT' \n", + "4686 b'SPAN_KIND_INTERNAL' \n", + "4736 b'SPAN_KIND_INTERNAL' \n", + "4739 b'SPAN_KIND_INTERNAL' \n", + "4740 b'SPAN_KIND_SERVER' \n", + "4746 b'SPAN_KIND_SERVER' \n", + "4747 b'SPAN_KIND_SERVER' \n", + "4960 b'SPAN_KIND_INTERNAL' \n", + "4963 b'SPAN_KIND_SERVER' \n", + "19936 b'SPAN_KIND_INTERNAL' \n", + "19942 b'SPAN_KIND_INTERNAL' \n", + "19945 b'SPAN_KIND_SERVER' \n", + "20028 b'SPAN_KIND_CLIENT' \n", + "20104 b'SPAN_KIND_CLIENT' \n", + "20107 b'SPAN_KIND_SERVER' \n", + "20119 b'SPAN_KIND_PRODUCER' \n", + "20563 b'SPAN_KIND_INTERNAL' \n", + "20564 b'SPAN_KIND_SERVER' \n", + "23740 b'SPAN_KIND_CLIENT' \n", + "24559 b'SPAN_KIND_CLIENT' \n", + "66361 b'SPAN_KIND_CLIENT' " + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[['name', 'kind']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "f23f8705-84d4-4743-ad1e-3c574c1bfc37", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Span status\n", + "\n", + "As often with running code - particular operations may fail. When that happens - the span will record an error in its `status.code` field\n", + "and potentially an error message inside `status.message`.\n", + "\n", + "Span `status.code`s are `STATUS_CODE_ERROR` (when an error was encountered) or `STATUS_CODE_UNSET`/`STATUS_CODE_OK` when the code completed successfully.\n", + "`UNSET` and `OK` both mean the same, the difference being only that to get `OK` your code must specifically mark the span as \n", + "finished without an error. If there's no error detected during the execution of your code, and your code does not close its span with `OK` - the \n", + "default status `UNSET` will be reported by OpenTelemetry.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Span status\n", + "\n", + "As often with running code - particular operations may fail. When that happens - the span will record an error in its `status.code` field\n", + "and potentially an error message inside `status.message`.\n", + "\n", + "Span `status.code`s are `STATUS_CODE_ERROR` (when an error was encountered) or `STATUS_CODE_UNSET`/`STATUS_CODE_OK` when the code completed successfully.\n", + "`UNSET` and `OK` both mean the same, the difference being only that to get `OK` your code must specifically mark the span as \n", + "finished without an error. If there's no error detected during the execution of your code, and your code does not close its span with `OK` - the \n", + "default status `UNSET` will be reported by OpenTelemetry." + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "id": "43f72a2b-61cc-4787-a2c0-8bb5801d8aab", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
messagecode
0getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'
1b'STATUS_CODE_ERROR'
2socket hang upb'STATUS_CODE_ERROR'
3ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8080): Max ret...b'STATUS_CODE_ERROR'
4b'STATUS_CODE_ERROR'
5b'STATUS_CODE_ERROR'
6getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'
7b'STATUS_CODE_UNSET'
8b'STATUS_CODE_UNSET'
9getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'
\n", + "
" + ], + "text/plain": [ + " message \\\n", + "0 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "1 \n", + "2 socket hang up \n", + "3 ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8080): Max ret... \n", + "4 \n", + "5 \n", + "6 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "7 \n", + "8 \n", + "9 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "\n", + " code \n", + "0 b'STATUS_CODE_ERROR' \n", + "1 b'STATUS_CODE_ERROR' \n", + "2 b'STATUS_CODE_ERROR' \n", + "3 b'STATUS_CODE_ERROR' \n", + "4 b'STATUS_CODE_ERROR' \n", + "5 b'STATUS_CODE_ERROR' \n", + "6 b'STATUS_CODE_ERROR' \n", + "7 b'STATUS_CODE_UNSET' \n", + "8 b'STATUS_CODE_UNSET' \n", + "9 b'STATUS_CODE_ERROR' " + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# note: the status column is an object with fields inside, with the following we'll turn them into separate columns:\n", + "pd.DataFrame(raw_df['status'].head(10).apply(pd.Series))" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "id": "cbcbc58b-9cf9-4b44-9d2e-1eedb248a2d6", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Events within a Span\n", + "\n", + "During a span sometimes it might be useful to record key events occurring. Your code can use the `logs` signal and then you can correlate, but also, you\n", + "can use the OpenTelemetry APIs to add `events` to your spans. These will be added together in the `events` column, and will contain `time_unix_nano` \n", + "of each event, a `name` for it and optionally some `attributes`.\n", + "\n", + "`Events` are particularly useful if you'd like to record some strucutred data about them, rather than text that needs to be parsed later:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Events within a Span\n", + "\n", + "During a span sometimes it might be useful to record key events occurring. Your code can use the `logs` signal and then you can correlate, but also, you\n", + "can use the OpenTelemetry APIs to add `events` to your spans. These will be added together in the `events` column, and will contain `time_unix_nano` \n", + "of each event, a `name` for it and optionally some `attributes`.\n", + "\n", + "`Events` are particularly useful if you'd like to record some strucutred data about them, rather than text that needs to be parsed later:" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "id": "080fc606-b332-46c5-8e04-048ead5ae3d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
time_unix_nanonameattributesdropped_attributes_count
01723626933041528195exception[{'key': 'exception.type', 'value': {'string_value': 'ENOTFOUND', 'bool_value': None, 'int_value...0
21723626935855224099exception[{'key': 'exception.type', 'value': {'string_value': 'ECONNRESET', 'bool_value': None, 'int_valu...0
31723626935119621929exception[{'key': 'exception.type', 'value': {'string_value': 'ConnectionError', 'bool_value': None, 'int...0
131723626934356311987exception[{'key': 'exception.type', 'value': {'string_value': 'ENOTFOUND', 'bool_value': None, 'int_value...0
141723626937354592963exception[{'key': 'exception.type', 'value': {'string_value': 'ECONNRESET', 'bool_value': None, 'int_valu...0
461723626941360601974Processing supported currencies request[]0
461723626941360616841Currencies fetched, response sent back[]0
621723626941449855516Processing currency conversion request[]0
621723626941452815961Conversion successful, response sent back[]0
631723626941449917434Processing currency conversion request[]0
631723626941453474785Conversion successful, response sent back[]0
641723626941449850374Processing currency conversion request[]0
641723626941453170006Conversion successful, response sent back[]0
651723626941450692157Processing currency conversion request[]0
651723626941453124756Conversion successful, response sent back[]0
911723626940860600098fetchStart[]0
911723626940865000098domainLookupStart[]0
911723626940865500098domainLookupEnd[]0
911723626940865500098connectStart[]0
911723626940865500098connectEnd[]0
\n", + "
" + ], + "text/plain": [ + " time_unix_nano name \\\n", + "0 1723626933041528195 exception \n", + "2 1723626935855224099 exception \n", + "3 1723626935119621929 exception \n", + "13 1723626934356311987 exception \n", + "14 1723626937354592963 exception \n", + "46 1723626941360601974 Processing supported currencies request \n", + "46 1723626941360616841 Currencies fetched, response sent back \n", + "62 1723626941449855516 Processing currency conversion request \n", + "62 1723626941452815961 Conversion successful, response sent back \n", + "63 1723626941449917434 Processing currency conversion request \n", + "63 1723626941453474785 Conversion successful, response sent back \n", + "64 1723626941449850374 Processing currency conversion request \n", + "64 1723626941453170006 Conversion successful, response sent back \n", + "65 1723626941450692157 Processing currency conversion request \n", + "65 1723626941453124756 Conversion successful, response sent back \n", + "91 1723626940860600098 fetchStart \n", + "91 1723626940865000098 domainLookupStart \n", + "91 1723626940865500098 domainLookupEnd \n", + "91 1723626940865500098 connectStart \n", + "91 1723626940865500098 connectEnd \n", + "\n", + " attributes \\\n", + "0 [{'key': 'exception.type', 'value': {'string_value': 'ENOTFOUND', 'bool_value': None, 'int_value... \n", + "2 [{'key': 'exception.type', 'value': {'string_value': 'ECONNRESET', 'bool_value': None, 'int_valu... \n", + "3 [{'key': 'exception.type', 'value': {'string_value': 'ConnectionError', 'bool_value': None, 'int... \n", + "13 [{'key': 'exception.type', 'value': {'string_value': 'ENOTFOUND', 'bool_value': None, 'int_value... \n", + "14 [{'key': 'exception.type', 'value': {'string_value': 'ECONNRESET', 'bool_value': None, 'int_valu... \n", + "46 [] \n", + "46 [] \n", + "62 [] \n", + "62 [] \n", + "63 [] \n", + "63 [] \n", + "64 [] \n", + "64 [] \n", + "65 [] \n", + "65 [] \n", + "91 [] \n", + "91 [] \n", + "91 [] \n", + "91 [] \n", + "91 [] \n", + "\n", + " dropped_attributes_count \n", + "0 0 \n", + "2 0 \n", + "3 0 \n", + "13 0 \n", + "14 0 \n", + "46 0 \n", + "46 0 \n", + "62 0 \n", + "62 0 \n", + "63 0 \n", + "63 0 \n", + "64 0 \n", + "64 0 \n", + "65 0 \n", + "65 0 \n", + "91 0 \n", + "91 0 \n", + "91 0 \n", + "91 0 \n", + "91 0 " + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# the events column contains an array of objects - lets 'explode' it to rows first, and then extract the columns:\n", + "pd.DataFrame(raw_df[raw_df['events'].apply(lambda e: e.size) > 0].explode('events')['events'].head(20).apply(pd.Series))" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "aaa70164-fcc0-433e-8966-503aaf5fe733", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Let's do a bit of data pre-processing:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Let's do a bit of data pre-processing:" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "da808e12-9d80-419f-9a32-ca6bc3986d48", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# get a base DataFrame with select columns only\n", + "base_df=raw_df.loc[raw_df['is_valid'] == True][\n", + " [\n", + " 'scope_name',\n", + " 'scope_version',\n", + " 'trace_id',\n", + " 'span_id',\n", + " 'trace_state',\n", + " 'parent_span_id',\n", + " 'flags',\n", + " 'name',\n", + " 'kind',\n", + " 'start_time_unix_nano',\n", + " 'end_time_unix_nano',\n", + " ]\n", + "]\n", + "# also extract a few nested fields\n", + "base_df['status.message']=raw_df.loc[raw_df['is_valid'] == True]['status'].apply(lambda s: s.get('message'))\n", + "base_df['status.code']=raw_df.loc[raw_df['is_valid'] == True]['status'].apply(lambda s: s.get('code'))\n", + "base_df['events']=raw_df.loc[raw_df['is_valid'] == True]['events']\n", + "base_df['links']=raw_df.loc[raw_df['is_valid'] == True]['links']" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "6d9cdbef-057b-4aca-9276-5589cb2a62ca", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versiontrace_idspan_idtrace_stateparent_span_idflagsnamekindstart_time_unix_nanoend_time_unix_nanostatus.messagestatus.codeeventslinksa_app.ads.ad_request_typea_app.ads.ad_response_typea_app.ads.categorya_app.ads.contextKeysa_app.ads.contextKeys.counta_app.ads.counta_app.cart.items.counta_app.currency.conversion.froma_app.currency.conversion.toa_app.email.recipienta_app.filtered_products.counta_app.filtered_products.lista_app.order.amounta_app.order.ida_app.order.items.counta_app.payment.amounta_app.payment.card_typea_app.payment.card_valida_app.payment.chargeda_app.product.ida_app.product.namea_app.product.quantitya_app.products.counta_app.products_recommended.counta_app.quote.cost.totala_app.quote.items.counta_app.recommendation.cache_enableda_app.shipping.amounta_app.shipping.cost.totala_app.shipping.items.counta_app.shipping.tracking.ida_app.shipping.zip_codea_app.synthetic_requesta_app.user.currencya_app.user.ida_busy_nsa_canceleda_code.filepatha_code.functiona_code.linenoa_code.namespacea_componenta_db.redis.database_indexa_db.redis.flagsa_db.statementa_db.systema_dns.error_messagea_dns.error_namea_downstream_clustera_errora_error.reasona_error.typea_feature_flag.change_counta_feature_flag.counta_feature_flag.keya_feature_flag.provider_namea_feature_flag.sourcea_feature_flag.sync_typea_feature_flag.varianta_grpc.error_messagea_grpc.error_namea_grpc.methoda_grpc.status_codea_guid:x-request-ida_http.error_messagea_http.error_namea_http.flavora_http.hosta_http.methoda_http.protocola_http.request.body.sizea_http.request.methoda_http.request_content_lengtha_http.request_content_length_uncompresseda_http.response.body.sizea_http.response.status_codea_http.response_content_lengtha_http.response_content_length_uncompresseda_http.routea_http.schemea_http.status_codea_http.status_texta_http.targeta_http.urla_http.user_agenta_idle_nsa_messaging.client_ida_messaging.destination.namea_messaging.destination.partition.ida_messaging.kafka.consumer.groupa_messaging.kafka.destination.partitiona_messaging.kafka.message.offseta_messaging.kafka.producer.duration_msa_messaging.kafka.producer.successa_messaging.message.body.sizea_messaging.operationa_messaging.systema_net.host.ipa_net.host.namea_net.host.porta_net.peer.ipa_net.peer.namea_net.peer.porta_net.sock.peer.addra_net.sock.peer.porta_net.transporta_network.peer.addressa_network.peer.porta_network.protocol.versiona_network.transporta_network.typea_next.routea_next.rsca_next.span_namea_next.span_typea_node_ida_peer.addressa_peer.ipv4a_peer.servicea_request_sizea_response_flagsa_response_sizea_rpc.connect_rpc.error_codea_rpc.grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_rpc.user_agenta_server.addressa_server.porta_session.ida_sinatra.template_namea_thread.ida_thread.namea_tls.alpnProtocola_tls.authorizeda_tls.certificate.fingerprinta_tls.certificate.serialNumbera_tls.certificate.validFroma_tls.certificate.validToa_tls.cipher.namea_tls.cipher.versiona_tls.protocola_upstream_addressa_upstream_clustera_upstream_cluster.namea_url.fulla_url.patha_url.schemea_user_agenta_user_agent.originala_zonera_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.namera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.auto.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0@opentelemetry/instrumentation-http0.52.1b'\\xaa\\x12\\x15\\xbe\\xc1d\\x16\\xc5\\x12\\x18\\xc4\\xf2\\xf8\\xbd\\xc0W'b'|\\xc8\\xb1\\\\\\t\\xda \\xa4'b''0GETb'SPAN_KIND_CLIENT'17236269328500000001723626933041738697getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'[{'time_unix_nano': 1723626933041528195, 'name': 'exception', 'attributes': [{'key': 'exception....[]getaddrinfo ENOTFOUND metadata.google.internal.Errormetadata.google.internal.:80GET/computeMetadata/v1/instancehttp://metadata.google.internal./computeMetadata/v1/instancemetadata.google.internal.b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
1@opentelemetry/instrumentation-http0.52.1b'\\xc0\\xdeJd\\xb9\\xcdP\\xab\\x83\\xa8{\\xf5\\x8b\\xcf\\rc'b'\\xde$\\xf2i,\\xc3\\x16\\x14'b''0GETb'SPAN_KIND_CLIENT'17236269330500000001723626933446602174b'STATUS_CODE_ERROR'[][]1.1kubernetes.default.svc:443GET355.0403.0FORBIDDEN/api/v1/namespaces/kube-system/configmaps/aws-authhttps://kubernetes.default.svc/api/v1/namespaces/kube-system/configmaps/aws-auth10.96.0.1kubernetes.default.svc443.0ip_tcpb24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
2@opentelemetry/instrumentation-http0.52.1b\"\\x943\\xcdBt\\x88LW\\xf5\\xffB*'\\x1b\\x07L\"b'\\xfev\\x96\\xde\\xcb.\\xc2\\xed'b''0GETb'SPAN_KIND_CLIENT'17236269328460000001723626935855233118socket hang upb'STATUS_CODE_ERROR'[{'time_unix_nano': 1723626935855224099, 'name': 'exception', 'attributes': [{'key': 'exception....[]socket hang upError169.254.169.254:80GET/computeMetadata/v1/instancehttp://169.254.169.254/computeMetadata/v1/instance169.254.169.254b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1amd64opentelemetry-demo-frontend-7fcb8d57f8-45frxopentelemetry-demo-frontendotel-demo-parquetminikube10.244.1.44opentelemetry-demo-frontend-7fcb8d57f8-45frx2024-08-14T09:15:29Ze28a7d57-f1c3-4e59-bdb6-aae7c5c19b8elinux5.14.0-427.24.1.el9_4.x86_64/app/server.jsignoring attribute list valuenode/usr/local/bin/nodenextjs16.0Node.jsnodejs20.16.0e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8efrontendopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.25.1
3opentelemetry.instrumentation.requests0.44b0b'\\xb7\\xd9!V\\xacL\\x8a\\xc7\\x12\\xae\\x97\\x90N\\xc2\\xba\\xc8'b'\\xd0)\\x90\\x8d\\x9c\\xc1\\xdfA'b''0GETb'SPAN_KIND_CLIENT'17236269351053755231723626935119673381ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8080): Max ret...b'STATUS_CODE_ERROR'[{'time_unix_nano': 1723626935119621929, 'name': 'exception', 'attributes': [{'key': 'exception....[]GEThttp://opentelemetry-demo-frontendproxy:8080/opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
4opentelemetry.instrumentation.requests0.44b0b'\\t1\\xa7\\xa6\\x14\\x9d\\x05\\xaf5\\xd2\\xe8\\xca\\xbd\\xf3\\xdf~'b'\\xeb\\xfdn\\xbf\\x8a\\xcc\\xa6o'b''0GETb'SPAN_KIND_CLIENT'17236269371061489781723626937109171178b'STATUS_CODE_ERROR'[][]GET503.0http://opentelemetry-demo-frontendproxy:8080/opentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
5opentelemetry.instrumentation.requests0.44b0b'\\xfa\\x06\\x184\\xf9>\\xfe\\x1aZ\\xcf\\xfbT#\\xe9\\x89\\xae'b'y\\xb8\\x10\\x0cn\\xb2cF'b''0GETb'SPAN_KIND_CLIENT'17236269371097616691723626937111121307b'STATUS_CODE_ERROR'[][]GET503.0http://opentelemetry-demo-frontendproxy:8080/api/products/9SIQT8TOJOopentelemetry-demo-loadgeneratorotel-demo-parquetminikube10.244.1.48opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv2024-08-14T09:15:29Zc8245f82-76f9-409b-848b-1f322ab0558cc8245f82-76f9-409b-848b-1f322ab0558cloadgeneratoropentelemetry-demo-parquet1.11.1pythonopentelemetry1.23.0
6@opentelemetry/instrumentation-dns0.36.1b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\xb3\\xad\\xcf\\x83\\x89H\\xcf\\xb8'b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'0dns.lookupb'SPAN_KIND_CLIENT'17236269343530000001723626934355248522getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'[][]getaddrinfo ENOTFOUND metadata.google.internal.Erroramd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
7@opentelemetry/instrumentation-dns0.36.1b'0\\xb0\\x1br\\xac\\xca$U\\xa1\\x83\\xd2{\\x94M\\x9f2'b'?#\\x88\\x0b\\xb6\\xfdb\\x01'b''0dns.lookupb'SPAN_KIND_CLIENT'17236269343620000001723626934362231235b'STATUS_CODE_UNSET'[][]0.0.0.0amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
8@opentelemetry/instrumentation-dns0.36.1b'\\xf0`T\\xea\\x95Z!s{1\\x1a<\\n\\x9a\\x7f\\xc9'b'Y\\x97$\\xcb\\xdc\\xd3w 'b''0dns.lookupb'SPAN_KIND_CLIENT'17236269344080000001723626934415438858b'STATUS_CODE_UNSET'[][]10.96.0.1amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
9@opentelemetry/instrumentation-net0.36.0b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\x94\\xd2\\x8a\\x7f\\xe6\\xc1\\xd2('b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'0tcp.connectb'SPAN_KIND_INTERNAL'17236269343520000001723626934356514142getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'[][]metadata.google.internal.80.0ip_tcpamd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
10@opentelemetry/instrumentation-net0.36.0b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a'b')\\x18\\xbb\\xae\\x15\\x0f\\x05\\xb3'b'\\x16K\\x8aGF\\x8e\\x0b\\x89'0tcp.connectb'SPAN_KIND_INTERNAL'17236269344070000001723626934415556229b'STATUS_CODE_UNSET'[][]10.244.1.4938258.010.96.0.1kubernetes.default.svc443.0ip_tcpamd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
11@opentelemetry/instrumentation-net0.36.0b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a'b'\\x16K\\x8aGF\\x8e\\x0b\\x89'b''0tls.connectb'SPAN_KIND_INTERNAL'17236269344070000001723626934424946550b'STATUS_CODE_UNSET'[][]true9C:42:6A:89:89:F3:18:BC:37:01:1C:F8:59:EA:86:8C:1A:C0:48:0F02Jul 8 07:40:58 2024 GMTJul 9 07:40:58 2027 GMTTLS_AES_128_GCM_SHA256TLSv1.3TLSv1.3amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
12@opentelemetry/instrumentation-net0.36.0b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15'b'OV\\x08\\xbd\\xa3\\xcd\\xb6\\xbd'b'^\\x8d\\x18B>*x\\x8b'0tcp.connectb'SPAN_KIND_INTERNAL'17236269343480000001723626937354133382b'STATUS_CODE_UNSET'[][]169.254.169.25480.0ip_tcpamd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
13@opentelemetry/instrumentation-http0.51.1b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec'b'\\x8e5.\\xc5`\\xbe\\xca\\x9a'b''0GETb'SPAN_KIND_CLIENT'17236269343500000001723626934356365738getaddrinfo ENOTFOUND metadata.google.internal.b'STATUS_CODE_ERROR'[{'time_unix_nano': 1723626934356311987, 'name': 'exception', 'attributes': [{'key': 'exception....[]getaddrinfo ENOTFOUND metadata.google.internal.Errormetadata.google.internal.:80GET/computeMetadata/v1/instancehttp://metadata.google.internal./computeMetadata/v1/instancemetadata.google.internal.amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
14@opentelemetry/instrumentation-http0.51.1b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15'b'^\\x8d\\x18B>*x\\x8b'b''0GETb'SPAN_KIND_CLIENT'17236269343450000001723626937354598370socket hang upb'STATUS_CODE_ERROR'[{'time_unix_nano': 1723626937354592963, 'name': 'exception', 'attributes': [{'key': 'exception....[]socket hang upError169.254.169.254:80GET/computeMetadata/v1/instancehttp://169.254.169.254/computeMetadata/v1/instance169.254.169.254amd64opentelemetry-demo-paymentservice-74484df7d4-nfcnjopentelemetry-demo-paymentserviceotel-demo-parquetminikube10.244.1.49opentelemetry-demo-paymentservice-74484df7d4-nfcnj2024-08-14T09:15:30Z9e38f35f-7705-443d-9b08-54bcb6bd0dfclinux5.14.0-427.24.1.el9_4.x86_64/usr/src/app/index.jsignoring attribute list valuenode/usr/local/bin/nodenode16.0Node.jsnodejs21.7.39e38f35f-7705-443d-9b08-54bcb6bd0dfcpaymentserviceopentelemetry-demo-parquet1.11.1nodejsopentelemetry1.24.1
15jsonEvaluatorb'I\\xb2\\xcb\\xfc\\xf6N\\xc3\\xd4\\x0b\\x00bkV3\\x13t'b'\\x87\\x13\\x84f\\xf3\\x93p{'b''256flagSyncb'SPAN_KIND_INTERNAL'17236269298685410971723626929872638220b'STATUS_CODE_UNSET'[][]11.0./etc/flagd/demo.flagd.jsonALLopentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...linuxgo1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagdopentelemetry-demo-parquetv0.11.1goopentelemetry1.28.0
16b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9'b'\\xe8\\xc6\\xb4\\xb7bV1\\xa9'b'\\xdcnn\\xb7\\xe3JWI'0router frontend egressb'SPAN_KIND_CLIENT'17236269410059630001723626941017004000b'STATUS_CODE_UNSET'[][]proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontendopentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
17b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9'b'\\xdcnn\\xb7\\xe3JWI'b''0ingressb'SPAN_KIND_SERVER'17236269410058440001723626941017056000b'STATUS_CODE_UNSET'[][]proxy-491e6807-a0a5-9c99-8425-4dd8ef5063a0GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/_next/static/chunks/webpack-f164db4954bac6ec.js10.244.1.480-829frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
18b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5'b'\\xf7\\x95T\\xb3\"\\xcfHq'b\"'\\x97!\\x11\\x99\\xceoe\"0router frontend egressb'SPAN_KIND_CLIENT'17236269410078920001723626941022615000b'STATUS_CODE_UNSET'[][]proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontendopentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
19b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5'b\"'\\x97!\\x11\\x99\\xceoe\"b''0ingressb'SPAN_KIND_SERVER'17236269410077580001723626941022651000b'STATUS_CODE_UNSET'[][]proxy-338f7165-bc10-995d-9a4e-a9c0610ac379GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/icons/Chevron.svg10.244.1.480-793frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
20b'B\\x88\\xc4>\\xf7\\xab\\xd1-n\\xa6\\x80I<\\x99\\xf0\\x97'b'E\\x9d\\x8aw\\xe0\\x92\\xda\\x83'b'\\xed\\x85\\xfb\\x90\\xc5\\n\\x19\\x17'0router frontend egressb'SPAN_KIND_CLIENT'17236269410184200001723626941029608000b'STATUS_CODE_UNSET'[][]proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontendopentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
21b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd'b'9\\xc6\\x040\\xcf~:v'b'K\\xbf\"\\x81_\\xd2[~'0router frontend egressb'SPAN_KIND_CLIENT'17236269408670290001723626940988985000b'STATUS_CODE_UNSET'[][]proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontendopentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
22b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd'b'K\\xbf\"\\x81_\\xd2[~'b''0ingressb'SPAN_KIND_SERVER'17236269408658100001723626940989017000b'STATUS_CODE_UNSET'[][]proxy-0dd20adc-edd6-99c6-9366-0aa50e2638b2GETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/cart10.244.1.480-5747frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
23b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx'b'\\xbdf\\xc7\\xe6\\xebd-\\xb3'b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81'0router frontend egressb'SPAN_KIND_CLIENT'17236269410020890001723626941008845000b'STATUS_CODE_UNSET'[][]proxyHTTP/1.120010.103.118.48:8080-10.103.118.48:8080frontendfrontendopentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
24b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx'b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81'b''0ingressb'SPAN_KIND_SERVER'17236269410019280001723626941008888000b'STATUS_CODE_UNSET'[][]proxy-1f769ea3-ce2f-9944-a363-379b411f03fdGETHTTP/1.1200http://opentelemetry-demo-frontendproxy:8080/_next/static/css/885c0a76d639b07f.css10.244.1.480-177frontendfrontendMozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099...opentelemetry-demo-frontendproxyotel-demo-parquetminikube10.244.1.45opentelemetry-demo-frontendproxy-56b9678c65-rfc2k2024-08-14T09:15:29Zd57445cf-e911-46af-93f9-1d11fe21e83fd57445cf-e911-46af-93f9-1d11fe21e83ffrontendproxyopentelemetry-demo-parquet1.11.1
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version \\\n", + "0 @opentelemetry/instrumentation-http 0.52.1 \n", + "1 @opentelemetry/instrumentation-http 0.52.1 \n", + "2 @opentelemetry/instrumentation-http 0.52.1 \n", + "3 opentelemetry.instrumentation.requests 0.44b0 \n", + "4 opentelemetry.instrumentation.requests 0.44b0 \n", + "5 opentelemetry.instrumentation.requests 0.44b0 \n", + "6 @opentelemetry/instrumentation-dns 0.36.1 \n", + "7 @opentelemetry/instrumentation-dns 0.36.1 \n", + "8 @opentelemetry/instrumentation-dns 0.36.1 \n", + "9 @opentelemetry/instrumentation-net 0.36.0 \n", + "10 @opentelemetry/instrumentation-net 0.36.0 \n", + "11 @opentelemetry/instrumentation-net 0.36.0 \n", + "12 @opentelemetry/instrumentation-net 0.36.0 \n", + "13 @opentelemetry/instrumentation-http 0.51.1 \n", + "14 @opentelemetry/instrumentation-http 0.51.1 \n", + "15 jsonEvaluator \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " trace_id \\\n", + "0 b'\\xaa\\x12\\x15\\xbe\\xc1d\\x16\\xc5\\x12\\x18\\xc4\\xf2\\xf8\\xbd\\xc0W' \n", + "1 b'\\xc0\\xdeJd\\xb9\\xcdP\\xab\\x83\\xa8{\\xf5\\x8b\\xcf\\rc' \n", + "2 b\"\\x943\\xcdBt\\x88LW\\xf5\\xffB*'\\x1b\\x07L\" \n", + "3 b'\\xb7\\xd9!V\\xacL\\x8a\\xc7\\x12\\xae\\x97\\x90N\\xc2\\xba\\xc8' \n", + "4 b'\\t1\\xa7\\xa6\\x14\\x9d\\x05\\xaf5\\xd2\\xe8\\xca\\xbd\\xf3\\xdf~' \n", + "5 b'\\xfa\\x06\\x184\\xf9>\\xfe\\x1aZ\\xcf\\xfbT#\\xe9\\x89\\xae' \n", + "6 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "7 b'0\\xb0\\x1br\\xac\\xca$U\\xa1\\x83\\xd2{\\x94M\\x9f2' \n", + "8 b'\\xf0`T\\xea\\x95Z!s{1\\x1a<\\n\\x9a\\x7f\\xc9' \n", + "9 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "10 b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a' \n", + "11 b'\\x80XE\\xa1\\xbbV\\xce\\xfb\\x1b\\xc8\\xbcA\\xe5\\xe8@\\x8a' \n", + "12 b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15' \n", + "13 b'\\xceg\\xa8A\\xdd~\\xde\\xe7\\xcd^\\xf3\\xbcfc\\x82\\xec' \n", + "14 b'FZ\\xa6M\\x1b^\\xb6\\xc6\\xa3\\xc5\\xc9\\xfd\\xb2\\n\\xae\\x15' \n", + "15 b'I\\xb2\\xcb\\xfc\\xf6N\\xc3\\xd4\\x0b\\x00bkV3\\x13t' \n", + "16 b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9' \n", + "17 b'y\\x86\\x96W\\x9c\\xdbc\\x03\\x99b\\xaa\\xa8C\\x88\\xfa\\xb9' \n", + "18 b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5' \n", + "19 b'\\xa1\\xf8\\xe9]\\x17I\\x0c\\xe5\\x9d\\x03\\\\`\\xe4^\\xbf5' \n", + "20 b'B\\x88\\xc4>\\xf7\\xab\\xd1-n\\xa6\\x80I<\\x99\\xf0\\x97' \n", + "21 b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd' \n", + "22 b'\\x13\\xf3\\xa4q\\xecN\\xf3X\\xb1\\x8a\\xae\\xf2\\\\\\xcb;\\xdd' \n", + "23 b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx' \n", + "24 b'-Tb\\xa2\\xc6\"r\\xe8,\\xa9\\xdf\\xd1IZIx' \n", + "\n", + " span_id trace_state \\\n", + "0 b'|\\xc8\\xb1\\\\\\t\\xda \\xa4' \n", + "1 b'\\xde$\\xf2i,\\xc3\\x16\\x14' \n", + "2 b'\\xfev\\x96\\xde\\xcb.\\xc2\\xed' \n", + "3 b'\\xd0)\\x90\\x8d\\x9c\\xc1\\xdfA' \n", + "4 b'\\xeb\\xfdn\\xbf\\x8a\\xcc\\xa6o' \n", + "5 b'y\\xb8\\x10\\x0cn\\xb2cF' \n", + "6 b'\\xb3\\xad\\xcf\\x83\\x89H\\xcf\\xb8' \n", + "7 b'?#\\x88\\x0b\\xb6\\xfdb\\x01' \n", + "8 b'Y\\x97$\\xcb\\xdc\\xd3w ' \n", + "9 b'\\x94\\xd2\\x8a\\x7f\\xe6\\xc1\\xd2(' \n", + "10 b')\\x18\\xbb\\xae\\x15\\x0f\\x05\\xb3' \n", + "11 b'\\x16K\\x8aGF\\x8e\\x0b\\x89' \n", + "12 b'OV\\x08\\xbd\\xa3\\xcd\\xb6\\xbd' \n", + "13 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' \n", + "14 b'^\\x8d\\x18B>*x\\x8b' \n", + "15 b'\\x87\\x13\\x84f\\xf3\\x93p{' \n", + "16 b'\\xe8\\xc6\\xb4\\xb7bV1\\xa9' \n", + "17 b'\\xdcnn\\xb7\\xe3JWI' \n", + "18 b'\\xf7\\x95T\\xb3\"\\xcfHq' \n", + "19 b\"'\\x97!\\x11\\x99\\xceoe\" \n", + "20 b'E\\x9d\\x8aw\\xe0\\x92\\xda\\x83' \n", + "21 b'9\\xc6\\x040\\xcf~:v' \n", + "22 b'K\\xbf\"\\x81_\\xd2[~' \n", + "23 b'\\xbdf\\xc7\\xe6\\xebd-\\xb3' \n", + "24 b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81' \n", + "\n", + " parent_span_id flags name \\\n", + "0 b'' 0 GET \n", + "1 b'' 0 GET \n", + "2 b'' 0 GET \n", + "3 b'' 0 GET \n", + "4 b'' 0 GET \n", + "5 b'' 0 GET \n", + "6 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' 0 dns.lookup \n", + "7 b'' 0 dns.lookup \n", + "8 b'' 0 dns.lookup \n", + "9 b'\\x8e5.\\xc5`\\xbe\\xca\\x9a' 0 tcp.connect \n", + "10 b'\\x16K\\x8aGF\\x8e\\x0b\\x89' 0 tcp.connect \n", + "11 b'' 0 tls.connect \n", + "12 b'^\\x8d\\x18B>*x\\x8b' 0 tcp.connect \n", + "13 b'' 0 GET \n", + "14 b'' 0 GET \n", + "15 b'' 256 flagSync \n", + "16 b'\\xdcnn\\xb7\\xe3JWI' 0 router frontend egress \n", + "17 b'' 0 ingress \n", + "18 b\"'\\x97!\\x11\\x99\\xceoe\" 0 router frontend egress \n", + "19 b'' 0 ingress \n", + "20 b'\\xed\\x85\\xfb\\x90\\xc5\\n\\x19\\x17' 0 router frontend egress \n", + "21 b'K\\xbf\"\\x81_\\xd2[~' 0 router frontend egress \n", + "22 b'' 0 ingress \n", + "23 b'\\xd7\\\\\\xff\\x7f\\x8dp^\\x81' 0 router frontend egress \n", + "24 b'' 0 ingress \n", + "\n", + " kind start_time_unix_nano end_time_unix_nano \\\n", + "0 b'SPAN_KIND_CLIENT' 1723626932850000000 1723626933041738697 \n", + "1 b'SPAN_KIND_CLIENT' 1723626933050000000 1723626933446602174 \n", + "2 b'SPAN_KIND_CLIENT' 1723626932846000000 1723626935855233118 \n", + "3 b'SPAN_KIND_CLIENT' 1723626935105375523 1723626935119673381 \n", + "4 b'SPAN_KIND_CLIENT' 1723626937106148978 1723626937109171178 \n", + "5 b'SPAN_KIND_CLIENT' 1723626937109761669 1723626937111121307 \n", + "6 b'SPAN_KIND_CLIENT' 1723626934353000000 1723626934355248522 \n", + "7 b'SPAN_KIND_CLIENT' 1723626934362000000 1723626934362231235 \n", + "8 b'SPAN_KIND_CLIENT' 1723626934408000000 1723626934415438858 \n", + "9 b'SPAN_KIND_INTERNAL' 1723626934352000000 1723626934356514142 \n", + "10 b'SPAN_KIND_INTERNAL' 1723626934407000000 1723626934415556229 \n", + "11 b'SPAN_KIND_INTERNAL' 1723626934407000000 1723626934424946550 \n", + "12 b'SPAN_KIND_INTERNAL' 1723626934348000000 1723626937354133382 \n", + "13 b'SPAN_KIND_CLIENT' 1723626934350000000 1723626934356365738 \n", + "14 b'SPAN_KIND_CLIENT' 1723626934345000000 1723626937354598370 \n", + "15 b'SPAN_KIND_INTERNAL' 1723626929868541097 1723626929872638220 \n", + "16 b'SPAN_KIND_CLIENT' 1723626941005963000 1723626941017004000 \n", + "17 b'SPAN_KIND_SERVER' 1723626941005844000 1723626941017056000 \n", + "18 b'SPAN_KIND_CLIENT' 1723626941007892000 1723626941022615000 \n", + "19 b'SPAN_KIND_SERVER' 1723626941007758000 1723626941022651000 \n", + "20 b'SPAN_KIND_CLIENT' 1723626941018420000 1723626941029608000 \n", + "21 b'SPAN_KIND_CLIENT' 1723626940867029000 1723626940988985000 \n", + "22 b'SPAN_KIND_SERVER' 1723626940865810000 1723626940989017000 \n", + "23 b'SPAN_KIND_CLIENT' 1723626941002089000 1723626941008845000 \n", + "24 b'SPAN_KIND_SERVER' 1723626941001928000 1723626941008888000 \n", + "\n", + " status.message \\\n", + "0 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "1 \n", + "2 socket hang up \n", + "3 ConnectionError: HTTPConnectionPool(host='opentelemetry-demo-frontendproxy', port=8080): Max ret... \n", + "4 \n", + "5 \n", + "6 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "7 \n", + "8 \n", + "9 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "10 \n", + "11 \n", + "12 \n", + "13 getaddrinfo ENOTFOUND metadata.google.internal. \n", + "14 socket hang up \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " status.code \\\n", + "0 b'STATUS_CODE_ERROR' \n", + "1 b'STATUS_CODE_ERROR' \n", + "2 b'STATUS_CODE_ERROR' \n", + "3 b'STATUS_CODE_ERROR' \n", + "4 b'STATUS_CODE_ERROR' \n", + "5 b'STATUS_CODE_ERROR' \n", + "6 b'STATUS_CODE_ERROR' \n", + "7 b'STATUS_CODE_UNSET' \n", + "8 b'STATUS_CODE_UNSET' \n", + "9 b'STATUS_CODE_ERROR' \n", + "10 b'STATUS_CODE_UNSET' \n", + "11 b'STATUS_CODE_UNSET' \n", + "12 b'STATUS_CODE_UNSET' \n", + "13 b'STATUS_CODE_ERROR' \n", + "14 b'STATUS_CODE_ERROR' \n", + "15 b'STATUS_CODE_UNSET' \n", + "16 b'STATUS_CODE_UNSET' \n", + "17 b'STATUS_CODE_UNSET' \n", + "18 b'STATUS_CODE_UNSET' \n", + "19 b'STATUS_CODE_UNSET' \n", + "20 b'STATUS_CODE_UNSET' \n", + "21 b'STATUS_CODE_UNSET' \n", + "22 b'STATUS_CODE_UNSET' \n", + "23 b'STATUS_CODE_UNSET' \n", + "24 b'STATUS_CODE_UNSET' \n", + "\n", + " events \\\n", + "0 [{'time_unix_nano': 1723626933041528195, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "1 [] \n", + "2 [{'time_unix_nano': 1723626935855224099, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "3 [{'time_unix_nano': 1723626935119621929, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [] \n", + "8 [] \n", + "9 [] \n", + "10 [] \n", + "11 [] \n", + "12 [] \n", + "13 [{'time_unix_nano': 1723626934356311987, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "14 [{'time_unix_nano': 1723626937354592963, 'name': 'exception', 'attributes': [{'key': 'exception.... \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " links a_app.ads.ad_request_type a_app.ads.ad_response_type \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [] \n", + "8 [] \n", + "9 [] \n", + "10 [] \n", + "11 [] \n", + "12 [] \n", + "13 [] \n", + "14 [] \n", + "15 [] \n", + "16 [] \n", + "17 [] \n", + "18 [] \n", + "19 [] \n", + "20 [] \n", + "21 [] \n", + "22 [] \n", + "23 [] \n", + "24 [] \n", + "\n", + " a_app.ads.category a_app.ads.contextKeys a_app.ads.contextKeys.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.ads.count a_app.cart.items.count a_app.currency.conversion.from \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.currency.conversion.to a_app.email.recipient \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.filtered_products.count a_app.filtered_products.list \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.order.amount a_app.order.id a_app.order.items.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.amount a_app.payment.card_type a_app.payment.card_valid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.payment.charged a_app.product.id a_app.product.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.product.quantity a_app.products.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.products_recommended.count a_app.quote.cost.total \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.quote.items.count a_app.recommendation.cache_enabled \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.shipping.amount a_app.shipping.cost.total a_app.shipping.items.count \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.shipping.tracking.id a_app.shipping.zip_code a_app.synthetic_request \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_app.user.currency a_app.user.id a_busy_ns a_canceled a_code.filepath \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_code.function a_code.lineno a_code.namespace a_component \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 proxy \n", + "17 proxy \n", + "18 proxy \n", + "19 proxy \n", + "20 proxy \n", + "21 proxy \n", + "22 proxy \n", + "23 proxy \n", + "24 proxy \n", + "\n", + " a_db.redis.database_index a_db.redis.flags a_db.statement a_db.system \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_dns.error_message a_dns.error_name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_downstream_cluster a_error a_error.reason a_error.type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 - \n", + "18 \n", + "19 - \n", + "20 \n", + "21 \n", + "22 - \n", + "23 \n", + "24 - \n", + "\n", + " a_feature_flag.change_count a_feature_flag.count a_feature_flag.key \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 11.0 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_feature_flag.provider_name a_feature_flag.source \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 ./etc/flagd/demo.flagd.json \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_feature_flag.sync_type a_feature_flag.variant a_grpc.error_message \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 ALL \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_grpc.error_name a_grpc.method a_grpc.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_guid:x-request-id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 491e6807-a0a5-9c99-8425-4dd8ef5063a0 \n", + "18 \n", + "19 338f7165-bc10-995d-9a4e-a9c0610ac379 \n", + "20 \n", + "21 \n", + "22 0dd20adc-edd6-99c6-9366-0aa50e2638b2 \n", + "23 \n", + "24 1f769ea3-ce2f-9944-a363-379b411f03fd \n", + "\n", + " a_http.error_message a_http.error_name \\\n", + "0 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "1 \n", + "2 socket hang up Error \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 getaddrinfo ENOTFOUND metadata.google.internal. Error \n", + "14 socket hang up Error \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.flavor a_http.host a_http.method a_http.protocol \\\n", + "0 metadata.google.internal.:80 GET \n", + "1 1.1 kubernetes.default.svc:443 GET \n", + "2 169.254.169.254:80 GET \n", + "3 GET \n", + "4 GET \n", + "5 GET \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 metadata.google.internal.:80 GET \n", + "14 169.254.169.254:80 GET \n", + "15 \n", + "16 HTTP/1.1 \n", + "17 GET HTTP/1.1 \n", + "18 HTTP/1.1 \n", + "19 GET HTTP/1.1 \n", + "20 HTTP/1.1 \n", + "21 HTTP/1.1 \n", + "22 GET HTTP/1.1 \n", + "23 HTTP/1.1 \n", + "24 GET HTTP/1.1 \n", + "\n", + " a_http.request.body.size a_http.request.method \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.request_content_length a_http.request_content_length_uncompressed \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response.body.size a_http.response.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.response_content_length a_http.response_content_length_uncompressed \\\n", + "0 \n", + "1 355.0 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.route a_http.scheme a_http.status_code a_http.status_text \\\n", + "0 \n", + "1 403.0 FORBIDDEN \n", + "2 \n", + "3 \n", + "4 503.0 \n", + "5 503.0 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 200 \n", + "17 200 \n", + "18 200 \n", + "19 200 \n", + "20 200 \n", + "21 200 \n", + "22 200 \n", + "23 200 \n", + "24 200 \n", + "\n", + " a_http.target \\\n", + "0 /computeMetadata/v1/instance \n", + "1 /api/v1/namespaces/kube-system/configmaps/aws-auth \n", + "2 /computeMetadata/v1/instance \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 /computeMetadata/v1/instance \n", + "14 /computeMetadata/v1/instance \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_http.url \\\n", + "0 http://metadata.google.internal./computeMetadata/v1/instance \n", + "1 https://kubernetes.default.svc/api/v1/namespaces/kube-system/configmaps/aws-auth \n", + "2 http://169.254.169.254/computeMetadata/v1/instance \n", + "3 http://opentelemetry-demo-frontendproxy:8080/ \n", + "4 http://opentelemetry-demo-frontendproxy:8080/ \n", + "5 http://opentelemetry-demo-frontendproxy:8080/api/products/9SIQT8TOJO \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 http://metadata.google.internal./computeMetadata/v1/instance \n", + "14 http://169.254.169.254/computeMetadata/v1/instance \n", + "15 \n", + "16 \n", + "17 http://opentelemetry-demo-frontendproxy:8080/_next/static/chunks/webpack-f164db4954bac6ec.js \n", + "18 \n", + "19 http://opentelemetry-demo-frontendproxy:8080/icons/Chevron.svg \n", + "20 \n", + "21 \n", + "22 http://opentelemetry-demo-frontendproxy:8080/cart \n", + "23 \n", + "24 http://opentelemetry-demo-frontendproxy:8080/_next/static/css/885c0a76d639b07f.css \n", + "\n", + " a_http.user_agent a_idle_ns a_messaging.client_id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.destination.name a_messaging.destination.partition.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.consumer.group a_messaging.kafka.destination.partition \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.message.offset a_messaging.kafka.producer.duration_ms \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.kafka.producer.success a_messaging.message.body.size \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_messaging.operation a_messaging.system a_net.host.ip a_net.host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 10.244.1.49 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.host.port a_net.peer.ip a_net.peer.name a_net.peer.port \\\n", + "0 metadata.google.internal. \n", + "1 10.96.0.1 kubernetes.default.svc 443.0 \n", + "2 169.254.169.254 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 metadata.google.internal. 80.0 \n", + "10 38258.0 10.96.0.1 kubernetes.default.svc 443.0 \n", + "11 \n", + "12 169.254.169.254 80.0 \n", + "13 metadata.google.internal. \n", + "14 169.254.169.254 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_net.sock.peer.addr a_net.sock.peer.port a_net.transport \\\n", + "0 \n", + "1 ip_tcp \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 ip_tcp \n", + "10 ip_tcp \n", + "11 \n", + "12 ip_tcp \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.peer.address a_network.peer.port a_network.protocol.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_network.transport a_network.type a_next.route a_next.rsc \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_next.span_name a_next.span_type a_node_id a_peer.address \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 10.103.118.48:8080 \n", + "17 10.244.1.48 \n", + "18 10.103.118.48:8080 \n", + "19 10.244.1.48 \n", + "20 10.103.118.48:8080 \n", + "21 10.103.118.48:8080 \n", + "22 10.244.1.48 \n", + "23 10.103.118.48:8080 \n", + "24 10.244.1.48 \n", + "\n", + " a_peer.ipv4 a_peer.service a_request_size a_response_flags a_response_size \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 0.0.0.0 \n", + "8 10.96.0.1 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 - \n", + "17 0 - 829 \n", + "18 - \n", + "19 0 - 793 \n", + "20 - \n", + "21 - \n", + "22 0 - 5747 \n", + "23 - \n", + "24 0 - 177 \n", + "\n", + " a_rpc.connect_rpc.error_code a_rpc.grpc.status_code a_rpc.method \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_rpc.service a_rpc.system a_rpc.user_agent a_server.address a_server.port \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_session.id a_sinatra.template_name a_thread.id a_thread.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.alpnProtocol a_tls.authorized \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 true \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.fingerprint \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 9C:42:6A:89:89:F3:18:BC:37:01:1C:F8:59:EA:86:8C:1A:C0:48:0F \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.serialNumber a_tls.certificate.validFrom \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 02 Jul 8 07:40:58 2024 GMT \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.certificate.validTo a_tls.cipher.name a_tls.cipher.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 Jul 9 07:40:58 2027 GMT TLS_AES_128_GCM_SHA256 TLSv1.3 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " a_tls.protocol a_upstream_address a_upstream_cluster \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 TLSv1.3 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 10.103.118.48:8080 frontend \n", + "17 frontend \n", + "18 10.103.118.48:8080 frontend \n", + "19 frontend \n", + "20 10.103.118.48:8080 frontend \n", + "21 10.103.118.48:8080 frontend \n", + "22 frontend \n", + "23 10.103.118.48:8080 frontend \n", + "24 frontend \n", + "\n", + " a_upstream_cluster.name a_url.full a_url.path a_url.scheme \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 frontend \n", + "17 frontend \n", + "18 frontend \n", + "19 frontend \n", + "20 frontend \n", + "21 frontend \n", + "22 frontend \n", + "23 frontend \n", + "24 frontend \n", + "\n", + " a_user_agent \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "18 \n", + "19 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "20 \n", + "21 \n", + "22 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "23 \n", + "24 Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/120.0.6099... \n", + "\n", + " a_user_agent.original a_zone \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_container.id \\\n", + "0 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "1 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "2 b24532380021e4d85ee7b3b2479d5d1d37698ad0bf93923b08078b146737e0f1 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "1 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "2 amd64 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "3 \n", + "4 \n", + "5 \n", + "6 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "7 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "8 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "9 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "10 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "11 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "12 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "13 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "14 amd64 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "15 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "0 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "1 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "2 opentelemetry-demo-frontend otel-demo-parquet minikube \n", + "3 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "4 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "5 opentelemetry-demo-loadgenerator otel-demo-parquet minikube \n", + "6 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "7 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "8 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "9 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "10 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "11 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "12 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "13 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "14 opentelemetry-demo-paymentservice otel-demo-parquet minikube \n", + "15 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "16 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "17 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "18 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "19 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "20 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "21 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "22 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "23 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "24 opentelemetry-demo-frontendproxy otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "0 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "1 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "2 10.244.1.44 opentelemetry-demo-frontend-7fcb8d57f8-45frx \n", + "3 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "4 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "5 10.244.1.48 opentelemetry-demo-loadgenerator-76f7fc9689-jsvlv \n", + "6 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "7 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "8 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "9 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "10 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "11 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "12 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "13 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "14 10.244.1.49 opentelemetry-demo-paymentservice-74484df7d4-nfcnj \n", + "15 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "16 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "17 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "18 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "19 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "20 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "21 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "22 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "23 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "24 10.244.1.45 opentelemetry-demo-frontendproxy-56b9678c65-rfc2k \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "1 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "2 2024-08-14T09:15:29Z e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "3 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "4 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "5 2024-08-14T09:15:29Z c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "7 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "8 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "9 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "10 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "11 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "12 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "13 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "14 2024-08-14T09:15:30Z 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "15 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "17 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "18 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "19 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "20 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "21 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "22 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "23 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "24 2024-08-14T09:15:29Z d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "\n", + " ra_os.description \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_os.name ra_os.type ra_os.version ra_process.command \\\n", + "0 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "1 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "2 linux 5.14.0-427.24.1.el9_4.x86_64 /app/server.js \n", + "3 \n", + "4 \n", + "5 \n", + "6 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "7 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "8 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "9 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "10 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "11 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "12 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "13 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "14 linux 5.14.0-427.24.1.el9_4.x86_64 /usr/src/app/index.js \n", + "15 linux \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.command_args ra_process.command_line \\\n", + "0 ignoring attribute list value \n", + "1 ignoring attribute list value \n", + "2 ignoring attribute list value \n", + "3 \n", + "4 \n", + "5 \n", + "6 ignoring attribute list value \n", + "7 ignoring attribute list value \n", + "8 ignoring attribute list value \n", + "9 ignoring attribute list value \n", + "10 ignoring attribute list value \n", + "11 ignoring attribute list value \n", + "12 ignoring attribute list value \n", + "13 ignoring attribute list value \n", + "14 ignoring attribute list value \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.executable.name ra_process.executable.path ra_process.owner \\\n", + "0 node /usr/local/bin/node nextjs \n", + "1 node /usr/local/bin/node nextjs \n", + "2 node /usr/local/bin/node nextjs \n", + "3 \n", + "4 \n", + "5 \n", + "6 node /usr/local/bin/node node \n", + "7 node /usr/local/bin/node node \n", + "8 node /usr/local/bin/node node \n", + "9 node /usr/local/bin/node node \n", + "10 node /usr/local/bin/node node \n", + "11 node /usr/local/bin/node node \n", + "12 node /usr/local/bin/node node \n", + "13 node /usr/local/bin/node node \n", + "14 node /usr/local/bin/node node \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.pid ra_process.runtime.description ra_process.runtime.name \\\n", + "0 16.0 Node.js nodejs \n", + "1 16.0 Node.js nodejs \n", + "2 16.0 Node.js nodejs \n", + "3 \n", + "4 \n", + "5 \n", + "6 16.0 Node.js nodejs \n", + "7 16.0 Node.js nodejs \n", + "8 16.0 Node.js nodejs \n", + "9 16.0 Node.js nodejs \n", + "10 16.0 Node.js nodejs \n", + "11 16.0 Node.js nodejs \n", + "12 16.0 Node.js nodejs \n", + "13 16.0 Node.js nodejs \n", + "14 16.0 Node.js nodejs \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_process.runtime.version ra_service.instance.id \\\n", + "0 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "1 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "2 20.16.0 e28a7d57-f1c3-4e59-bdb6-aae7c5c19b8e \n", + "3 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "4 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "5 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "6 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "7 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "8 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "9 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "10 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "11 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "12 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "13 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "14 21.7.3 9e38f35f-7705-443d-9b08-54bcb6bd0dfc \n", + "15 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "16 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "17 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "18 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "19 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "20 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "21 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "22 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "23 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "24 d57445cf-e911-46af-93f9-1d11fe21e83f \n", + "\n", + " ra_service.name ra_service.namespace ra_service.version \\\n", + "0 frontend opentelemetry-demo-parquet 1.11.1 \n", + "1 frontend opentelemetry-demo-parquet 1.11.1 \n", + "2 frontend opentelemetry-demo-parquet 1.11.1 \n", + "3 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "4 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "5 loadgenerator opentelemetry-demo-parquet 1.11.1 \n", + "6 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "7 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "8 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "9 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "10 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "11 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "12 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "13 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "14 paymentservice opentelemetry-demo-parquet 1.11.1 \n", + "15 flagd opentelemetry-demo-parquet v0.11.1 \n", + "16 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "17 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "18 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "19 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "20 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "21 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "22 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "23 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "24 frontendproxy opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.auto.version ra_telemetry.distro.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "10 \n", + "11 \n", + "12 \n", + "13 \n", + "14 \n", + "15 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_telemetry.distro.version ra_telemetry.sdk.language \\\n", + "0 nodejs \n", + "1 nodejs \n", + "2 nodejs \n", + "3 python \n", + "4 python \n", + "5 python \n", + "6 nodejs \n", + "7 nodejs \n", + "8 nodejs \n", + "9 nodejs \n", + "10 nodejs \n", + "11 nodejs \n", + "12 nodejs \n", + "13 nodejs \n", + "14 nodejs \n", + "15 go \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 \n", + "\n", + " ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "0 opentelemetry 1.25.1 \n", + "1 opentelemetry 1.25.1 \n", + "2 opentelemetry 1.25.1 \n", + "3 opentelemetry 1.23.0 \n", + "4 opentelemetry 1.23.0 \n", + "5 opentelemetry 1.23.0 \n", + "6 opentelemetry 1.24.1 \n", + "7 opentelemetry 1.24.1 \n", + "8 opentelemetry 1.24.1 \n", + "9 opentelemetry 1.24.1 \n", + "10 opentelemetry 1.24.1 \n", + "11 opentelemetry 1.24.1 \n", + "12 opentelemetry 1.24.1 \n", + "13 opentelemetry 1.24.1 \n", + "14 opentelemetry 1.24.1 \n", + "15 opentelemetry 1.28.0 \n", + "16 \n", + "17 \n", + "18 \n", + "19 \n", + "20 \n", + "21 \n", + "22 \n", + "23 \n", + "24 " + ] + }, + "execution_count": 89, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 'join' with extracted attributes:\n", + "ext_df=base_df.join(attrs_df).join(resource_attrs_df).join(scope_attrs_df)\n", + "ext_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "dcfe7e9d-9435-4b7b-ac83-4c850eb7a3c6", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Exploring traces\n", + "\n", + "Let's find the same `trace_id` that we used in the `logs` correlation example above and take a deeper look at what the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) was doing:\n", + "\n", + "> ***Note:*** Look at the `parent_span_id` values and the rows they point to to see how spans get subdivided\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Exploring traces\n", + "\n", + "Let's find the same `trace_id` that we used in the `logs` correlation example above and take a deeper look at what the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) was doing:\n", + "\n", + "> ***Note:*** Look at the `parent_span_id` values and the rows they point to to see how spans get subdivided" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "360ea0b5-7cfe-4421-af46-fb23823ac641", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_service.namera_telemetry.sdk.languagera_process.commandra_process.executable.pathscope_namenamespan_idparent_span_idkindstatus.codestart_time_unix_nanoend_time_unix_nanoa_app.cart.items.counta_app.currency.conversion.froma_app.currency.conversion.toa_app.email.recipienta_app.order.amounta_app.order.ida_app.order.items.counta_app.payment.amounta_app.payment.card_typea_app.payment.card_valida_app.payment.chargeda_app.product.ida_app.product.namea_app.product.quantitya_app.quote.cost.totala_app.quote.items.counta_app.shipping.amounta_app.shipping.cost.totala_app.shipping.items.counta_app.shipping.tracking.ida_app.shipping.zip_codea_app.user.currencya_app.user.ida_feature_flag.keya_feature_flag.provider_namea_feature_flag.varianta_db.redis.database_indexa_db.redis.flagsa_db.statementa_db.systema_messaging.client_ida_messaging.destination.namea_messaging.destination.partition.ida_messaging.kafka.consumer.groupa_messaging.operationa_messaging.systema_grpc.methoda_grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_http.methoda_http.request.methoda_http.routea_http.targeta_http.urla_url.fulla_url.patha_http.response.status_codea_http.status_codea_net.peer.namea_http.host
6406loadgeneratorpythonopentelemetry.instrumentation.requestsPOSTb'\\xb7W\\x1f\\x9d+~#R'b''b'SPAN_KIND_CLIENT'b'STATUS_CODE_ERROR'17236271340569544011723627149059298090POSThttp://opentelemetry-demo-frontendproxy:8080/api/checkout504.0
6768frontendnodejs/app/server.js/usr/local/bin/node@opentelemetry/instrumentation-httpPOSTb'\\x02J\\xa0r\\xe6uLD'b'm\\xcd\\xb1\\xa3\\xf9nf['b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271340570000001723627149058150531POST/api/checkouthttp://opentelemetry-demo-frontendproxy:8080/api/checkout200.0opentelemetry-demo-frontendproxy:8080
21080frontendnodejs/app/server.js/usr/local/bin/nodenext.jsPOST /api/checkoutb'\\xae\\x04\\xe8\\x94\\xfd\\r\\xedj'b'\\x02J\\xa0r\\xe6uLD'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271340570000001723627338572770300POST/api/checkout200.0
6350frontendproxyingressb'\\x14K\\xab\\xa5\\x02\\xe6\\xeb\\xd7'b'\\xb7W\\x1f\\x9d+~#R'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271340573820001723627149058713000POSThttp://opentelemetry-demo-frontendproxy:8080/api/checkout504
6349frontendproxyrouter frontend egressb'm\\xcd\\xb1\\xa3\\xf9nf['b'\\x14K\\xab\\xa5\\x02\\xe6\\xeb\\xd7'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'172362713405748900017236271490585020000
20269frontendnodejs/app/server.js/usr/local/bin/node@opentelemetry/instrumentation-grpcgrpc.oteldemo.CheckoutService/PlaceOrderb'07\\xae9\\xbd~\\xd8v'b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271340580000001723627315976950050PlaceOrderoteldemo.CheckoutServicegrpcopentelemetry-demo-checkoutservice
21079frontendnodejs/app/server.js/usr/local/bin/nodenext.jsexecuting api route (pages) /api/checkoutb'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3'b'\\xae\\x04\\xe8\\x94\\xfd\\r\\xedj'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236271340580000001723627338573434952200.0
20397checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CheckoutService/PlaceOrderb'y*\\x1b+\\xa6a\\xe79'b'07\\xae9\\xbd~\\xd8v'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271340795491131723627315976423603993.03a08999f-5a1e-11ef-ac87-9e6131d66c8e2.0234.0fea5c3a6-b231-4548-b8fb-4b5bd4d953e9USD39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1PlaceOrderoteldemo.CheckoutServicegrpc
4686checkoutservicego/usr/src/app/checkoutservicecheckoutserviceprepareOrderItemsAndShippingQuoteFromCartb'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'172362713409356122417236271341080628374.02.0234.0
4670checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CartService/GetCartb'\\x91\\x94\\x8a\\xd4\\xf4\\x8ei\\x1b'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271340935773891723627134101933411GetCartoteldemo.CartServicegrpc
4611cartservicedotnetMicrosoft.AspNetCorePOST /oteldemo.CartService/GetCartb'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$'b'\\x91\\x94\\x8a\\xd4\\xf4\\x8ei\\x1b'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'172362713409968300017236271341018087004.039fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1/oteldemo.CartService/GetCart0POST/oteldemo.CartService/GetCart/oteldemo.CartService/GetCart200.0
4630cartservicedotnetOpenTelemetry.Instrumentation.StackExchangeRedisHGETb'\\xfb}\\x9f\\x84\\xf6\\xdb\\xaa\\t'b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'172362713410156260017236271341017470000.0NoneHGET 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1redisopentelemetry-demo-valkey
4671checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ProductCatalogService/GetProductb'N\\x976\\xfd\\xffb4\\x00'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341019689651723627134102334463GetProductoteldemo.ProductCatalogServicegrpc
4650productcatalogservicego/usr/src/app/productcatalogservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ProductCatalogService/GetProductb'C\\x84nx\\xa3\\xaf\\\\\\x1f'b'N\\x976\\xfd\\xffb4\\x00'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'172362713410214432017236271341022145361YMWWN1N4OEclipsmart Travel Refractor TelescopeGetProductoteldemo.ProductCatalogServicegrpc
4672checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CurrencyService/Convertb'\\xa2n\\xec\\x97w66\\xa3'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341023537441723627134103685804Convertoteldemo.CurrencyServicegrpc
4256currencyservicecppcurrencyserviceCurrencyService/Convertb'\\xac\\x05@P\\x17\\xa4\\xab\\xe7'b'\\xa2n\\xec\\x97w66\\xa3'b'SPAN_KIND_SERVER'b'STATUS_CODE_OK'17236271341026337101723627134103191583USDUSDConvertoteldemo.CurrencyServicegrpc
4673checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ProductCatalogService/GetProductb'\\xf2\\x88v\\xfc\\xf1\\xbd\\x06g'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341037384061723627134103997508GetProductoteldemo.ProductCatalogServicegrpc
4651productcatalogservicego/usr/src/app/productcatalogservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ProductCatalogService/GetProductb'\\xe2\\x93\\xd9\\xdd\\x8c\\xe2\\xc5\\xcf'b'\\xf2\\x88v\\xfc\\xf1\\xbd\\x06g'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'172362713410385378017236271341039084182ZYFJ3GM2NRoof BinocularsGetProductoteldemo.ProductCatalogServicegrpc
4674checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CurrencyService/Convertb'\\xc9\\xf5\\xa6\\xcc\\xde\\x94\\xd7\\x0f'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341040124261723627134104800998Convertoteldemo.CurrencyServicegrpc
4257currencyservicecppcurrencyserviceCurrencyService/Convertb'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A'b'\\xc9\\xf5\\xa6\\xcc\\xde\\x94\\xd7\\x0f'b'SPAN_KIND_SERVER'b'STATUS_CODE_OK'17236271341041503691723627134104440269USDUSDConvertoteldemo.CurrencyServicegrpc
4675checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ShippingService/GetQuoteb'`v\\xa4KH\\x9d\\xfb\\xee'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341048182651723627134106550710GetQuoteoteldemo.ShippingServicegrpc
4746shippingservicerustshippingserviceoteldemo.ShippingService/GetQuoteb'[\\xa5\\xf5\\x156\\xae\\x1d\\x0b'b'`v\\xa4KH\\x9d\\xfb\\xee'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271341050189661723627134106383436234.04.094103grpc
4745shippingservicerustopentelemetry-otlpPOSTb'\\xb5\\xb2\\xdf=\\xc0(\\x9eA'b'[\\xa5\\xf5\\x156\\xae\\x1d\\x0b'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341050781901723627134106342907POSThttp://opentelemetry-demo-quoteservice:8080/getquote200opentelemetry-demo-quoteservice
4740quoteservicephppublic/index.php/usr/local/bin/phpio.opentelemetry.contrib.php.slimPOST /getquoteb'\\xf7K;F~\\xb3H\\xa0'b'\\xb5\\xb2\\xdf=\\xc0(\\x9eA'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271341059867371723627134106180810POST/getquotehttp://opentelemetry-demo-quoteservice:8080/getquote/getquote200.0
4739quoteservicephppublic/index.php/usr/local/bin/phpio.opentelemetry.contrib.php.slim{closure}b'\\xaa\\xb6\\xba-\\x11-{\\xe0'b'\\xf7K;F~\\xb3H\\xa0'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236271341060483841723627134106164128
4736quoteservicephppublic/index.php/usr/local/bin/phpmanual-instrumentationcalculate-quoteb';\\xe5\\xe5\\x8ey\\x92\\xc5\\xfa'b'\\xaa\\xb6\\xba-\\x11-{\\xe0'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236271341060791191723627134106101626234.04.0
4676checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CurrencyService/Convertb';\\xb0}Cwa\\x81G'b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341065782561723627134107595632Convertoteldemo.CurrencyServicegrpc
4258currencyservicecppcurrencyserviceCurrencyService/Convertb'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f'b';\\xb0}Cwa\\x81G'b'SPAN_KIND_SERVER'b'STATUS_CODE_OK'17236271341067840441723627134107193722USDUSDConvertoteldemo.CurrencyServicegrpc
4677checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.PaymentService/Chargeb'H\\xe2\\x02\\xa1r+P\\xab'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341089716861723627134110905442Chargeoteldemo.PaymentServicegrpc
4963paymentservicenodejs/usr/src/app/index.js/usr/local/bin/node@opentelemetry/instrumentation-grpcgrpc.oteldemo.PaymentService/Chargeb\"'\\xa0s\\x8516&w\"b'H\\xe2\\x02\\xa1r+P\\xab'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271341090000001723627134109599744993.8Chargeoteldemo.PaymentServicegrpc
4960paymentservicenodejs/usr/src/app/index.js/usr/local/bin/nodepaymentservicechargeb'\\xf0\\xa4I\\xcc\\xdc\\xa8\\xe4:'b\"'\\xa0s\\x8516&w\"b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236271341100000001723627134110257706visaTrueFalse
4678checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.ShippingService/ShipOrderb'\\xc7\\xb6A\\xc5E\\xa8\\xdc\\x15'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341109993951723627134111224968ShipOrderoteldemo.ShippingServicegrpc
4747shippingservicerustshippingserviceoteldemo.ShippingService/ShipOrderb'\\xe8\\xcd\\x0c\\x11\\xdea\\xda\\x0e'b'\\xc7\\xb6A\\xc5E\\xa8\\xdc\\x15'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'17236271341111357121723627134111150420fea5c3a6-b231-4548-b8fb-4b5bd4d953e9grpc
20396checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpcoteldemo.CartService/EmptyCartb'\\xeei\\xa0\\x1c\\xfc_\\x1a\\xa3'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341112424741723627315972980775EmptyCartoteldemo.CartServicegrpc
20336cartservicedotnetMicrosoft.AspNetCorePOST /oteldemo.CartService/EmptyCartb'\\xb4A-n1\\x1b\\\\\\xb1'b'\\xeei\\xa0\\x1c\\xfc_\\x1a\\xa3'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'1723627134111432000172362731597282380039fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1cartServiceFailureflagd Provideroff/oteldemo.CartService/EmptyCart0POST/oteldemo.CartService/EmptyCart/oteldemo.CartService/EmptyCart200.0
20332cartservicedotnetOpenTelemetry.Instrumentation.GrpcNetClientflagd.evaluation.v1.Service/ResolveBooleanb'\\xea\\x87\\xec\\xa9\\xac\\x11T\\xa9'b'\\xb4A-n1\\x1b\\\\\\xb1'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341271843001723627315972240000ResolveBooleanflagd.evaluation.v1.Servicegrpc
20100cartservicedotnetSystem.Net.HttpPOSTb'\\x94\\xac\\x8c\\xe1\\xf0\\xc2h9'b'\\xea\\x87\\xec\\xa9\\xac\\x11T\\xa9'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236271341304912001723627310259500300POSThttp://opentelemetry-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean200.0
20671cartservicedotnetOpenTelemetry.Instrumentation.StackExchangeRedisHMSETb'\\x7f(e\\xf7ERJ|'b'\\xb4A-n1\\x1b\\\\\\xb1'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'172362731597235330017236273159725701000.0DemandMasterHMSET 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1redisopentelemetry-demo-valkey
20672cartservicedotnetOpenTelemetry.Instrumentation.StackExchangeRedisEXPIREb'\\x8aQ|\\xc4\\xfc\\xdfW\\x12'b'\\xb4A-n1\\x1b\\\\\\xb1'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'172362731597258120017236273159727592000.0DemandMasterEXPIRE 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1redisopentelemetry-demo-valkey
20400checkoutservicego/usr/src/app/checkoutservicego.opentelemetry.io/contrib/instrumentation/net/http/otelhttpHTTP POSTb'\\x03\\xcf\\xca\\xf6\\x1e\\xc8\\x1b\\xe3'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236273159730779911723627315976135541POSThttp://opentelemetry-demo-emailservice:8080/send_order_confirmation200.0opentelemetry-demo-emailservice
20244emailservicerubyemail_server.rbOpenTelemetry::Instrumentation::RackPOST /send_order_confirmationb'\\x9a\\xdc\\xd4iJ]a\\x80'b'\\x03\\xcf\\xca\\xf6\\x1e\\xc8\\x1b\\xe3'b'SPAN_KIND_SERVER'b'STATUS_CODE_UNSET'172362731597370291517236273159760896413a08999f-5a1e-11ef-ac87-9e6131d66c8ePOST/send_order_confirmation/send_order_confirmation200.0opentelemetry-demo-emailservice:8080
20241emailservicerubyemail_server.rbemailservicesend_emailb'\\xc1X\\xb5$lN\\x8d\\x7f'b'\\x9a\\xdc\\xd4iJ]a\\x80'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236273159741888621723627315975795884jack@example.com
20238emailservicerubyemail_server.rbOpenTelemetry::Instrumentation::Sinatrasinatra.render_templateb'\\x962\\xf3O\\xf9\\xfd\\x97\\xac'b'\\xc1X\\xb5$lN\\x8d\\x7f'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236273159742192231723627315974462422
20237emailservicerubyemail_server.rbOpenTelemetry::Instrumentation::Sinatrasinatra.render_templateb'\\xdf \\xa0\\xfe\\xc9&P\\x9c'b'\\x962\\xf3O\\xf9\\xfd\\x97\\xac'b'SPAN_KIND_INTERNAL'b'STATUS_CODE_UNSET'17236273159743455151723627315974448068
20403checkoutservicego/usr/src/app/checkoutservicecheckoutserviceorders publishb'\\x0b \\xf9x\\xc9#\\x1b\\x81'b'y*\\x1b+\\xa6a\\xe79'b'SPAN_KIND_PRODUCER'b'STATUS_CODE_UNSET'17236273159761984141723627315976381720orderspublishkafka
20999frontendnodejs/app/server.js/usr/local/bin/node@opentelemetry/instrumentation-grpcgrpc.oteldemo.ProductCatalogService/GetProductb'\\x08#1\\xe9\\x93\\xb9P\\x8b'b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236273159770000001723627338572861297GetProductoteldemo.ProductCatalogServicegrpcopentelemetry-demo-productcatalogservice
20998frontendnodejs/app/server.js/usr/local/bin/node@opentelemetry/instrumentation-grpcgrpc.oteldemo.ProductCatalogService/GetProductb'\\xba\\xad\\xceB\\x99\\x00\\x15`'b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3'b'SPAN_KIND_CLIENT'b'STATUS_CODE_UNSET'17236273159770000001723627338572448348GetProductoteldemo.ProductCatalogServicegrpcopentelemetry-demo-productcatalogservice
20192frauddetectionservicejava/usr/lib/jvm/java-17-openjdk-amd64/bin/javaio.opentelemetry.kafka-clients-0.11orders processb'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc'b'\\x0b \\xf9x\\xc9#\\x1b\\x81'b'SPAN_KIND_CONSUMER'b'STATUS_CODE_UNSET'17236273159801806741723627315980943912consumer-frauddetectionservice-1orders0frauddetectionserviceprocesskafka
\n", + "
" + ], + "text/plain": [ + " ra_service.name ra_telemetry.sdk.language ra_process.command \\\n", + "6406 loadgenerator python \n", + "6768 frontend nodejs /app/server.js \n", + "21080 frontend nodejs /app/server.js \n", + "6350 frontendproxy \n", + "6349 frontendproxy \n", + "20269 frontend nodejs /app/server.js \n", + "21079 frontend nodejs /app/server.js \n", + "20397 checkoutservice go \n", + "4686 checkoutservice go \n", + "4670 checkoutservice go \n", + "4611 cartservice dotnet \n", + "4630 cartservice dotnet \n", + "4671 checkoutservice go \n", + "4650 productcatalogservice go \n", + "4672 checkoutservice go \n", + "4256 currencyservice cpp \n", + "4673 checkoutservice go \n", + "4651 productcatalogservice go \n", + "4674 checkoutservice go \n", + "4257 currencyservice cpp \n", + "4675 checkoutservice go \n", + "4746 shippingservice rust \n", + "4745 shippingservice rust \n", + "4740 quoteservice php public/index.php \n", + "4739 quoteservice php public/index.php \n", + "4736 quoteservice php public/index.php \n", + "4676 checkoutservice go \n", + "4258 currencyservice cpp \n", + "4677 checkoutservice go \n", + "4963 paymentservice nodejs /usr/src/app/index.js \n", + "4960 paymentservice nodejs /usr/src/app/index.js \n", + "4678 checkoutservice go \n", + "4747 shippingservice rust \n", + "20396 checkoutservice go \n", + "20336 cartservice dotnet \n", + "20332 cartservice dotnet \n", + "20100 cartservice dotnet \n", + "20671 cartservice dotnet \n", + "20672 cartservice dotnet \n", + "20400 checkoutservice go \n", + "20244 emailservice ruby email_server.rb \n", + "20241 emailservice ruby email_server.rb \n", + "20238 emailservice ruby email_server.rb \n", + "20237 emailservice ruby email_server.rb \n", + "20403 checkoutservice go \n", + "20999 frontend nodejs /app/server.js \n", + "20998 frontend nodejs /app/server.js \n", + "20192 frauddetectionservice java \n", + "\n", + " ra_process.executable.path \\\n", + "6406 \n", + "6768 /usr/local/bin/node \n", + "21080 /usr/local/bin/node \n", + "6350 \n", + "6349 \n", + "20269 /usr/local/bin/node \n", + "21079 /usr/local/bin/node \n", + "20397 /usr/src/app/checkoutservice \n", + "4686 /usr/src/app/checkoutservice \n", + "4670 /usr/src/app/checkoutservice \n", + "4611 \n", + "4630 \n", + "4671 /usr/src/app/checkoutservice \n", + "4650 /usr/src/app/productcatalogservice \n", + "4672 /usr/src/app/checkoutservice \n", + "4256 \n", + "4673 /usr/src/app/checkoutservice \n", + "4651 /usr/src/app/productcatalogservice \n", + "4674 /usr/src/app/checkoutservice \n", + "4257 \n", + "4675 /usr/src/app/checkoutservice \n", + "4746 \n", + "4745 \n", + "4740 /usr/local/bin/php \n", + "4739 /usr/local/bin/php \n", + "4736 /usr/local/bin/php \n", + "4676 /usr/src/app/checkoutservice \n", + "4258 \n", + "4677 /usr/src/app/checkoutservice \n", + "4963 /usr/local/bin/node \n", + "4960 /usr/local/bin/node \n", + "4678 /usr/src/app/checkoutservice \n", + "4747 \n", + "20396 /usr/src/app/checkoutservice \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 /usr/src/app/checkoutservice \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 /usr/src/app/checkoutservice \n", + "20999 /usr/local/bin/node \n", + "20998 /usr/local/bin/node \n", + "20192 /usr/lib/jvm/java-17-openjdk-amd64/bin/java \n", + "\n", + " scope_name \\\n", + "6406 opentelemetry.instrumentation.requests \n", + "6768 @opentelemetry/instrumentation-http \n", + "21080 next.js \n", + "6350 \n", + "6349 \n", + "20269 @opentelemetry/instrumentation-grpc \n", + "21079 next.js \n", + "20397 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4686 checkoutservice \n", + "4670 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4611 Microsoft.AspNetCore \n", + "4630 OpenTelemetry.Instrumentation.StackExchangeRedis \n", + "4671 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4650 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4672 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4256 currencyservice \n", + "4673 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4651 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4674 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4257 currencyservice \n", + "4675 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4746 shippingservice \n", + "4745 opentelemetry-otlp \n", + "4740 io.opentelemetry.contrib.php.slim \n", + "4739 io.opentelemetry.contrib.php.slim \n", + "4736 manual-instrumentation \n", + "4676 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4258 currencyservice \n", + "4677 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4963 @opentelemetry/instrumentation-grpc \n", + "4960 paymentservice \n", + "4678 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "4747 shippingservice \n", + "20396 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc \n", + "20336 Microsoft.AspNetCore \n", + "20332 OpenTelemetry.Instrumentation.GrpcNetClient \n", + "20100 System.Net.Http \n", + "20671 OpenTelemetry.Instrumentation.StackExchangeRedis \n", + "20672 OpenTelemetry.Instrumentation.StackExchangeRedis \n", + "20400 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp \n", + "20244 OpenTelemetry::Instrumentation::Rack \n", + "20241 emailservice \n", + "20238 OpenTelemetry::Instrumentation::Sinatra \n", + "20237 OpenTelemetry::Instrumentation::Sinatra \n", + "20403 checkoutservice \n", + "20999 @opentelemetry/instrumentation-grpc \n", + "20998 @opentelemetry/instrumentation-grpc \n", + "20192 io.opentelemetry.kafka-clients-0.11 \n", + "\n", + " name \\\n", + "6406 POST \n", + "6768 POST \n", + "21080 POST /api/checkout \n", + "6350 ingress \n", + "6349 router frontend egress \n", + "20269 grpc.oteldemo.CheckoutService/PlaceOrder \n", + "21079 executing api route (pages) /api/checkout \n", + "20397 oteldemo.CheckoutService/PlaceOrder \n", + "4686 prepareOrderItemsAndShippingQuoteFromCart \n", + "4670 oteldemo.CartService/GetCart \n", + "4611 POST /oteldemo.CartService/GetCart \n", + "4630 HGET \n", + "4671 oteldemo.ProductCatalogService/GetProduct \n", + "4650 oteldemo.ProductCatalogService/GetProduct \n", + "4672 oteldemo.CurrencyService/Convert \n", + "4256 CurrencyService/Convert \n", + "4673 oteldemo.ProductCatalogService/GetProduct \n", + "4651 oteldemo.ProductCatalogService/GetProduct \n", + "4674 oteldemo.CurrencyService/Convert \n", + "4257 CurrencyService/Convert \n", + "4675 oteldemo.ShippingService/GetQuote \n", + "4746 oteldemo.ShippingService/GetQuote \n", + "4745 POST \n", + "4740 POST /getquote \n", + "4739 {closure} \n", + "4736 calculate-quote \n", + "4676 oteldemo.CurrencyService/Convert \n", + "4258 CurrencyService/Convert \n", + "4677 oteldemo.PaymentService/Charge \n", + "4963 grpc.oteldemo.PaymentService/Charge \n", + "4960 charge \n", + "4678 oteldemo.ShippingService/ShipOrder \n", + "4747 oteldemo.ShippingService/ShipOrder \n", + "20396 oteldemo.CartService/EmptyCart \n", + "20336 POST /oteldemo.CartService/EmptyCart \n", + "20332 flagd.evaluation.v1.Service/ResolveBoolean \n", + "20100 POST \n", + "20671 HMSET \n", + "20672 EXPIRE \n", + "20400 HTTP POST \n", + "20244 POST /send_order_confirmation \n", + "20241 send_email \n", + "20238 sinatra.render_template \n", + "20237 sinatra.render_template \n", + "20403 orders publish \n", + "20999 grpc.oteldemo.ProductCatalogService/GetProduct \n", + "20998 grpc.oteldemo.ProductCatalogService/GetProduct \n", + "20192 orders process \n", + "\n", + " span_id \\\n", + "6406 b'\\xb7W\\x1f\\x9d+~#R' \n", + "6768 b'\\x02J\\xa0r\\xe6uLD' \n", + "21080 b'\\xae\\x04\\xe8\\x94\\xfd\\r\\xedj' \n", + "6350 b'\\x14K\\xab\\xa5\\x02\\xe6\\xeb\\xd7' \n", + "6349 b'm\\xcd\\xb1\\xa3\\xf9nf[' \n", + "20269 b'07\\xae9\\xbd~\\xd8v' \n", + "21079 b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3' \n", + "20397 b'y*\\x1b+\\xa6a\\xe79' \n", + "4686 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' \n", + "4670 b'\\x91\\x94\\x8a\\xd4\\xf4\\x8ei\\x1b' \n", + "4611 b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "4630 b'\\xfb}\\x9f\\x84\\xf6\\xdb\\xaa\\t' \n", + "4671 b'N\\x976\\xfd\\xffb4\\x00' \n", + "4650 b'C\\x84nx\\xa3\\xaf\\\\\\x1f' \n", + "4672 b'\\xa2n\\xec\\x97w66\\xa3' \n", + "4256 b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "4673 b'\\xf2\\x88v\\xfc\\xf1\\xbd\\x06g' \n", + "4651 b'\\xe2\\x93\\xd9\\xdd\\x8c\\xe2\\xc5\\xcf' \n", + "4674 b'\\xc9\\xf5\\xa6\\xcc\\xde\\x94\\xd7\\x0f' \n", + "4257 b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "4675 b'`v\\xa4KH\\x9d\\xfb\\xee' \n", + "4746 b'[\\xa5\\xf5\\x156\\xae\\x1d\\x0b' \n", + "4745 b'\\xb5\\xb2\\xdf=\\xc0(\\x9eA' \n", + "4740 b'\\xf7K;F~\\xb3H\\xa0' \n", + "4739 b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "4736 b';\\xe5\\xe5\\x8ey\\x92\\xc5\\xfa' \n", + "4676 b';\\xb0}Cwa\\x81G' \n", + "4258 b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "4677 b'H\\xe2\\x02\\xa1r+P\\xab' \n", + "4963 b\"'\\xa0s\\x8516&w\" \n", + "4960 b'\\xf0\\xa4I\\xcc\\xdc\\xa8\\xe4:' \n", + "4678 b'\\xc7\\xb6A\\xc5E\\xa8\\xdc\\x15' \n", + "4747 b'\\xe8\\xcd\\x0c\\x11\\xdea\\xda\\x0e' \n", + "20396 b'\\xeei\\xa0\\x1c\\xfc_\\x1a\\xa3' \n", + "20336 b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "20332 b'\\xea\\x87\\xec\\xa9\\xac\\x11T\\xa9' \n", + "20100 b'\\x94\\xac\\x8c\\xe1\\xf0\\xc2h9' \n", + "20671 b'\\x7f(e\\xf7ERJ|' \n", + "20672 b'\\x8aQ|\\xc4\\xfc\\xdfW\\x12' \n", + "20400 b'\\x03\\xcf\\xca\\xf6\\x1e\\xc8\\x1b\\xe3' \n", + "20244 b'\\x9a\\xdc\\xd4iJ]a\\x80' \n", + "20241 b'\\xc1X\\xb5$lN\\x8d\\x7f' \n", + "20238 b'\\x962\\xf3O\\xf9\\xfd\\x97\\xac' \n", + "20237 b'\\xdf \\xa0\\xfe\\xc9&P\\x9c' \n", + "20403 b'\\x0b \\xf9x\\xc9#\\x1b\\x81' \n", + "20999 b'\\x08#1\\xe9\\x93\\xb9P\\x8b' \n", + "20998 b'\\xba\\xad\\xceB\\x99\\x00\\x15`' \n", + "20192 b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "\n", + " parent_span_id kind \\\n", + "6406 b'' b'SPAN_KIND_CLIENT' \n", + "6768 b'm\\xcd\\xb1\\xa3\\xf9nf[' b'SPAN_KIND_SERVER' \n", + "21080 b'\\x02J\\xa0r\\xe6uLD' b'SPAN_KIND_SERVER' \n", + "6350 b'\\xb7W\\x1f\\x9d+~#R' b'SPAN_KIND_SERVER' \n", + "6349 b'\\x14K\\xab\\xa5\\x02\\xe6\\xeb\\xd7' b'SPAN_KIND_CLIENT' \n", + "20269 b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3' b'SPAN_KIND_CLIENT' \n", + "21079 b'\\xae\\x04\\xe8\\x94\\xfd\\r\\xedj' b'SPAN_KIND_INTERNAL' \n", + "20397 b'07\\xae9\\xbd~\\xd8v' b'SPAN_KIND_SERVER' \n", + "4686 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_INTERNAL' \n", + "4670 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4611 b'\\x91\\x94\\x8a\\xd4\\xf4\\x8ei\\x1b' b'SPAN_KIND_SERVER' \n", + "4630 b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' b'SPAN_KIND_CLIENT' \n", + "4671 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4650 b'N\\x976\\xfd\\xffb4\\x00' b'SPAN_KIND_SERVER' \n", + "4672 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4256 b'\\xa2n\\xec\\x97w66\\xa3' b'SPAN_KIND_SERVER' \n", + "4673 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4651 b'\\xf2\\x88v\\xfc\\xf1\\xbd\\x06g' b'SPAN_KIND_SERVER' \n", + "4674 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4257 b'\\xc9\\xf5\\xa6\\xcc\\xde\\x94\\xd7\\x0f' b'SPAN_KIND_SERVER' \n", + "4675 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4746 b'`v\\xa4KH\\x9d\\xfb\\xee' b'SPAN_KIND_SERVER' \n", + "4745 b'[\\xa5\\xf5\\x156\\xae\\x1d\\x0b' b'SPAN_KIND_CLIENT' \n", + "4740 b'\\xb5\\xb2\\xdf=\\xc0(\\x9eA' b'SPAN_KIND_SERVER' \n", + "4739 b'\\xf7K;F~\\xb3H\\xa0' b'SPAN_KIND_INTERNAL' \n", + "4736 b'\\xaa\\xb6\\xba-\\x11-{\\xe0' b'SPAN_KIND_INTERNAL' \n", + "4676 b'\\xc3I\\xd3\\x17\\xc28\\xb8\\x11' b'SPAN_KIND_CLIENT' \n", + "4258 b';\\xb0}Cwa\\x81G' b'SPAN_KIND_SERVER' \n", + "4677 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_CLIENT' \n", + "4963 b'H\\xe2\\x02\\xa1r+P\\xab' b'SPAN_KIND_SERVER' \n", + "4960 b\"'\\xa0s\\x8516&w\" b'SPAN_KIND_INTERNAL' \n", + "4678 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_CLIENT' \n", + "4747 b'\\xc7\\xb6A\\xc5E\\xa8\\xdc\\x15' b'SPAN_KIND_SERVER' \n", + "20396 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_CLIENT' \n", + "20336 b'\\xeei\\xa0\\x1c\\xfc_\\x1a\\xa3' b'SPAN_KIND_SERVER' \n", + "20332 b'\\xb4A-n1\\x1b\\\\\\xb1' b'SPAN_KIND_CLIENT' \n", + "20100 b'\\xea\\x87\\xec\\xa9\\xac\\x11T\\xa9' b'SPAN_KIND_CLIENT' \n", + "20671 b'\\xb4A-n1\\x1b\\\\\\xb1' b'SPAN_KIND_CLIENT' \n", + "20672 b'\\xb4A-n1\\x1b\\\\\\xb1' b'SPAN_KIND_CLIENT' \n", + "20400 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_CLIENT' \n", + "20244 b'\\x03\\xcf\\xca\\xf6\\x1e\\xc8\\x1b\\xe3' b'SPAN_KIND_SERVER' \n", + "20241 b'\\x9a\\xdc\\xd4iJ]a\\x80' b'SPAN_KIND_INTERNAL' \n", + "20238 b'\\xc1X\\xb5$lN\\x8d\\x7f' b'SPAN_KIND_INTERNAL' \n", + "20237 b'\\x962\\xf3O\\xf9\\xfd\\x97\\xac' b'SPAN_KIND_INTERNAL' \n", + "20403 b'y*\\x1b+\\xa6a\\xe79' b'SPAN_KIND_PRODUCER' \n", + "20999 b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3' b'SPAN_KIND_CLIENT' \n", + "20998 b'\\x9a\\xde\\xdb\\x93\\xb6d\\t\\xa3' b'SPAN_KIND_CLIENT' \n", + "20192 b'\\x0b \\xf9x\\xc9#\\x1b\\x81' b'SPAN_KIND_CONSUMER' \n", + "\n", + " status.code start_time_unix_nano end_time_unix_nano \\\n", + "6406 b'STATUS_CODE_ERROR' 1723627134056954401 1723627149059298090 \n", + "6768 b'STATUS_CODE_UNSET' 1723627134057000000 1723627149058150531 \n", + "21080 b'STATUS_CODE_UNSET' 1723627134057000000 1723627338572770300 \n", + "6350 b'STATUS_CODE_UNSET' 1723627134057382000 1723627149058713000 \n", + "6349 b'STATUS_CODE_UNSET' 1723627134057489000 1723627149058502000 \n", + "20269 b'STATUS_CODE_UNSET' 1723627134058000000 1723627315976950050 \n", + "21079 b'STATUS_CODE_UNSET' 1723627134058000000 1723627338573434952 \n", + "20397 b'STATUS_CODE_UNSET' 1723627134079549113 1723627315976423603 \n", + "4686 b'STATUS_CODE_UNSET' 1723627134093561224 1723627134108062837 \n", + "4670 b'STATUS_CODE_UNSET' 1723627134093577389 1723627134101933411 \n", + "4611 b'STATUS_CODE_UNSET' 1723627134099683000 1723627134101808700 \n", + "4630 b'STATUS_CODE_UNSET' 1723627134101562600 1723627134101747000 \n", + "4671 b'STATUS_CODE_UNSET' 1723627134101968965 1723627134102334463 \n", + "4650 b'STATUS_CODE_UNSET' 1723627134102144320 1723627134102214536 \n", + "4672 b'STATUS_CODE_UNSET' 1723627134102353744 1723627134103685804 \n", + "4256 b'STATUS_CODE_OK' 1723627134102633710 1723627134103191583 \n", + "4673 b'STATUS_CODE_UNSET' 1723627134103738406 1723627134103997508 \n", + "4651 b'STATUS_CODE_UNSET' 1723627134103853780 1723627134103908418 \n", + "4674 b'STATUS_CODE_UNSET' 1723627134104012426 1723627134104800998 \n", + "4257 b'STATUS_CODE_OK' 1723627134104150369 1723627134104440269 \n", + "4675 b'STATUS_CODE_UNSET' 1723627134104818265 1723627134106550710 \n", + "4746 b'STATUS_CODE_UNSET' 1723627134105018966 1723627134106383436 \n", + "4745 b'STATUS_CODE_UNSET' 1723627134105078190 1723627134106342907 \n", + "4740 b'STATUS_CODE_UNSET' 1723627134105986737 1723627134106180810 \n", + "4739 b'STATUS_CODE_UNSET' 1723627134106048384 1723627134106164128 \n", + "4736 b'STATUS_CODE_UNSET' 1723627134106079119 1723627134106101626 \n", + "4676 b'STATUS_CODE_UNSET' 1723627134106578256 1723627134107595632 \n", + "4258 b'STATUS_CODE_OK' 1723627134106784044 1723627134107193722 \n", + "4677 b'STATUS_CODE_UNSET' 1723627134108971686 1723627134110905442 \n", + "4963 b'STATUS_CODE_UNSET' 1723627134109000000 1723627134109599744 \n", + "4960 b'STATUS_CODE_UNSET' 1723627134110000000 1723627134110257706 \n", + "4678 b'STATUS_CODE_UNSET' 1723627134110999395 1723627134111224968 \n", + "4747 b'STATUS_CODE_UNSET' 1723627134111135712 1723627134111150420 \n", + "20396 b'STATUS_CODE_UNSET' 1723627134111242474 1723627315972980775 \n", + "20336 b'STATUS_CODE_UNSET' 1723627134111432000 1723627315972823800 \n", + "20332 b'STATUS_CODE_UNSET' 1723627134127184300 1723627315972240000 \n", + "20100 b'STATUS_CODE_UNSET' 1723627134130491200 1723627310259500300 \n", + "20671 b'STATUS_CODE_UNSET' 1723627315972353300 1723627315972570100 \n", + "20672 b'STATUS_CODE_UNSET' 1723627315972581200 1723627315972759200 \n", + "20400 b'STATUS_CODE_UNSET' 1723627315973077991 1723627315976135541 \n", + "20244 b'STATUS_CODE_UNSET' 1723627315973702915 1723627315976089641 \n", + "20241 b'STATUS_CODE_UNSET' 1723627315974188862 1723627315975795884 \n", + "20238 b'STATUS_CODE_UNSET' 1723627315974219223 1723627315974462422 \n", + "20237 b'STATUS_CODE_UNSET' 1723627315974345515 1723627315974448068 \n", + "20403 b'STATUS_CODE_UNSET' 1723627315976198414 1723627315976381720 \n", + "20999 b'STATUS_CODE_UNSET' 1723627315977000000 1723627338572861297 \n", + "20998 b'STATUS_CODE_UNSET' 1723627315977000000 1723627338572448348 \n", + "20192 b'STATUS_CODE_UNSET' 1723627315980180674 1723627315980943912 \n", + "\n", + " a_app.cart.items.count a_app.currency.conversion.from \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 4.0 \n", + "4670 \n", + "4611 4.0 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 USD \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 USD \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 USD \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.currency.conversion.to a_app.email.recipient a_app.order.amount \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 993.0 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 USD \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 USD \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 USD \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 jack@example.com \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.order.id a_app.order.items.count \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 3a08999f-5a1e-11ef-ac87-9e6131d66c8e 2.0 \n", + "4686 2.0 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 3a08999f-5a1e-11ef-ac87-9e6131d66c8e \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.payment.amount a_app.payment.card_type a_app.payment.card_valid \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 993.8 \n", + "4960 visa True \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.payment.charged a_app.product.id \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 1YMWWN1N4O \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 2ZYFJ3GM2N \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 False \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.product.name a_app.product.quantity \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 Eclipsmart Travel Refractor Telescope \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 Roof Binoculars \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.quote.cost.total a_app.quote.items.count a_app.shipping.amount \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 234.0 \n", + "4686 234.0 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 234.0 4.0 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.shipping.cost.total a_app.shipping.items.count \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 234.0 4.0 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.shipping.tracking.id a_app.shipping.zip_code \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 fea5c3a6-b231-4548-b8fb-4b5bd4d953e9 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 94103 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 fea5c3a6-b231-4548-b8fb-4b5bd4d953e9 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_app.user.currency a_app.user.id \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 USD 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "4686 \n", + "4670 \n", + "4611 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_feature_flag.key a_feature_flag.provider_name a_feature_flag.variant \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 cartServiceFailure flagd Provider off \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_db.redis.database_index a_db.redis.flags \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 0.0 None \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 0.0 DemandMaster \n", + "20672 0.0 DemandMaster \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_db.statement a_db.system \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 HGET 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 redis \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 HMSET 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 redis \n", + "20672 EXPIRE 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 redis \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_messaging.client_id a_messaging.destination.name \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 orders \n", + "20999 \n", + "20998 \n", + "20192 consumer-frauddetectionservice-1 orders \n", + "\n", + " a_messaging.destination.partition.id a_messaging.kafka.consumer.group \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 0 frauddetectionservice \n", + "\n", + " a_messaging.operation a_messaging.system \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 publish kafka \n", + "20999 \n", + "20998 \n", + "20192 process kafka \n", + "\n", + " a_grpc.method a_grpc.status_code a_rpc.method \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 PlaceOrder \n", + "21079 \n", + "20397 PlaceOrder \n", + "4686 \n", + "4670 GetCart \n", + "4611 /oteldemo.CartService/GetCart 0 \n", + "4630 \n", + "4671 GetProduct \n", + "4650 GetProduct \n", + "4672 Convert \n", + "4256 Convert \n", + "4673 GetProduct \n", + "4651 GetProduct \n", + "4674 Convert \n", + "4257 Convert \n", + "4675 GetQuote \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 Convert \n", + "4258 Convert \n", + "4677 Charge \n", + "4963 Charge \n", + "4960 \n", + "4678 ShipOrder \n", + "4747 \n", + "20396 EmptyCart \n", + "20336 /oteldemo.CartService/EmptyCart 0 \n", + "20332 ResolveBoolean \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 GetProduct \n", + "20998 GetProduct \n", + "20192 \n", + "\n", + " a_rpc.service a_rpc.system a_http.method \\\n", + "6406 POST \n", + "6768 POST \n", + "21080 POST \n", + "6350 POST \n", + "6349 \n", + "20269 oteldemo.CheckoutService grpc \n", + "21079 \n", + "20397 oteldemo.CheckoutService grpc \n", + "4686 \n", + "4670 oteldemo.CartService grpc \n", + "4611 \n", + "4630 \n", + "4671 oteldemo.ProductCatalogService grpc \n", + "4650 oteldemo.ProductCatalogService grpc \n", + "4672 oteldemo.CurrencyService grpc \n", + "4256 oteldemo.CurrencyService grpc \n", + "4673 oteldemo.ProductCatalogService grpc \n", + "4651 oteldemo.ProductCatalogService grpc \n", + "4674 oteldemo.CurrencyService grpc \n", + "4257 oteldemo.CurrencyService grpc \n", + "4675 oteldemo.ShippingService grpc \n", + "4746 grpc \n", + "4745 POST \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 oteldemo.CurrencyService grpc \n", + "4258 oteldemo.CurrencyService grpc \n", + "4677 oteldemo.PaymentService grpc \n", + "4963 oteldemo.PaymentService grpc \n", + "4960 \n", + "4678 oteldemo.ShippingService grpc \n", + "4747 grpc \n", + "20396 oteldemo.CartService grpc \n", + "20336 \n", + "20332 flagd.evaluation.v1.Service grpc \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 POST \n", + "20244 POST \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 oteldemo.ProductCatalogService grpc \n", + "20998 oteldemo.ProductCatalogService grpc \n", + "20192 \n", + "\n", + " a_http.request.method a_http.route \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 POST /oteldemo.CartService/GetCart \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 POST /getquote \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 POST /oteldemo.CartService/EmptyCart \n", + "20332 \n", + "20100 POST \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 /send_order_confirmation \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_http.target \\\n", + "6406 \n", + "6768 /api/checkout \n", + "21080 /api/checkout \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 /send_order_confirmation \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_http.url \\\n", + "6406 http://opentelemetry-demo-frontendproxy:8080/api/checkout \n", + "6768 http://opentelemetry-demo-frontendproxy:8080/api/checkout \n", + "21080 \n", + "6350 http://opentelemetry-demo-frontendproxy:8080/api/checkout \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 http://opentelemetry-demo-quoteservice:8080/getquote \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 http://opentelemetry-demo-emailservice:8080/send_order_confirmation \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_url.full \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 http://opentelemetry-demo-quoteservice:8080/getquote \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 http://opentelemetry-demo-flagd:8013/flagd.evaluation.v1.Service/ResolveBoolean \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_url.path a_http.response.status_code \\\n", + "6406 \n", + "6768 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 /oteldemo.CartService/GetCart 200.0 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 \n", + "4740 /getquote 200.0 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 /oteldemo.CartService/EmptyCart 200.0 \n", + "20332 \n", + "20100 200.0 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 \n", + "\n", + " a_http.status_code a_net.peer.name \\\n", + "6406 504.0 \n", + "6768 200.0 \n", + "21080 200.0 \n", + "6350 504 \n", + "6349 0 \n", + "20269 opentelemetry-demo-checkoutservice \n", + "21079 200.0 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 opentelemetry-demo-valkey \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 200 \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 opentelemetry-demo-valkey \n", + "20672 opentelemetry-demo-valkey \n", + "20400 200.0 opentelemetry-demo-emailservice \n", + "20244 200.0 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 opentelemetry-demo-productcatalogservice \n", + "20998 opentelemetry-demo-productcatalogservice \n", + "20192 \n", + "\n", + " a_http.host \n", + "6406 \n", + "6768 opentelemetry-demo-frontendproxy:8080 \n", + "21080 \n", + "6350 \n", + "6349 \n", + "20269 \n", + "21079 \n", + "20397 \n", + "4686 \n", + "4670 \n", + "4611 \n", + "4630 \n", + "4671 \n", + "4650 \n", + "4672 \n", + "4256 \n", + "4673 \n", + "4651 \n", + "4674 \n", + "4257 \n", + "4675 \n", + "4746 \n", + "4745 opentelemetry-demo-quoteservice \n", + "4740 \n", + "4739 \n", + "4736 \n", + "4676 \n", + "4258 \n", + "4677 \n", + "4963 \n", + "4960 \n", + "4678 \n", + "4747 \n", + "20396 \n", + "20336 \n", + "20332 \n", + "20100 \n", + "20671 \n", + "20672 \n", + "20400 \n", + "20244 opentelemetry-demo-emailservice:8080 \n", + "20241 \n", + "20238 \n", + "20237 \n", + "20403 \n", + "20999 \n", + "20998 \n", + "20192 " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trace = ext_df[ext_df['trace_id'] == trace_id].sort_values('start_time_unix_nano')\n", + "\n", + "trace[\n", + " [\n", + " # span emitter:\n", + " 'ra_service.name', 'ra_telemetry.sdk.language', 'ra_process.command', 'ra_process.executable.path', 'scope_name',\n", + "\n", + " # the span itself:\n", + " 'name', 'span_id', 'parent_span_id', 'kind', 'status.code', 'start_time_unix_nano', 'end_time_unix_nano',\n", + " \n", + " # some custom span meta-data emitted by the demo Astronomy webshop microservices:\n", + " 'a_app.cart.items.count', 'a_app.currency.conversion.from', 'a_app.currency.conversion.to', 'a_app.email.recipient',\n", + " 'a_app.order.amount', 'a_app.order.id', 'a_app.order.items.count', 'a_app.payment.amount', 'a_app.payment.card_type',\n", + " 'a_app.payment.card_valid', 'a_app.payment.charged', 'a_app.product.id', 'a_app.product.name', 'a_app.product.quantity',\n", + " 'a_app.quote.cost.total', 'a_app.quote.items.count', 'a_app.shipping.amount', 'a_app.shipping.cost.total',\n", + " 'a_app.shipping.items.count', 'a_app.shipping.tracking.id', 'a_app.shipping.zip_code', 'a_app.user.currency', 'a_app.user.id',\n", + "\n", + " # feature flags usage attributes:\n", + " 'a_feature_flag.key', 'a_feature_flag.provider_name', 'a_feature_flag.variant',\n", + "\n", + " # spans emitted by a redis client lib:\n", + " 'a_db.redis.database_index', 'a_db.redis.flags', 'a_db.statement', 'a_db.system',\n", + "\n", + " # Apache Kafka span attributes:\n", + " 'a_messaging.client_id', 'a_messaging.destination.name', 'a_messaging.destination.partition.id', 'a_messaging.kafka.consumer.group',\n", + " 'a_messaging.operation', 'a_messaging.system',\n", + " \n", + " # gRPC-related attributes:\n", + " 'a_grpc.method', 'a_grpc.status_code', 'a_rpc.method', 'a_rpc.service', 'a_rpc.system',\n", + "\n", + " # HTTP-related attributes:\n", + " 'a_http.method', 'a_http.request.method', 'a_http.route', 'a_http.target', 'a_http.url', 'a_url.full', 'a_url.path',\n", + " 'a_http.response.status_code', 'a_http.status_code', 'a_net.peer.name','a_http.host',\n", + " ]\n", + "].fillna('')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "id": "b09e3e3d-ec97-4d05-8131-93d1f91c1144", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Correlating signals\n", + "\n", + "Earlier, we mentioned that `traces` are particularly useful to get the full picture (including other telemetry signals) of a running system. We also saved a few `logs` to quickly illustrate how this can be done.\n", + "\n", + "We'll now 'join' those `logs` to their respective `spans` and show details about the context surrounding a given log message:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Correlating signals\n", + "\n", + "Earlier, we mentioned that `traces` are particularly useful to get the full picture (including other telemetry signals) of a running system. We also saved a few `logs` to quickly illustrate how this can be done.\n", + "\n", + "We'll now 'join' those `logs` to their respective `spans` and show details about the context surrounding a given log message:" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "id": "73b75ccc-205e-4ea4-98d5-a2437f92af96", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
severity_textbodya_userIdnamea_app.currency.conversion.froma_app.currency.conversion.toa_app.cart.items.counta_messaging.destination.namea_messaging.destination.partition.ida_messaging.kafka.message.offseta_grpc.methoda_rpc.methoda_rpc.service
span_id
b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7'INFOConvert conversion successfulCurrencyService/ConvertUSDUSDConvertoteldemo.CurrencyService
b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A'INFOConvert conversion successfulCurrencyService/ConvertUSDUSDConvertoteldemo.CurrencyService
b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f'INFOConvert conversion successfulCurrencyService/ConvertUSDUSDConvertoteldemo.CurrencyService
b'\\xaa\\xb6\\xba-\\x11-{\\xe0'INFOCalculated quote{closure}
b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$'InformationGetCartAsync called with userId={userId}39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1POST /oteldemo.CartService/GetCart4.0/oteldemo.CartService/GetCart
b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc'INFOConsumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10orders processorders09.0
b'\\xb4A-n1\\x1b\\\\\\xb1'InformationEmptyCartAsync called with userId={userId}39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1POST /oteldemo.CartService/EmptyCart/oteldemo.CartService/EmptyCart
\n", + "
" + ], + "text/plain": [ + " severity_text \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' INFO \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' INFO \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' INFO \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' INFO \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' Information \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' INFO \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' Information \n", + "\n", + " body \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' Convert conversion successful \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' Convert conversion successful \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' Convert conversion successful \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' Calculated quote \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' GetCartAsync called with userId={userId} \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' Consumed record with orderId: 3a08999f-5a1e-11ef-ac87-9e6131d66c8e, and updated total count to: 10 \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' EmptyCartAsync called with userId={userId} \n", + "\n", + " a_userId \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' 39fe30ba-5a1e-11ef-88c4-32eb2a9fa2f1 \n", + "\n", + " name \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' CurrencyService/Convert \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' CurrencyService/Convert \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' CurrencyService/Convert \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' {closure} \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' POST /oteldemo.CartService/GetCart \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' orders process \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' POST /oteldemo.CartService/EmptyCart \n", + "\n", + " a_app.currency.conversion.from \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' USD \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' USD \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' USD \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_app.currency.conversion.to \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' USD \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' USD \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' USD \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_app.cart.items.count \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' 4.0 \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_messaging.destination.name \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' orders \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_messaging.destination.partition.id \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' 0 \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_messaging.kafka.message.offset \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' 9.0 \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' \n", + "\n", + " a_grpc.method \\\n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' /oteldemo.CartService/GetCart \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' /oteldemo.CartService/EmptyCart \n", + "\n", + " a_rpc.method a_rpc.service \n", + "span_id \n", + "b'\\xac\\x05@P\\x17\\xa4\\xab\\xe7' Convert oteldemo.CurrencyService \n", + "b'\\x83d\\xf4\\xbe\\x84\\xb6\\xf9A' Convert oteldemo.CurrencyService \n", + "b'\\x8c\\xb4\\xda\\xcb\\x12\\x85\\xa6f' Convert oteldemo.CurrencyService \n", + "b'\\xaa\\xb6\\xba-\\x11-{\\xe0' \n", + "b'\\x04\\xbe\\xa8\\xb3\\xaa\\xf4<$' \n", + "b'\\xf7\\xf1\\xd2\\xf1\\xba\\xeb4\\xfc' \n", + "b'\\xb4A-n1\\x1b\\\\\\xb1' " + ] + }, + "execution_count": 93, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "logs_with_trace=pd.concat([trace_logs.set_index('span_id')[['severity_text', 'body', 'a_userId']], trace.set_index('span_id')], axis=1, join='inner')\n", + "logs_with_trace[\n", + " [\n", + " # taken from trace_logs:\n", + " 'severity_text', 'body', 'a_userId',\n", + " # taken from trace:\n", + " 'name', 'a_app.currency.conversion.from', 'a_app.currency.conversion.to', 'a_app.cart.items.count',\n", + " 'a_messaging.destination.name', 'a_messaging.destination.partition.id', 'a_messaging.kafka.message.offset',\n", + " 'a_grpc.method', 'a_rpc.method', 'a_rpc.service'\n", + " ]\n", + "].fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "id": "241f4d86-0dbe-4ab8-a9f7-2d431a833564", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "ext_df['a_http.status_code']=pd.to_numeric(ext_df['a_http.status_code'], errors='coerce')\n", + "ext_df['a_net.host.port']=pd.to_numeric(ext_df['a_net.host.port'], errors='coerce')\n", + "ext_df['a_net.peer.port']=pd.to_numeric(ext_df['a_net.peer.port'], errors='coerce')\n", + "\n", + "ext_df.convert_dtypes().to_parquet('otel-demo-app/traces.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "id": "aa89f611-b7f1-444f-91bf-35846d59b0cc", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "---\n", + "\n", + "# Profiles signal\n", + "\n", + "> ***Important:*** OpenTelemetry `profiles` signal is still in its early and experimental stage.\n", + ">\n", + "> Examples here will almost certainly change as development progresses.\n", + ">\n", + "> To collect the data for the following sections we used an early version of [OpenTelemetry eBPF Profiler,](https://github.com/open-telemetry/opentelemetry-ebpf-profiler) running it separately.\n", + "> This means that the DataFrames below contain data from the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) (same demo webshop as in the examples of other signals above) and a number of other processes running on the same host.\n", + "\n", + "The last signal type in this demo is the `profiles` signal and its a new extension to OpenTelemetry. The intent of performance profiling is to help you analyze the performance of your app and find code \n", + "sections to improve.\n", + "\n", + "Somewhat similar to the `traces` signal, but on the lower 'code' level, profiling measures how often each method is called and how much time a CPU spends executing that method.\n", + "As profiling data is based on **stack frames** - you also get details like where was that method called from. Unlike `traces`, `profiles` can get deeply into a running system and record calls to system libraries and kernel calls.\n", + "These allow you to understand the performance of your app including aspects like how efficiently it reads data from disks, how much it spends 'sleeping' on network I/O and other potential bottlenecks.\n", + "\n", + "In the saved Parquet files, a `profile` will be measured from `start_time_unix_nano` to `end_time_unix_nano` and will be assigned an unique `profile_id`. It can also have meta-data in `profile_attributes`.\n", + "\n", + "Each `profile` contains a number of **samples**, collected over a `period` of a `period_type`. Samples are collected at `time_nanos` with a possible `duration_nanos`. The **Stack frame** of each sample is saved into the `locations`\n", + "column and can be identified by its `stacktrace_id`. Additionally, **samples** can have associated `timestamps_unix_nano`, a link to a `trace_id` and `span_id`, `labels` and `attributes`. A sample will also have one or more `value` of `type`.\n", + "\n", + "Also present is the `resource` and `scope` meta-data (see the `logs` example at the top for more on these).\n", + "\n", + "The [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) 'flattens' incoming signals down to a each `value` of each **sample** and adds extra columns:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `resource_seq_no`\n", + "- `profile_seq_no`\n", + "- `sample_seq_no`\n", + "- `value_seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "These columns are added to assist with more advanced analytics and are not part of the original OpenTelemetry data schema.\n", + "\n", + "Now, let's load `profiles` into a DataFrame and extract meta-data:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "---\n", + "\n", + "# Profiles signal\n", + "\n", + "> ***Important:*** OpenTelemetry `profiles` signal is still in its early and experimental stage.\n", + ">\n", + "> Examples here will almost certainly change as development progresses.\n", + ">\n", + "> To collect the data for the following sections we used an early version of [OpenTelemetry eBPF Profiler,](https://github.com/open-telemetry/opentelemetry-ebpf-profiler) running it separately.\n", + "> This means that the DataFrames below contain data from the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) (same demo webshop as in the examples of other signals above) and a number of other processes running on the same host.\n", + "\n", + "The last signal type in this demo is the `profiles` signal and its a new extension to OpenTelemetry. The intent of performance profiling is to help you analyze the performance of your app and find code \n", + "sections to improve.\n", + "\n", + "Somewhat similar to the `traces` signal, but on the lower 'code' level, profiling measures how often each method is called and how much time a CPU spends executing that method.\n", + "As profiling data is based on **stack frames** - you also get details like where was that method called from. Unlike `traces`, `profiles` can get deeply into a running system and record calls to system libraries and kernel calls.\n", + "These allow you to understand the performance of your app including aspects like how efficiently it reads data from disks, how much it spends 'sleeping' on network I/O and other potential bottlenecks.\n", + "\n", + "In the saved Parquet files, a `profile` will be measured from `start_time_unix_nano` to `end_time_unix_nano` and will be assigned an unique `profile_id`. It can also have meta-data in `profile_attributes`.\n", + "\n", + "Each `profile` contains a number of **samples**, collected over a `period` of a `period_type`. Samples are collected at `time_nanos` with a possible `duration_nanos`. The **Stack frame** of each sample is saved into the `locations`\n", + "column and can be identified by its `stacktrace_id`. Additionally, **samples** can have associated `timestamps_unix_nano`, a link to a `trace_id` and `span_id`, `labels` and `attributes`. A sample will also have one or more `value` of `type`.\n", + "\n", + "Also present is the `resource` and `scope` meta-data (see the `logs` example at the top for more on these).\n", + "\n", + "The [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet) 'flattens' incoming signals down to a each `value` of each **sample** and adds extra columns:\n", + "- `batch_timestamp`\n", + "- `batch_UUID`\n", + "- `resource_seq_no`\n", + "- `profile_seq_no`\n", + "- `sample_seq_no`\n", + "- `value_seq_no`\n", + "- `is_valid`\n", + "- `error_message`\n", + "\n", + "These columns are added to assist with more advanced analytics and are not part of the original OpenTelemetry data schema.\n", + "\n", + "Now, let's load `profiles` into a DataFrame and extract meta-data:" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "id": "6977c387-74b4-46d3-a2e1-8a3691639018", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
batch_timestampbatch_UUIDresource_seq_noresource_attributesresource_dropped_attributes_countresource_schema_urlscope_seq_noscope_namescope_versionscope_attributesscope_dropped_attributes_countprofile_schema_urlprofile_seq_noprofile_idstart_time_unix_nanoend_time_unix_nanoprofile_attributesprofile_dropped_attributes_countoriginal_payload_formatoriginal_payloaddrop_frameskeep_framestime_nanosduration_nanosperiod_typeperiodcommentdefault_sample_typesample_seq_nostacktrace_idlocationslabelsattributestimestamps_unix_nanotrace_idspan_idvalue_seq_novaluetypeis_validerror_message
017247484183236710517f-b524-48fe-8305-4673e668f3dd0[{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl...00[]00b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'17247484170937361281724748417093736128[]0b''17247484170937361280{'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP...50000000[]0iTnG0oMa50esbnFSMfnBIA[{'mapping': {'memory_start': 0, 'memory_limit': 0, 'file_offset': 0, 'filename': '', 'build_id'...[][{'key': 'container.id', 'value': {'string_value': '/libpod_parent/libpod-0ba85205d552a1f876ba13...[1724748417243725237]b''b''01{'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC...True
117247484183236710517f-b524-48fe-8305-4673e668f3dd0[{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl...00[]00b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'17247484170937361281724748417093736128[]0b''17247484170937361280{'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP...50000000[]1WYqKLHYa3mJGRunbvCksdA[{'mapping': {'memory_start': 118784, 'memory_limit': 712704, 'file_offset': 118784, 'filename':...[][{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic...[1724748417943747682]b''b''01{'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC...True
217247484183236710517f-b524-48fe-8305-4673e668f3dd0[{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl...00[]00b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'17247484170937361281724748417093736128[]0b''17247484170937361280{'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP...50000000[]23q0cPtu3MDx3nKTLoW1dYw[{'mapping': {'memory_start': 118784, 'memory_limit': 712704, 'file_offset': 118784, 'filename':...[][{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic...[1724748417093736128]b''b''01{'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC...True
31724748423845d1e535ee-0e87-477e-b31d-5253c589b97f0[{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl...00[]00b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'17247484236437255541724748423643725554[]0b''17247484236437255540{'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP...50000000[]0wPV4lODzFxdwY_wpGV2k5g[{'mapping': {'memory_start': 4194304, 'memory_limit': 28229632, 'file_offset': 0, 'filename': '...[][{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic...[1724748423443695624]b''b''01{'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC...True
41724748423845d1e535ee-0e87-477e-b31d-5253c589b97f0[{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl...00[]00b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'17247484236437255541724748423643725554[]0b''17247484236437255540{'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP...50000000[]1llfhpWeEYOTUhd0Rz1B1mQ[{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...[][{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic...[1724748418343758562]b''b''01{'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC...True
\n", + "
" + ], + "text/plain": [ + " batch_timestamp batch_UUID resource_seq_no \\\n", + "0 1724748418323 6710517f-b524-48fe-8305-4673e668f3dd 0 \n", + "1 1724748418323 6710517f-b524-48fe-8305-4673e668f3dd 0 \n", + "2 1724748418323 6710517f-b524-48fe-8305-4673e668f3dd 0 \n", + "3 1724748423845 d1e535ee-0e87-477e-b31d-5253c589b97f 0 \n", + "4 1724748423845 d1e535ee-0e87-477e-b31d-5253c589b97f 0 \n", + "\n", + " resource_attributes \\\n", + "0 [{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl... \n", + "1 [{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl... \n", + "2 [{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl... \n", + "3 [{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl... \n", + "4 [{'key': 'host.id', 'value': {'string_value': '0', 'bool_value': None, 'int_value': None, 'doubl... \n", + "\n", + " resource_dropped_attributes_count resource_schema_url scope_seq_no \\\n", + "0 0 0 \n", + "1 0 0 \n", + "2 0 0 \n", + "3 0 0 \n", + "4 0 0 \n", + "\n", + " scope_name scope_version scope_attributes scope_dropped_attributes_count \\\n", + "0 [] 0 \n", + "1 [] 0 \n", + "2 [] 0 \n", + "3 [] 0 \n", + "4 [] 0 \n", + "\n", + " profile_schema_url profile_seq_no \\\n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "\n", + " profile_id start_time_unix_nano \\\n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "2 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "3 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "4 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "\n", + " end_time_unix_nano profile_attributes profile_dropped_attributes_count \\\n", + "0 1724748417093736128 [] 0 \n", + "1 1724748417093736128 [] 0 \n", + "2 1724748417093736128 [] 0 \n", + "3 1724748423643725554 [] 0 \n", + "4 1724748423643725554 [] 0 \n", + "\n", + " original_payload_format original_payload drop_frames keep_frames \\\n", + "0 b'' \n", + "1 b'' \n", + "2 b'' \n", + "3 b'' \n", + "4 b'' \n", + "\n", + " time_nanos duration_nanos \\\n", + "0 1724748417093736128 0 \n", + "1 1724748417093736128 0 \n", + "2 1724748417093736128 0 \n", + "3 1724748423643725554 0 \n", + "4 1724748423643725554 0 \n", + "\n", + " period_type \\\n", + "0 {'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP... \n", + "1 {'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP... \n", + "2 {'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP... \n", + "3 {'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP... \n", + "4 {'type': 'cpu', 'unit': 'nanoseconds', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSP... \n", + "\n", + " period comment default_sample_type sample_seq_no \\\n", + "0 50000000 [] 0 \n", + "1 50000000 [] 1 \n", + "2 50000000 [] 2 \n", + "3 50000000 [] 0 \n", + "4 50000000 [] 1 \n", + "\n", + " stacktrace_id \\\n", + "0 iTnG0oMa50esbnFSMfnBIA \n", + "1 WYqKLHYa3mJGRunbvCksdA \n", + "2 3q0cPtu3MDx3nKTLoW1dYw \n", + "3 wPV4lODzFxdwY_wpGV2k5g \n", + "4 llfhpWeEYOTUhd0Rz1B1mQ \n", + "\n", + " locations \\\n", + "0 [{'mapping': {'memory_start': 0, 'memory_limit': 0, 'file_offset': 0, 'filename': '', 'build_id'... \n", + "1 [{'mapping': {'memory_start': 118784, 'memory_limit': 712704, 'file_offset': 118784, 'filename':... \n", + "2 [{'mapping': {'memory_start': 118784, 'memory_limit': 712704, 'file_offset': 118784, 'filename':... \n", + "3 [{'mapping': {'memory_start': 4194304, 'memory_limit': 28229632, 'file_offset': 0, 'filename': '... \n", + "4 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "\n", + " labels \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "\n", + " attributes \\\n", + "0 [{'key': 'container.id', 'value': {'string_value': '/libpod_parent/libpod-0ba85205d552a1f876ba13... \n", + "1 [{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic... \n", + "2 [{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic... \n", + "3 [{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic... \n", + "4 [{'key': 'container.id', 'value': {'string_value': '/user.slice/user-1000.slice/user@1000.servic... \n", + "\n", + " timestamps_unix_nano trace_id span_id value_seq_no value \\\n", + "0 [1724748417243725237] b'' b'' 0 1 \n", + "1 [1724748417943747682] b'' b'' 0 1 \n", + "2 [1724748417093736128] b'' b'' 0 1 \n", + "3 [1724748423443695624] b'' b'' 0 1 \n", + "4 [1724748418343758562] b'' b'' 0 1 \n", + "\n", + " type \\\n", + "0 {'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC... \n", + "1 {'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC... \n", + "2 {'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC... \n", + "3 {'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC... \n", + "4 {'type': 'samples', 'unit': 'count', 'aggregation_temporality': b'AGGREGATION_TEMPORALITY_UNSPEC... \n", + "\n", + " is_valid error_message \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True " + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Read a directory of profiles parquets\n", + "raw_df = pd.read_parquet('otel-demo-app/profiles_raw/', engine='pyarrow')\n", + "# Show some raw data\n", + "raw_df.head(5).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "id": "17eb1de8-a03e-4617-b42e-204461418b97", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# extract meta-data\n", + "resource_attrs_df=raw_df[['resource_attributes']].apply(otel_attrs, axis=1).add_prefix('ra_')\n", + "scope_attrs_df=raw_df[['scope_attributes']].apply(otel_attrs, axis=1).add_prefix('sa_')\n", + "profile_attrs_df=raw_df[['profile_attributes']].apply(otel_attrs, axis=1).add_prefix('pa_')\n", + "attrs_df=raw_df[['attributes']].apply(otel_attrs, axis=1).add_prefix('a_')" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "id": "e7aa72fb-01b7-4776-9ee9-70edb5ceb097", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Profiles resource meta-data\n", + "\n", + "The resource attributes (or meta-data) is a lot simpler, as there's only one process generating `profiles` - the [OpenTelemetry eBPF profiler](https://github.com/open-telemetry/opentelemetry-ebpf-profiler).\n", + "\n", + "At the time of writing, OpenTelemetry profiling is in an early stage of development and therefore is not built into the usual instrumentation agents and plugins. It runs as a separate process on the host operating system only.\n", + "\n", + "For this reason, the `resource attributes` (or resource meta-data) are quite simple, specifying only the machine where the eBPF profiler process is running:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Profiles resource meta-data\n", + "\n", + "The resource attributes (or meta-data) is a lot simpler, as there's only one process generating `profiles` - the [OpenTelemetry eBPF profiler](https://github.com/open-telemetry/opentelemetry-ebpf-profiler).\n", + "\n", + "At the time of writing, OpenTelemetry profiling is in an early stage of development and therefore is not built into the usual instrumentation agents and plugins. It runs as a separate process on the host operating system only.\n", + "\n", + "For this reason, the `resource attributes` (or resource meta-data) are quite simple, specifying only the machine where the eBPF profiler process is running:" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "id": "9e082695-5e79-4082-8b67-a559310a56d5", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ra_host.idra_host.ipra_host.namera_service.versionra_os.kernel
00127.0.0.1rh-ho-01.mishmash.local5.14.0
10127.0.0.1rh-ho-01.mishmash.local5.14.0
20127.0.0.1rh-ho-01.mishmash.local5.14.0
30127.0.0.1rh-ho-01.mishmash.local5.14.0
40127.0.0.1rh-ho-01.mishmash.local5.14.0
50127.0.0.1rh-ho-01.mishmash.local5.14.0
60127.0.0.1rh-ho-01.mishmash.local5.14.0
70127.0.0.1rh-ho-01.mishmash.local5.14.0
80127.0.0.1rh-ho-01.mishmash.local5.14.0
90127.0.0.1rh-ho-01.mishmash.local5.14.0
\n", + "
" + ], + "text/plain": [ + " ra_host.id ra_host.ip ra_host.name ra_service.version \\\n", + "0 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "2 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "3 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "4 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "5 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "6 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "7 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "8 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "9 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "\n", + " ra_os.kernel \n", + "0 5.14.0 \n", + "1 5.14.0 \n", + "2 5.14.0 \n", + "3 5.14.0 \n", + "4 5.14.0 \n", + "5 5.14.0 \n", + "6 5.14.0 \n", + "7 5.14.0 \n", + "8 5.14.0 \n", + "9 5.14.0 " + ] + }, + "execution_count": 99, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "resource_attrs_df.head(10).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "id": "2fed4524-97cd-40e1-878e-3c3c90948d17", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### ...and sample meta-data\n", + "\n", + "Also due to the early stage of development very few additional sample `attributes` are collected:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### ...and sample meta-data\n", + "\n", + "Also due to the early stage of development very few additional sample `attributes` are collected:" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "id": "6d30dd39-d2e6-4fb8-aa00-5023aac05f37", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_container.ida_thread.name
0/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver
1/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java
2/user.slice/user-1000.slice/user@1000.service/session.slice/org.gnome.Shell@wayland.servicegnome-shell
3/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
4/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
5/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
6/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...ForkJoinPool-4-
7/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
8/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
9/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
10/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C1 CompilerThre
11/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java
12/irq/68-MSFT0001
13/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...VM Periodic Tas
14/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
15/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
16/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
17/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
18/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
19/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java
20/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...opentelemetry-e
21/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
22/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7...kubectl
23/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4...C2 CompilerThre
24/user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/gnome-termi...gnome-terminal-
\n", + "
" + ], + "text/plain": [ + " a_container.id \\\n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "2 /user.slice/user-1000.slice/user@1000.service/session.slice/org.gnome.Shell@wayland.service \n", + "3 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "4 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "5 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "6 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "7 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "8 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "9 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "10 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "11 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "12 / \n", + "13 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "14 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "15 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "16 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "17 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "18 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "19 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "20 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "21 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "22 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-7... \n", + "23 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/vte-spawn-4... \n", + "24 /user.slice/user-1000.slice/user@1000.service/app.slice/app-org.gnome.Terminal.slice/gnome-termi... \n", + "\n", + " a_thread.name \n", + "0 kube-apiserver \n", + "1 java \n", + "2 gnome-shell \n", + "3 kubectl \n", + "4 C2 CompilerThre \n", + "5 C2 CompilerThre \n", + "6 ForkJoinPool-4- \n", + "7 C2 CompilerThre \n", + "8 kubectl \n", + "9 kubectl \n", + "10 C1 CompilerThre \n", + "11 java \n", + "12 irq/68-MSFT0001 \n", + "13 VM Periodic Tas \n", + "14 kubectl \n", + "15 kubectl \n", + "16 C2 CompilerThre \n", + "17 C2 CompilerThre \n", + "18 C2 CompilerThre \n", + "19 java \n", + "20 opentelemetry-e \n", + "21 kubectl \n", + "22 kubectl \n", + "23 C2 CompilerThre \n", + "24 gnome-terminal- " + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "attrs_df.head(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "id": "36a0e437-ea7c-45a9-8831-1289b364f142", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Preprocessing profiles\n", + "\n", + "As `profiles` data is a bit more complex - containing **stack frames** that were observed - let's first do some transformations to get it to a format that's easier to work with.\n", + "\n", + "More about stack frames later, but first, we'll extract the base columns and a few nested values:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Preprocessing profiles\n", + "\n", + "As `profiles` data is a bit more complex - containing **stack frames** that were observed - let's first do some transformations to get it to a format that's easier to work with.\n", + "\n", + "More about stack frames later, but first, we'll extract the base columns and a few nested values:" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "id": "2f121918-a131-4d22-9030-39814371ee9e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "base_df=raw_df.loc[raw_df['is_valid'] == True][\n", + " [\n", + " 'profile_id',\n", + " 'start_time_unix_nano',\n", + " 'end_time_unix_nano',\n", + " 'time_nanos',\n", + " 'duration_nanos',\n", + " 'period',\n", + " ]\n", + "]\n", + "base_df['period_type.type']=raw_df.loc[raw_df['is_valid'] == True]['period_type'].apply(lambda s: s.get('type'))\n", + "base_df['period_type.unit']=raw_df.loc[raw_df['is_valid'] == True]['period_type'].apply(lambda s: s.get('unit'))\n", + "base_df['period_type.aggregation_temporality']=raw_df.loc[raw_df['is_valid'] == True]['period_type'].apply(lambda s: s.get('aggregation_temporality'))\n", + "base_df['type.type']=raw_df.loc[raw_df['is_valid'] == True]['type'].apply(lambda s: s.get('type'))\n", + "base_df['type.unit']=raw_df.loc[raw_df['is_valid'] == True]['type'].apply(lambda s: s.get('unit'))\n", + "base_df['type.aggregation_temporality']=raw_df.loc[raw_df['is_valid'] == True]['type'].apply(lambda s: s.get('aggregation_temporality'))\n", + "\n", + "base_df['stacktrace_id']=raw_df.loc[raw_df['is_valid'] == True]['stacktrace_id']\n", + "base_df['timestamps_unix_nano']=raw_df.loc[raw_df['is_valid'] == True]['timestamps_unix_nano']\n", + "base_df['trace_id']=raw_df.loc[raw_df['is_valid'] == True]['trace_id']\n", + "base_df['span_id']=raw_df.loc[raw_df['is_valid'] == True]['span_id']\n", + "base_df['value']=raw_df.loc[raw_df['is_valid'] == True]['value']" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "id": "41139b29-db00-497c-8266-15fb9e8d4ee1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
profile_idstart_time_unix_nanoend_time_unix_nanotime_nanosduration_nanosperiodperiod_type.typeperiod_type.unitperiod_type.aggregation_temporalitytype.typetype.unittype.aggregation_temporalitystacktrace_idtimestamps_unix_nanotrace_idspan_idvalue
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''1
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1
2b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'3q0cPtu3MDx3nKTLoW1dYw[1724748417093736128]b''b''1
3b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'wPV4lODzFxdwY_wpGV2k5g[1724748423443695624]b''b''1
4b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'llfhpWeEYOTUhd0Rz1B1mQ[1724748418343758562]b''b''1
5b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'_MxCXoFscAJB-uUwu5nGWw[1724748418343747849]b''b''1
6b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'CO4C0zwEX7XzCwJPdEiJcw[1724748418343696197]b''b''1
7b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'MvDMdczrfYQ0MIWWfD3Tgw[1724748418643758739]b''b''1
8b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'Qqa52rATLXbcNs6f5NQcuA[1724748423393725765]b''b''1
9b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'zpmkVzYMovFtWRjfqgKlxw[1724748423343716192]b''b''1
10b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'oA-rJE7TNwnAH-sWbKPyTA[1724748418343742367]b''b''1
11b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'NXRWrIP8Fggk8XbIq_N-ig[1724748418343736291]b''b''1
12b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'6EckjBMF6v-B6IQqIPOpKA[1724748418543708992]b''b''1
13b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'9EGzHhlZd73rUa3rB3Lxcw[1724748421243725702]b''b''1
14b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'v9yoQVtvpdOSKa8ktkEjlg[1724748423643747965]b''b''1
15b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'5LBlB39YQVBK6u1MubLSLQ[1724748423593725736]b''b''1
16b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'XHAN6HyOIw9WCKMIJqe0hA[1724748418293736368]b''b''1
17b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'JixurRdaeAmJOWID_nmocg[1724748418493758482]b''b''1
18b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'vx65DekB32xJtE4M4ty7zQ[1724748418593758697]b''b''1
19b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'MSSiwsiRuiRpQINTXVkxMg[1724748419293758786]b''b''1
20b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'D0KVlRu-jjj0duYrK6-BzA[1724748422393747575]b''b''1
21b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'-jv1y_iiCKY0kowyNu5-xw[1724748423243736175]b''b''1
22b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'K3elFIX5lDmMyLt1IczX7A[1724748423543716548]b''b''1
23b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'6N5w2c2jtoiMPxb0fvaHWw[1724748418543758520]b''b''1
24b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/'172474842364372555417247484236437255541724748423643725554050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'ixOcQ4Jz9wwb-L7FYiKgyg[1724748419293711896]b''b''1
\n", + "
" + ], + "text/plain": [ + " profile_id start_time_unix_nano \\\n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "2 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "3 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "4 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "5 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "6 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "7 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "8 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "9 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "10 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "11 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "12 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "13 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "14 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "15 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "16 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "17 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "18 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "19 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "20 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "21 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "22 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "23 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "24 b'\\xb4])1\\xe1L\\xb7\\xde\\xa0lY\\x82T\\x89\\xe1/' 1724748423643725554 \n", + "\n", + " end_time_unix_nano time_nanos duration_nanos period \\\n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "2 1724748417093736128 1724748417093736128 0 50000000 \n", + "3 1724748423643725554 1724748423643725554 0 50000000 \n", + "4 1724748423643725554 1724748423643725554 0 50000000 \n", + "5 1724748423643725554 1724748423643725554 0 50000000 \n", + "6 1724748423643725554 1724748423643725554 0 50000000 \n", + "7 1724748423643725554 1724748423643725554 0 50000000 \n", + "8 1724748423643725554 1724748423643725554 0 50000000 \n", + "9 1724748423643725554 1724748423643725554 0 50000000 \n", + "10 1724748423643725554 1724748423643725554 0 50000000 \n", + "11 1724748423643725554 1724748423643725554 0 50000000 \n", + "12 1724748423643725554 1724748423643725554 0 50000000 \n", + "13 1724748423643725554 1724748423643725554 0 50000000 \n", + "14 1724748423643725554 1724748423643725554 0 50000000 \n", + "15 1724748423643725554 1724748423643725554 0 50000000 \n", + "16 1724748423643725554 1724748423643725554 0 50000000 \n", + "17 1724748423643725554 1724748423643725554 0 50000000 \n", + "18 1724748423643725554 1724748423643725554 0 50000000 \n", + "19 1724748423643725554 1724748423643725554 0 50000000 \n", + "20 1724748423643725554 1724748423643725554 0 50000000 \n", + "21 1724748423643725554 1724748423643725554 0 50000000 \n", + "22 1724748423643725554 1724748423643725554 0 50000000 \n", + "23 1724748423643725554 1724748423643725554 0 50000000 \n", + "24 1724748423643725554 1724748423643725554 0 50000000 \n", + "\n", + " period_type.type period_type.unit period_type.aggregation_temporality \\\n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "2 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "3 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "4 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "5 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "6 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "7 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "8 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "9 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "10 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "11 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "12 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "13 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "14 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "15 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "16 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "17 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "18 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "19 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "20 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "21 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "22 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "23 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "24 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "\n", + " type.type type.unit type.aggregation_temporality \\\n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "2 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "3 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "4 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "5 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "6 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "7 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "8 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "9 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "10 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "11 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "12 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "13 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "14 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "15 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "16 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "17 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "18 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "19 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "20 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "21 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "22 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "23 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "24 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "\n", + " stacktrace_id timestamps_unix_nano trace_id span_id value \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "2 3q0cPtu3MDx3nKTLoW1dYw [1724748417093736128] b'' b'' 1 \n", + "3 wPV4lODzFxdwY_wpGV2k5g [1724748423443695624] b'' b'' 1 \n", + "4 llfhpWeEYOTUhd0Rz1B1mQ [1724748418343758562] b'' b'' 1 \n", + "5 _MxCXoFscAJB-uUwu5nGWw [1724748418343747849] b'' b'' 1 \n", + "6 CO4C0zwEX7XzCwJPdEiJcw [1724748418343696197] b'' b'' 1 \n", + "7 MvDMdczrfYQ0MIWWfD3Tgw [1724748418643758739] b'' b'' 1 \n", + "8 Qqa52rATLXbcNs6f5NQcuA [1724748423393725765] b'' b'' 1 \n", + "9 zpmkVzYMovFtWRjfqgKlxw [1724748423343716192] b'' b'' 1 \n", + "10 oA-rJE7TNwnAH-sWbKPyTA [1724748418343742367] b'' b'' 1 \n", + "11 NXRWrIP8Fggk8XbIq_N-ig [1724748418343736291] b'' b'' 1 \n", + "12 6EckjBMF6v-B6IQqIPOpKA [1724748418543708992] b'' b'' 1 \n", + "13 9EGzHhlZd73rUa3rB3Lxcw [1724748421243725702] b'' b'' 1 \n", + "14 v9yoQVtvpdOSKa8ktkEjlg [1724748423643747965] b'' b'' 1 \n", + "15 5LBlB39YQVBK6u1MubLSLQ [1724748423593725736] b'' b'' 1 \n", + "16 XHAN6HyOIw9WCKMIJqe0hA [1724748418293736368] b'' b'' 1 \n", + "17 JixurRdaeAmJOWID_nmocg [1724748418493758482] b'' b'' 1 \n", + "18 vx65DekB32xJtE4M4ty7zQ [1724748418593758697] b'' b'' 1 \n", + "19 MSSiwsiRuiRpQINTXVkxMg [1724748419293758786] b'' b'' 1 \n", + "20 D0KVlRu-jjj0duYrK6-BzA [1724748422393747575] b'' b'' 1 \n", + "21 -jv1y_iiCKY0kowyNu5-xw [1724748423243736175] b'' b'' 1 \n", + "22 K3elFIX5lDmMyLt1IczX7A [1724748423543716548] b'' b'' 1 \n", + "23 6N5w2c2jtoiMPxb0fvaHWw [1724748418543758520] b'' b'' 1 \n", + "24 ixOcQ4Jz9wwb-L7FYiKgyg [1724748419293711896] b'' b'' 1 " + ] + }, + "execution_count": 104, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "base_df.head(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "id": "986d497c-a357-497c-a6bc-62139c03347d", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Stack traces (or stack frames)\n", + "\n", + "Now let's take a look at what a **stack trace** is. You can think of profiling as a way of looking (once in a while) at what a CPU is doing at that moment. It could be executing a method within your app's code \n", + "(like - parsing a JSON request from a client), it could be running the code of system library, or could be inside the OS kernel - reading data from a network socket for example.\n", + "\n", + "This bit of information alone won't be particularly useful, as it does not tell you what lead to this particular code to be executed by the CPU. There might be multiple parts within your app code that allocate memory and\n", + "even though you can see a CPU as it's performing this operation - you wouldn't know why, or what code led to it. To give you that extra knowledge a profiler will report the entire **stack trace**, with all methods, as they\n", + "invoked each other.\n", + "\n", + "Let's get a stack trace and see what's inside. Few things to notice in the table below:\n", + "- A `stacktrace_id` is globally unique for that **stack trace**, meaning, if the same **stack trace** is seen more than once - the same id will be recorded, within the same, or different, `profile_id`.\n", + "- There is a timestamp when each **stack trace** was observed (in the `timestamps_unix_nano` array)\n", + "- `locations` holds the actual **stack trace**\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Stack traces (or stack frames)\n", + "\n", + "Now let's take a look at what a **stack trace** is. You can think of profiling as a way of looking (once in a while) at what a CPU is doing at that moment. It could be executing a method within your app's code \n", + "(like - parsing a JSON request from a client), it could be running the code of system library, or could be inside the OS kernel - reading data from a network socket for example.\n", + "\n", + "This bit of information alone won't be particularly useful, as it does not tell you what lead to this particular code to be executed by the CPU. There might be multiple parts within your app code that allocate memory and\n", + "even though you can see a CPU as it's performing this operation - you wouldn't know why, or what code led to it. To give you that extra knowledge a profiler will report the entire **stack trace**, with all methods, as they\n", + "invoked each other.\n", + "\n", + "Let's get a stack trace and see what's inside. Few things to notice in the table below:\n", + "- A `stacktrace_id` is globally unique for that **stack trace**, meaning, if the same **stack trace** is seen more than once - the same id will be recorded, within the same, or different, `profile_id`.\n", + "- There is a timestamp when each **stack trace** was observed (in the `timestamps_unix_nano` array)\n", + "- `locations` holds the actual **stack trace**" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "id": "bf33c9ff-c80e-4d5e-aa35-ce50c553bdb8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
profile_idstacktrace_idtimestamps_unix_nanolocations
2459b'`\\xc3\\xaePk\\x1a\\x84\\x0fe,\\x89y\\x0f\\xc3\\x90\\xbd'1SaPndvY2H8vw9XiXIIzCw[1724748441393709769][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
3330b'\\xc5\\xee\\x88\\x8c\\xfer\\x1b\\x95\\x11\\xb3\\x96\\xf4\\x80vKS'1SaPndvY2H8vw9XiXIIzCw[1724748457943748631][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
3340b'\\xc5\\xee\\x88\\x8c\\xfer\\x1b\\x95\\x11\\xb3\\x96\\xf4\\x80vKS'1SaPndvY2H8vw9XiXIIzCw[1724748457943716145, 1724748458543728744][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
4701b'W\\xbb\\xce\\xec\\xf6\\xb8yD\\xde\\xf9G?O\\x1b\\xa8L'1SaPndvY2H8vw9XiXIIzCw[1724748523843736513][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
6193b'\\x17%5\\xa0\\xe6\\xdd\\xbc\\xc9\\xe0\\xe6\\xff\\xb9e\\xac\\xfe\\xff'1SaPndvY2H8vw9XiXIIzCw[1724748598443748074][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
6227b'\\x17%5\\xa0\\xe6\\xdd\\xbc\\xc9\\xe0\\xe6\\xff\\xb9e\\xac\\xfe\\xff'1SaPndvY2H8vw9XiXIIzCw[1724748598443736912][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
6378b'\\x85\\xcapHh\\x1e8\\x81d\\xe3c>v\\xd5\\xd5p'1SaPndvY2H8vw9XiXIIzCw[1724748604243742965][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
6407b'\\x85\\xcapHh\\x1e8\\x81d\\xe3c>v\\xd5\\xd5p'1SaPndvY2H8vw9XiXIIzCw[1724748604243759316][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
6879b\"\\\\\\x1b\\xb0V\\x0e'm\\x1d\\xb9-B\\x92|\\xfd\\x96\\xb6\"1SaPndvY2H8vw9XiXIIzCw[1724748609193743007][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
7888b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3'1SaPndvY2H8vw9XiXIIzCw[1724748635493727029][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
7911b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3'1SaPndvY2H8vw9XiXIIzCw[1724748635493714759][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
7986b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3'1SaPndvY2H8vw9XiXIIzCw[1724748635493710390][{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm...
\n", + "
" + ], + "text/plain": [ + " profile_id \\\n", + "2459 b'`\\xc3\\xaePk\\x1a\\x84\\x0fe,\\x89y\\x0f\\xc3\\x90\\xbd' \n", + "3330 b'\\xc5\\xee\\x88\\x8c\\xfer\\x1b\\x95\\x11\\xb3\\x96\\xf4\\x80vKS' \n", + "3340 b'\\xc5\\xee\\x88\\x8c\\xfer\\x1b\\x95\\x11\\xb3\\x96\\xf4\\x80vKS' \n", + "4701 b'W\\xbb\\xce\\xec\\xf6\\xb8yD\\xde\\xf9G?O\\x1b\\xa8L' \n", + "6193 b'\\x17%5\\xa0\\xe6\\xdd\\xbc\\xc9\\xe0\\xe6\\xff\\xb9e\\xac\\xfe\\xff' \n", + "6227 b'\\x17%5\\xa0\\xe6\\xdd\\xbc\\xc9\\xe0\\xe6\\xff\\xb9e\\xac\\xfe\\xff' \n", + "6378 b'\\x85\\xcapHh\\x1e8\\x81d\\xe3c>v\\xd5\\xd5p' \n", + "6407 b'\\x85\\xcapHh\\x1e8\\x81d\\xe3c>v\\xd5\\xd5p' \n", + "6879 b\"\\\\\\x1b\\xb0V\\x0e'm\\x1d\\xb9-B\\x92|\\xfd\\x96\\xb6\" \n", + "7888 b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3' \n", + "7911 b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3' \n", + "7986 b'\\xd2\\x08W\\xb3\\xdc\\xb4O8\\x02\\x02\\xa14\\xd8f\\xd9\\xa3' \n", + "\n", + " stacktrace_id timestamps_unix_nano \\\n", + "2459 1SaPndvY2H8vw9XiXIIzCw [1724748441393709769] \n", + "3330 1SaPndvY2H8vw9XiXIIzCw [1724748457943748631] \n", + "3340 1SaPndvY2H8vw9XiXIIzCw [1724748457943716145, 1724748458543728744] \n", + "4701 1SaPndvY2H8vw9XiXIIzCw [1724748523843736513] \n", + "6193 1SaPndvY2H8vw9XiXIIzCw [1724748598443748074] \n", + "6227 1SaPndvY2H8vw9XiXIIzCw [1724748598443736912] \n", + "6378 1SaPndvY2H8vw9XiXIIzCw [1724748604243742965] \n", + "6407 1SaPndvY2H8vw9XiXIIzCw [1724748604243759316] \n", + "6879 1SaPndvY2H8vw9XiXIIzCw [1724748609193743007] \n", + "7888 1SaPndvY2H8vw9XiXIIzCw [1724748635493727029] \n", + "7911 1SaPndvY2H8vw9XiXIIzCw [1724748635493714759] \n", + "7986 1SaPndvY2H8vw9XiXIIzCw [1724748635493710390] \n", + "\n", + " locations \n", + "2459 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "3330 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "3340 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "4701 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "6193 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "6227 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "6378 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "6407 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "6879 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "7888 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "7911 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... \n", + "7986 [{'mapping': {'memory_start': 0, 'memory_limit': 20873216, 'file_offset': 0, 'filename': 'libjvm... " + ] + }, + "execution_count": 106, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "raw_df[raw_df['stacktrace_id'] == '1SaPndvY2H8vw9XiXIIzCw'][[\n", + " 'profile_id',\n", + " 'stacktrace_id',\n", + " 'timestamps_unix_nano',\n", + " 'locations'\n", + "]]" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "id": "0e6c967e-0621-41df-9477-b18fee9b0f35", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Extract the stack frames\n", + "\n", + "Now, let's also get each entry of each stack frame, in a separate DataFrame.\n", + "\n", + "Note how these may point to addresses, functions, line numbers in files (`location.type` column):\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Extract the stack frames\n", + "\n", + "Now, let's also get each entry of each stack frame, in a separate DataFrame.\n", + "\n", + "Note how these may point to addresses, functions, line numbers in files (`location.type` column):" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "id": "7e5f1f9b-30ff-41c7-8aa8-f55d72cc32c9", + "metadata": {}, + "outputs": [], + "source": [ + "# define a helper function to extract some locations data:\n", + "def otel_profile_location(series):\n", + " location = series.iloc[0]\n", + " mapping = location['mapping']\n", + " if location['lines'].size > 0:\n", + " line_0 = location['lines'][0]\n", + " function_line_0 = line_0['function']\n", + " line_line_0 = line_0['line']\n", + " column_line_0 = line_0['column']\n", + " else:\n", + " function_line_0 = {}\n", + " line_line_0 = None\n", + " column_line_0 = None\n", + " \n", + " address = location['address']\n", + " is_folded = location['is_folded']\n", + " typ = location['type']\n", + " attrs = location['attributes']\n", + " keys = [\n", + " *[f'location.map.{mk}' for mk in mapping.keys()],\n", + " 'location.address',\n", + " *[f'location.line_0.function.{fk}' for fk in function_line_0.keys()],\n", + " 'location.line_0.line',\n", + " 'location.line_0.column',\n", + " 'location.is_folded',\n", + " 'location.type',\n", + " 'location.attributes'\n", + " ]\n", + " values = [\n", + " *mapping.values(),\n", + " address,\n", + " *function_line_0.values(),\n", + " line_line_0,\n", + " column_line_0,\n", + " is_folded,\n", + " typ,\n", + " attrs\n", + " ]\n", + " return pd.Series(values, index=keys)\n", + "\n", + "# explode each location into a row of its own:\n", + "locations_df=raw_df[['stacktrace_id']].join(raw_df[['locations']].explode('locations').apply(otel_profile_location, axis=1))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "271e979c-0929-4d39-83e9-79d1c8b09c5d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
stacktrace_idlocation.addresslocation.line_0.function.filenamelocation.line_0.function.namelocation.line_0.linelocation.map.file_offsetlocation.map.filenamelocation.type
9589UuAAmyCUEGdKfbpdRN9-dA3456007shrink_folio_list0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3459214evict_folios0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3463669try_to_shrink_lruvec0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3471569shrink_lruvec0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3472884shrink_node_memcgs0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3478330shrink_node0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3482359shrink_zones.constprop.00.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3483025do_try_to_free_pages0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA3485780try_to_free_mem_cgroup_pages0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4222703try_charge_memcg0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4234398mem_cgroup_charge_skmem0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA11259591sk_stream_alloc_skb0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA11264308tcp_sendmsg_locked0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA11265943tcp_sendmsg0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA10289656sock_write_iter0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4387187do_iter_readv_writev0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4389808do_iter_write0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4390381vfs_writev0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA4390821do_writev0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA13108312do_syscall_640.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA14680297entry_SYSCALL_64_after_hwframe0.00kernel
9589UuAAmyCUEGdKfbpdRN9-dA1218714163840libc.so.6native
9589UuAAmyCUEGdKfbpdRN9-dA373000libnetty_transport_native_epoll_x86_6470359373615787457.sonative
9589UuAAmyCUEGdKfbpdRN9-dA0FileDescriptor.javalong io.netty.channel.unix.FileDescriptor.writevAddresses(int, long, int)0.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA6FileDescriptor.javalong io.netty.channel.unix.FileDescriptor.writevAddresses(long, int)122.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA61AbstractEpollStreamChannel.javaint io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(io.netty.channel.Channe...304.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA45AbstractEpollStreamChannel.javaint io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(io.netty.channel.ChannelOu...512.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA31AbstractEpollStreamChannel.javavoid io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(io.netty.channel.ChannelOutboundB...424.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA112AbstractChannel.javavoid io.netty.channel.AbstractChannel$AbstractUnsafe.flush0()929.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA14AbstractEpollChannel.javavoid io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0()557.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA19AbstractChannel.javavoid io.netty.channel.AbstractChannel$AbstractUnsafe.flush()893.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA4DefaultChannelPipeline.javavoid io.netty.channel.DefaultChannelPipeline$HeadContext.flush(io.netty.channel.ChannelHandlerCo...1369.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA20AbstractChannelHandlerContext.javavoid io.netty.channel.AbstractChannelHandlerContext.invokeFlush0()935.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA8AbstractChannelHandlerContext.javavoid io.netty.channel.AbstractChannelHandlerContext.invokeFlush()921.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA22AbstractChannelHandlerContext.javaio.netty.channel.ChannelHandlerContext io.netty.channel.AbstractChannelHandlerContext.flush()907.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA15Http2ConnectionHandler.javavoid io.netty.handler.codec.http2.Http2ConnectionHandler.flush(io.netty.channel.ChannelHandlerCo...197.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA67AbstractChannelHandlerContext.javavoid io.netty.channel.AbstractChannelHandlerContext.invokeFlush0()941.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA8AbstractChannelHandlerContext.javavoid io.netty.channel.AbstractChannelHandlerContext.invokeFlush()921.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA22AbstractChannelHandlerContext.javaio.netty.channel.ChannelHandlerContext io.netty.channel.AbstractChannelHandlerContext.flush()907.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA4DefaultChannelPipeline.javaio.netty.channel.ChannelPipeline io.netty.channel.DefaultChannelPipeline.flush()966.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA4AbstractChannel.javaio.netty.channel.Channel io.netty.channel.AbstractChannel.flush()253.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA133WriteQueue.javavoid io.grpc.netty.WriteQueue.flush()143.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA1WriteQueue.javavoid io.grpc.netty.WriteQueue.access$000(io.grpc.netty.WriteQueue)35.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA36WriteQueue.javavoid io.grpc.netty.WriteQueue$1.run()47.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA1AbstractEventExecutor.javavoid io.netty.util.concurrent.AbstractEventExecutor.runTask(java.lang.Runnable)173.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA1AbstractEventExecutor.javavoid io.netty.util.concurrent.AbstractEventExecutor.safeExecute(java.lang.Runnable)166.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA42SingleThreadEventExecutor.javaboolean io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long)469.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA403EpollEventLoop.javavoid io.netty.channel.epoll.EpollEventLoop.run()405.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA76SingleThreadEventExecutor.javavoid io.netty.util.concurrent.SingleThreadEventExecutor$4.run()994.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA43ThreadExecutorMap.javavoid io.netty.util.internal.ThreadExecutorMap$2.run()74.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA36FastThreadLocalRunnable.javavoid io.netty.util.concurrent.FastThreadLocalRunnable.run()30.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA5<unknown>void java.lang.Thread.runWith(java.lang.Object, java.lang.Runnable)0.00jvm
9589UuAAmyCUEGdKfbpdRN9-dA19<unknown>void java.lang.Thread.run()0.00jvm
\n", + "
" + ], + "text/plain": [ + " stacktrace_id location.address \\\n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3456007 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3459214 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3463669 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3471569 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3472884 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3478330 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3482359 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3483025 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 3485780 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4222703 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4234398 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 11259591 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 11264308 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 11265943 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 10289656 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4387187 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4389808 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4390381 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4390821 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 13108312 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 14680297 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 1218714 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 37300 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 0 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 6 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 61 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 45 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 31 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 112 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 14 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 19 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 20 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 8 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 22 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 15 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 67 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 8 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 22 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 4 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 133 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 1 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 36 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 1 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 1 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 42 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 403 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 76 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 43 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 36 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 5 \n", + "9589 UuAAmyCUEGdKfbpdRN9-dA 19 \n", + "\n", + " location.line_0.function.filename \\\n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 \n", + "9589 FileDescriptor.java \n", + "9589 FileDescriptor.java \n", + "9589 AbstractEpollStreamChannel.java \n", + "9589 AbstractEpollStreamChannel.java \n", + "9589 AbstractEpollStreamChannel.java \n", + "9589 AbstractChannel.java \n", + "9589 AbstractEpollChannel.java \n", + "9589 AbstractChannel.java \n", + "9589 DefaultChannelPipeline.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 Http2ConnectionHandler.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 AbstractChannelHandlerContext.java \n", + "9589 DefaultChannelPipeline.java \n", + "9589 AbstractChannel.java \n", + "9589 WriteQueue.java \n", + "9589 WriteQueue.java \n", + "9589 WriteQueue.java \n", + "9589 AbstractEventExecutor.java \n", + "9589 AbstractEventExecutor.java \n", + "9589 SingleThreadEventExecutor.java \n", + "9589 EpollEventLoop.java \n", + "9589 SingleThreadEventExecutor.java \n", + "9589 ThreadExecutorMap.java \n", + "9589 FastThreadLocalRunnable.java \n", + "9589 \n", + "9589 \n", + "\n", + " location.line_0.function.name \\\n", + "9589 shrink_folio_list \n", + "9589 evict_folios \n", + "9589 try_to_shrink_lruvec \n", + "9589 shrink_lruvec \n", + "9589 shrink_node_memcgs \n", + "9589 shrink_node \n", + "9589 shrink_zones.constprop.0 \n", + "9589 do_try_to_free_pages \n", + "9589 try_to_free_mem_cgroup_pages \n", + "9589 try_charge_memcg \n", + "9589 mem_cgroup_charge_skmem \n", + "9589 sk_stream_alloc_skb \n", + "9589 tcp_sendmsg_locked \n", + "9589 tcp_sendmsg \n", + "9589 sock_write_iter \n", + "9589 do_iter_readv_writev \n", + "9589 do_iter_write \n", + "9589 vfs_writev \n", + "9589 do_writev \n", + "9589 do_syscall_64 \n", + "9589 entry_SYSCALL_64_after_hwframe \n", + "9589 \n", + "9589 \n", + "9589 long io.netty.channel.unix.FileDescriptor.writevAddresses(int, long, int) \n", + "9589 long io.netty.channel.unix.FileDescriptor.writevAddresses(long, int) \n", + "9589 int io.netty.channel.epoll.AbstractEpollStreamChannel.writeBytesMultiple(io.netty.channel.Channe... \n", + "9589 int io.netty.channel.epoll.AbstractEpollStreamChannel.doWriteMultiple(io.netty.channel.ChannelOu... \n", + "9589 void io.netty.channel.epoll.AbstractEpollStreamChannel.doWrite(io.netty.channel.ChannelOutboundB... \n", + "9589 void io.netty.channel.AbstractChannel$AbstractUnsafe.flush0() \n", + "9589 void io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.flush0() \n", + "9589 void io.netty.channel.AbstractChannel$AbstractUnsafe.flush() \n", + "9589 void io.netty.channel.DefaultChannelPipeline$HeadContext.flush(io.netty.channel.ChannelHandlerCo... \n", + "9589 void io.netty.channel.AbstractChannelHandlerContext.invokeFlush0() \n", + "9589 void io.netty.channel.AbstractChannelHandlerContext.invokeFlush() \n", + "9589 io.netty.channel.ChannelHandlerContext io.netty.channel.AbstractChannelHandlerContext.flush() \n", + "9589 void io.netty.handler.codec.http2.Http2ConnectionHandler.flush(io.netty.channel.ChannelHandlerCo... \n", + "9589 void io.netty.channel.AbstractChannelHandlerContext.invokeFlush0() \n", + "9589 void io.netty.channel.AbstractChannelHandlerContext.invokeFlush() \n", + "9589 io.netty.channel.ChannelHandlerContext io.netty.channel.AbstractChannelHandlerContext.flush() \n", + "9589 io.netty.channel.ChannelPipeline io.netty.channel.DefaultChannelPipeline.flush() \n", + "9589 io.netty.channel.Channel io.netty.channel.AbstractChannel.flush() \n", + "9589 void io.grpc.netty.WriteQueue.flush() \n", + "9589 void io.grpc.netty.WriteQueue.access$000(io.grpc.netty.WriteQueue) \n", + "9589 void io.grpc.netty.WriteQueue$1.run() \n", + "9589 void io.netty.util.concurrent.AbstractEventExecutor.runTask(java.lang.Runnable) \n", + "9589 void io.netty.util.concurrent.AbstractEventExecutor.safeExecute(java.lang.Runnable) \n", + "9589 boolean io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(long) \n", + "9589 void io.netty.channel.epoll.EpollEventLoop.run() \n", + "9589 void io.netty.util.concurrent.SingleThreadEventExecutor$4.run() \n", + "9589 void io.netty.util.internal.ThreadExecutorMap$2.run() \n", + "9589 void io.netty.util.concurrent.FastThreadLocalRunnable.run() \n", + "9589 void java.lang.Thread.runWith(java.lang.Object, java.lang.Runnable) \n", + "9589 void java.lang.Thread.run() \n", + "\n", + " location.line_0.line location.map.file_offset \\\n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "9589 163840 \n", + "9589 0 \n", + "9589 0.0 0 \n", + "9589 122.0 0 \n", + "9589 304.0 0 \n", + "9589 512.0 0 \n", + "9589 424.0 0 \n", + "9589 929.0 0 \n", + "9589 557.0 0 \n", + "9589 893.0 0 \n", + "9589 1369.0 0 \n", + "9589 935.0 0 \n", + "9589 921.0 0 \n", + "9589 907.0 0 \n", + "9589 197.0 0 \n", + "9589 941.0 0 \n", + "9589 921.0 0 \n", + "9589 907.0 0 \n", + "9589 966.0 0 \n", + "9589 253.0 0 \n", + "9589 143.0 0 \n", + "9589 35.0 0 \n", + "9589 47.0 0 \n", + "9589 173.0 0 \n", + "9589 166.0 0 \n", + "9589 469.0 0 \n", + "9589 405.0 0 \n", + "9589 994.0 0 \n", + "9589 74.0 0 \n", + "9589 30.0 0 \n", + "9589 0.0 0 \n", + "9589 0.0 0 \n", + "\n", + " location.map.filename location.type \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 kernel \n", + "9589 libc.so.6 native \n", + "9589 libnetty_transport_native_epoll_x86_6470359373615787457.so native \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm \n", + "9589 jvm " + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "locations_df[locations_df['stacktrace_id'] == 'UuAAmyCUEGdKfbpdRN9-dA'][[\n", + " 'stacktrace_id', 'location.address', 'location.line_0.function.filename', 'location.line_0.function.name', 'location.line_0.line',\n", + " 'location.map.file_offset', 'location.map.filename', 'location.type'\n", + "]].fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "id": "c6fc0249-5581-4f5e-9e11-eaa904ca1e40", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# gRPC sends a message (stack trace)\n", + "\n", + "The table above shows a single **stack trace** sample, where the gRPC java implementation (using Netty) invoked an OS **syscall**, which in turn caused Linux to send a message to a gRPC client.\n", + "\n", + "With stack traces you can track the performance of each method in your code, that is - at any depth in the stack. For example - you can investigate what has the most immediate effect of your method's performance by taking all stack frames with it\n", + "and looking at what's below (at lower depth) your method.\n", + "\n", + "> ***Important:***\n", + ">\n", + "> ***Stack traces are sampled.***\n", + ">\n", + "> The OpenTelemetry eBPF profiler will ***not*** send data about everything CPUs have done.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# gRPC sends a message (stack trace)\n", + "\n", + "The table above shows a single **stack trace** sample, where the gRPC java implementation (using Netty) invoked an OS **syscall**, which in turn caused Linux to send a message to a gRPC client.\n", + "\n", + "With stack traces you can track the performance of each method in your code, that is - at any depth in the stack. For example - you can investigate what has the most immediate effect of your method's performance by taking all stack frames with it\n", + "and looking at what's below (at lower depth) your method.\n", + "\n", + "> ***Important:***\n", + ">\n", + "> ***Stack traces are sampled.***\n", + ">\n", + "> The OpenTelemetry eBPF profiler will ***not*** send data about everything CPUs have done." + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "id": "c2049edc-3e4d-4b51-a231-d8ccfb95f3d3", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# So what is a Profile then?\n", + "\n", + "An OpenTelemetry `profile` works as a collection of **stack trace samples,** observed over a period (`start_time_unix_nano` to `end_time_unix_nano`).\n", + "\n", + "Here's a `profile` and it's contained `stacktrace_id`s and the `timestamps_unix_nano` when each of them was observed.\n", + "\n", + "Note that within a `profile` (that is - within an observational period) a `stacktrace_id` might be more than once, and there will be two or more `timestamps_unix_nano` next to it:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# So what is a Profile then?\n", + "\n", + "An OpenTelemetry `profile` works as a collection of **stack trace samples,** observed over a period (`start_time_unix_nano` to `end_time_unix_nano`).\n", + "\n", + "Here's a `profile` and it's contained `stacktrace_id`s and the `timestamps_unix_nano` when each of them was observed.\n", + "\n", + "Note that within a `profile` (that is - within an observational period) a `stacktrace_id` might be more than once, and there will be two or more `timestamps_unix_nano` next to it:" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "510994ba-c2b8-421a-96e3-739823173e93", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
profile_idstart_time_unix_nanoend_time_unix_nanotime_nanosduration_nanosperiodperiod_type.typeperiod_type.unitperiod_type.aggregation_temporalitytype.typetype.unittype.aggregation_temporalitystacktrace_idtimestamps_unix_nanotrace_idspan_idvalue
10115b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'blmYb1bfOlUKagj7aubCaw[1724748728843748170]b''b''1
10116b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'aW3pt3778x7zYVf7ofqMLQ[1724748727043716384]b''b''1
10117b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'tAefttlPgCyFRVEBovTjtA[1724748727643696101]b''b''1
10118b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'B001bWhXisiPxwHZPeEmqw[1724748729893742215]b''b''1
10119b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'Rvrus5PWAvvrgv5rUn4Y2A[1724748727393747793]b''b''1
10120b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'Sy74jS3nIV5unXn3b-Minw[1724748729143725526]b''b''1
10121b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'TsKGOrUN_KS9EG1g0ZUQwg[1724748728293716293]b''b''1
10122b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'xSWPjcBs0w_PjB-i_tW3IQ[1724748729143747831]b''b''1
10123b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'DjJDbyRs7c5_nw-IQ60Zlw[1724748727643742056]b''b''1
10124b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'fZ0kJ0QqXjC4oIcwx3I00w[1724748728843709654]b''b''1
10125b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|'172474872764370957217247487276437143231724748727643709572475150000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'hzERu5miEQ60FoQH3pOLww[1724748727643709572, 1724748727643714323]b''b''1
\n", + "
" + ], + "text/plain": [ + " profile_id \\\n", + "10115 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10116 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10117 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10118 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10119 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10120 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10121 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10122 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10123 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10124 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "10125 b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|' \n", + "\n", + " start_time_unix_nano end_time_unix_nano time_nanos \\\n", + "10115 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10116 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10117 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10118 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10119 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10120 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10121 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10122 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10123 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10124 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "10125 1724748727643709572 1724748727643714323 1724748727643709572 \n", + "\n", + " duration_nanos period period_type.type period_type.unit \\\n", + "10115 4751 50000000 cpu nanoseconds \n", + "10116 4751 50000000 cpu nanoseconds \n", + "10117 4751 50000000 cpu nanoseconds \n", + "10118 4751 50000000 cpu nanoseconds \n", + "10119 4751 50000000 cpu nanoseconds \n", + "10120 4751 50000000 cpu nanoseconds \n", + "10121 4751 50000000 cpu nanoseconds \n", + "10122 4751 50000000 cpu nanoseconds \n", + "10123 4751 50000000 cpu nanoseconds \n", + "10124 4751 50000000 cpu nanoseconds \n", + "10125 4751 50000000 cpu nanoseconds \n", + "\n", + " period_type.aggregation_temporality type.type type.unit \\\n", + "10115 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10116 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10117 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10118 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10119 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10120 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10121 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10122 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10123 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10124 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "10125 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' samples count \n", + "\n", + " type.aggregation_temporality stacktrace_id \\\n", + "10115 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' blmYb1bfOlUKagj7aubCaw \n", + "10116 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' aW3pt3778x7zYVf7ofqMLQ \n", + "10117 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' tAefttlPgCyFRVEBovTjtA \n", + "10118 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' B001bWhXisiPxwHZPeEmqw \n", + "10119 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' Rvrus5PWAvvrgv5rUn4Y2A \n", + "10120 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' Sy74jS3nIV5unXn3b-Minw \n", + "10121 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' TsKGOrUN_KS9EG1g0ZUQwg \n", + "10122 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' xSWPjcBs0w_PjB-i_tW3IQ \n", + "10123 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' DjJDbyRs7c5_nw-IQ60Zlw \n", + "10124 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' fZ0kJ0QqXjC4oIcwx3I00w \n", + "10125 b'AGGREGATION_TEMPORALITY_UNSPECIFIED' hzERu5miEQ60FoQH3pOLww \n", + "\n", + " timestamps_unix_nano trace_id span_id value \n", + "10115 [1724748728843748170] b'' b'' 1 \n", + "10116 [1724748727043716384] b'' b'' 1 \n", + "10117 [1724748727643696101] b'' b'' 1 \n", + "10118 [1724748729893742215] b'' b'' 1 \n", + "10119 [1724748727393747793] b'' b'' 1 \n", + "10120 [1724748729143725526] b'' b'' 1 \n", + "10121 [1724748728293716293] b'' b'' 1 \n", + "10122 [1724748729143747831] b'' b'' 1 \n", + "10123 [1724748727643742056] b'' b'' 1 \n", + "10124 [1724748728843709654] b'' b'' 1 \n", + "10125 [1724748727643709572, 1724748727643714323] b'' b'' 1 " + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "base_df[base_df['profile_id'] == b'\\x929\\x10\\x9cy&\\xc9v\\x8a\\xae\\xeb\\xe8\\x06\\x1c\\xa1|']" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "2030424b-fdc8-4c16-a630-b7c9e3685f7a", + "metadata": { + "jupyter": { + "source_hidden": true + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Join the DataFrames\n", + "\n", + "To complete the pre-processing lets join the base data frame with the **stack frames** and all meta-data. We'll also precompute a few extra columns: `stacktrace_len` - equal to the total number of entries in a stack frame,\n", + "`stacktrace_max_depth` - equal to the maximum depth, and `stacktrace_depth` - the depth of the current entry into its containing stack frame: \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Join the DataFrames\n", + "\n", + "To complete the pre-processing lets join the base data frame with the **stack frames** and all meta-data. We'll also precompute a few extra columns: `stacktrace_len` - equal to the total number of entries in a stack frame,\n", + "`stacktrace_max_depth` - equal to the maximum depth, and `stacktrace_depth` - the depth of the current entry into its containing stack frame: " + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "id": "482f7180-9e6b-4280-bbb5-5ef4abdbe6d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
profile_idstart_time_unix_nanoend_time_unix_nanotime_nanosduration_nanosperiodperiod_type.typeperiod_type.unitperiod_type.aggregation_temporalitytype.typetype.unittype.aggregation_temporalitystacktrace_idtimestamps_unix_nanotrace_idspan_idvaluelocation.addresslocation.attributeslocation.is_foldedlocation.line_0.columnlocation.line_0.function.filenamelocation.line_0.function.namelocation.line_0.function.start_linelocation.line_0.function.system_namelocation.line_0.linelocation.map.attributeslocation.map.build_idlocation.map.build_id_kindlocation.map.file_offsetlocation.map.filenamelocation.map.has_filenameslocation.map.has_functionslocation.map.has_inline_frameslocation.map.has_line_numberslocation.map.memory_limitlocation.map.memory_startlocation.typestacktrace_lenstacktrace_max_depthstacktrace_deptha_container.ida_thread.namera_host.idra_host.ipra_host.namera_service.versionra_os.kernel
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''11865057[]False0.0hrtimer_start_range_ns0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel151414/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''113197095[]False0.0schedule_hrtimeout_range_clock0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel151413/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14797559[]False0.0ep_poll0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel151412/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14797856[]False0.0do_epoll_wait0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel151411/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14798187[]False0.0do_epoll_pwait.part.00.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel151410/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14799198[]False0.0__x64_sys_epoll_pwait0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel15149/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''113108312[]False0.0do_syscall_640.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel15148/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''114680297[]False0.0entry_SYSCALL_64_after_hwframe0.00.0[]01e5f43a8d64184c0d3729421072863bb'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00kernel15147/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14223117[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15146/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14222980[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15145/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14432945[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15144/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14483588[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15143/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14489072[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15142/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14490571[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15141/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
0b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'iTnG0oMa50esbnFSMfnBIA[1724748417243725237]b''b''14680525[]False[]5ed5c996faa191de8ad2a1f89ba927edb'BUILD_ID_BINARY_HASH'0kube-apiserverFalseFalseFalseFalse591912964194304native15140/libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods....kube-apiserver0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1341040[]False[]f7c4cebbbb1d4181722e158e5a834e0ab'BUILD_ID_BINARY_HASH'118784libglib-2.0.so.0.6800.4FalseFalseFalseFalse712704118784native444343/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1349090[]False[]f7c4cebbbb1d4181722e158e5a834e0ab'BUILD_ID_BINARY_HASH'118784libglib-2.0.so.0.6800.4FalseFalseFalseFalse712704118784native444342/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1306423[]False[]3fd2fab89d539345782eb89eaff2b9b8b'BUILD_ID_BINARY_HASH'0libswt-pi3-gtk-4963r5.soFalseFalseFalseFalse4423680native444341/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''10[]False0.0OS.javaint org.eclipse.swt.internal.gtk.OS.g_main_context_check(long, int, long, int)0.00.0[]a1aa3b220c3d50c6f8cee2561d719b30b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444340/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1275[]False0.0Display.javaboolean org.eclipse.swt.widgets.Display.sleep()0.05643.0[]81bd3e93bfacefa770b66a20789cfad7b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444339/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''11[]False0.0WorkbenchAdvisor.javavoid org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(org.eclipse.swt.widgets.Display)0.0339.0[]a9c718c5e42656575f4fd6b7d82138b6b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444338/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''117[]False0.0IDEWorkbenchAdvisor.javavoid org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(org.eclipse.swt.w...0.0993.0[]2fcd51915ae6dad844e176dc6f7654f8b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444337/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''15[]False0.0Workbench.javavoid org.eclipse.ui.internal.Workbench$1.eventLoopIdle(org.eclipse.swt.widgets.Display)0.0483.0[]a08361133c8b2ec38ba937fe35919e43b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444336/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''1590[]False0.0PartRenderingEngine.javavoid org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run()0.01160.0[]cc6b77f359c8ee20f253762f307464a7b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444335/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
1b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2'172474841709373612817247484170937361281724748417093736128050000000cpunanosecondsb'AGGREGATION_TEMPORALITY_UNSPECIFIED'samplescountb'AGGREGATION_TEMPORALITY_UNSPECIFIED'WYqKLHYa3mJGRunbvCksdA[1724748417943747682]b''b''112[]False0.0Realm.javavoid org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.o...0.0342.0[]84bf1f57bc75c99ec6df147701daf8d5b'BUILD_ID_BINARY_HASH'0FalseFalseFalseFalse00jvm444334/user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s...java0127.0.0.1rh-ho-01.mishmash.local5.14.0
\n", + "
" + ], + "text/plain": [ + " profile_id start_time_unix_nano \\\n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "0 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "1 b'Xp\\xa4\\x95\\xcbR?x\\xa6Y\\x19\\x80\\xe3\\x8e\\xe1\\xa2' 1724748417093736128 \n", + "\n", + " end_time_unix_nano time_nanos duration_nanos period \\\n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "0 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "1 1724748417093736128 1724748417093736128 0 50000000 \n", + "\n", + " period_type.type period_type.unit period_type.aggregation_temporality \\\n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 cpu nanoseconds b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "\n", + " type.type type.unit type.aggregation_temporality \\\n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "0 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "1 samples count b'AGGREGATION_TEMPORALITY_UNSPECIFIED' \n", + "\n", + " stacktrace_id timestamps_unix_nano trace_id span_id value \\\n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "0 iTnG0oMa50esbnFSMfnBIA [1724748417243725237] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "1 WYqKLHYa3mJGRunbvCksdA [1724748417943747682] b'' b'' 1 \n", + "\n", + " location.address location.attributes location.is_folded \\\n", + "0 1865057 [] False \n", + "0 13197095 [] False \n", + "0 4797559 [] False \n", + "0 4797856 [] False \n", + "0 4798187 [] False \n", + "0 4799198 [] False \n", + "0 13108312 [] False \n", + "0 14680297 [] False \n", + "0 4223117 [] False \n", + "0 4222980 [] False \n", + "0 4432945 [] False \n", + "0 4483588 [] False \n", + "0 4489072 [] False \n", + "0 4490571 [] False \n", + "0 4680525 [] False \n", + "1 341040 [] False \n", + "1 349090 [] False \n", + "1 306423 [] False \n", + "1 0 [] False \n", + "1 275 [] False \n", + "1 1 [] False \n", + "1 17 [] False \n", + "1 5 [] False \n", + "1 590 [] False \n", + "1 12 [] False \n", + "\n", + " location.line_0.column location.line_0.function.filename \\\n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "1 \n", + "1 \n", + "1 \n", + "1 0.0 OS.java \n", + "1 0.0 Display.java \n", + "1 0.0 WorkbenchAdvisor.java \n", + "1 0.0 IDEWorkbenchAdvisor.java \n", + "1 0.0 Workbench.java \n", + "1 0.0 PartRenderingEngine.java \n", + "1 0.0 Realm.java \n", + "\n", + " location.line_0.function.name \\\n", + "0 hrtimer_start_range_ns \n", + "0 schedule_hrtimeout_range_clock \n", + "0 ep_poll \n", + "0 do_epoll_wait \n", + "0 do_epoll_pwait.part.0 \n", + "0 __x64_sys_epoll_pwait \n", + "0 do_syscall_64 \n", + "0 entry_SYSCALL_64_after_hwframe \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "1 \n", + "1 \n", + "1 \n", + "1 int org.eclipse.swt.internal.gtk.OS.g_main_context_check(long, int, long, int) \n", + "1 boolean org.eclipse.swt.widgets.Display.sleep() \n", + "1 void org.eclipse.ui.application.WorkbenchAdvisor.eventLoopIdle(org.eclipse.swt.widgets.Display) \n", + "1 void org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor.eventLoopIdle(org.eclipse.swt.w... \n", + "1 void org.eclipse.ui.internal.Workbench$1.eventLoopIdle(org.eclipse.swt.widgets.Display) \n", + "1 void org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run() \n", + "1 void org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.o... \n", + "\n", + " location.line_0.function.start_line location.line_0.function.system_name \\\n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 0.0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "0 \n", + "1 \n", + "1 \n", + "1 \n", + "1 0.0 \n", + "1 0.0 \n", + "1 0.0 \n", + "1 0.0 \n", + "1 0.0 \n", + "1 0.0 \n", + "1 0.0 \n", + "\n", + " location.line_0.line location.map.attributes \\\n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 0.0 [] \n", + "0 [] \n", + "0 [] \n", + "0 [] \n", + "0 [] \n", + "0 [] \n", + "0 [] \n", + "0 [] \n", + "1 [] \n", + "1 [] \n", + "1 [] \n", + "1 0.0 [] \n", + "1 5643.0 [] \n", + "1 339.0 [] \n", + "1 993.0 [] \n", + "1 483.0 [] \n", + "1 1160.0 [] \n", + "1 342.0 [] \n", + "\n", + " location.map.build_id location.map.build_id_kind \\\n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 01e5f43a8d64184c0d3729421072863b b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "0 5ed5c996faa191de8ad2a1f89ba927ed b'BUILD_ID_BINARY_HASH' \n", + "1 f7c4cebbbb1d4181722e158e5a834e0a b'BUILD_ID_BINARY_HASH' \n", + "1 f7c4cebbbb1d4181722e158e5a834e0a b'BUILD_ID_BINARY_HASH' \n", + "1 3fd2fab89d539345782eb89eaff2b9b8 b'BUILD_ID_BINARY_HASH' \n", + "1 a1aa3b220c3d50c6f8cee2561d719b30 b'BUILD_ID_BINARY_HASH' \n", + "1 81bd3e93bfacefa770b66a20789cfad7 b'BUILD_ID_BINARY_HASH' \n", + "1 a9c718c5e42656575f4fd6b7d82138b6 b'BUILD_ID_BINARY_HASH' \n", + "1 2fcd51915ae6dad844e176dc6f7654f8 b'BUILD_ID_BINARY_HASH' \n", + "1 a08361133c8b2ec38ba937fe35919e43 b'BUILD_ID_BINARY_HASH' \n", + "1 cc6b77f359c8ee20f253762f307464a7 b'BUILD_ID_BINARY_HASH' \n", + "1 84bf1f57bc75c99ec6df147701daf8d5 b'BUILD_ID_BINARY_HASH' \n", + "\n", + " location.map.file_offset location.map.filename \\\n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "0 0 kube-apiserver \n", + "1 118784 libglib-2.0.so.0.6800.4 \n", + "1 118784 libglib-2.0.so.0.6800.4 \n", + "1 0 libswt-pi3-gtk-4963r5.so \n", + "1 0 \n", + "1 0 \n", + "1 0 \n", + "1 0 \n", + "1 0 \n", + "1 0 \n", + "1 0 \n", + "\n", + " location.map.has_filenames location.map.has_functions \\\n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "\n", + " location.map.has_inline_frames location.map.has_line_numbers \\\n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "0 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "1 False False \n", + "\n", + " location.map.memory_limit location.map.memory_start location.type \\\n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 0 0 kernel \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "0 59191296 4194304 native \n", + "1 712704 118784 native \n", + "1 712704 118784 native \n", + "1 442368 0 native \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "1 0 0 jvm \n", + "\n", + " stacktrace_len stacktrace_max_depth stacktrace_depth \\\n", + "0 15 14 14 \n", + "0 15 14 13 \n", + "0 15 14 12 \n", + "0 15 14 11 \n", + "0 15 14 10 \n", + "0 15 14 9 \n", + "0 15 14 8 \n", + "0 15 14 7 \n", + "0 15 14 6 \n", + "0 15 14 5 \n", + "0 15 14 4 \n", + "0 15 14 3 \n", + "0 15 14 2 \n", + "0 15 14 1 \n", + "0 15 14 0 \n", + "1 44 43 43 \n", + "1 44 43 42 \n", + "1 44 43 41 \n", + "1 44 43 40 \n", + "1 44 43 39 \n", + "1 44 43 38 \n", + "1 44 43 37 \n", + "1 44 43 36 \n", + "1 44 43 35 \n", + "1 44 43 34 \n", + "\n", + " a_container.id \\\n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "0 /libpod_parent/libpod-0ba85205d552a1f876ba13ae5632576fc8e62f80b9a0f371c4c41ce233feac88/kubepods.... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "1 /user.slice/user-1000.slice/user@1000.service/app.slice/app-dbus\\x2d:1.2\\x2dorg.gnome.Nautilus.s... \n", + "\n", + " a_thread.name ra_host.id ra_host.ip ra_host.name \\\n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "0 kube-apiserver 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "1 java 0 127.0.0.1 rh-ho-01.mishmash.local \n", + "\n", + " ra_service.version ra_os.kernel \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "0 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 \n", + "1 5.14.0 " + ] + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ext_df=base_df.join(locations_df.drop(['stacktrace_id'], axis=1)).join(\n", + " locations_df[['location.address']].groupby(level=0).count().rename({'location.address': 'stacktrace_len'}, axis=1)\n", + ")\n", + "ext_df['stacktrace_max_depth'] = ext_df['stacktrace_len'] - 1\n", + "ext_df['stacktrace_depth'] = ext_df['stacktrace_len'] - locations_df[['location.address']].groupby(level=0).transform('cumcount') - 1\n", + "ext_df=ext_df.join(attrs_df).join(profile_attrs_df).join(resource_attrs_df).join(scope_attrs_df)\n", + "ext_df.head(25).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "id": "e9f7eb7d-0d59-4ba2-8e93-b0b7b0d20b54", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Save the pre-processed profiles to Parquet:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Save the pre-processed profiles to Parquet:" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "2cf4a67e-5981-4877-ac69-b7c8f6531cb4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "ext_df.convert_dtypes().to_parquet('otel-demo-app/profiles_experimental.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "99515ad1-d990-4c83-8294-eb46e8a7ce55", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/notebooks/metrics.ipynb b/examples/notebooks/metrics.ipynb new file mode 100644 index 0000000..13f5d12 --- /dev/null +++ b/examples/notebooks/metrics.ipynb @@ -0,0 +1,10763 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "32c79099-8807-48d3-938d-02afe5618e7c", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# OpenTelemetry metrics examples\n", + "\n", + "> This notebook is part of our ***OpenTelemetry for Developers, Data Engineers and Data Scientists*** series.\n", + ">\n", + "> It is strongly recommended that you first go through the [basics of OpenTelemetry data.](basics.ipynb)\n", + "\n", + "In this demo notebook we'll further process OpenTelemetry `metrics` data that was emitted by a [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) and recorded into Apache Parquet files by \n", + "the [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet).\n", + "\n", + "We'll be using data that is not in the ***raw*** OpenTelemetry format. [The basics notebook](basics.ipynb) does some preprocessing on the raw data\n", + "and saves it in another format that's more suitable for the examples here. It also introduces concepts like `signals` and `signal correlation`, `resources`,\n", + "`scopes`, `attributes` and other. These are not covered here, but are important to understand the examples below.\n", + "\n", + "#### First, some imports:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# OpenTelemetry metrics examples\n", + "\n", + "> This notebook is part of our ***OpenTelemetry for Developers, Data Engineers and Data Scientists*** series.\n", + ">\n", + "> It is strongly recommended that you first go through the [basics of OpenTelemetry data.](basics.ipynb)\n", + "\n", + "In this demo notebook we'll further process OpenTelemetry `metrics` data that was emitted by a [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) and recorded into Apache Parquet files by \n", + "the [OTLP Parquet Server](https://github.com/mishmash-io/opentelemetry-server-embedded/tree/main/server-parquet).\n", + "\n", + "We'll be using data that is not in the ***raw*** OpenTelemetry format. [The basics notebook](basics.ipynb) does some preprocessing on the raw data\n", + "and saves it in another format that's more suitable for the examples here. It also introduces concepts like `signals` and `signal correlation`, `resources`,\n", + "`scopes`, `attributes` and other. These are not covered here, but are important to understand the examples below.\n", + "\n", + "#### First, some imports:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2c5f7d3e", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import pyarrow as pa\n", + "import matplotlib.pyplot as plot\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a7ef4a81", + "metadata": {}, + "outputs": [], + "source": [ + "# configure how Pandas DataFrames are displayed:\n", + "pd.set_option('display.max_columns', None)\n", + "pd.set_option('display.min_rows', 100)\n", + "pd.set_option('display.max_rows', 200)\n", + "pd.options.display.max_colwidth = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "39e1c658-776d-4490-b503-efd2d2117ba8", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Load the preprocessed metrics as a Pandas DataFrame\n", + "\n", + "This preprocessed Apache Parquet file was saved by a previous run of the [basics notebook.](basics.ipynb)\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Load the preprocessed metrics as a Pandas DataFrame\n", + "\n", + "This preprocessed Apache Parquet file was saved by a previous run of the [basics notebook.](basics.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9444cc93", + "metadata": {}, + "outputs": [], + "source": [ + "metrics_df = pd.read_parquet('otel-demo-app/metrics.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a35e1a13-753b-422f-a18c-9c82c0bcf086", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Browse a few records of the preprocessed metrics data\n", + "\n", + "As a quick reference to our input data we're including a table below with a few records.\n", + "\n", + "More details follow, but for now, take a look at the following columns:\n", + "\n", + "- `name`, `description` and `unit` that describe a `metric`\n", + "- `type`, and the sets of `gauge_*`, `sum_*` and `histogram_*` columns\n", + "- `start_time_unix_nano` and `time_unix_nano` are used to specify the `metric` observation time interval\n", + "- the various `attributes` in the `a_*` columns, these identify the data points of a `metric`\n", + "- `scope_name`, `scope_version` and the `resource` (in the `ra_*` columns) tell **who** emitted a `metric` data point\n", + "\n", + "***Note:*** The table might be quite wide, use the horizontal scroller at the bottom to see all columns.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Browse a few records of the preprocessed metrics data\n", + "\n", + "As a quick reference to our input data we're including a table below with a few records.\n", + "\n", + "More details follow, but for now, take a look at the following columns:\n", + "\n", + "- `name`, `description` and `unit` that describe a `metric`\n", + "- `type`, and the sets of `gauge_*`, `sum_*` and `histogram_*` columns\n", + "- `start_time_unix_nano` and `time_unix_nano` are used to specify the `metric` observation time interval\n", + "- the various `attributes` in the `a_*` columns, these identify the data points of a `metric`\n", + "- `scope_name`, `scope_version` and the `resource` (in the `ra_*` columns) tell **who** emitted a `metric` data point\n", + "\n", + "***Note:*** The table might be quite wide, use the horizontal scroller at the bottom to see all columns.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d33225e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versionnamedescriptionunittypegauge_typegauge_intgauge_doublesum_typesum_intsum_doublehistogram_counthistogram_sumhistogram_minhistogram_maxhistogram_bucket_countshistogram_explicit_boundsstart_time_unix_nanotime_unix_nanoaggregation_temporalityis_monotonica_app.ads.ad_request_typea_app.ads.ad_response_typea_app.payment.currencya_aspnetcore.routing.is_fallbacka_aspnetcore.routing.match_statusa_client-ida_counta_cpua_currency_codea_devicea_directiona_droppeda_error.messagea_familya_feature_flag.keya_feature_flag.provider_namea_feature_flag.reasona_feature_flag.varianta_generationa_http.flavora_http.hosta_http.methoda_http.request.methoda_http.response.status_codea_http.routea_http.schemea_http.status_classa_http.status_codea_http.urla_jvm.gc.actiona_jvm.gc.namea_jvm.memory.pool.namea_jvm.memory.typea_jvm.thread.daemona_jvm.thread.statea_methoda_net.host.namea_net.host.porta_net.peer.namea_net.peer.porta_network.protocol.namea_network.protocol.versiona_network.transporta_network.typea_node-ida_number_of_itemsa_operationa_partitiona_process.cpu.statea_processorTypea_protocola_recommendation.typea_rpc.grpc.status_codea_rpc.methoda_rpc.servicea_rpc.systema_server.addressa_server.porta_service.namea_span.kinda_span.namea_statea_statusa_status.codea_successa_targeta_topica_typea_url.schemera_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.namera_os.typera_os.versionra_process.commandra_process.command_argsra_process.command_linera_process.executable.namera_process.executable.pathra_process.ownerra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.auto.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
0otelcol/httpcheckreceiver0.105.0httpcheck.durationMeasures the duration of the HTTP check.msGAUGEAS_INT20.0<NA><NA><NA><NA><NA><NA><NA>[][]17236269303353246121723626931381380943None<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
1otelcol/httpcheckreceiver0.105.0httpcheck.errorRecords errors occurring during HTTP check.{error}SUM<NA><NA><NA>AS_INT10.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>Get \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend...<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
2otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM<NA><NA><NA>AS_INT00.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>GET<NA><NA><NA><NA>1xx0http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
3otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM<NA><NA><NA>AS_INT00.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>GET<NA><NA><NA><NA>2xx0http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
4otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM<NA><NA><NA>AS_INT00.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>GET<NA><NA><NA><NA>3xx0http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
5otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM<NA><NA><NA>AS_INT00.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>GET<NA><NA><NA><NA>4xx0http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
6otelcol/httpcheckreceiver0.105.0httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUM<NA><NA><NA>AS_INT00.0<NA><NA><NA><NA>[][]17236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>GET<NA><NA><NA><NA>5xx0http://opentelemetry-demo-frontendproxy:8080<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>
7flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM<NA><NA><NA><NA><NA><NA>10.0019690.0019690.001969[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>POST<NA><NA><NA><NA><NA>200/flagd.evaluation.v1.Service/ResolveAll<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>flagd<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...<NA>linux<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>go1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagd<NA>v0.11.1<NA><NA><NA>goopentelemetry1.28.0
8flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM<NA><NA><NA><NA><NA><NA>30.0166410.0018910.010135[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>POST<NA><NA><NA><NA><NA>200/schema.v1.Service/ResolveBoolean<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>flagd<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...<NA>linux<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>go1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagd<NA>v0.11.1<NA><NA><NA>goopentelemetry1.28.0
9flagdhttp.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM<NA><NA><NA><NA><NA><NA>30.0032350.0004370.002229[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>POST<NA><NA><NA><NA><NA>200/flagd.evaluation.v1.Service/ResolveBoolean<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>flagd<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>opentelemetry-demo-flagd-6d57f47cb8-t8jgbopentelemetry-demo-flagdotel-demo-parquetminikube10.244.1.42opentelemetry-demo-flagd-6d57f47cb8-t8jgb2024-08-14T09:15:28Zd5391388-6a2b-4911-b4e4-7ecf5ab5e1bfDebian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb...<NA>linux<NA><NA><NA><NA><NA><NA><NA><NA><NA><NA>go1.22.5d5391388-6a2b-4911-b4e4-7ecf5ab5e1bfflagd<NA>v0.11.1<NA><NA><NA>goopentelemetry1.28.0
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version name \\\n", + "0 otelcol/httpcheckreceiver 0.105.0 httpcheck.duration \n", + "1 otelcol/httpcheckreceiver 0.105.0 httpcheck.error \n", + "2 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "3 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "4 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "5 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "6 otelcol/httpcheckreceiver 0.105.0 httpcheck.status \n", + "7 flagd http.server.duration \n", + "8 flagd http.server.duration \n", + "9 flagd http.server.duration \n", + "\n", + " description \\\n", + "0 Measures the duration of the HTTP check. \n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "3 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "4 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "5 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "6 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "7 Measures the duration of inbound HTTP requests. \n", + "8 Measures the duration of inbound HTTP requests. \n", + "9 Measures the duration of inbound HTTP requests. \n", + "\n", + " unit type gauge_type gauge_int gauge_double sum_type sum_int \\\n", + "0 ms GAUGE AS_INT 2 0.0 \n", + "1 {error} SUM AS_INT 1 \n", + "2 1 SUM AS_INT 0 \n", + "3 1 SUM AS_INT 0 \n", + "4 1 SUM AS_INT 0 \n", + "5 1 SUM AS_INT 0 \n", + "6 1 SUM AS_INT 0 \n", + "7 s HISTOGRAM \n", + "8 s HISTOGRAM \n", + "9 s HISTOGRAM \n", + "\n", + " sum_double histogram_count histogram_sum histogram_min histogram_max \\\n", + "0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "5 0.0 \n", + "6 0.0 \n", + "7 1 0.001969 0.001969 0.001969 \n", + "8 3 0.016641 0.001891 0.010135 \n", + "9 3 0.003235 0.000437 0.002229 \n", + "\n", + " histogram_bucket_counts \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "8 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "9 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "\n", + " histogram_explicit_bounds \\\n", + "0 [] \n", + "1 [] \n", + "2 [] \n", + "3 [] \n", + "4 [] \n", + "5 [] \n", + "6 [] \n", + "7 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "8 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "9 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "0 1723626930335324612 1723626931381380943 \n", + "1 1723626930335324612 1723626931381380943 \n", + "2 1723626930335324612 1723626931381380943 \n", + "3 1723626930335324612 1723626931381380943 \n", + "4 1723626930335324612 1723626931381380943 \n", + "5 1723626930335324612 1723626931381380943 \n", + "6 1723626930335324612 1723626931381380943 \n", + "7 1723626929865405138 1723626941865978359 \n", + "8 1723626929865405138 1723626941865978359 \n", + "9 1723626929865405138 1723626941865978359 \n", + "\n", + " aggregation_temporality is_monotonic \\\n", + "0 None \n", + "1 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "2 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "3 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "4 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "5 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "6 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "7 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "9 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "\n", + " a_app.ads.ad_request_type a_app.ads.ad_response_type a_app.payment.currency \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_aspnetcore.routing.is_fallback a_aspnetcore.routing.match_status \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_client-id a_count a_cpu a_currency_code a_device a_direction a_dropped \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_error.message \\\n", + "0 \n", + "1 Get \"http://opentelemetry-demo-frontendproxy:8080\": dial tcp: lookup opentelemetry-demo-frontend... \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_family a_feature_flag.key a_feature_flag.provider_name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_feature_flag.reason a_feature_flag.variant a_generation a_http.flavor \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_http.host a_http.method a_http.request.method \\\n", + "0 \n", + "1 \n", + "2 GET \n", + "3 GET \n", + "4 GET \n", + "5 GET \n", + "6 GET \n", + "7 POST \n", + "8 POST \n", + "9 POST \n", + "\n", + " a_http.response.status_code a_http.route a_http.scheme a_http.status_class \\\n", + "0 \n", + "1 \n", + "2 1xx \n", + "3 2xx \n", + "4 3xx \n", + "5 4xx \n", + "6 5xx \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_http.status_code a_http.url \\\n", + "0 http://opentelemetry-demo-frontendproxy:8080 \n", + "1 http://opentelemetry-demo-frontendproxy:8080 \n", + "2 0 http://opentelemetry-demo-frontendproxy:8080 \n", + "3 0 http://opentelemetry-demo-frontendproxy:8080 \n", + "4 0 http://opentelemetry-demo-frontendproxy:8080 \n", + "5 0 http://opentelemetry-demo-frontendproxy:8080 \n", + "6 0 http://opentelemetry-demo-frontendproxy:8080 \n", + "7 200 /flagd.evaluation.v1.Service/ResolveAll \n", + "8 200 /schema.v1.Service/ResolveBoolean \n", + "9 200 /flagd.evaluation.v1.Service/ResolveBoolean \n", + "\n", + " a_jvm.gc.action a_jvm.gc.name a_jvm.memory.pool.name a_jvm.memory.type \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_jvm.thread.daemon a_jvm.thread.state a_method a_net.host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_net.host.port a_net.peer.name a_net.peer.port a_network.protocol.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_network.protocol.version a_network.transport a_network.type a_node-id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_number_of_items a_operation a_partition a_process.cpu.state \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_processorType a_protocol a_recommendation.type a_rpc.grpc.status_code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_rpc.method a_rpc.service a_rpc.system a_server.address a_server.port \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " a_service.name a_span.kind a_span.name a_state a_status a_status.code \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 flagd \n", + "8 flagd \n", + "9 flagd \n", + "\n", + " a_success a_target a_topic a_type a_url.scheme ra_container.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "8 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "9 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "8 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "9 opentelemetry-demo-flagd otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "8 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "9 10.244.1.42 opentelemetry-demo-flagd-6d57f47cb8-t8jgb \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "8 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "9 2024-08-14T09:15:28Z d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "\n", + " ra_os.description \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "8 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "9 Debian GNU/Linux Debian GNU/Linux 12 (bookworm) (Linux opentelemetry-demo-flagd-6d57f47cb8-t8jgb... \n", + "\n", + " ra_os.name ra_os.type ra_os.version ra_process.command \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 linux \n", + "8 linux \n", + "9 linux \n", + "\n", + " ra_process.command_args ra_process.command_line ra_process.executable.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " ra_process.executable.path ra_process.owner ra_process.pid \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " ra_process.runtime.description ra_process.runtime.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " ra_process.runtime.version ra_service.instance.id \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "8 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "9 go1.22.5 d5391388-6a2b-4911-b4e4-7ecf5ab5e1bf \n", + "\n", + " ra_service.name ra_service.namespace ra_service.version \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 flagd v0.11.1 \n", + "8 flagd v0.11.1 \n", + "9 flagd v0.11.1 \n", + "\n", + " ra_telemetry.auto.version ra_telemetry.distro.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 \n", + "8 \n", + "9 \n", + "\n", + " ra_telemetry.distro.version ra_telemetry.sdk.language ra_telemetry.sdk.name \\\n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 go opentelemetry \n", + "8 go opentelemetry \n", + "9 go opentelemetry \n", + "\n", + " ra_telemetry.sdk.version \n", + "0 \n", + "1 \n", + "2 \n", + "3 \n", + "4 \n", + "5 \n", + "6 \n", + "7 1.28.0 \n", + "8 1.28.0 \n", + "9 1.28.0 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "06466733-5bdc-4dc8-a416-eee73c860c88", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Metric names and units\n", + "\n", + "A `metric` has a `name`, a `description` and of course - a `unit` of measure.\n", + "\n", + "These values are typically hard-coded either by you, when instrumenting your app, or by OpenTelemetry **auto-instrumentation plugins.**\n", + "Find out more on how meters are created in the [OpenTelemetry metrics API.](https://opentelemetry.io/docs/specs/otel/metrics/api/#instrument)\n", + "\n", + "**Auto-instrumentation plugins** provide a wide variety of 'ready-made' metrics. If you're using a popular framework or library in your development,\n", + "chances are OpenTelemetry already has a plugin for it and you don't have to code in order to get telemetry out of it.\n", + " \n", + "To get an idea of the breadth of OpenTelemetry `metrics` and for suggestions on how to implement your own take a look at the following table: \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Metric names and units\n", + "\n", + "A `metric` has a `name`, a `description` and of course - a `unit` of measure.\n", + "\n", + "These values are typically hard-coded either by you, when instrumenting your app, or by OpenTelemetry **auto-instrumentation plugins.**\n", + "Find out more on how meters are created in the [OpenTelemetry metrics API.](https://opentelemetry.io/docs/specs/otel/metrics/api/#instrument)\n", + "\n", + "**Auto-instrumentation plugins** provide a wide variety of 'ready-made' metrics. If you're using a popular framework or library in your development,\n", + "chances are OpenTelemetry already has a plugin for it and you don't have to code in order to get telemetry out of it.\n", + " \n", + "To get an idea of the breadth of OpenTelemetry `metrics` and for suggestions on how to implement your own take a look at the following table: " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6dc50fbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunit
1610app.ads.ad_requestsCounts ad requests by request and response type
1332app.currency_counter
1733app.frontend.requests
1890app.payment.transactions
1747app_recommendations_counterCounts the total number of given recommendationsrecommendations
1959aspnetcore.routing.match_attemptsNumber of requests that were attempted to be matched to an endpoint.{match_attempt}
1374calls
1380durationms
28feature_flag.flagd.evaluation.reasonMeasures the number of evaluations for a given reason.{reason}
17feature_flag.flagd.impressionMeasures the number of evaluations for a given flag.{impression}
39http.client.durationmeasures the duration of the outbound HTTP requestms
1730http.client.durationMeasures the duration of outbound HTTP requests.ms
2282http.client.request.sizeMeasures the size of HTTP request messages.By
2283http.client.response.sizeMeasures the size of HTTP response messages.By
1955http.server.active_requestsNumber of active HTTP server requests.{request}
13http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}
1727http.server.durationMeasures the duration of inbound HTTP requests.ms
7http.server.durationMeasures the duration of inbound HTTP requests.s
1956http.server.request.durationDuration of HTTP server requests.s
10http.server.response.sizeMeasures the size of HTTP request messages (compressed).By
0httpcheck.durationMeasures the duration of the HTTP check.ms
1httpcheck.errorRecords errors occurring during HTTP check.{error}
2httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1
1640jvm.class.countNumber of classes currently loaded.{class}
1618jvm.class.loadedNumber of classes loaded since JVM start.{class}
1641jvm.class.unloadedNumber of classes unloaded since JVM start.{class}
1627jvm.cpu.countNumber of processors available to the Java virtual machine.{cpu}
1626jvm.cpu.recent_utilizationRecent CPU utilization for the process as reported by the JVM.1
1617jvm.cpu.timeCPU time used by the process as reported by the JVM.s
1645jvm.gc.durationDuration of JVM garbage collection actions.s
1628jvm.memory.committedMeasure of memory committed.By
1619jvm.memory.limitMeasure of max obtainable memory.By
1647jvm.memory.usedMeasure of memory used.By
1642jvm.memory.used_after_last_gcMeasure of memory used, as measured after the most recent garbage collection event on this pool.By
1636jvm.thread.countNumber of executing platform threads.{thread}
2267kafka.consumer.assigned_partitionsThe number of partitions currently assigned to this consumer
2204kafka.consumer.bytes_consumed_rateThe average number of bytes consumed per second
2268kafka.consumer.bytes_consumed_totalThe total number of bytes consumed
2194kafka.consumer.commit_latency_avgThe average time taken for a commit request
2202kafka.consumer.commit_latency_maxThe max time taken for a commit request
2188kafka.consumer.commit_rateThe number of commit calls per second
2183kafka.consumer.commit_sync_time_ns_totalThe total time the consumer has spent in commitSync in nanoseconds
2189kafka.consumer.commit_totalThe total number of commit calls
2232kafka.consumer.committed_time_ns_totalThe total time the consumer has spent in committed in nanoseconds
2213kafka.consumer.connection_close_rateThe number of connections closed per second
2207kafka.consumer.connection_close_totalThe total number of connections closed
2253kafka.consumer.connection_countThe current number of active connections.
2181kafka.consumer.connection_creation_rateThe number of new connections established per second
2231kafka.consumer.connection_creation_totalThe total number of new connections established
2167kafka.consumer.failed_authentication_rateThe number of connections with failed authentication per second
............
1948process.runtime.dotnet.thread_pool.completed_items.countThe number of work items that have been processed by the thread pool since the process start.
1949process.runtime.dotnet.thread_pool.queue.lengthThe number of work items that are currently queued to be processed by the thread pool.
1947process.runtime.dotnet.thread_pool.threads.countThe number of thread pool threads that currently exist.
1950process.runtime.dotnet.timer.countThe number of timer instances that are currently active. Timers can be created by many sources s...
1659process.runtime.go.cgo.callsNumber of cgo calls made by the current process
1668process.runtime.go.gc.countNumber of completed garbage collection cycles
1670process.runtime.go.gc.pause_nsAmount of nanoseconds in GC stop-the-world pauses
1669process.runtime.go.gc.pause_total_nsCumulative nanoseconds in GC stop-the-world pauses since the program started
1658process.runtime.go.goroutinesNumber of goroutines that currently exist
1660process.runtime.go.mem.heap_allocBytes of allocated heap objectsBy
1661process.runtime.go.mem.heap_idleBytes in idle (unused) spansBy
1662process.runtime.go.mem.heap_inuseBytes in in-use spansBy
1663process.runtime.go.mem.heap_objectsNumber of allocated heap objects
1664process.runtime.go.mem.heap_releasedBytes of idle spans whose physical memory has been returned to the OSBy
1665process.runtime.go.mem.heap_sysBytes of heap memory obtained from the OSBy
1667process.runtime.go.mem.live_objectsNumber of live objects is the number of cumulative Mallocs - Frees
1666process.runtime.go.mem.lookupsNumber of pointer lookups performed by the runtime
1936process.thread.countProcess threads count.{thread}
1613processedLogsThe number of logs processed by the BatchLogRecordProcessor. [dropped=true if they were dropped ...1
1656processedSpansThe number of spans processed by the BatchSpanProcessor. [dropped=true if they were dropped due ...1
1612queueSizeThe number of items queued1
1746quotesnumber of quotes calculatedquotes
1614rpc.client.durationThe duration of an outbound RPC invocationms
2299rpc.client.durationMeasures the duration of inbound RPC.ms
2306rpc.client.request.sizeMeasures size of RPC request messages (uncompressed).By
2320rpc.client.requests_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.{count}
2313rpc.client.response.sizeMeasures size of RPC response messages (uncompressed).By
2327rpc.client.responses_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.{count}
1616rpc.server.durationThe duration of an inbound RPC invocationms
1671rpc.server.durationMeasures the duration of inbound RPC.ms
1673rpc.server.request.sizeMeasures size of RPC request messages (uncompressed).By
1677rpc.server.requests_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.{count}
1675rpc.server.response.sizeMeasures size of RPC response messages (uncompressed).By
1679rpc.server.responses_per_rpcMeasures the number of messages received per RPC. Should be 1 for all non-streaming RPCs.{count}
1657runtime.uptimeMilliseconds since application was initializedms
43system.cpu.timeSystem CPU timeseconds
75system.cpu.utilizationSystem CPU utilization1
117system.disk.ioSystem disk IObytes
129system.disk.operationsSystem disk operationsoperations
141system.disk.timeSystem disk timeseconds
107system.memory.usageSystem memory usagebytes
110system.memory.utilizationSystem memory utilization1
169system.network.connectionsSystem network connectionsconnections
153system.network.dropped_packetsSystem network dropped_packetspackets
161system.network.errorsSystem network errorserrors
165system.network.ioSystem network iobytes
157system.network.packetsSystem network packetspackets
113system.swap.usageSystem swap usagepages
115system.swap.utilizationSystem swap utilization1
173system.thread_countSystem active threads count
\n", + "

219 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " name \\\n", + "1610 app.ads.ad_requests \n", + "1332 app.currency_counter \n", + "1733 app.frontend.requests \n", + "1890 app.payment.transactions \n", + "1747 app_recommendations_counter \n", + "1959 aspnetcore.routing.match_attempts \n", + "1374 calls \n", + "1380 duration \n", + "28 feature_flag.flagd.evaluation.reason \n", + "17 feature_flag.flagd.impression \n", + "39 http.client.duration \n", + "1730 http.client.duration \n", + "2282 http.client.request.size \n", + "2283 http.client.response.size \n", + "1955 http.server.active_requests \n", + "13 http.server.active_requests \n", + "1727 http.server.duration \n", + "7 http.server.duration \n", + "1956 http.server.request.duration \n", + "10 http.server.response.size \n", + "0 httpcheck.duration \n", + "1 httpcheck.error \n", + "2 httpcheck.status \n", + "1640 jvm.class.count \n", + "1618 jvm.class.loaded \n", + "1641 jvm.class.unloaded \n", + "1627 jvm.cpu.count \n", + "1626 jvm.cpu.recent_utilization \n", + "1617 jvm.cpu.time \n", + "1645 jvm.gc.duration \n", + "1628 jvm.memory.committed \n", + "1619 jvm.memory.limit \n", + "1647 jvm.memory.used \n", + "1642 jvm.memory.used_after_last_gc \n", + "1636 jvm.thread.count \n", + "2267 kafka.consumer.assigned_partitions \n", + "2204 kafka.consumer.bytes_consumed_rate \n", + "2268 kafka.consumer.bytes_consumed_total \n", + "2194 kafka.consumer.commit_latency_avg \n", + "2202 kafka.consumer.commit_latency_max \n", + "2188 kafka.consumer.commit_rate \n", + "2183 kafka.consumer.commit_sync_time_ns_total \n", + "2189 kafka.consumer.commit_total \n", + "2232 kafka.consumer.committed_time_ns_total \n", + "2213 kafka.consumer.connection_close_rate \n", + "2207 kafka.consumer.connection_close_total \n", + "2253 kafka.consumer.connection_count \n", + "2181 kafka.consumer.connection_creation_rate \n", + "2231 kafka.consumer.connection_creation_total \n", + "2167 kafka.consumer.failed_authentication_rate \n", + "... ... \n", + "1948 process.runtime.dotnet.thread_pool.completed_items.count \n", + "1949 process.runtime.dotnet.thread_pool.queue.length \n", + "1947 process.runtime.dotnet.thread_pool.threads.count \n", + "1950 process.runtime.dotnet.timer.count \n", + "1659 process.runtime.go.cgo.calls \n", + "1668 process.runtime.go.gc.count \n", + "1670 process.runtime.go.gc.pause_ns \n", + "1669 process.runtime.go.gc.pause_total_ns \n", + "1658 process.runtime.go.goroutines \n", + "1660 process.runtime.go.mem.heap_alloc \n", + "1661 process.runtime.go.mem.heap_idle \n", + "1662 process.runtime.go.mem.heap_inuse \n", + "1663 process.runtime.go.mem.heap_objects \n", + "1664 process.runtime.go.mem.heap_released \n", + "1665 process.runtime.go.mem.heap_sys \n", + "1667 process.runtime.go.mem.live_objects \n", + "1666 process.runtime.go.mem.lookups \n", + "1936 process.thread.count \n", + "1613 processedLogs \n", + "1656 processedSpans \n", + "1612 queueSize \n", + "1746 quotes \n", + "1614 rpc.client.duration \n", + "2299 rpc.client.duration \n", + "2306 rpc.client.request.size \n", + "2320 rpc.client.requests_per_rpc \n", + "2313 rpc.client.response.size \n", + "2327 rpc.client.responses_per_rpc \n", + "1616 rpc.server.duration \n", + "1671 rpc.server.duration \n", + "1673 rpc.server.request.size \n", + "1677 rpc.server.requests_per_rpc \n", + "1675 rpc.server.response.size \n", + "1679 rpc.server.responses_per_rpc \n", + "1657 runtime.uptime \n", + "43 system.cpu.time \n", + "75 system.cpu.utilization \n", + "117 system.disk.io \n", + "129 system.disk.operations \n", + "141 system.disk.time \n", + "107 system.memory.usage \n", + "110 system.memory.utilization \n", + "169 system.network.connections \n", + "153 system.network.dropped_packets \n", + "161 system.network.errors \n", + "165 system.network.io \n", + "157 system.network.packets \n", + "113 system.swap.usage \n", + "115 system.swap.utilization \n", + "173 system.thread_count \n", + "\n", + " description \\\n", + "1610 Counts ad requests by request and response type \n", + "1332 \n", + "1733 \n", + "1890 \n", + "1747 Counts the total number of given recommendations \n", + "1959 Number of requests that were attempted to be matched to an endpoint. \n", + "1374 \n", + "1380 \n", + "28 Measures the number of evaluations for a given reason. \n", + "17 Measures the number of evaluations for a given flag. \n", + "39 measures the duration of the outbound HTTP request \n", + "1730 Measures the duration of outbound HTTP requests. \n", + "2282 Measures the size of HTTP request messages. \n", + "2283 Measures the size of HTTP response messages. \n", + "1955 Number of active HTTP server requests. \n", + "13 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "1727 Measures the duration of inbound HTTP requests. \n", + "7 Measures the duration of inbound HTTP requests. \n", + "1956 Duration of HTTP server requests. \n", + "10 Measures the size of HTTP request messages (compressed). \n", + "0 Measures the duration of the HTTP check. \n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "1640 Number of classes currently loaded. \n", + "1618 Number of classes loaded since JVM start. \n", + "1641 Number of classes unloaded since JVM start. \n", + "1627 Number of processors available to the Java virtual machine. \n", + "1626 Recent CPU utilization for the process as reported by the JVM. \n", + "1617 CPU time used by the process as reported by the JVM. \n", + "1645 Duration of JVM garbage collection actions. \n", + "1628 Measure of memory committed. \n", + "1619 Measure of max obtainable memory. \n", + "1647 Measure of memory used. \n", + "1642 Measure of memory used, as measured after the most recent garbage collection event on this pool. \n", + "1636 Number of executing platform threads. \n", + "2267 The number of partitions currently assigned to this consumer \n", + "2204 The average number of bytes consumed per second \n", + "2268 The total number of bytes consumed \n", + "2194 The average time taken for a commit request \n", + "2202 The max time taken for a commit request \n", + "2188 The number of commit calls per second \n", + "2183 The total time the consumer has spent in commitSync in nanoseconds \n", + "2189 The total number of commit calls \n", + "2232 The total time the consumer has spent in committed in nanoseconds \n", + "2213 The number of connections closed per second \n", + "2207 The total number of connections closed \n", + "2253 The current number of active connections. \n", + "2181 The number of new connections established per second \n", + "2231 The total number of new connections established \n", + "2167 The number of connections with failed authentication per second \n", + "... ... \n", + "1948 The number of work items that have been processed by the thread pool since the process start. \n", + "1949 The number of work items that are currently queued to be processed by the thread pool. \n", + "1947 The number of thread pool threads that currently exist. \n", + "1950 The number of timer instances that are currently active. Timers can be created by many sources s... \n", + "1659 Number of cgo calls made by the current process \n", + "1668 Number of completed garbage collection cycles \n", + "1670 Amount of nanoseconds in GC stop-the-world pauses \n", + "1669 Cumulative nanoseconds in GC stop-the-world pauses since the program started \n", + "1658 Number of goroutines that currently exist \n", + "1660 Bytes of allocated heap objects \n", + "1661 Bytes in idle (unused) spans \n", + "1662 Bytes in in-use spans \n", + "1663 Number of allocated heap objects \n", + "1664 Bytes of idle spans whose physical memory has been returned to the OS \n", + "1665 Bytes of heap memory obtained from the OS \n", + "1667 Number of live objects is the number of cumulative Mallocs - Frees \n", + "1666 Number of pointer lookups performed by the runtime \n", + "1936 Process threads count. \n", + "1613 The number of logs processed by the BatchLogRecordProcessor. [dropped=true if they were dropped ... \n", + "1656 The number of spans processed by the BatchSpanProcessor. [dropped=true if they were dropped due ... \n", + "1612 The number of items queued \n", + "1746 number of quotes calculated \n", + "1614 The duration of an outbound RPC invocation \n", + "2299 Measures the duration of inbound RPC. \n", + "2306 Measures size of RPC request messages (uncompressed). \n", + "2320 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "2313 Measures size of RPC response messages (uncompressed). \n", + "2327 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "1616 The duration of an inbound RPC invocation \n", + "1671 Measures the duration of inbound RPC. \n", + "1673 Measures size of RPC request messages (uncompressed). \n", + "1677 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "1675 Measures size of RPC response messages (uncompressed). \n", + "1679 Measures the number of messages received per RPC. Should be 1 for all non-streaming RPCs. \n", + "1657 Milliseconds since application was initialized \n", + "43 System CPU time \n", + "75 System CPU utilization \n", + "117 System disk IO \n", + "129 System disk operations \n", + "141 System disk time \n", + "107 System memory usage \n", + "110 System memory utilization \n", + "169 System network connections \n", + "153 System network dropped_packets \n", + "161 System network errors \n", + "165 System network io \n", + "157 System network packets \n", + "113 System swap usage \n", + "115 System swap utilization \n", + "173 System active threads count \n", + "\n", + " unit \n", + "1610 \n", + "1332 \n", + "1733 \n", + "1890 \n", + "1747 recommendations \n", + "1959 {match_attempt} \n", + "1374 \n", + "1380 ms \n", + "28 {reason} \n", + "17 {impression} \n", + "39 ms \n", + "1730 ms \n", + "2282 By \n", + "2283 By \n", + "1955 {request} \n", + "13 {request} \n", + "1727 ms \n", + "7 s \n", + "1956 s \n", + "10 By \n", + "0 ms \n", + "1 {error} \n", + "2 1 \n", + "1640 {class} \n", + "1618 {class} \n", + "1641 {class} \n", + "1627 {cpu} \n", + "1626 1 \n", + "1617 s \n", + "1645 s \n", + "1628 By \n", + "1619 By \n", + "1647 By \n", + "1642 By \n", + "1636 {thread} \n", + "2267 \n", + "2204 \n", + "2268 \n", + "2194 \n", + "2202 \n", + "2188 \n", + "2183 \n", + "2189 \n", + "2232 \n", + "2213 \n", + "2207 \n", + "2253 \n", + "2181 \n", + "2231 \n", + "2167 \n", + "... ... \n", + "1948 \n", + "1949 \n", + "1947 \n", + "1950 \n", + "1659 \n", + "1668 \n", + "1670 \n", + "1669 \n", + "1658 \n", + "1660 By \n", + "1661 By \n", + "1662 By \n", + "1663 \n", + "1664 By \n", + "1665 By \n", + "1667 \n", + "1666 \n", + "1936 {thread} \n", + "1613 1 \n", + "1656 1 \n", + "1612 1 \n", + "1746 quotes \n", + "1614 ms \n", + "2299 ms \n", + "2306 By \n", + "2320 {count} \n", + "2313 By \n", + "2327 {count} \n", + "1616 ms \n", + "1671 ms \n", + "1673 By \n", + "1677 {count} \n", + "1675 By \n", + "1679 {count} \n", + "1657 ms \n", + "43 seconds \n", + "75 1 \n", + "117 bytes \n", + "129 operations \n", + "141 seconds \n", + "107 bytes \n", + "110 1 \n", + "169 connections \n", + "153 packets \n", + "161 errors \n", + "165 bytes \n", + "157 packets \n", + "113 pages \n", + "115 1 \n", + "173 \n", + "\n", + "[219 rows x 3 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics_df[['name', 'description', 'unit']].drop_duplicates().sort_values(by='name')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a8086cdb-8310-43f6-9e56-a682212b7dea", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# A single metric over time\n", + "\n", + "Next, let's get a view of a single `metric` as recorded over time. Pay attention to the `start_time_unix_nano` (which remains fixed) and \n", + "`time_unix_nano` columns.\n", + "\n", + "A given value of a metric data point is always reported over a time interval, with `time_unix_nano` containing ***the end of that time interval.*** \n", + "For this particular metric the value is in the `gauge_int` column, as the `metric` is of `type=GAUGE` and `gauge_type=AS_INT`.\n", + "\n", + "The correct interpretation of the time interval and the value depends on the metric `type` (and potentially some other columns). More on this later. For now, take a look at this Apache Kafka metric:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# A single metric over time\n", + "\n", + "Next, let's get a view of a single `metric` as recorded over time. Pay attention to the `start_time_unix_nano` (which remains fixed) and \n", + "`time_unix_nano` columns.\n", + "\n", + "A given value of a metric data point is always reported over a time interval, with `time_unix_nano` containing ***the end of that time interval.*** \n", + "For this particular metric the value is in the `gauge_int` column, as the `metric` is of `type=GAUGE` and `gauge_type=AS_INT`.\n", + "\n", + "The correct interpretation of the time interval and the value depends on the metric `type` (and potentially some other columns). More on this later. For now, take a look at this Apache Kafka metric:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "50228740", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
scope_namescope_versionnamedescriptionunittypegauge_typegauge_intgauge_doublehistogram_bucket_countshistogram_explicit_boundsstart_time_unix_nanotime_unix_nanora_container.idra_host.archra_host.namera_k8s.deployment.namera_k8s.namespace.namera_k8s.node.namera_k8s.pod.ipra_k8s.pod.namera_k8s.pod.start_timera_k8s.pod.uidra_os.descriptionra_os.typera_process.command_linera_process.executable.pathra_process.pidra_process.runtime.descriptionra_process.runtime.namera_process.runtime.versionra_service.instance.idra_service.namera_service.namespacera_service.versionra_telemetry.distro.namera_telemetry.distro.versionra_telemetry.sdk.languagera_telemetry.sdk.namera_telemetry.sdk.version
3804io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362705654649901421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
4751io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362711654658293321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
34168io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362717654531905621ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
35125io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362723654483036621ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
36083io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362729654732341421ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
49793io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362735654631461021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
51516io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362741654664952121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
52451io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362747654760353321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
56091io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362753656084201021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
57315io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362759654850091721ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
61726io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362765654706625121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
63916io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362771689419290621ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
6822io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362777654631414021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
7774io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362783654949446121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
9522io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362789654592841321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
11497io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362795654763936721ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
15146io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362801655181590821ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
17844io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362807694730078021ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
20948io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362813654600385821ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
23841io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362819655026274921ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
26791io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362825672885601121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
29243io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362831655035589521ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
31068io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362837654586781721ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
32707io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362843654490948121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
37598io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362849654476718921ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
40894io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362855655001228821ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
44696io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362861656891586121ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
46390io.opentelemetry.jmxkafka.lag.maxThe max lag in messages between follower and leader replicas{messages}GAUGEAS_INT00.0[][]1723626936540681556172362867693498933321ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825camd64opentelemetry-demo-kafka-79c66d6644-sm2k4opentelemetry-demo-kafkaotel-demo-parquetminikube10.244.1.47opentelemetry-demo-kafka-79c66d6644-sm2k42024-08-14T09:15:29Z4076eb9d-ad8c-419c-8905-76a78572ede1Linux 5.14.0-427.24.1.el9_4.x86_64linux/opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc.../opt/java/openjdk/bin/java1.0Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTSOpenJDK Runtime Environment21.0.2+13-LTS8f20a94b-32ab-4edb-9572-83d9a2f33d4fkafkaopentelemetry-demo-parquet1.11.1opentelemetry-java-instrumentation2.4.0javaopentelemetry1.38.0
\n", + "
" + ], + "text/plain": [ + " scope_name scope_version name \\\n", + "3804 io.opentelemetry.jmx kafka.lag.max \n", + "4751 io.opentelemetry.jmx kafka.lag.max \n", + "34168 io.opentelemetry.jmx kafka.lag.max \n", + "35125 io.opentelemetry.jmx kafka.lag.max \n", + "36083 io.opentelemetry.jmx kafka.lag.max \n", + "49793 io.opentelemetry.jmx kafka.lag.max \n", + "51516 io.opentelemetry.jmx kafka.lag.max \n", + "52451 io.opentelemetry.jmx kafka.lag.max \n", + "56091 io.opentelemetry.jmx kafka.lag.max \n", + "57315 io.opentelemetry.jmx kafka.lag.max \n", + "61726 io.opentelemetry.jmx kafka.lag.max \n", + "63916 io.opentelemetry.jmx kafka.lag.max \n", + "6822 io.opentelemetry.jmx kafka.lag.max \n", + "7774 io.opentelemetry.jmx kafka.lag.max \n", + "9522 io.opentelemetry.jmx kafka.lag.max \n", + "11497 io.opentelemetry.jmx kafka.lag.max \n", + "15146 io.opentelemetry.jmx kafka.lag.max \n", + "17844 io.opentelemetry.jmx kafka.lag.max \n", + "20948 io.opentelemetry.jmx kafka.lag.max \n", + "23841 io.opentelemetry.jmx kafka.lag.max \n", + "26791 io.opentelemetry.jmx kafka.lag.max \n", + "29243 io.opentelemetry.jmx kafka.lag.max \n", + "31068 io.opentelemetry.jmx kafka.lag.max \n", + "32707 io.opentelemetry.jmx kafka.lag.max \n", + "37598 io.opentelemetry.jmx kafka.lag.max \n", + "40894 io.opentelemetry.jmx kafka.lag.max \n", + "44696 io.opentelemetry.jmx kafka.lag.max \n", + "46390 io.opentelemetry.jmx kafka.lag.max \n", + "\n", + " description \\\n", + "3804 The max lag in messages between follower and leader replicas \n", + "4751 The max lag in messages between follower and leader replicas \n", + "34168 The max lag in messages between follower and leader replicas \n", + "35125 The max lag in messages between follower and leader replicas \n", + "36083 The max lag in messages between follower and leader replicas \n", + "49793 The max lag in messages between follower and leader replicas \n", + "51516 The max lag in messages between follower and leader replicas \n", + "52451 The max lag in messages between follower and leader replicas \n", + "56091 The max lag in messages between follower and leader replicas \n", + "57315 The max lag in messages between follower and leader replicas \n", + "61726 The max lag in messages between follower and leader replicas \n", + "63916 The max lag in messages between follower and leader replicas \n", + "6822 The max lag in messages between follower and leader replicas \n", + "7774 The max lag in messages between follower and leader replicas \n", + "9522 The max lag in messages between follower and leader replicas \n", + "11497 The max lag in messages between follower and leader replicas \n", + "15146 The max lag in messages between follower and leader replicas \n", + "17844 The max lag in messages between follower and leader replicas \n", + "20948 The max lag in messages between follower and leader replicas \n", + "23841 The max lag in messages between follower and leader replicas \n", + "26791 The max lag in messages between follower and leader replicas \n", + "29243 The max lag in messages between follower and leader replicas \n", + "31068 The max lag in messages between follower and leader replicas \n", + "32707 The max lag in messages between follower and leader replicas \n", + "37598 The max lag in messages between follower and leader replicas \n", + "40894 The max lag in messages between follower and leader replicas \n", + "44696 The max lag in messages between follower and leader replicas \n", + "46390 The max lag in messages between follower and leader replicas \n", + "\n", + " unit type gauge_type gauge_int gauge_double \\\n", + "3804 {messages} GAUGE AS_INT 0 0.0 \n", + "4751 {messages} GAUGE AS_INT 0 0.0 \n", + "34168 {messages} GAUGE AS_INT 0 0.0 \n", + "35125 {messages} GAUGE AS_INT 0 0.0 \n", + "36083 {messages} GAUGE AS_INT 0 0.0 \n", + "49793 {messages} GAUGE AS_INT 0 0.0 \n", + "51516 {messages} GAUGE AS_INT 0 0.0 \n", + "52451 {messages} GAUGE AS_INT 0 0.0 \n", + "56091 {messages} GAUGE AS_INT 0 0.0 \n", + "57315 {messages} GAUGE AS_INT 0 0.0 \n", + "61726 {messages} GAUGE AS_INT 0 0.0 \n", + "63916 {messages} GAUGE AS_INT 0 0.0 \n", + "6822 {messages} GAUGE AS_INT 0 0.0 \n", + "7774 {messages} GAUGE AS_INT 0 0.0 \n", + "9522 {messages} GAUGE AS_INT 0 0.0 \n", + "11497 {messages} GAUGE AS_INT 0 0.0 \n", + "15146 {messages} GAUGE AS_INT 0 0.0 \n", + "17844 {messages} GAUGE AS_INT 0 0.0 \n", + "20948 {messages} GAUGE AS_INT 0 0.0 \n", + "23841 {messages} GAUGE AS_INT 0 0.0 \n", + "26791 {messages} GAUGE AS_INT 0 0.0 \n", + "29243 {messages} GAUGE AS_INT 0 0.0 \n", + "31068 {messages} GAUGE AS_INT 0 0.0 \n", + "32707 {messages} GAUGE AS_INT 0 0.0 \n", + "37598 {messages} GAUGE AS_INT 0 0.0 \n", + "40894 {messages} GAUGE AS_INT 0 0.0 \n", + "44696 {messages} GAUGE AS_INT 0 0.0 \n", + "46390 {messages} GAUGE AS_INT 0 0.0 \n", + "\n", + " histogram_bucket_counts histogram_explicit_bounds start_time_unix_nano \\\n", + "3804 [] [] 1723626936540681556 \n", + "4751 [] [] 1723626936540681556 \n", + "34168 [] [] 1723626936540681556 \n", + "35125 [] [] 1723626936540681556 \n", + "36083 [] [] 1723626936540681556 \n", + "49793 [] [] 1723626936540681556 \n", + "51516 [] [] 1723626936540681556 \n", + "52451 [] [] 1723626936540681556 \n", + "56091 [] [] 1723626936540681556 \n", + "57315 [] [] 1723626936540681556 \n", + "61726 [] [] 1723626936540681556 \n", + "63916 [] [] 1723626936540681556 \n", + "6822 [] [] 1723626936540681556 \n", + "7774 [] [] 1723626936540681556 \n", + "9522 [] [] 1723626936540681556 \n", + "11497 [] [] 1723626936540681556 \n", + "15146 [] [] 1723626936540681556 \n", + "17844 [] [] 1723626936540681556 \n", + "20948 [] [] 1723626936540681556 \n", + "23841 [] [] 1723626936540681556 \n", + "26791 [] [] 1723626936540681556 \n", + "29243 [] [] 1723626936540681556 \n", + "31068 [] [] 1723626936540681556 \n", + "32707 [] [] 1723626936540681556 \n", + "37598 [] [] 1723626936540681556 \n", + "40894 [] [] 1723626936540681556 \n", + "44696 [] [] 1723626936540681556 \n", + "46390 [] [] 1723626936540681556 \n", + "\n", + " time_unix_nano \\\n", + "3804 1723627056546499014 \n", + "4751 1723627116546582933 \n", + "34168 1723627176545319056 \n", + "35125 1723627236544830366 \n", + "36083 1723627296547323414 \n", + "49793 1723627356546314610 \n", + "51516 1723627416546649521 \n", + "52451 1723627476547603533 \n", + "56091 1723627536560842010 \n", + "57315 1723627596548500917 \n", + "61726 1723627656547066251 \n", + "63916 1723627716894192906 \n", + "6822 1723627776546314140 \n", + "7774 1723627836549494461 \n", + "9522 1723627896545928413 \n", + "11497 1723627956547639367 \n", + "15146 1723628016551815908 \n", + "17844 1723628076947300780 \n", + "20948 1723628136546003858 \n", + "23841 1723628196550262749 \n", + "26791 1723628256728856011 \n", + "29243 1723628316550355895 \n", + "31068 1723628376545867817 \n", + "32707 1723628436544909481 \n", + "37598 1723628496544767189 \n", + "40894 1723628556550012288 \n", + "44696 1723628616568915861 \n", + "46390 1723628676934989333 \n", + "\n", + " ra_container.id \\\n", + "3804 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "4751 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "34168 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "35125 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "36083 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "49793 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "51516 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "52451 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "56091 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "57315 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "61726 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "63916 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "6822 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "7774 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "9522 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "11497 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "15146 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "17844 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "20948 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "23841 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "26791 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "29243 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "31068 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "32707 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "37598 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "40894 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "44696 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "46390 21ff29407d6923d0abc595bfc6add4e77bb6a423dfbda6c4cb6902d40ca9825c \n", + "\n", + " ra_host.arch ra_host.name \\\n", + "3804 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4751 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "34168 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "35125 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "36083 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "49793 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "51516 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "52451 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "56091 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "57315 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "61726 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "63916 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "6822 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "7774 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "9522 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "11497 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15146 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17844 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20948 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23841 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "26791 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "29243 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "31068 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "32707 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "37598 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "40894 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "44696 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "46390 amd64 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.deployment.name ra_k8s.namespace.name ra_k8s.node.name \\\n", + "3804 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "4751 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "34168 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "35125 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "36083 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "49793 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "51516 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "52451 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "56091 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "57315 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "61726 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "63916 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "6822 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "7774 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "9522 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "11497 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "15146 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "17844 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "20948 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "23841 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "26791 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "29243 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "31068 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "32707 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "37598 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "40894 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "44696 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "46390 opentelemetry-demo-kafka otel-demo-parquet minikube \n", + "\n", + " ra_k8s.pod.ip ra_k8s.pod.name \\\n", + "3804 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "4751 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "34168 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "35125 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "36083 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "49793 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "51516 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "52451 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "56091 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "57315 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "61726 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "63916 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "6822 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "7774 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "9522 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "11497 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "15146 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "17844 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "20948 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "23841 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "26791 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "29243 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "31068 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "32707 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "37598 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "40894 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "44696 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "46390 10.244.1.47 opentelemetry-demo-kafka-79c66d6644-sm2k4 \n", + "\n", + " ra_k8s.pod.start_time ra_k8s.pod.uid \\\n", + "3804 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "4751 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "34168 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "35125 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "36083 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "49793 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "51516 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "52451 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "56091 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "57315 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "61726 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "63916 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "6822 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "7774 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "9522 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "11497 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "15146 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "17844 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "20948 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "23841 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "26791 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "29243 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "31068 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "32707 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "37598 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "40894 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "44696 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "46390 2024-08-14T09:15:29Z 4076eb9d-ad8c-419c-8905-76a78572ede1 \n", + "\n", + " ra_os.description ra_os.type \\\n", + "3804 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "4751 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "34168 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "35125 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "36083 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "49793 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "51516 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "52451 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "56091 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "57315 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "61726 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "63916 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "6822 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "7774 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "9522 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "11497 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "15146 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "17844 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "20948 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "23841 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "26791 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "29243 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "31068 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "32707 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "37598 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "40894 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "44696 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "46390 Linux 5.14.0-427.24.1.el9_4.x86_64 linux \n", + "\n", + " ra_process.command_line \\\n", + "3804 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "4751 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "34168 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "35125 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "36083 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "49793 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "51516 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "52451 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "56091 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "57315 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "61726 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "63916 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "6822 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "7774 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "9522 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "11497 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "15146 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "17844 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "20948 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "23841 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "26791 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "29243 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "31068 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "32707 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "37598 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "40894 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "44696 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "46390 /opt/java/openjdk/bin/java -Xmx400M -Xms400M -XX:SharedArchiveFile=/opt/kafka/kafka.jsa -Xlog:gc... \n", + "\n", + " ra_process.executable.path ra_process.pid \\\n", + "3804 /opt/java/openjdk/bin/java 1.0 \n", + "4751 /opt/java/openjdk/bin/java 1.0 \n", + "34168 /opt/java/openjdk/bin/java 1.0 \n", + "35125 /opt/java/openjdk/bin/java 1.0 \n", + "36083 /opt/java/openjdk/bin/java 1.0 \n", + "49793 /opt/java/openjdk/bin/java 1.0 \n", + "51516 /opt/java/openjdk/bin/java 1.0 \n", + "52451 /opt/java/openjdk/bin/java 1.0 \n", + "56091 /opt/java/openjdk/bin/java 1.0 \n", + "57315 /opt/java/openjdk/bin/java 1.0 \n", + "61726 /opt/java/openjdk/bin/java 1.0 \n", + "63916 /opt/java/openjdk/bin/java 1.0 \n", + "6822 /opt/java/openjdk/bin/java 1.0 \n", + "7774 /opt/java/openjdk/bin/java 1.0 \n", + "9522 /opt/java/openjdk/bin/java 1.0 \n", + "11497 /opt/java/openjdk/bin/java 1.0 \n", + "15146 /opt/java/openjdk/bin/java 1.0 \n", + "17844 /opt/java/openjdk/bin/java 1.0 \n", + "20948 /opt/java/openjdk/bin/java 1.0 \n", + "23841 /opt/java/openjdk/bin/java 1.0 \n", + "26791 /opt/java/openjdk/bin/java 1.0 \n", + "29243 /opt/java/openjdk/bin/java 1.0 \n", + "31068 /opt/java/openjdk/bin/java 1.0 \n", + "32707 /opt/java/openjdk/bin/java 1.0 \n", + "37598 /opt/java/openjdk/bin/java 1.0 \n", + "40894 /opt/java/openjdk/bin/java 1.0 \n", + "44696 /opt/java/openjdk/bin/java 1.0 \n", + "46390 /opt/java/openjdk/bin/java 1.0 \n", + "\n", + " ra_process.runtime.description \\\n", + "3804 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "4751 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "34168 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "35125 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "36083 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "49793 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "51516 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "52451 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "56091 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "57315 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "61726 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "63916 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "6822 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "7774 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "9522 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "11497 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "15146 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "17844 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "20948 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "23841 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "26791 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "29243 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "31068 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "32707 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "37598 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "40894 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "44696 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "46390 Eclipse Adoptium OpenJDK 64-Bit Server VM 21.0.2+13-LTS \n", + "\n", + " ra_process.runtime.name ra_process.runtime.version \\\n", + "3804 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "4751 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "34168 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "35125 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "36083 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "49793 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "51516 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "52451 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "56091 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "57315 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "61726 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "63916 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "6822 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "7774 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "9522 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "11497 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "15146 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "17844 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "20948 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "23841 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "26791 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "29243 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "31068 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "32707 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "37598 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "40894 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "44696 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "46390 OpenJDK Runtime Environment 21.0.2+13-LTS \n", + "\n", + " ra_service.instance.id ra_service.name \\\n", + "3804 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "4751 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "34168 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "35125 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "36083 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "49793 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "51516 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "52451 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "56091 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "57315 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "61726 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "63916 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "6822 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "7774 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "9522 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "11497 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "15146 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "17844 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "20948 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "23841 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "26791 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "29243 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "31068 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "32707 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "37598 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "40894 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "44696 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "46390 8f20a94b-32ab-4edb-9572-83d9a2f33d4f kafka \n", + "\n", + " ra_service.namespace ra_service.version \\\n", + "3804 opentelemetry-demo-parquet 1.11.1 \n", + "4751 opentelemetry-demo-parquet 1.11.1 \n", + "34168 opentelemetry-demo-parquet 1.11.1 \n", + "35125 opentelemetry-demo-parquet 1.11.1 \n", + "36083 opentelemetry-demo-parquet 1.11.1 \n", + "49793 opentelemetry-demo-parquet 1.11.1 \n", + "51516 opentelemetry-demo-parquet 1.11.1 \n", + "52451 opentelemetry-demo-parquet 1.11.1 \n", + "56091 opentelemetry-demo-parquet 1.11.1 \n", + "57315 opentelemetry-demo-parquet 1.11.1 \n", + "61726 opentelemetry-demo-parquet 1.11.1 \n", + "63916 opentelemetry-demo-parquet 1.11.1 \n", + "6822 opentelemetry-demo-parquet 1.11.1 \n", + "7774 opentelemetry-demo-parquet 1.11.1 \n", + "9522 opentelemetry-demo-parquet 1.11.1 \n", + "11497 opentelemetry-demo-parquet 1.11.1 \n", + "15146 opentelemetry-demo-parquet 1.11.1 \n", + "17844 opentelemetry-demo-parquet 1.11.1 \n", + "20948 opentelemetry-demo-parquet 1.11.1 \n", + "23841 opentelemetry-demo-parquet 1.11.1 \n", + "26791 opentelemetry-demo-parquet 1.11.1 \n", + "29243 opentelemetry-demo-parquet 1.11.1 \n", + "31068 opentelemetry-demo-parquet 1.11.1 \n", + "32707 opentelemetry-demo-parquet 1.11.1 \n", + "37598 opentelemetry-demo-parquet 1.11.1 \n", + "40894 opentelemetry-demo-parquet 1.11.1 \n", + "44696 opentelemetry-demo-parquet 1.11.1 \n", + "46390 opentelemetry-demo-parquet 1.11.1 \n", + "\n", + " ra_telemetry.distro.name ra_telemetry.distro.version \\\n", + "3804 opentelemetry-java-instrumentation 2.4.0 \n", + "4751 opentelemetry-java-instrumentation 2.4.0 \n", + "34168 opentelemetry-java-instrumentation 2.4.0 \n", + "35125 opentelemetry-java-instrumentation 2.4.0 \n", + "36083 opentelemetry-java-instrumentation 2.4.0 \n", + "49793 opentelemetry-java-instrumentation 2.4.0 \n", + "51516 opentelemetry-java-instrumentation 2.4.0 \n", + "52451 opentelemetry-java-instrumentation 2.4.0 \n", + "56091 opentelemetry-java-instrumentation 2.4.0 \n", + "57315 opentelemetry-java-instrumentation 2.4.0 \n", + "61726 opentelemetry-java-instrumentation 2.4.0 \n", + "63916 opentelemetry-java-instrumentation 2.4.0 \n", + "6822 opentelemetry-java-instrumentation 2.4.0 \n", + "7774 opentelemetry-java-instrumentation 2.4.0 \n", + "9522 opentelemetry-java-instrumentation 2.4.0 \n", + "11497 opentelemetry-java-instrumentation 2.4.0 \n", + "15146 opentelemetry-java-instrumentation 2.4.0 \n", + "17844 opentelemetry-java-instrumentation 2.4.0 \n", + "20948 opentelemetry-java-instrumentation 2.4.0 \n", + "23841 opentelemetry-java-instrumentation 2.4.0 \n", + "26791 opentelemetry-java-instrumentation 2.4.0 \n", + "29243 opentelemetry-java-instrumentation 2.4.0 \n", + "31068 opentelemetry-java-instrumentation 2.4.0 \n", + "32707 opentelemetry-java-instrumentation 2.4.0 \n", + "37598 opentelemetry-java-instrumentation 2.4.0 \n", + "40894 opentelemetry-java-instrumentation 2.4.0 \n", + "44696 opentelemetry-java-instrumentation 2.4.0 \n", + "46390 opentelemetry-java-instrumentation 2.4.0 \n", + "\n", + " ra_telemetry.sdk.language ra_telemetry.sdk.name ra_telemetry.sdk.version \n", + "3804 java opentelemetry 1.38.0 \n", + "4751 java opentelemetry 1.38.0 \n", + "34168 java opentelemetry 1.38.0 \n", + "35125 java opentelemetry 1.38.0 \n", + "36083 java opentelemetry 1.38.0 \n", + "49793 java opentelemetry 1.38.0 \n", + "51516 java opentelemetry 1.38.0 \n", + "52451 java opentelemetry 1.38.0 \n", + "56091 java opentelemetry 1.38.0 \n", + "57315 java opentelemetry 1.38.0 \n", + "61726 java opentelemetry 1.38.0 \n", + "63916 java opentelemetry 1.38.0 \n", + "6822 java opentelemetry 1.38.0 \n", + "7774 java opentelemetry 1.38.0 \n", + "9522 java opentelemetry 1.38.0 \n", + "11497 java opentelemetry 1.38.0 \n", + "15146 java opentelemetry 1.38.0 \n", + "17844 java opentelemetry 1.38.0 \n", + "20948 java opentelemetry 1.38.0 \n", + "23841 java opentelemetry 1.38.0 \n", + "26791 java opentelemetry 1.38.0 \n", + "29243 java opentelemetry 1.38.0 \n", + "31068 java opentelemetry 1.38.0 \n", + "32707 java opentelemetry 1.38.0 \n", + "37598 java opentelemetry 1.38.0 \n", + "40894 java opentelemetry 1.38.0 \n", + "44696 java opentelemetry 1.38.0 \n", + "46390 java opentelemetry 1.38.0 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics_df[metrics_df['name'] == 'kafka.lag.max'].dropna(axis=1, how='all').sort_values(by=['start_time_unix_nano', 'time_unix_nano'])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "12e18b66-dd09-40da-8604-6492afcbe2e0", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Metrics can have multiple data points\n", + "\n", + "If you've already been through the [basics notebook](basics.ipynb) you might have realized that the same `metric` (as a `name`, `description`) \n", + "may be emitted by different `resources` or `scopes` - like multiple instances (pods) of a micro service, or separate dependencies in your code that \n", + "provide similar measurements.\n", + "\n", + "When working with `metrics` data it is important to distinguish between various emitters (`resources`, `scopes`, etc), but also keep in mind that ***one \n", + "single metric, emitted by the same resource and scope, at the same timestamp, can have multiple data points.***\n", + "\n", + "Take a look at the `system.cpu.utilization` metric below, and especially at the `a_cpu` and `a_state` attribute columns. The same metric, reported by \n", + "the same `resource` has individual data points for each CPU and each CPU state (`idle`, `user`, `system`...):\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Metrics can have multiple data points\n", + "\n", + "If you've already been through the [basics notebook](basics.ipynb) you might have realized that the same `metric` (as a `name`, `description`) \n", + "may be emitted by different `resources` or `scopes` - like multiple instances (pods) of a micro service, or separate dependencies in your code that \n", + "provide similar measurements.\n", + "\n", + "When working with `metrics` data it is important to distinguish between various emitters (`resources`, `scopes`, etc), but also keep in mind that ***one \n", + "single metric, emitted by the same resource and scope, at the same timestamp, can have multiple data points.***\n", + "\n", + "Take a look at the `system.cpu.utilization` metric below, and especially at the `a_cpu` and `a_state` attribute columns. The same metric, reported by \n", + "the same `resource` has individual data points for each CPU and each CPU state (`idle`, `user`, `system`...):" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "88dcf73f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunittypegauge_typegauge_doubletime_unix_nanoa_cpua_statera_service.namescope_namera_k8s.pod.uid
75system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617001.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
76system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617001.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
77system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617001.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
78system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617001.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
79system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617002.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
80system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617002.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
81system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617002.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
82system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617002.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
83system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617003.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
84system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617003.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
85system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617003.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
86system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617003.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
87system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617004.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
88system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617004.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
89system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617004.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
90system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617004.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
91system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617005.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
92system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617005.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
93system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617005.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
94system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617005.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
95system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617006.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
96system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617006.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
97system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617006.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
98system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617006.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
99system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617007.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
100system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617007.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
101system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617007.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
102system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617007.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
103system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617008.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
104system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617008.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
105system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617008.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
106system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269436341617008.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
432system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146801.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
433system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146801.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
434system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146801.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
435system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146801.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
436system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146802.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
437system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146802.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
438system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146802.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
439system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146802.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
440system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146803.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
441system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146803.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
442system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146803.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
443system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146803.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
444system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146804.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
445system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146804.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
446system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146804.0systemloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
447system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146804.0irqloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
448system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146805.0idleloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
449system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE0.017236269556128146805.0userloadgeneratoropentelemetry.instrumentation.system_metricsc8245f82-76f9-409b-848b-1f322ab0558c
\n", + "
" + ], + "text/plain": [ + " name description unit type gauge_type \\\n", + "75 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "76 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "77 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "78 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "79 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "80 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "81 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "82 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "83 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "84 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "85 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "86 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "87 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "88 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "89 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "90 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "91 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "92 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "93 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "94 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "95 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "96 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "97 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "98 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "99 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "100 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "101 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "102 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "103 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "104 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "105 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "106 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "432 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "433 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "434 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "435 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "436 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "437 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "438 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "439 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "440 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "441 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "442 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "443 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "444 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "445 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "446 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "447 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "448 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "449 system.cpu.utilization System CPU utilization 1 GAUGE AS_DOUBLE \n", + "\n", + " gauge_double time_unix_nano a_cpu a_state ra_service.name \\\n", + "75 0.0 1723626943634161700 1.0 idle loadgenerator \n", + "76 0.0 1723626943634161700 1.0 user loadgenerator \n", + "77 0.0 1723626943634161700 1.0 system loadgenerator \n", + "78 0.0 1723626943634161700 1.0 irq loadgenerator \n", + "79 0.0 1723626943634161700 2.0 idle loadgenerator \n", + "80 0.0 1723626943634161700 2.0 user loadgenerator \n", + "81 0.0 1723626943634161700 2.0 system loadgenerator \n", + "82 0.0 1723626943634161700 2.0 irq loadgenerator \n", + "83 0.0 1723626943634161700 3.0 idle loadgenerator \n", + "84 0.0 1723626943634161700 3.0 user loadgenerator \n", + "85 0.0 1723626943634161700 3.0 system loadgenerator \n", + "86 0.0 1723626943634161700 3.0 irq loadgenerator \n", + "87 0.0 1723626943634161700 4.0 idle loadgenerator \n", + "88 0.0 1723626943634161700 4.0 user loadgenerator \n", + "89 0.0 1723626943634161700 4.0 system loadgenerator \n", + "90 0.0 1723626943634161700 4.0 irq loadgenerator \n", + "91 0.0 1723626943634161700 5.0 idle loadgenerator \n", + "92 0.0 1723626943634161700 5.0 user loadgenerator \n", + "93 0.0 1723626943634161700 5.0 system loadgenerator \n", + "94 0.0 1723626943634161700 5.0 irq loadgenerator \n", + "95 0.0 1723626943634161700 6.0 idle loadgenerator \n", + "96 0.0 1723626943634161700 6.0 user loadgenerator \n", + "97 0.0 1723626943634161700 6.0 system loadgenerator \n", + "98 0.0 1723626943634161700 6.0 irq loadgenerator \n", + "99 0.0 1723626943634161700 7.0 idle loadgenerator \n", + "100 0.0 1723626943634161700 7.0 user loadgenerator \n", + "101 0.0 1723626943634161700 7.0 system loadgenerator \n", + "102 0.0 1723626943634161700 7.0 irq loadgenerator \n", + "103 0.0 1723626943634161700 8.0 idle loadgenerator \n", + "104 0.0 1723626943634161700 8.0 user loadgenerator \n", + "105 0.0 1723626943634161700 8.0 system loadgenerator \n", + "106 0.0 1723626943634161700 8.0 irq loadgenerator \n", + "432 0.0 1723626955612814680 1.0 idle loadgenerator \n", + "433 0.0 1723626955612814680 1.0 user loadgenerator \n", + "434 0.0 1723626955612814680 1.0 system loadgenerator \n", + "435 0.0 1723626955612814680 1.0 irq loadgenerator \n", + "436 0.0 1723626955612814680 2.0 idle loadgenerator \n", + "437 0.0 1723626955612814680 2.0 user loadgenerator \n", + "438 0.0 1723626955612814680 2.0 system loadgenerator \n", + "439 0.0 1723626955612814680 2.0 irq loadgenerator \n", + "440 0.0 1723626955612814680 3.0 idle loadgenerator \n", + "441 0.0 1723626955612814680 3.0 user loadgenerator \n", + "442 0.0 1723626955612814680 3.0 system loadgenerator \n", + "443 0.0 1723626955612814680 3.0 irq loadgenerator \n", + "444 0.0 1723626955612814680 4.0 idle loadgenerator \n", + "445 0.0 1723626955612814680 4.0 user loadgenerator \n", + "446 0.0 1723626955612814680 4.0 system loadgenerator \n", + "447 0.0 1723626955612814680 4.0 irq loadgenerator \n", + "448 0.0 1723626955612814680 5.0 idle loadgenerator \n", + "449 0.0 1723626955612814680 5.0 user loadgenerator \n", + "\n", + " scope_name \\\n", + "75 opentelemetry.instrumentation.system_metrics \n", + "76 opentelemetry.instrumentation.system_metrics \n", + "77 opentelemetry.instrumentation.system_metrics \n", + "78 opentelemetry.instrumentation.system_metrics \n", + "79 opentelemetry.instrumentation.system_metrics \n", + "80 opentelemetry.instrumentation.system_metrics \n", + "81 opentelemetry.instrumentation.system_metrics \n", + "82 opentelemetry.instrumentation.system_metrics \n", + "83 opentelemetry.instrumentation.system_metrics \n", + "84 opentelemetry.instrumentation.system_metrics \n", + "85 opentelemetry.instrumentation.system_metrics \n", + "86 opentelemetry.instrumentation.system_metrics \n", + "87 opentelemetry.instrumentation.system_metrics \n", + "88 opentelemetry.instrumentation.system_metrics \n", + "89 opentelemetry.instrumentation.system_metrics \n", + "90 opentelemetry.instrumentation.system_metrics \n", + "91 opentelemetry.instrumentation.system_metrics \n", + "92 opentelemetry.instrumentation.system_metrics \n", + "93 opentelemetry.instrumentation.system_metrics \n", + "94 opentelemetry.instrumentation.system_metrics \n", + "95 opentelemetry.instrumentation.system_metrics \n", + "96 opentelemetry.instrumentation.system_metrics \n", + "97 opentelemetry.instrumentation.system_metrics \n", + "98 opentelemetry.instrumentation.system_metrics \n", + "99 opentelemetry.instrumentation.system_metrics \n", + "100 opentelemetry.instrumentation.system_metrics \n", + "101 opentelemetry.instrumentation.system_metrics \n", + "102 opentelemetry.instrumentation.system_metrics \n", + "103 opentelemetry.instrumentation.system_metrics \n", + "104 opentelemetry.instrumentation.system_metrics \n", + "105 opentelemetry.instrumentation.system_metrics \n", + "106 opentelemetry.instrumentation.system_metrics \n", + "432 opentelemetry.instrumentation.system_metrics \n", + "433 opentelemetry.instrumentation.system_metrics \n", + "434 opentelemetry.instrumentation.system_metrics \n", + "435 opentelemetry.instrumentation.system_metrics \n", + "436 opentelemetry.instrumentation.system_metrics \n", + "437 opentelemetry.instrumentation.system_metrics \n", + "438 opentelemetry.instrumentation.system_metrics \n", + "439 opentelemetry.instrumentation.system_metrics \n", + "440 opentelemetry.instrumentation.system_metrics \n", + "441 opentelemetry.instrumentation.system_metrics \n", + "442 opentelemetry.instrumentation.system_metrics \n", + "443 opentelemetry.instrumentation.system_metrics \n", + "444 opentelemetry.instrumentation.system_metrics \n", + "445 opentelemetry.instrumentation.system_metrics \n", + "446 opentelemetry.instrumentation.system_metrics \n", + "447 opentelemetry.instrumentation.system_metrics \n", + "448 opentelemetry.instrumentation.system_metrics \n", + "449 opentelemetry.instrumentation.system_metrics \n", + "\n", + " ra_k8s.pod.uid \n", + "75 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "76 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "77 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "78 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "79 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "80 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "81 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "82 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "83 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "84 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "85 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "86 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "87 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "88 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "89 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "90 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "91 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "92 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "93 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "94 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "95 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "96 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "97 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "98 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "99 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "100 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "101 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "102 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "103 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "104 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "105 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "106 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "432 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "433 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "434 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "435 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "436 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "437 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "438 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "439 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "440 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "441 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "442 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "443 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "444 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "445 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "446 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "447 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "448 c8245f82-76f9-409b-848b-1f322ab0558c \n", + "449 c8245f82-76f9-409b-848b-1f322ab0558c " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics_df[metrics_df['name'] == 'system.cpu.utilization'][\n", + " [\n", + " 'name',\n", + " 'description',\n", + " 'unit',\n", + " 'type',\n", + " 'gauge_type',\n", + " 'gauge_double',\n", + " 'time_unix_nano',\n", + " # metric data point attributes\n", + " 'a_cpu',\n", + " 'a_state',\n", + " # resource and scope\n", + " 'ra_service.name',\n", + " 'scope_name',\n", + " 'ra_k8s.pod.uid'\n", + " ]\n", + "].head(50)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "37617477-0806-4beb-b17c-88727f5b7b44", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Simplify our data a bit\n", + "\n", + "To avoid very wide tables, let's replace all `resource` attributes (in the `ra_*` columns) with a single id that we can use to separate `metrics` by \n", + "their emitters.\n", + "\n", + "We'll call this derived column `emitter`.\n", + "\n", + "***Note:*** We have previously checked that the `scope_name` and `ra_service.name` columns are enough for this demo data set. For other data sets \n", + "they will not suffice to uniquely identify each emitter!\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Simplify our data a bit\n", + "\n", + "To avoid very wide tables, let's replace all `resource` attributes (in the `ra_*` columns) with a single id that we can use to separate `metrics` by \n", + "their emitters.\n", + "\n", + "We'll call this derived column `emitter`.\n", + "\n", + "***Note:*** We have previously checked that the `scope_name` and `ra_service.name` columns are enough for this demo data set. For other data sets \n", + "they will not suffice to uniquely identify each emitter!" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5d8e10e8-68dc-4c24-95d0-37fcc9b8ea9f", + "metadata": {}, + "outputs": [], + "source": [ + "metrics_df['emitter'] = metrics_df['scope_name'] + '@' + metrics_df['ra_service.name']\n", + "metrics_df = metrics_df[[c for c in metrics_df.columns if c[:3] != 'ra_' and c not in ['scope_name', 'scope_version']]]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "941462ad-a3d7-431c-ba8c-5146e3d95252", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Metric types\n", + "\n", + "With OpenTelemetry, your code creates a 'meter' of a given type, like a [Gauge](https://opentelemetry.io/docs/specs/otel/metrics/api/#gauge-creation), \n", + "a [Counter](https://opentelemetry.io/docs/specs/otel/metrics/api/#counter-creation),\n", + "an [UpDownCounter](https://opentelemetry.io/docs/specs/otel/metrics/api/#updowncounter-creation),\n", + "or a [Histogram](https://opentelemetry.io/docs/specs/otel/metrics/api/#histogram-creation). Then, during run-time, your code will typically 'add' \n", + "new values to this meter to update it. (With some meters your code can also 'subtract').\n", + "\n", + "These updates though might happen too often and cause lots of network traffic just to report the changes in the `metric`. Think of a very busy web app,\n", + "that is counting the number of incoming requests. Updates may be happening hundreds or thousands of times per second!\n", + "\n", + "To avoid heavy resource usage OpenTelemetry will 'aggregate' each metric and report a single value for it over a given time interval. The way it has \n", + "'aggergated' a metric is saved in the `type` column:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Metric types\n", + "\n", + "With OpenTelemetry, your code creates a 'meter' of a given type, like a [Gauge](https://opentelemetry.io/docs/specs/otel/metrics/api/#gauge-creation), \n", + "a [Counter](https://opentelemetry.io/docs/specs/otel/metrics/api/#counter-creation),\n", + "an [UpDownCounter](https://opentelemetry.io/docs/specs/otel/metrics/api/#updowncounter-creation),\n", + "or a [Histogram](https://opentelemetry.io/docs/specs/otel/metrics/api/#histogram-creation). Then, during run-time, your code will typically 'add' \n", + "new values to this meter to update it. (With some meters your code can also 'subtract').\n", + "\n", + "These updates though might happen too often and cause lots of network traffic just to report the changes in the `metric`. Think of a very busy web app,\n", + "that is counting the number of incoming requests. Updates may be happening hundreds or thousands of times per second!\n", + "\n", + "To avoid heavy resource usage OpenTelemetry will 'aggregate' each metric and report a single value for it over a given time interval. The way it has \n", + "'aggergated' a metric is saved in the `type` column:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ec58503f-698d-4202-ba80-6f641bcefb93", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
type
0GAUGE
1SUM
7HISTOGRAM
\n", + "
" + ], + "text/plain": [ + " type\n", + "0 GAUGE\n", + "1 SUM\n", + "7 HISTOGRAM" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "metrics_df[['type']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "852bee38-15f6-4397-bc44-b57b019d09f4", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Gauge metrics\n", + "\n", + "OpenTelemetry 'aggregates' GAUGE metrics to their **last** value for the observation period. No matter how many times they change during that time - only \n", + "the final value of the Gauge is reported, that is - the value the Gauge had at `time_unix_nano`:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Gauge metrics\n", + "\n", + "OpenTelemetry 'aggregates' GAUGE metrics to their **last** value for the observation period. No matter how many times they change during that time - only \n", + "the final value of the Gauge is reported, that is - the value the Gauge had at `time_unix_nano`:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "2986a766-af8a-4961-a28b-6432d4c60102", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunittypegauge_typegauge_intgauge_doublea_cpua_statetime_unix_nano
0httpcheck.durationMeasures the duration of the HTTP check.msGAUGEAS_INT20.0<NA><NA>1723626931381380943
75system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.01.0idle1723626943634161700
76system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.01.0user1723626943634161700
77system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.01.0system1723626943634161700
78system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.01.0irq1723626943634161700
79system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.02.0idle1723626943634161700
80system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.02.0user1723626943634161700
81system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.02.0system1723626943634161700
82system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.02.0irq1723626943634161700
83system.cpu.utilizationSystem CPU utilization1GAUGEAS_DOUBLE00.03.0idle1723626943634161700
\n", + "
" + ], + "text/plain": [ + " name description unit \\\n", + "0 httpcheck.duration Measures the duration of the HTTP check. ms \n", + "75 system.cpu.utilization System CPU utilization 1 \n", + "76 system.cpu.utilization System CPU utilization 1 \n", + "77 system.cpu.utilization System CPU utilization 1 \n", + "78 system.cpu.utilization System CPU utilization 1 \n", + "79 system.cpu.utilization System CPU utilization 1 \n", + "80 system.cpu.utilization System CPU utilization 1 \n", + "81 system.cpu.utilization System CPU utilization 1 \n", + "82 system.cpu.utilization System CPU utilization 1 \n", + "83 system.cpu.utilization System CPU utilization 1 \n", + "\n", + " type gauge_type gauge_int gauge_double a_cpu a_state \\\n", + "0 GAUGE AS_INT 2 0.0 \n", + "75 GAUGE AS_DOUBLE 0 0.0 1.0 idle \n", + "76 GAUGE AS_DOUBLE 0 0.0 1.0 user \n", + "77 GAUGE AS_DOUBLE 0 0.0 1.0 system \n", + "78 GAUGE AS_DOUBLE 0 0.0 1.0 irq \n", + "79 GAUGE AS_DOUBLE 0 0.0 2.0 idle \n", + "80 GAUGE AS_DOUBLE 0 0.0 2.0 user \n", + "81 GAUGE AS_DOUBLE 0 0.0 2.0 system \n", + "82 GAUGE AS_DOUBLE 0 0.0 2.0 irq \n", + "83 GAUGE AS_DOUBLE 0 0.0 3.0 idle \n", + "\n", + " time_unix_nano \n", + "0 1723626931381380943 \n", + "75 1723626943634161700 \n", + "76 1723626943634161700 \n", + "77 1723626943634161700 \n", + "78 1723626943634161700 \n", + "79 1723626943634161700 \n", + "80 1723626943634161700 \n", + "81 1723626943634161700 \n", + "82 1723626943634161700 \n", + "83 1723626943634161700 " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gauges_df=metrics_df[metrics_df['type'] == 'GAUGE']\n", + "gauges_df[['name', 'description', 'unit', 'type', 'gauge_type', 'gauge_int', 'gauge_double', 'a_cpu', 'a_state', 'time_unix_nano']].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "5ca6c933-573c-4a85-8f29-dba3674215ce", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Plot some Gauges\n", + "\n", + "To illustrate how to work with Gauge `metrics` - let's plot some CPU usage, as reported by OpenTelemetry:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Plot some Gauges\n", + "\n", + "To illustrate how to work with Gauge `metrics` - let's plot some CPU usage, as reported by OpenTelemetry:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a7af4052-382a-4698-9461-34be10802633", + "metadata": {}, + "outputs": [], + "source": [ + "# select the 'system.cpu.utilization' metric of the demo Recommendation service:\n", + "selector = (metrics_df['name'] == 'system.cpu.utilization') & (metrics_df['emitter'] == 'opentelemetry.instrumentation.system_metrics@recommendationservice')\n", + "# get only the Gauges of cpu 1 and 2:\n", + "selector_cpu1 = metrics_df['a_cpu'] == 1.0\n", + "selector_cpu2 = metrics_df['a_cpu'] == 2.0\n", + "# and the gauges for system and user cpu states:\n", + "selector_system = metrics_df['a_state'] == 'system'\n", + "selector_user = metrics_df['a_state'] == 'user'\n", + "\n", + "# prepare our DataFrames using the selectors above:\n", + "cpu1_system = metrics_df[(selector) & (selector_cpu1) & (selector_system)][['time_unix_nano', 'gauge_double']].sort_values(by='time_unix_nano')\n", + "cpu1_user = metrics_df[(selector) & (selector_cpu1) & (selector_user)][['time_unix_nano', 'gauge_double']].sort_values(by='time_unix_nano')\n", + "cpu2_system = metrics_df[(selector) & (selector_cpu2) & (selector_system)][['time_unix_nano', 'gauge_double']].sort_values(by='time_unix_nano')\n", + "cpu2_user = metrics_df[(selector) & (selector_cpu2) & (selector_user)][['time_unix_nano', 'gauge_double']].sort_values(by='time_unix_nano')" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "4b37e9bd-b288-4f16-a86c-c291a5ef1058", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAAHjCAYAAAB8R1jMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADzcElEQVR4nOzdd3iURdfA4d+zJZvNphdIgJACoaiUACJgoTcFBSyoKKCIjfKhYntfBRF5bYCKYgGlWCk2FKUIAiKg9A6BBEJJoQTSk63z/fFklyxJIIR05r6uXNk8dXZT9mRmzhlFCCGQJEmSJEmSqiVNVTdAkiRJkiRJKpkM1iRJkiRJkqoxGaxJkiRJkiRVYzJYkyRJkiRJqsZ0Vd0ASZIkqeLZ7XasVmtVN0OSpGLo9Xq0Wm2J+2WwJkmSVIsJIUhNTSU9Pb2qmyJJ0iX4+/sTGhqKoihF9slgTZIkqRZzBmp16tTBy8ur2DcCSZKqjhCC3NxcTp8+DUBYWFiRY2SwJkmSVEvZ7XZXoBYUFFTVzZEkqQRGoxGA06dPU6dOnSJDojLBQJIkqZZyzlHz8vKq4pZIknQ5zt/T4uaWymBNkiSplpNDn5JU/V3q91QGa5IkSZIkSdWYDNYkSZIkSZKqMRmsSZIkSdVOamoqY8aMITo6GoPBQHh4OP3792f16tWuYyIjI1EUBUVRMJlMtGnThsWLF7v2Dx8+nAEDBhS59tq1a1EU5ZLlTKZMmUKnTp3w8vLC39+/HJ/Zta1Lly6MGzeuqptRrLK2raSfs/IkgzVJkiSpWklMTKRt27b8+eefvPvuu+zZs4fly5fTtWtXRo0a5Xbs66+/TkpKCjt27ODGG29k8ODBbNy48arbYLFYuPfee3nqqaeu+lqSdLVksCZJkiRVK08//TSKorB582buvvtumjRpwvXXX8+zzz7LP//843asj48PoaGhNGnShJkzZ2I0Gvn111+vug2TJk3imWeeoUWLFqU+R1EUfv75Z7dt/v7+zJs3D1ADwNGjRxMWFoanpycRERG8+eabrmOnT59OixYtMJlMhIeH8/TTT5Odne12vdmzZxMeHo6XlxcDBw5k+vTpRXr+lixZQps2bfD09CQ6OppJkyZhs9lK/TzOnz/PkCFDCAkJwWg0EhMTw9y5cwHo1q0bo0ePdjv+zJkzeHh4uHo9P/74Y2JiYvD09KRu3brcc889gNoDtW7dOj744ANXj2hiYiIAe/fupW/fvnh7e1O3bl0efvhhzp4967pHly5dGDNmDOPGjSMgIIC6desye/ZscnJyeOSRR/Dx8aFx48YsW7bsks/tSttmt9sZMWIEUVFRGI1GmjZtygcffOC63muvvcb8+fNZsmSJ67y1a9cCcOLECe677z78/f0JDAzkrrvucj3fKyWDNUmSpGuEEIJci61KPoQQpWrjuXPnWL58OaNGjcJkMhXZf6khSZ1Oh16vx2KxlPUlqlAzZszgl19+YdGiRcTFxfHNN98QGRnp2q/RaJgxYwb79u1j/vz5/Pnnn7zwwguu/Rs2bODJJ5/k//7v/9i5cyc9e/ZkypQpbvdYv349Q4cO5f/+7//Yv38/n332GfPmzSty3KW8+uqr7N+/n2XLlnHgwAE++eQTgoODAXjsscf49ttvMZvNruO//vpr6tevT7du3di6dStjx47l9ddfJy4ujuXLl3PbbbcB8MEHH9CxY0dGjhxJSkoKKSkphIeHk56eTrdu3YiNjWXr1q0sX76cU6dOcd9997m1a/78+QQHB7N582bGjBnDU089xb333kunTp3Yvn07vXr14uGHHyY3N7fY51WWtjkcDho0aMDixYvZv38/EyZM4D//+Q+LFi0CYPz48dx333306dPHdV6nTp2wWq307t0bHx8f1q9fz4YNG/D29qZPnz5l+vmURXElSZKuEXlWO9dNWFEl997/em+8PC7/lhMfH48QgmbNml3R9S0WC9OmTSMjI4Nu3bqVtZkV6vjx48TExHDLLbegKAoRERFu+wvPl4qMjOSNN97gySef5OOPPwbgww8/pG/fvowfPx6AJk2asHHjRpYuXeo6b9KkSbz00ksMGzYMgOjoaCZPnswLL7zAxIkTS93O2NhY2rVr52qL06BBgxg9ejRLlixxBVPz5s1j+PDhKIrC8ePHMZlM9OvXDx8fHyIiIoiNjQXAz88PDw8PvLy8CA0NdV3zo48+IjY2lv/973+ubXPmzCE8PJxDhw7RpEkTAFq1asUrr7wCwMsvv8xbb71FcHAwI0eOBGDChAl88skn7N69mw4dOhT7vK60bVqtlkmTJrm+joqKYtOmTSxatIj77rsPb29vjEYjZrPZ7byvv/4ah8PB559/7irJMXfuXPz9/Vm7di29evUq1ffCSfasSZIkSdVGaXvgnF588UW8vb3x8vLi7bff5q233uKOO+6ooNZdneHDh7Nz506aNm3K2LFjWblypdv+VatW0b17d+rXr4+Pjw8PP/wwaWlprp6iuLg42rdv73bOxV/v2rWL119/HW9vb9eHs7eopB6niz311FMsWLCA1q1b88ILL7jNAfT09OThhx9mzpw5AGzfvp29e/cyfPhwAHr27ElERATR0dE8/PDDfPPNN5e9765du1izZo1bm53BekJCguu4li1buh5rtVqCgoLchqnr1q0L4Fq26WJlaRvAzJkzadu2LSEhIXh7ezNr1iyOHz9+2ecUHx+Pj4+P6zkFBgaSn5/v9pxKS/asSZIkXSOMei37X+9dZfcujZiYGBRF4eDBg6U6/vnnn2f48OGuuU6FC4v6+vpy7NixIuekp6ej1WqLHWa9GoqiFAk2C1ejb9OmDUePHmXZsmWsWrWK++67jx49evD999+TmJhIv379eOqpp5gyZQqBgYH8/fffjBgxAovFUupVKLKzs5k0aRKDBg0qss/T07NU1+jbty/Hjh3j999/548//qB79+6MGjWKqVOnAupQaOvWrTl58iRz586lW7durl5CHx8ftm/fztq1a1m5ciUTJkzgtddeY8uWLSUOYWdnZ9O/f3/efvvtIvsKr5Op1+vd9imK4rbN+b13OBzF3qcsbVuwYAHjx49n2rRpdOzYER8fH959913+/fff4l+8Qs+pbdu2fPPNN0X2hYSEXPLc4shgTZIk6RqhKEqphiKrUmBgIL1792bmzJmMHTu2SECVnp7u9sYaHBxM48aNi71W06ZNWbBgAWazGYPB4Nq+fft2oqKiirz5X62QkBBSUlJcXx8+fLhIz42vry+DBw9m8ODB3HPPPfTp04dz586xbds2HA4H06ZNQ6NRB72c86IKP58tW7a4bbv46zZt2hAXF1fia3Ilz2XYsGEMGzaMW2+9leeff94VrLVo0YJ27doxe/Zsvv32Wz766CO3c3U6HT169KBHjx5MnDgRf39//vzzTwYNGoSHhwd2u71Im3/44QciIyPR6Sr25/NK27ZhwwY6derE008/7dp2cc9YSc9p4cKF1KlTB19f36tutxwGlSRJkqqVmTNnYrfbad++PT/88AOHDx/mwIEDzJgxg44dO5b6OkOGDEFRFIYOHcq2bduIj49nzpw5vP/+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s0WzZs2EwWAQTZs2FTNnziz18xRCiMTERNGvXz/h7+8vvLy8xHXXXSd+++034XA4RKNGjcS7777rdvyOHTsEIA4fPiwcDoeYOHGiCA8PFx4eHiIsLEyMGTNGCCFE586dBeD24bR+/Xpxyy23CE9PT9GgQQMxZswYt+9/RESEmDx5snj44YeFyWQSDRs2FEuWLBGnT58Wd955pzCZTKJFixZiy5YtJT6vsrTt7Nmz4v777xf16tUTRqNR3HDDDeLbb791XXPYsGFFzjt69KgQQog9e/aIPn36CJPJJOrUqSMeeughcebMmRLbd6nfVzkMKkmSdI0QQpBrza2SDyFEqdp47tw5li9fzqhRozCZTEX2+/v7l3iuTqdDr9dXyHBlRkYGgYGBV3WNV199lf3797Ns2TIOHDjAJ598QnBwsGu/j48P8+bNY//+/XzwwQfMnj2b9957z7X/m2++YcqUKbz99tts27aNhg0b8sknn7jd45tvvmHChAlMmTKFAwcO8L///Y9XX32V+fPnl7qdo0aNwmw289dff7Fnzx7efvttvL29URSFRx99lLlz57odP3fuXG677TYaN27MDz/8wHvvvcdnn33G4cOH+fnnn2nRogUAP/74Iw0aNOD1118nJSWFlJQUABISEujTpw933303u3fvZuHChfz999+MHj3a7T7vvfceN998Mzt27OCOO+7g4YcfZujQoTz00ENs376dRo0aMXTo0BJ/1srStvz8fNq2bctvv/3G3r17efzxx3n44YfZvHkzAB988AEdO3Zk5MiRrvPCw8NJT0+nW7duxMbGsnXrVpYvX86pU6e47777Sv19KKzWD4M6HA6Sk5Px8fFBUZSqbo4kSVKlsVgsOBwO7HY7drudPFseHRd0rJK2bLp/E0ad8bLHxcXFIYSgSZMm2O32yx7vfH4Wi4Xp06eTkZFB586dsdvtCCEQQhS5jvNr5+tyOfHx8Xz44Ye88847JR5f3DUv3nbs2DFat25NbGwsAOHh4W7Hvfzyy67rhYeH8+yzz7Jo0SKee+45AGbMmMGjjz7K0KFDAfjvf//LihUryMnJcV1j4sSJvPvuu9x1110ANGzYkL179/Lpp5/y0EMPXfa5Ahw/fpyBAwdy3XXXARAREeFq58MPP8yECRPYtGkT7du3x2q18u2337pem8TEREJDQ+natSt6vZ769evTtm1b7HY7fn5+aLVaTCYTISEhrmv+73//48EHH2TMmDEAREdH895779GtWzc++OADfHx8ALj99tt54oknAJgwYQKffPIJN954I/feey8AL774Ih07duTUqVOEhoYW+7xCQ0Pp0aMHer2ehg0b0r59ewACAwPRarX4+Pi4nVu/fn3Gjx/v+nrMmDGsWLGCRYsW0b59e/z8/PDw8MDLy8vtvI8++ojY2Fj+97//ubbNmTOH8PBwDh06RJMmTUr1vXCq9cFacnKy6xdCkiTpWhIREcGnn35KXl4eAGaHucrasmvXLgwaw2WPi4uLA+DIkSPs2LHjksdaLBZeeuklXnnlFSwWC0ajkdGjR1OvXj127NhBWloa2dnZRa4THx8PwO7du12BQElOnz7NE088QdeuXWnbtm2JbUpOTgbU+W7Onp2srCzX/fz8/OjRowcvvvgiGzZsoEOHDnTu3JlWrVq5rrFy5UoWLlzIyZMnycvLw263YzKZXPc8cOAAt99+u1sbIiMj2bJlCzt27CAvL4+EhARGjBjByJEjXcfY7Xa8vb0v+3o63XnnnUyZMoWff/6Z9u3b061bN2JiYlz7b775ZqZOncrLL7/Mn3/+SV5eHjExMezYsYNmzZqRkZFBREQEHTt25Oabb+bWW29Fp1PDDYvFwsmTJ93asmnTJuLj4/n6669d24QQOBwOVqxY4Qo8W7Zs6dpft25dAFfPWOFtp0+fLjZYu/fee3n//feJjo6mT58+3H777fTv39/VtuI4g8lFixaRlJSExWLBbDbj5eV1yddw165drFmzBm9v7yL7EhISZLB2Mecv4okTJ/D19a3i1kiSJFUei8XCqVOniIyMxNPTEyEEm1ptqpK2eGo9SzW6ERERgaIoWCwWVw9USTw8PBg/fjzDhg3D29ubunXrut0jKiqKPXv2FLnO8ePH0Wq1dOzYEb1eX+L1k5OTefDBB+nSpQtz5sxBoyl55lBQUBAATZs2dd3vzJkzADRu3JjY2FhiY2MZPHgwy5YtY9WqVYwePZqnnnqKd999l02bNjFhwgQmTpxIr1698PPzY+HChbz33nuu62m1WiIiItyeT0hICF5eXsTGxnLq1CkAZs+e7eoxctJqtURFRV3y9XSKjY3lscce4/fff+ePP/5g2LBhvPvuu65hyWeeeYbhw4czf/58XnvtNe6//346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a/vTTz+Noihs3ryZu+++myZNmnD99dfz7LPP8s8//7hdw8fHh9DQUJo0acLMmTMxGo38+uuvV9WuPn36MHfuXHr16kV0dDR33nkn48eP58cffyzxnMTERBRFYefOna5t6enpKIrC2rVrATh//jxDhgwhJCQEo9FITEwMc+fOdR3/4osv0qRJE7y8vIiOjubVV18tEsS88cYb1KlTBx8fHx577DFeeuklWrdu7XbM559/TvPmzfH09KRZs2Z8/PHHV/T8X3vttSLXfP/994mMjHR9vXbtWtq3b4/JZMLf35+bb76ZY8eOufYvWbKENm3a4OnpSXR0NJMmTcJms7n2K4rCJ598wp133onJZGLKlCnFtmXx4sU0a9YMT09P6tatyz333AOovWPr1q3jgw8+cPWuJiYmYrfb3XpFmzZtygcffOD23ObPn8+SJUtc5zm/PydOnOC+++7D39+fwMBA7rrrLhITE6/otasocrkpSZKka4QQApGXVyX3VoxGFEVxb48zEBEOhMWCYjBw7tw5li9fzpQpUzCZTEWu4+/vX+I9dDoder2+QoYrMzIyCAwMvKprvPrqq+zfv59ly5YRHBxMfHw8eYW+Hz4+PsybN4969eqxZ88eRo4ciY+PDy+88AIA33zzDVOmTOHjjz/m5ptvZsGCBUybNo2oqCjXNb755hsmTJjARx99RGxsLDt27GDkyJGYTCaGDRt2Ve13stlsDBgwgJEjR/Ldd99hsVjYvHmz6/u7fv16hg4dyowZM7j11ltJSEjg8ccfB2DixImu67z22mu89dZbvP/+++h0RcORrVu3Mm3aNObPn88tt9zCuXPnWL9+PQAffPABhw4d4oYbbuD1118HICQkBIfDQYMGDVi8eDFBQUFs3LiRxx9/nLCwMO677z7Gjx/PgQMHyMzMdAXKgYGBWK1WevfuTceOHVm/fj06nY433niDPn36sHv3bjw8PMrltSsrGaxJkiRdI0ReHnFt2lbJvZtu34bi5eXenkJBlcjPB4OB+Ph4hBA0a9bsiq5vsViYNm0aGRkZdOvWrVza7BQfH8+HH37I1KlTr+o6x48fJzY2lnbt2gG49VQBvPLKK67HkZGRjB8/ngULFriCtQ8//JARI0bwyCOPADBhwgRWrlxJdna267yJEycybdo0Bg0aBEBUVBT79+/ns88+K7dgLTMzk4yMDPr160ejRo0AaN68uWv/pEmTeOmll1z3i46OZvLkybzwwgtuwdqDDz7oei7FOXHiBJ6entxxxx34+/sTERFBbGwsAH5+fnh4eODl5UVoaKjrHK1Wy6RJk1xfR0VFsWnTJhYtWsR9992Ht7c3RqMRs9nsdt7XX3+Nw+Hg888/dwWdc+fOxd/fn7Vr19KrV6+recmumgzWJEmSpEonhLjQswY48vLR+vm5DYeWxosvvsgrr7xCfn4+3t7evPXWW9xxxx3l1s6kpCT69OnDvffey8iRI6/qWk899RR3330327dvp1evXgwYMIBOnTq59i9cuJAZM2aQkJBAdnY2NpsNX19f1/64uDiefvppt2u2b9+eP//8E4CcnBwSEhIYMWKEW1ttNht+fn5X1fbCAgMDGT58OL1796Znz5706NGD++67j7CwMAB27drFhg0b3IY27XY7+fn55Obm4lUQtDuD1pL06NGDsLAwYmJi6NOnD3369GHgwIGu80syc+ZM5syZw/Hjx8nLy8NisRQZ1r3Yrl27iI+Px8fHx217fn4+CQkJlzy3MshgTZIk6RqhGI003b6tyu7txm6HQoGZw5wPQExMDIqicPDgwVJd9/nnn2f48OF4e3tTt25dt6FWX19ft3lUTunp6Wi12mKHWQtLTk6ma9eudOrUiVmzZl3yWI1GnQJeONi8eL5Z3759OXbsGL///jt//PEH3bt3Z9SoUUydOpVNmzYxZMgQJk2aRO/evfHz83MNc5aWs4dt9uzZ3HTTTW77tFptqa+j0WiKBM0XP5e5c+cyduxYli9fzsKFC3nllVf4448/6NChA9nZ2UyaNMnVu1eYp6en6/HlXn8fHx+++uorMjIyWL16NRMmTOC1115jy5YtJQ6HL1iwgPHjxzNt2jQ6duyIj48P7777Lv/+++8l75WdnU3btm355ptviuwLCQm55LmVQQZrkiRJ1whFUYoMRVYVcdGbv8hTg7XAwEB69+7NzJkzGTt2bJE39PT0dLc36uDgYBo3blzsPZo2bcqCBQswm80YDAbX9u3btxMVFYVery+xfUlJSXTt2pW2bdsyd+5cVzBWEucbekpKimuornCyQeHjhg0bxrBhw7j11lt5/vnnmTp1Khs3biQiIoL//ve/rmMvDjSbNm3Kli1bGDp0qGvbli1bXI/r1q1LvXr1OHLkCEOGDLlkey/3XFJTUxFCuILf4p5LbGwssbGxvPzyy3Ts2JFvv/2WDh060KZNG+Li4kr8vlwJnU5Hjx496N27NxMnTsTf358///yTQYMG4eHhgd1udzt+w4YNdOrUya0H8uKeseLOa9OmDQsXLqROnTpuvZnVhcwGlSRJkiqdM1hTCoIoYbMiCrIFZ86cid1up3379vzwww8cPnyYAwcOMGPGDDp27FjqewwZMgRFURg6dCjbtm0jPj6eOXPm8P777/Pcc8+VeF5SUhJdunShYcOGTJ06lTNnzpCamkpqamqJ5xiNRjp06MBbb73FgQMHWLdundscNFDnmC1ZsoT4+Hj27dvH0qVLXXO9YmJiOH78OAsWLCAhIYEZM2bw008/uZ0/ZswYvvjiC+bPn8/hw4d544032L17t1tv4qRJk3jzzTeZMWMGhw4dYs+ePcydO5fp06eX+nXr0qULZ86c4Z133iEhIYGZM2eybNky1/6jR4/y8ssvs2nTJo4dO8bKlSs5fPiw67lMmDCBL7/8kkmTJrFv3z4OHDjAggULirwel7N06VIWLFjAzp07OXbsGF9++SUOh4OmTZsC6ry+f//9l8TERM6ePYvD4SAmJoatW7eyYsUKDh06xKuvvuoW0DrP2717N3FxcZw9exar1cqQIUMIDg7mrrvuYv369Rw9epS1a9cyduxYTp48eUXtrhCilsvIyBCAyMjIqOqmSJIkVaq8vDyxf/9+kZeXV9VNKcJ65qzI3bNHmI8dE3lxcSJ3zx5hy8py7U9OThajRo0SERERwsPDQ9SvX1/ceeedYs2aNa5jIiIixHvvvXfJ+8TFxYmBAweKevXqCZPJJFq1aiVmz54tHA5HiefMnTtXAMV+XMr+/ftFx44dhdFoFK1btxYrV64UgKvNkydPFs2bNxdGo1EEBgaKu+66Sxw5csR1/vPPPy+CgoKEt7e3GDx4sHjvvfeEn5+f2z1ef/11ERwcLLy9vcWjjz4qxo4dKzp06OB2zDfffCNat24tPDw8REBAgLjtttvEjz/+6NrfuXNnMWzYsEs+l08++USEh4cLk8kkhg4dKqZMmSIiIiKEEEKkpqaKAQMGiLCwMOHh4SEiIiLEhAkThN1ud52/fPly0alTJ2E0GoWvr69o3769mDVrlms/IH766adLtmHt2rWiTZs2IiAgQBiNRtGyZUuxcOFC1/64uDjRoUMHYTQaBSCOHj0q8vPzxfDhw4Wfn5/w9/cXTz31lHjppZdEq1atXOedPn1a9OzZU3h7e7t9f1JSUsTQoUNFcHCwMBgMIjo6WowcObLS4odL/b4qQlzhbM4aJjMzEz8/PzIyMqpl16YkSVJFyc/P5+jRo0RFRbnNFaoOrCmp2NLOogsKQlit2DMz0YeGogsOruqm1Sg9e/YkNDSUr776qtTnREREMGnSJIYPH15xDSsHdrudHTt2EBsbe0Vz7mqqS/2+yjlrkiRJUqVzDYPq9aDVQmYmjvz8Km5V9Zabm8unn35K79690Wq1fPfdd6xatYo//vij1NfYt28ffn5+bvPepOpPBmuSJElSpRNWtcaa4uGBc8aVkMHaJSmKwu+//86UKVPIz8+nadOm/PDDD/To0aPU17j++uvZvXt3BbZSqggyWJMkSZIqXZGeNcBhNiMcDpTLZF5eq4xGI6tWrarqZkhVQP5GSJIkSZVKOByuzE9Fr1c/NFoQwm1VA0mSVDJYkyRJkiqVM1BDUUCrVeu/eaolPOS8NUkqSgZrkiRJtZzD4ajqJrgpPATqrBGmKch+cxbHlaRrzaV+T+WcNUmSpFrKw8MDjUZDcnIyISEheHh4uBVQrSq2nBxsDoe6KkBBT5pNo8HmcGDNycYue9ckcK0ykJ+fX6tLdwghsFgsnDlzBo1Gg4eHR5FjZLAmSZJUS2k0GqKiokhJSSE5Obmqm+Niz8rCkZWFxuiFtqCXTVgs2M6eBY0G/UVLUUnXJofDwdmzZ0lMTLzscl+1gZeXFw0bNiz2ucqiuJIkSbWcEAKbzVZkPcSqcnrGh2QtW0bAkAcJfOghQM0EPTrobnA4aPjVV+iDg6q4lVJVy87Opl27dmzduhVvb++qbk6F0mq16HS6Enu+Zc+aJElSLacoCnq9/pILl1eqw4fRpKTgFRBwoVK7pyeenp5YEhJQjiTg2aB+1bZRqnIWi4Vjx47h4eFR7VbgqGy1v19RkiRJqlasKeqQrD4szG27Z8EC3fkH4yq9TZJUnclgTZIkSao0QghsySkA6ELDQAj1AzA0awaA+eDBKmufJFVHMliTJEmSKo0jKwtHbi4AekcyTA6Gfz4BwLOZs2dNBmuSVJgM1iRJkqRKY01Re9W0AQFojv0JDhvsXghc6FmzJCbK4riSVIgM1iRJkqRKY00uNF/t/FF146m9YM1HFxKCNjAQHA7Mhw9XYSslqXqp0mDtzTff5MYbb8THx4c6deowYMAA4uLcJ5bm5+czatQogoKC8Pb25u677+bUqVNV1GJJkiTpajh71nT1wuDcEXWjwwape1AURQ6FSlIxqjRYW7duHaNGjeKff/7hjz/+wGq10qtXL3JyclzHPPPMM/z6668sXryYdevWkZyczKBBg6qw1ZIkSVJZ2QqCNX1YPTh39MKOpG0AGJo6kwxkRqgkOVVpnbXly5e7fT1v3jzq1KnDtm3buO2228jIyOCLL77g22+/pVu3bgDMnTuX5s2b888//9ChQ4eqaLYkSZJURtaCTFB9sB+kpF/YURCsuXrW4mTPmiQ5Vas5axkZGQAEBgYCsG3bNqxWKz169HAd06xZMxo2bMimTZuKvYbZbCYzM9PtQ5IkSaoenMOg+osL0idvBwqX74ijli+wI0mlVm2CNYfDwbhx47j55pu54YYbAEhNTcXDwwN/f3+3Y+vWrUtqamqx13nzzTfx8/NzfYSHh1d00yVJkqRSsqYWBGueFnVDsNqTRlo85J3HEBWFotfjyM7GmpRURa2UpOql2gRro0aNYu/evSxYsOCqrvPyyy+TkZHh+jhx4kQ5tVCSJEm6GsJmw3bqNAA6fcGoR/22EBClPk7egeLhgUfjxoAsjitJTtUiWBs9ejRLly5lzZo1NGjQwLU9NDQUi8VCenq62/GnTp0iNDS02GsZDAZ8fX3dPiRJkqSqZztzBux20OvR2QpGRwKj1IANLsxbk8tOSZKbKg3WhBCMHj2an376iT///JOoqCi3/W3btkWv17N69WrXtri4OI4fP07Hjh0ru7mSJEnSVXDNV6tbFyU9Ud0YGF0oWNsBgKEgycAskwwkCajibNBRo0bx7bffsmTJEnx8fFzz0Pz8/DAajfj5+TFixAieffZZAgMD8fX1ZcyYMXTs2FFmgkqSJNUwrkzQsDA4v1ndGBAFfgVzi5O2ghB4FiQZyJ41SVJVabD2ySfqenBdunRx2z537lyGDx8OwHvvvYdGo+Huu+/GbDbTu3dvPv7440puqSRJknS1rCkFqxfUrQNZauBGYBToPEHRQvYpyEzGUDAMaj1xAnt2Nlrvi1NHJenaUqXBWmnSsj09PZk5cyYzZ86shBZJkiRJFcVZEFfnbwAb4OkHxgBQFKh7HaTugaRt6K67E11oKLbUVMxxcXi1bVu1DZekKlYtEgwkSZKk2s+aok510fso6oaAKDVQgwvz1grqrV1IMpDz1iRJBmuSJElSpXAlGBjy1Q2BhZLKLsoILVwcV5KudTJYkyRJkiqFK1jTqavVEBh9YWe9NurnpB3gcBRadkoGa5IkgzVJkiSpwtmzc3AULCmo45S6MaBQz1pIM9B7gSUL0g5fWND90CGE3V7ZzZWkakUGa5IkSVKFsxUsM6Xx9UWbc0zdWHgYVKuDsNbq46RteEQ0RPH0ROTnYzl2rHIbK0nVjAzWJEmSpArnGgINDYX0gmUACw+DAtR3DoVuR9FqMTRtAshlpyRJBmuSJElShXMVxA32A2FXa6t5X7RsYJFlp2RxXEkCGaxJkiRJlcCaWqjGGkBAJGguegty9qyl7gGb2bXsVL5cdkq6xslgTZIkSapwNmfPmqlgw8VDoAD+EeAVBA4rpO51LTsly3dI1zoZrEmSJEkVzjVnzbOgxlrhTFAnRXErjmtoovas2U6dwnb+fGU0U5KqJRmsSZIkSRXuQo21dHVDYDHBGrjNW9N6m9CHq4u8m2W9NekaJoM1SZIkqUIJhwNrasFSU6KgxlpJwZqrOG5BkkHBUGj+ATlvTbp2yWBNkiRJqlC2s2fBagWNBp2loGZaccOgcCHJ4OwhyM9wJRnUyvIdQsC398Ps7mDNq+rWSNWYDNYkSZKkCmUrGALVBQehOPJB0YJ/w+IPNgWriQYAyTsu9KzVxmHQ3DQ4tAyStsL+JVXdGqkak8GaJEmSVKGsKQVDoMG+6gb/cNDqSz7BNW9t+4VlpxISEBZLRTaz8qUlXHi8dW7VtUOq9mSwJkmSJFUoV3KBn7PGWglDoE71L8xb09evh8bHB6xWzEePVmArq0Ba/IXHJ/6BU/urri1StSaDNUmqqcxZsP8XOddFqvasKckA6L2FuqG4GmuFFepZUxSl9i47lRZPfrqOvHMFvYzbZO+aVDwZrElSTbXxI1j0MCx8CBz2qm6NJJXINWfNUPCPRUmZoE5hrUDRQFYyZKbg2aw5UPsyQsXpwxxfE8Sx1XWw5mhg10Kw5FR1s6RqSAZrklRTnd6nfo5fBatfv+LTc7dv5+jd95C1enU5N0yS3LnWBdUUFLa93DCohwnqXKc+Tt6OZy1ddsp67DB2sxZhF2SerQ/mDNj7Y1U3S6qGZLAmSTVV+okLjze8D3u+L/Wp1qQkTo4aTf6+fZx5/32EEOXfPkkq4JqzhppocNlhUIB6sernpG0XkgwOxtWen1WHA8vJk64vM5L81QdyKFQqhgzWJKmmSj+ufm7SV/28ZDSk7LrsaY68PE6MGYO9YPke8+F48vfuq6hWStc4R34+9nPnANBr09WNAZGXP7HQSgaGmMag0WA/fx7b6TMV0s5Kl5mENd3h+tJ8PA1zlqdaDLgUv8fStUUGa5JUE1lyIE99A2TAx9CoO9jyYMEQyDlb4mlCCFJeeRXz/gNoAwLw6tgBgIyffqqMVkvXIFvBygWKpwGNhwDvUPDwuvyJrmBtBxoPDzyi1KFTc20ZCj2XgCVb57YpM6eF+kCW8ZAuIoM1SaqJnEOgBj/wCoR7vlCHljJOwOLhYLcWe9q5OXPI/O030Omo/8H7BD32GAAZv/2Go7bVsJKqBdcQaJAvikLphkAB6jQHnVGdx3UuAc+mBfPWDtaS4rhp8ViytQAY26ilSjIOWREC2LNYzfaWpAIyWJOkmiijIFjzVxe5xhgA938LHt6QuB5W/LfIKdnr/+b0tOkA1H35JUzt22Pq0AFdaCiOjAyy/1xTWa2XriGu5AI/D3XD5TJBnbR6CGupPk7ajqG5c97agfJuYtVIS8Ba0LMWOHwYiqcn1uTT5DuiwJKtBmySVEAGa5JUE6UXrK9YeMmeOs1h0Cz18ebPYMfXrl2WY8dIeu45cDjwu+duAh58EABFq8XvrrsAORQqVQxXz5qpYH5WaYM1cJu35lp2qpb0rImzh13DoJ7Nm+PTrSsAmRnq82TrXHXtUElCBmuSVDM5h0H9wt23N7sDurysPl76DJzcij07hxOjRuHIzMTYqhWhEyagKIrrFGewlv3339jO1JLJ21K14SqIa8hVN1yubEdhhZMMCoZBLYmJOPLzy7OJVcJ2PB5hV0CrQR8Whm+/fgBk7khCKAZI3Q3J26u4lVJ1IYM1SaqJLh4GLey2F6BZP7BbEAseInn8OCzxCehCQqg/YwYaDw+3ww3RURhbtwa7nYxfl1Z826VriqsgrragxtoV9awVLDuVuhtdgB/awEBwODAfPlzOraxkdiuWk+rr4lEvDEWnw/uWW9D4+WE7c5Zcry7qcVvnVF0bpWpFBmuSVBOV1LMGoNHAwE8hpBln/8kie+3fKHo9DT76EH3dOsVezm/gQEAdCq01daykauFCQdyC7OXSJhiA2gtnDAC7BeXM/gvFcWv6slPnj2HJUt9+9ZHq66F4eODbqycAmUkB6nF7f4T8jCppolS9yGBNkmoiZ421wnPWCjP4kFV/LGf3+gIQeldjjC1blng53759UAwGzIcPk79PLiYtlQ8hxIU5a1528PRXg6/SUhSod2FR98LFcWu0tHisBZmgHhERrs2+dxQMhW7aiSOwGVhzYfeiKmmiVL3IYE2SahqbGbILKsGXEKyZ4+NJfl3N/AyIycFftxq2fF7iJbW+vvj06AHIRAOp/NjT0xFmMwA6L/uVDYE6FVrU3bO5M8mghvespcW7kgs8Gl7oHfe6sR26kBAcGZnk6DurG7fOkYkGkgzWJKnGyShYokZnBK+gIrvtmZlqQkFuLl7t21P3uf9Tdyx/CRI3lHhZ51Bo5tKlsuaaVC6syWpygdbPC42WKxsCdXJLMijoWYur4ctOpcVjyVKDNX3DC/9wKVotvrffDkDmwXz1d/z0fjixuUqaKVUfMliTpJqmcHJBoaxOAGG3k/TceKzHjqOrF0b9999D6fws3HAPOGywaKj7mqKFmDp2QFe3LvaMDLLXrK3gJyFdC5zJBXpfvbrhSjJBnZxJBmfiMNQPQdHrcWRnY01KKqdWVj5x9vCFYdCGEW77nFmhWevW44hRM7VlooEkgzVJqmkuMV/tzPvvk7N+PYqnJ+EffYQuMFAN6O78EEJbQO5ZWDgELLlFzpU116Ty5kouMNnVDWUZBvWuU5BII1DO7MWjcWMAzDV4KNR+8ggOmwY0CvoG9d32ed5wPfqIhoj8fLLyr1M37vsJcs9VQUul6kIGa5JU05SQCZrx22+kzVbnpYW98Qae1113YaeHl7rCgVeQukj0r2OLnQfjN2AAANnr18uaa9JVcyUXeBT8c1CWYVC40LuWtK3mLztlycGSqq7fqw8NLVJKR1EU/JyJBhsPqP9k2c2wa0GlN1WqPmSwJkk1TTE11vIPHCDlv68AEPTYCPz63VH0PP+GcO98ULTqUjYbPyxyyLVYc61Gz32q5lzBmjZd3VCWYVBwn7dWUL6jxi7ofu6Ia01Qj8jIYg/xLfj9zd6wAVuT+9WNMtHgmiaDNUmqaVw9a+owqO3cOU6OGo3Iz8d0yy2EPPNMyedG3Qp93lIfr5oI8auLHHKt1FwTViuJ9z9A4t33YE1Nrerm1ErO1Qt0XjZ1srxPaNkuVDgjtFlzAPIP1NBgrXByQXjx2dyG6GgM1zUHm42sZG/QmyDtMBwrOUFIqt1ksCZJNU2hOWvCaiVp3DNYk5PRRzSk/rSpKFrtpc9vPxJiHwLhgO8fhXNH3HZfKzXXstasIW/nTvL37+fYkIewnCg+8UIqO1uKGgTrTQVlOy5KiCm1sFaAApkn8WwQCID15Ens2dnl1NJKVLjGWsMS6iQCfneovWuZy1dDy3vVjVvnVnjzpOpJBmuSVJPYbZBZkAXnH86pd94ld/NmNF5ehH/0EVo/v8tfQ1HgjulQvx3kp8MfE9x2Xys119IXFhQb1WqxJiVxbMhDmI8cufRJUqkJi8U171HvZS/7ECiAwQdC1LId2px4dKFqD505rgbOW0tLuFBjLaLkYM1ZwiN32zas4XeqG/cvgZyzFd5EqfqRwZok1SRZKSDsoNGTuWkP57/6CoB677yNISam9NfRGdQMUYC4ZZB92m13ba+5ZjlxgpwNG0BRiPj6KzwaN8J2+jTHHnqY/AMHqrp5pXZ+wQKODBiI5fjxqm5KEdbTp0EIFJ0GrcFRtkzQwgrNW7uQZFADh0ILFcTVX6JnTR8Whle7diAEmduOQb1YcFhh5zeV1VKpGpHBmiTVJM7kAr/6ZP2xCoCAhx929YRdkbrXqb1rDhvs+s5tV22vuZa+SO1VM918M16xsUR89RWe112H/dw5jg0bTt7OnVXbwFJKmzMX88GDpH1R/epwOQvi6n116ujnVQdrhZadalZzl52yJ8fjsKhvvR7hxaztW4gz0SDjt6XQ7lF149a54HBUaBul6kcGa5JUkxSar2aOjwfA1LFj2a/XZqj6eftXbplmtbnmmrBYSP9RfU4B9w8GQBcQQMP58zDGxuLIzOTYoyPI+bd6V423nj6NtaBHLfPXX7Fn51Rxi9w5C+LqvApqrF3NMCgUCta249m0CQD5NW0YNPccljPqPDtdnTpojMZLHu7TuzfodJj3H8BsagsGXzh/FI6uq4zWStWIDNYkqSYpyAQV3g2wFMyvMsQ0Lvv1bhh0IdPs+D9uu2przbWs1auxp6Whq1MH7y5dXNu1Pj40/OJzvDp2QOTmcuLxx8n+66+qa+hl5G3b5nrsyM0lc2n1KrVyocZaQRBZ1hprTnWuB60B8tMxhJoAMB86hLDbr+66lSktwZUJWngB95LoAgIw3dwJgMwVf0JL9Z8LtslEg2uNDNYkqSbJUHtSLFZ/hMWCYjSir1//MiddgsEHblDnp7HjK/dd0VEYW7WqdTXXzi9YCID/PXej6HRu+zReXoR/+ineXbsizGZOjBpN5oqVVdHMy8rdqgZrzqSS84sWVqtSK67VC4xW0OiKFHG+YjoPCGsJgIcmFcVoROTnYzl27GqbWnnS4l011vQNS/d6+BUsP5X522+ItsPVjQd/g6xTFdFCqZqSwZok1SQFPWvmDDXIMDRqhKK5yl/j2IKh0H0/QX6m267aVnPNfOQouf/+CxoN/vfcU+wxGoOBBjM+wPf2vmC1kvTMM2QsWVLJLb283IKetZBnnkHx8MC8/wD5e/ZUcasusKYWBGtedjVQ0+ouc0YpFCQZKCk7MDRRE2pq1LJTafFYnZmgDS/fswbg060biqcnlmPHyD8DNGivzjO96J8rqXaTwZok1SQFc9bMZ9UMTUPjqxgCdQpvD8FNwZoLe39w2+V7e181EKglNdeciQXet92Gvl69Eo9T9HrqvfsufoMGgcNB8osvcX7BRcv9CAFr/gdLRqslVSqRPTPTVbbCp3s3fPr0BuD8woWV2o5Lcc1ZM9mvfgjUqV7hZafUJIMatexUoUzQS5XtKExjMuHTrSugZme7Eg22zwdHDRoClq6KDNYkqaZwOCDjJADm5HTgKuerOSkKtHlYfbz9S7ddtanmmsNsdj0H/8H3XfZ4Rasl7I3JBDz0EACpr00ibU6huULb5sG6t9UejuMbK6LJJcrdvh2EQB/REF1ICAH3q0sSZf6+DHtm5mXOrnhCCKxJBdmgXrarzwR1cpbvSN2NoYn6s59fk5adSkvAknX5grgX83UOhS5bhmjWHzz91X/cEv6siFZK1ZAM1iSppsg5oy7orGiwHFML415RbbVLaXk/aPSQvB1S97rtqi0117JWrsSekYEuLAzv224r1TmKRkPd//6HoMcfB+D0O+9w5qOZiJTdsOzFCwcmrKmIJpfImVzg1bYdAMbYWAwxjRF5eWT88multqU4jqwsHLnq4u16L8fVZ4I6BUaDpx/Y8vGsYwBqUPkOhwN7agJ2s3POWumDNdMtt6Dx9cV2+jS5O/dB6wfVHXJFg2uGDNYkqaYoqLEmvEIxJ6qTqstlGBTAOwSa9lUfXzQXxtSpI7o6dWp8zTVXYsG991x+Sa5CFEWhzrPPEDJuHABnP/qI0+OGIGxmMIWoBx2p3GDNmVzg1batq43+96mZgukLqz7RwJkJqjUqaHSi/IZBNRrXUKjBeA4A26lT2M6fL5/rV6SsFKzp6j872qBAtN7epT5V4+GBb+9egJpogDPR4NAyyEgq75ZK1ZAM1iSppkhXAzSLCAObDY3JhC4srPyu32aY+nn3QrDmuza71Vz7+efyu18lMh8+rPZGabX43118YsHlBD/5BHX/8zIA53bZSN1dD/FQwdBw8k7IPVdOrb00R34+eXvV3k+vdm1d2/3uuhPF01N9rjt2VkpbSuIsiKszFszlK69hUHDVW9Oe2+PqnaoRSQbnCi0zVcIC7pfi61wrdOVKHH5REHGzur6vTDS4JshgTZJqCmcmaK4voPaqKWVdGLs4jbqCbwPIOw8H3Ut1+A0cAED2X39hO1vz1iY8v2gxAD7duqKvW6fM1wm8zk5Y+/OAIP0ApLz/NSKoKSDgaOXUZMvbvRusVrQhwW5DaVpfX9d6kukLF5R0eqVw1VgzFgybB0SW38Vdy05tL7TsVA0YCk2LL1Rj7cqDNa8bb0QXEoIjI4Ocv/8ulGjwZaUnuEiVTwZrklRTZDjLdugB8CiP5ILCNFqIHaI+LlJzLbrG1lxz5OW5egSdQ4VlkroHlr2If3Qe9R7vCTodGUt+IelvH3Xxh0oaCnXNV2vXrkiwHlCQOJG5bDn29PRKaU9xbCmpQEHZDp96oL90pf4r4gzWzhzE0FjtsasRPWtpCYVqrF15sKZota5gPHPpb9C8P3gFQWYSHC5FLUBrHpxPhBObYf8vsHk2/DkFfhkDK/4LOWlX3Cap8pRD4RtJkiqFs2etPMt2XKz1EFj3DhxZq/5hL9Qj4jdwIHm7dpHx448EDh9Wvr16FShz2XIcWVnoGzRwVYO/YuYsWDRMTfCI6Y3fAx+gab2WpP8bR9auZPJC9HhVUpLBhflq7Yrs82zZEkOzZpgPHiRjyRIChw2rlDZdzNWzZrKX7xAogE8o+NaHzCQ8Q9Ukg9ytWxFCVO+fybR4rFlXVmPtYr797uDc/Plk/fknDrMNTesHYeOH8O8noPdUC+Vmn4Ls05Cdqn7OKvhszrj0xQ/+BkO+h+AK+LsiXTXZsyZJNYWzZy1F/aNbbpmghQVEQHQX9fGOb9x2udVc219zaq6lF9Qe87/vvrIVEBYCfh0H5xLUIGHgp6DR4NOtGz491bIm2Sle6pzCc0fKseXFNMVmI2/HDsB9vpqToiiu9U7PL1xUZYkGrmDNqwKCNYB6sQCYQvJQvLywJiVVq4LAxSpDjbWLed5wA/qIhoj8fLL+XANtH1F3HP0LvhoIPz8JqybCPzPVmomJ69Wl5JyBmtYA/g2hwY3QrB+0GwFdXla3nT8Kn3eHxA3l8WylciaDNUmqCYSA9OM47GBJUdfpNDSugGANLtRc2/mNW9FN95prP1fMvctZ/sGD5O3aBTod/oMGlu0i2+fD3u9B0cI9c8Er0LXLu3NnALLPBKgbKrh3Lf9gHI7cXDQ+PiUG6779+qF4eWE5coTcLVsqtD0lsaY4a6zZy69sR2EFQ6Gas7vx6VpQMPb3ZeV/n/Jit+I4k4gt78prrBWmKAp+zkSDpUshqBHcOFLNSq5znfqPVsv7odNY6DUF7v4Chv0Ko7bAi8fglVMwbg88tgru/wb6TYcuL8Fjq6F+O8hPhy/vgl1VO+dRKkoGa5JUE+SdB0s2lkwd2B1ofH3R1QmpmHs16wfGAHUuzEVFN1011379tXrUXLtMz5Gzor9Pjx7ogoOv/Pqpe+D3F9THPSZCw5vcdptuvRUUBfNpC9ZcTYXPW8vbthUAY5vYEsuPaL29XW/o6QsXVWh7iiNsNmynTgPO1QsqLlgjeTu+ffsAkLliBcLhKP97lYf041iz1IcaX1+0/v5lvpQzKzR7wwa1ZMkdU+H5eHh6EwxdAoM+g16TodNoaHEPRN0GIU3A6K8WwC6Odx0YvhSuuwscVvjpCXV1jlqwxFxtIYM1SaoJnEOgZrVXxxATU3Hzc3QG9b9zUHuVCnGrubZ2bcXcv7Ryz8GHbeGTm+FE0R4kR04OmQUFYp1Dg1fEnAWLh7vmqdFxTJFDdIGBeLZsAUB2iqc6HFWBSwBdar5aYf6D1eebtXIltnOVU1LEyXbmDNjtoAh0Bkf51VgrrF5rQIH045him6Hx9saWkkLezl3lf6/ykJZwIRO0jL1qToZGjTBc1xxsNrJWlCKxoLT0RrhnHtzyjPr1urfhx8fBZi6/e0hlJoM1SaoJXGU7/IAKSi4ozDkUGrcMss+4NrvVXKvqodCd36rzyE7thTm9YOWrbvXhMn77DUdODh4REXjddNMlLlQM5zy1tHi3eWrFcQ2FpnpDfgYk7yjrM7pMk4Rr8XbXfLW0BNjyOditbscab7gezxtuQFitlb5MWOH5aoqGihkG9fSD4CYAaNL24dO9G6Aux1QtpcW7MkGvNlgD3IdCy5NGAz1eg/4zQKODPYvgywGVVkNQKpkM1iSpJnAu4J6plu2o8GCt7vXqUJPDBru+c9tVLWquCQHbCpbaqdtCLQ66cQZ8dqurl805BOh/331X3gt5iXlqF3MGazmpHmqnWgXNW7McTcR+7hyKhweeN9ygbvzxcfjtOfj7/SLHO9c/Pb9oUaUOD7olFxgD1OG3ilD/wqLuPn3UodCs5cur51BooeQCfRmTCwpzlvDI3bbN9XqXq7bD1MxQg6+67u3n3dV/DKQqI4M1SaoJnMOgZ9UelArJBL1Ym6Hq5x1fuc1dqRY11xLXq71eHt7w6DK4/zvwrgtnD8GcXuR9Por8fftQ9Hr8rjSx4DLz1C7m2bw52pBghNVB3hkPtexJBch1zldr2RKNhwecOwpJ6jY2flik98Pv9tvReHtjPXac3H//rZA2FcdWEDzovOwVMwTqVKg4rvfNN6trZ54546pDV62UQ9mOwvRhYRjbtQUhKi6xolFXGLES/BqqWc4yU7RKyWBNkmqC9OM4bArWtBwADOVdELc41w8CvZcaAJ1wf7N3Jhpk/Phj1ZSHcC5g3eJeMPhAs9vh6X+g5WAQDtJ/VOeq+dzaDl1AQOmvW4p5ahdTNBrXwvDZyZ7qa2XOvtJndFl5WwuCNecQ6P6fL+w0Z8CGD9yO15hM+N3ZH7iwLmplsCYXqrFWEUOgToV61hS93pWpXC2HQgsVxC1r2Y6L+fXrBxSsFVpR6jSHkavVwDjvfEGmaOX9LEkXyGBNkmqCjBOYM3UgQBsQgC4oqOLv6emrBmwA291XNKjSmmvZZ+CAGozR7pEL270CYdAs7P3nkHHcC4AAZSn8McFtLluJrmCe2sW8byuYt3bKW82mO7bxSp5RqRRJLtj7o/q5qTp/iX8/UwugFuJKNFi9Wp34XwkqvMaaU90bQOsBeefgfGKhrNCVCHvFJXlcMUsu4vxJrLkFwVp4eLlc1qd3b9DpyN+/H/ORCqzv510Hhi2F5ncWZIo+DmvelJmilUwGa5JUE6Qfx5yhDqNUyhCokzPRYN+PkJ/p2qzWXOsOQOrrr5O1ahXCai3uCuVv59fqm0b9thDWqsjujDgzwqbgEWLEGGxWe5w+uxVObr30da9gntrFTDd3Ar0eSwZYsrTlXsLDmpqKNSkJNBqMsa3V+UOpu9W23vmhWuTUlgd/TXU7z7NpU4ytW4PNRvqPlZNo4B6sVeAwqM6gBmwASdswdeiA1t8fe1paldWXK9a5I1hytCAUFC8j2rKUkCmGLiDAtSJH5tIK7F0D8PCCe+fDzf+nfr3uLbW8h8wUrTRyuSlJqu7M2ZB3HnPGhQXcK034TWrW3dlDasDWdrhrV8DDD5P1xyryd+3m5OgxaIOC8OvfH79BA/Fs0qRi2uNwwLZ56uO2jxTZLYRwJRYEjByH0j4Ylo5T2/9FT+g0Brr8R12ap7ArnKd2Ma23N15t25L7zz9kJ3sSWM5JBs5eNc9mzdB6e8P2T9Qd0V3AFATdJ8D8/upr02m02zJh/oMHk7dzJ+mLFhE08rGyreJwBayF56xV5DAoqAF78nZI2o7S4h58evYkffFiMn9fhqlDh4q9d2mdS8CafWG+WnmW3PHr14+cdX+RsWQJutC6Zb6OotOjCw5CFxKCLjgYbWBg0Tp+Gg30fF0NwJc+C7sXqlnq939zRf/YSGUjgzVJqu6cyQXZaoBRKfPVnBQFYh+GP16F7V+6BWtesbFELVlCxo8/kL5kCfYzZzk3bx7n5s3Ds0UL/O8ehO/tt6P19S2/9hxZo65ZavCFGwYV2Z2/axfmuDgUg0EtMeLnBw07wPKX1DeXDR9A3HIY8DE0KBhOLMM8teJ433bbhWDtzAHITAHfsLI/10JcyQXO+Wp7C3rJnK9B1G0Q3VV9fda+pQ7hFvDt24dTb76JNSmJnA0b8L711nJpU3EcOTk4MtSljdR1QSuwZw3UYG3LbHUh856v49u3D+mLF5O1ciWhE15F0VWDt7jCy0yVQ9mOwny6dUPx9MSalETqhInld2GNBm1QoCt40wWHXHgcEoYu9i10m95Ad2QTms97wJDF6moKUoWpBj/JkiRdUkGNNUuGB+Co3GFQgFYPwOpJkLQNTu1Ty3oUMERHUWf8eELGjSN7/XoyfvyRrDVryd+zh9Q9ezj15lv49OyJ/92D8Lrppqvv1XGW62h1P3iYiux2TqT37dsXrZ9ak845l43rBhT0ssW597KVcZ7axby7dOb0O++Qe9aAw6qgObIWWj9QpmtdLK/wfLUzcXB6H2j00OyOCwd1f1UN1nYtUIer6jQHQOPpid+Auzj/5VecX7iwQoM1a6o6Z06jd6D18lLnO1Wkpn3V8iBph2HnN3i1H4I2MBD7uXPk/PMv3rfcXLH3L420BHVonPJLLnDSmEyETZ581UkVwmzGlpaG7cwZ7OfOgcOB/cxZ7GfOUvJApwkwodHloPv6doKffBy/R5+7qnZIJZPBmiRVd+nHsFsVrFlq/ahKHQYF8A5R3xQP/KomGvR9q8ghik6HT9eu+HTtii0tjYxffyXjhx8xHz5M5tKlZC5dir5ePfwGDsRv4EA8GtS/8nZkpsDB39XHxQyB2jMyXG9azhpjbprdXrSXbddCyE4t0zy1i3lERaEPD8d64gQ5pwz4HFlTLsGaPT0d8+HDAHi1bQN7P1d3NOqmBipO9duqS4UdXAp/vqEOTxUIGDyY819+RfaatVhPnUJft+xDZpfiygT1sqtDsRW1yoaT0R9uewFWvAxrpqDccDc+vXuR/t0CMpf9Xk2CtUI11sq5Zw3Ar38//Pr3K7frCZsN27lzauB29iy2s2exnTmD7UyhxwWfRV4eDpsGSyaIs7IOW0Wq0gSDv/76i/79+1OvXj0UReHnn3922z98+HAURXH76FNQ/FCSrhkZJ9Q1QQFtSPBVrStYZm2GqZ93L7jspGJdUBBBw4cT9csSIhcvxv+B+9H4+GBNTubszJkk9OjBseGPkPHLLzjy8krfhh1fg7Cr8+jqXldkd8aSJQizGUOTJuqk+uI4e9mcddmyC7InyzBP7WKKolwo4ZFiUOutlUPGXO52dUUEj8hINQvYmQVazDAw3V4FFDVgS7pQb8zQqJE6hGq3k/7991fdppK4FnCvqDVBi3PjY2pgmH0KNn2Eb5++AGStWo2oDuvXpsVfmLMWXv7BWnlTdDr0depgvP56vDt3xv/uuwl+8klCX32FBh+8T+S339B45Qqa7dhOk61bafTrT0S8+iDew1+r6qbXalUarOXk5NCqVStmzpxZ4jF9+vQhJSXF9fHdd9+VeKwk1UrpJ1yZoJ6VPQTq1KibOkyYd14NBEpBURSMLW4gbOJEYtb/Rb2pUzF16giKQu4//5D8woscvvU2Uqf87/JV2B32C+uUtnu0yG4hBOedKxbcP/jyk7idddk6PA23PlfmeWoX8+5SUMIjxYjIOgWnD1z1NZ3z1bxubAen96vDuFoPtbfzYnWaqUPEAKsnu+0KGKxuT//+hworbeGWXFBZwZrOQ10iCWDDDLya1kcbEowjI4OcTZsqpw0lyT2HyE5Ts0Ep/2HQqqb1NuER0wyvIa+iq1PBQ97XuCoN1vr27csbb7zBwIElVxg3GAyEhoa6PgKupMClJNUGGScwZ6jLTHlU9hCok0YLrYeojy+quVaq0z098et3Bw3nzKHxqj8IHjMaff36OLKzOf/VV8T36k3yf/+L+ejR4i8Qv1pNtPD0h+vuKrI7b9s2LAkJKEYjfv37l65RXoHQ5001k7KcMiS92rdH8fTElqvBnK4rlxIezvlqxrZtYV9BYkHjnur6mMXp8pI6n+3IGnVh+QI+vXuh9ffHlpJC9l9/FX/uVbK5DYNWUrAG6nzEBjeCNQflr7fx7V1Qc62iqvuX1rkjan01h4Li4YGugoafpdqv2tdZW7t2LXXq1KFp06Y89dRTpKWlXfJ4s9lMZmam24ck1WiFa6xVVbAGEFsQrB1ZA+ePlfky+vr1CRk1ikZ/rCT888/VRdatVjJ++JEjt9/ByWeeIf/ART1SzsSC1g+C3ljkmq7EgjtuR+vjU+a2XS2NweAqGZGd4nnV64Q68vLI27cPAK+2bS89BOoUEHkha3f1666hWI2Hh2vlifQKWtGg0mqsXUxRoNcb6uMdX+HbQU2uyFq9Goe5CmuBpSUUmq8WXuFlU6Taq1r/5PTp04cvv/yS1atX8/bbb7Nu3Tr69u2L/RJd+G+++SZ+fn6uj/ByqhYtSVXCmg/Zp1w9a5WeCVpYQKRa1wtg5zeXOrJUFI0G71tuJmL+PCK++xbvrl1BCLKWLefowEEcf+IJcrdtg4yTcGi5elIxiQW28+fJWrFCbWLBUF9Vcg2FJhvg2IarKhyat2s32Gzo6tZFr02Dcwmg84QmvS994m3jQWeEk1suvHaA/333qm1bvx5rcnKZ21WSSlu9oDgNO0Dz/iAcGFO/RVe3Lo7sbHI2VOF6lmnxWJ2ZoOWwJqh07arWwdr999/PnXfeSYsWLRgwYABLly5ly5YtrF27tsRzXn75ZTIyMlwfJ06cqLwGS1J5y0zCblGw5al/8Ku0Zw3UmmugTvZ3lN+8J6/YWMI/+ZioJT/je8cdoNGQs+4vjg15iMQhQ8hO1iMa3gwhRYvtZvz0M8JqxfO66zC2uKHc2lRWziSDvDQPbNl5cGJzma/lmq/Wti2Kcy3QmF7qeqiX4hMKNz2hPl49WS0mDBiiovDq0AEcjnJPNBAOx4VgzQfwbVCu1y+VHpNAo0OJ/wPfjurPQpUOhVZgjTXp2lKtg7WLRUdHExwcTHx8fInHGAwGfH193T4kqcZKP+7qVdOFhlbpEB+gloYwBkBm0lUP8RXHs2lT6k+bSqNlv+N/772g05EXf5oT64JIXGxW130sCDzAuWKBOqTnXAezqunr1VN7QIVCTqrnVc1by9tWaL5aaYZAC7v5/8Dgp9Zk2/uDa3NAQVmT9MXfl+sSYfa0NLDZQBHoQhuAtgoqQwU1gnYjAPA1qIFu9p9/4sgvxdqwFSEt3rWAu76hHOWRyq5GBWsnT54kLS2NsLDyqQouSdVedZmv5qT3hJYFQZEzO7MCeEREEDb5dRp/9jKBTbNRdIL8o8kk/d//ceSOfqT/+BPCaiX333+xHDuGxmRSe+SqCbeh0DIGtcJqJXfHTgC8GnpB+jHQe6k9a6XhFQg3F2S5rpkCdjUw8+neHW1QELYzZ8i6xCjFlXJlgno6UEIqcb7axTq/CAZfPDmAPsQPR25uhSVUXJIQkOa+1JQklVWVBmvZ2dns3LmTnTt3AnD06FF27tzJ8ePHyc7O5vnnn+eff/4hMTGR1atXc9ddd9G4cWN6977MfA1Jqi0yTlTNAu6X4hwKjfsdss9U6K30R3+kbmwmjV+/k+Cnn0Lj64vl6FFS/vMf4nv35tTb7wDg278fWu+iKxpUFedQaE6KAXFyB+Seu+Jr5B84gMjLQ+PnhyG7YCi1SZ9iV24o0U1PgSkEzh+FHWoWr+Lhgf8gtXfOuY5qeXAVxDVVciboxUxBcOuzKAr4hKlLX11thf8yyUpFWHIuDIPWsrIdUuWq0mBt69atxMbGEhsbC8Czzz5LbGwsEyZMQKvVsnv3bu68806aNGnCiBEjaNu2LevXr8dgMFRlsyWp8qRfKNtRLXrWAEJvgHptwGFTi+RWlPPHIH4VALrOTxAydiyN/1xNnfHPoQ0OxpacgrkgazSgmgyBOhljY9H4+mK3aMk7p3MroVFazsXbvWJjUQ4sUTeWdgjUyeANt45XH697B6xqEWJnokHO339jKad5vReSC2yVmwlanJueBN8G+Iaq/0xkr12HIze3ctuQFo8tT4OwK6DToZcjQtJVqNJgrUuXLgghinzMmzcPo9HIihUrOH36NBaLhcTERGbNmkVdWadGupZknMCc6exZqybBGkCboern7V+WS5X+Ym2fDwg1A7VgkWittzdBjz1G41V/EDpxAoaYGPwGDcKzefOKaUMZKTqda6mj7GRPdTWDK5RbMF/Nq3EdyDwJHt7QuMeVN6bdI+pk/6wU2KIuVeURHo7pllsASF+0+MqvWQzn6gU6L0flZ4JeTG+E7q/iGWBF7+1A5OWRvW5d5bbhXAKWrIJetfr1q8ei8lKNVaPmrEnStcaWcgx7fkEmaKNGVdyaQm64W50/dfbQVWU7lshuVTNOodhyHRpPTwIeeIDoX3+h3v+mlP/9y4HJbempK5u3JhyOC8kFpoLVHZreXmyNucvSGdRCuQDrp0O+WnvSuX5q+o8/lsuyTBcK4laDnjWAFvehhLXENzwHqIKs0MJrgsohUOkqyWBNkqoruw1z0lkA9GGhaEzVZ04Wnr5wfcHKI+unlWsZD6BgPtwpMNWBZtUnceBKeN96KygK5vMeWJOPw7kSVmcohuXIEezp6SienhizCoZQry95pZfLavUABMVA3jnYpC7v59OlC7qQEOxpaWQs/a3s1y5gTVKHU/UmB/hXg8n0Gg30egPfhurQb/a6ddizcyrv/mkJWAsyQWvCmqBS9SaDNUmqrrKSMaerv6KGJk2ruDHFuOkJdVmjwyvg17GuWl7lYusc9XObh0GrL7/rViJdUBCeLVoAzqHQ0veuOeerGZtEoOSmqCU4Gncve2O0Ouj2X/Xxpo8gJw1FryfgYTVZ5NTbb2NNTS379Sk0Zy0kUM0arg6iO2O4sRsePjaExUL2mvIvN1OiwjXWZM+adJVksCZJ1VXh5IIm1SQTtLCwVnD356Bo1CHLFS+Xz/y1tISCOV4KtBl29derQt6dL2SFXkkJD9d8tboFPZbN7lCHM69G87sgtCVYsuHv6QAEPTIczxYtcGRkkPzyy2417K6EIz8fe7o6vKoPj7y6dpYzpddkfBuqddYyf7j6lTdKxW6Dc0ddc9b0siCudJVksCZJ1VX6cSzVqcZaca4fAHd9rD7+91P4c/LVX9NZv61xdwioBsNpV8G7cxcAclINOOL/KvVwsXPlAqM2Tt1wNUOgThoNdJ+oPt48GzKSUPR66r3zNorRSO6mfzj/1VdlurStoFdO0TnQhFWD+WqF1WmGT++eAORs2Yk9I6Pi75lxHGG3yhprUrmRwZokVVOiUEFcj+oarAG0fgDuUHtqWD8N/ppa9mvZzBcSC9o9evVtq2Ke1zVHGxSEw6Yh70QuJO+87DnW5GR1sr5Gg5fpNHj6X1iT9Wo17g4NO4HdDH+pNeoMUVHUffEFAE5Pm07+oUNXfNnCa4IqQdUsWAM8H/gfHn52hB2yvr6Kn8/SSjuC3azBYVNAo0HfoH7F31Oq1WSwJknVlP1kPHaLFpRqlglanBtHQK831Md/ToZ/PinbdQ78Crlp4FMPYmp+8WtFo8G7c8FqBimecOTPy57jHAL1rOeNRi/Uxcl1HuXUIAW6T1Afb/9KHXJGXarLu3NnhMVC8gsv4rjC7FBXQVwve/XIBL2YTyi+t7UFIHPJD+o/BRUpLf7CEGhYGBqPcvr+SdcsGaxJUjVlTkgEQF83EI1nNZmwfSmdxkCXl9XHy1+CbWVYjmrbPPVzm4erZm3JCuAK1pI9IWHtZY93FcP1K1j1oDyGQAuL6KguWSXssOZ/ACiKQtgbk9EGBGA+eJCzM2Zc0SUL96xV6eoFl+D72CsA5JxwYF8zs2JvJtcElcqZDNYkqZoyn1DnARmiatDk5M4vqkEbwK//B3u+L/25Zw5B4no1YcFZdLcWMHXqCFotliwdlv1bwHLp8hHO+WpeAZngFQRRncu/Ud3UwIW930PqHgB0ISGEvaHOOUz7Yg45m0tfP8968ph6DS971RfELYGh6fUYGoaAUMha8BHkna+4mxXqWZPz1aTyIIM1SaqOHA7MqdkAGJo2q+LGXAFFgZ6Tod0IQMCPj8OBpaU719mrFtMb/BpUVAsrndbHB6927QDITtLBsY0lHms7fx5LvDo0aQyxQPM7K6aHMawVXF+wdNWfF4oK+3Tvjt89d4MQJL/0EvasrFJdzlYQrOkDjODpV+7NLS++A+4HIDNBqPMrK0rhGmsyE1QqBzJYk6TqKOf0hRpr17Wu2rZcKUWB26eqhViFHb5/xLXGZ4msebDrW/Vxu6IrFtR0zoXds5MvXcLDuWqBh58DncFR/kOghXX9LyhaOLTM7ftT96WX0YeHY0tOIXVy6bJ7XcOgoaEV0tTy4nuHWmA555QB27pZ6vqz5c2aBxknZI01qVzJYE2SqiFx/kImaI3qWXPSaODOj+C6AWC3wIKHIHFDycfvX6IOS/mFl239y2rOu4s6lJl72oAjruQkA9d8teA8dfWGyFsqrlHBjdW5gQALhsBhNWDTepuo987boNGQ+cuvZC679DJNQgisZ9QhRX149R7y84iIwPO669Sh0GNaWP16+d/k3FFAYMlWayTKGmtSeZDBmiRVQ7aje3FYNaCAR1T1nAN0WVodDJqtDmva8uDbwXByW/HHbp2rfm4zDDTaymtjJfGIjkZfvx7CoZCz9whkFb9agKsYbogFrrur4l+LPm9Dkz5gy4fv7lezcQGv2FiCn3wCgJTXJmE9darES9jT0xEWGwC6yOr/j4VP3z4AZB43qnP2kkr4mSyrcwnYzQoOiwKAR7hMMJCungzWJKkaMh/YC4BHsLFmp/3rPOC++RB1G1iy4OtBkLrX/ZhT++HEP+qQXOxDVdPOCqYoiqtArrr01Noixzhycsjfvx8oCNYqcgjUSe8Jg79W7+WwwqJhsGshAMFPPeVa3SDlEqsbWJOTAdB62tHUqcb1AAv49u0LQO4ZA7Z8Dax8tXxW3nAqtMyUrk4dNEZj+V1bumbJYK2KCCGwnDiBKM8/ElKtYU5QF/021A+u4paUA70R7v8OGrSH/HT48i4189NpW0GvWrPbwTesSppYGZxDodnJnoj4okOhebt2gd2OzsuGPrQONOxYOQ3T6uHuL6D1EHWO4U9PwNa56uoGb7+N4ulJzsZNnP/662JPt6VU8xprF/Fo0ADPli1BQGaSDxzbAHGXHuq9Im6ZoHIIVCofpU4zGjRoULHb/fz8aNKkCY899hghISHl1rDaLmvZMpKefY6Qcf9H8JNPVnVzpGrGfLygbEd0Lfljb/CGIYvhyzshZZcasD26TJ2XVdCTQ9val1hQmFf79igGPbY8MG9dh+cgoSZjFHDNVwuxwHUPqPP+KotGq84x9DDB5lmwdBxYczF0HEXdF18gddLrnJ46DVPHjhhi3NeptZ48ATiDtZoxZO/bpw/5u3eTdT6SQHbBHxMgpqcauF6ttIQLNdZkcoFUTkr918DPz6/Yj/T0dGbPnk3Tpk3Zu3fv5S8kAZC3W61tdH7RItm7JhVhTlVLJhiaVP85QKVm9IeHfoKQZpCVDPPvhE0zwZwBAZEQ3bWqW1ihNJ6emG7qAEB2QjacPuC2P3erWtes0oZAL6bRQN934OZx6tcr/gPr3sF/8GBMnW9DWCwkvfAi4qLVDazHDgOg99GAqWb8w+5bMG8tN+EsVoIg7fCFNWmvVlq8XBNUKnel7lmbO3duifscDgcjR47k5Zdf5tdffy2XhtV29vNq9pQtOYX8vXsxtmhRxS2Sqgtht2NJswEKhuvbVHVzypcpCIYugTl94PxRWFOwRFXb4ZXbk1RFvLt2Jfuv9WQnGwg+sgbqXgeAsFjI27kLAK/IAGhwY9U0UFGgx2tqT+ifb8CaKSjmLOpNnsyRuwZgPnCAMx9+SJ3nnnOdYj2hDtnrQwLcegqrM31YGMbYWPJ27CBL15tA27ew9i1ocR94+pb9wnnpkHMGS7Y6fUGW7ZDKS7n8ddRoNIwdO5Zt28o5q6YWs6VfqJ6dtWJFFbZEqm6sRw8WLAAt8Li+it60K5JPKAz7BXwLCt9q9NC6diYWXMxZby0vzQP7vgu1zfL370dYrGg9HHjcPKBqA1dFgdueh95vql9vnIFuy9uETZoEQNrnX7itbmBLUYfsdWHVu8baxZy9a5l70yGoMeScgQ0fXN1Fz6kFjZ1lO+ScNam8lNtfBJPJRG5ubnldrtazn093Pc5csVIOhUou5t3/AmDwA8XLp4pbU0H8G6oBW/12amDgXTOGz66Wvn59DJHhIBSy/9kONnVIMffffwAwhphRWtxdlU28oOPT0P8DQIEtn+OT8yN+gwYWWd3AejYdAH2DyCpraln49O4DikLezp1YWz+jbtw0EzKSyn7RtCPYrQr2fLWHUdZYk8pLuQVrf/zxB02aNCmvy9V6zmFQAOuJE5gPHLjE0RVD2GwySKyGLAf3AWCoU8tT/oMawcjV0OXFqm5JpfLu3guA7BPASbWHKne92rvuFW6C+tVo6LvtcLVWnqKFXd9St/kx9A0aYEtO4dQbbyAsFmwZ+QDoo5tXbVuvkL5uHbzatgUgM96qZt/a8mDNlMuceQlp8a5lprSBgWi9vcujqZJU+jlrv/zyS7HbMzIy2LZtG59//jmff/55uTWstnMGa4aYxpgPx5O5YqVaWbuSmI8cJfG++/Dt25ewyRVQxVsqM3PB2pCGBrWgbIdUhKnzbaR98QU5qQbE4dXQsBO5+9RJ+l43d61+875a3quWX/n+EbQJS6nX4xaOfakhY8kvrsxQRSPQRlTe36/y4tO3D7lbt5L561ICP5iM8kUP2PktdHgKQsswj7hQjTU5BCqVp1L3rA0YMKDYj9GjR7Nx40Y+//xz7r///opsa60hLBYc2eoi3f6D1dcsa/nySu3lOv/ddziys8lYurRIdpdUtZxlOzwiZeXz2sgrNhaNlwG7WUv+xj8w79+NI8+OonXg2Xt4VTeveM37wQPfgc6IV/7fBHVQF2s/PW06ADovO0pQo6psYZn49u2LYjCQv38/uUmOgsXthVootywK11iTyQVSOSp1sOZwOIr9yMjIYPPmzTJQuwL2jAz1gUaD3539UTw8sBw7hvnQ4Uq5v7BYyCzI2hV5eeTt2VMp95UuT9jtmFMzgVpWtkNyUfR6TJ3UgrdZu4+R96s6ImEM1aGEt63Kpl1a4x7w0A/g4UNIg3141tW7Kv/rTQ7wa1DFDbxyusBA/O+5B4Czn30K3SeoCS9H1rgtbl8qQrjXWJM9a1I5uqI5a0IIDh8+zL59+7DZbBXVplrPVjAEqvXzQ+vri+kWdbHmrJUrK+X+WevWYU9Pd32d888/lXJf6fKsJ08ibAJFI/CIuaGqmyNVEO/uvQHISfYg96+C+Wqtrq9+Q6AXi7wZhi1B8fKnXtuTKNqCYC3AWGPXdA169BHQ6cjd9A95JzLhJnVNVFZOAIe99BfKPg2WLKyuTFBZY00qP6UO1o4ePUrLli1p1qwZLVu2JDo6mi1btlRk22otZyaoNiAAAN/e6oTjrJWVU8Ij46efAdAZ1T9Euf/8Wyn3lS7PHB8PgIevDSUosmobI1UY79tuBQXyz3uQnaT+GfbqUQWFcMuiflsY/huGsEBC26Wj0TvwvqFeVbeqzPT16+PXvz8AZ2fNhlufA08/OL1Pnb9WWmnq764lR13L16OhnMYglZ9SB2vPP/88NpuNr7/+mu+//57w8HCelMsklYkzuUDr7w+ohTLR6zEfjseckFCh97adPUv2unUAhLZVh2Pzdu7AkZ9fofeVSse5gLvBzwr+8o99baULCsKzsTpM5rBoQAPGLndVcauuQOgN8Mgy/FsF0mRQKr631ux6gEEjHwNFIXv1avJPnoXbXlB3rJkClpzSXeRcAg4b2AoOl8OgUnkqdbD2999/M3v2bB544AEGDhzI999/z86dO8nJKeUPsuRiLyiI6+xZ0/r6XpjDUsFDoRlLl4LdjmegBe/6+eiMdoTVRt6OHRV6X6l0XMFakA4MtbTGmgSAd4/erseeDYPReHlVYWvKIDgGRqxE6fYKdBxd1a25KoboaHx6qSMcabM/h/YjwT8CslLU2mulkRaPNUdNLtD4+rr+GZek8lDqYO306dPEFFrANywsDKPRyOnTpyukYbWZq2ctwN+1zbeX+oc7c0UFB2s/LwHAPyoXRQGvOmYAcv6VQ6HVgTnhCACGBkFV3BKponl36+V67NWpcxW25Cr4NYDOz4NvWFW35KoFP/E4AJm//YYl5TT0mKju+Pt9yDp1+QukJVzIBG3YEKW6zz+UapRSB2uKopCdnU1mZqbrQ6PRkJWV5bZNujxngoGuoGcNwKd7N9DpMB88iCUxsULum3/gAOaDB1G0Cr4RedDqAUx11WAtd9OmCrmnVHrCZsNyUn1TMETKIZTazvP669AGq7X0vG7pXsWtkTyvuw7TbbeCw0Ha51+oZTzqtwVrDqx98/IXSIt3ZYLKGmtSeSt1sCaEoEmTJgQEBLg+srOziY2NJSAgAH9/fwIKBR9SyVwJBv4XXi+tvz+mm24CIHPlHxVy3/SffgLAu34eWg8BtzyDKVIdasvbuw97thzSrkqW48cRNrXelj6i5tWskq6MotFQf+q7hIwbh3eXGtqzVssEP6Fmgmb8+CPW06eh1xvqju1fwumDJZ/osMO5I66CuHpZY00qZ6VewWDNmjUV2Y5ryoVhUPfg1qd3L3I2bCBrxQqCHx9ZrvdUa6stBcA/MkdduDikKfqWt6L/bT3WHMjbvs210LRU+cyH1Wwyg58NJVD+sb8WmDp0wNShQ1U3Qyrg1bYtxnZtydu6jXNz51H3pRehWT84uBRWTYQHFxZ/YsYJsFuwZvsC4BEuf3+l8lXqYK1zZ/mfX3kpbs4agE+PHqS+Non8ffuwnDyJR4PyKzKZ/ddf2M+fR+ejxxRqhqa3qzsib8Wr7ioyjujI+fdfGaxVIfNhtSiywdcGfjITVJKqQvATT3Bi6+OcX7iQoCceR9fjNYhbBoeWw9H1EHVr0ZOcZTtyDYCQqxdI5a7Uw6DJycmMHz++2HlpGRkZPP/885w6VYpJmJKrIK3uop41XWAgXu3bA5BVzokG6QW11fwiclA0QLM71B1Rt2Gqoy43JeetVS1njTWDvxX85R97SaoKpltuwXBdc0ReHue/+lrNem33qLpz5SvgcBQ9Ke0Iwg7WLLVIsJyzJpW3Ugdr06dPJzMzE19f3yL7/Pz8yMrKYvr06eXauNqqpGFQuFAgN7McC+Ta0tJctdX8wtPBKxgaFNRFCozGq5HajvwDBy8shSVVOvPhQ0BBz5oM1iSpSiiKQvDj6ty1c19/rc7l7fISePhAyk7Y+33Rk9LiseRoQYDi5eVKHJGk8lLqYG358uUMHTq0xP1Dhw5l6dKl5dKo2sxhNuPIzQWKD9Z8evQARSF/126sycnlcs/MpUvBZsMz3A+Dnw2a9rmwNIyioL+hMx4+VhCC3K1by+We0pURFguWxGMAGIL1YJTJOpJUVXx69sAjKgpHZibpCxeAKRhufUbdufp1sF5URDwtHmu2LNshVZwrWm6q4SW6dhs0aEBiBZWcqE1ca3JqNWiWj4WU3W77dSEhGNu2ASDrj/LJCnUNgTYsGMJueof7AVG34VVXHQrNkUtPVQlzYiLY7Wh0DnT16lf/NSIlqRZTtFqCRqpJXmlz5+Ewm6HD0+BbX00m+PdT9xPS4l2ZoHIIVKoIpQ7WjEbjJYOxxMREjEZjebSpVnMNgXp5oOz/CX5/vsgx5Vkg11VbTa/Dr04y6IwQ3cX9oMhbMRUUx839R85bqwqW+EKZoAFyAWhJqmp+/fuhqxeG/exZ0n/4AfRG6PaKunP9dMhJUx/bzJB+HEuWs8aaTA6Syl+pg7WbbrqJr776qsT9X375Je0LJsdLJbsQrBUMQ574B07tdzvGp1dPAPK2b8d6lUkbrtpqLeqjNQho3B08LlrWxj8cryahgFo+wnbu3FXdU7py+QWZoB5+VpkJKknVgKLXEzRiBADnPv8CYbVCy8EQ2gLMGfDXO+qB544CAkuuJyDXBJUqRqmDtfHjxzN37lzGjx/vlvV56tQpnnvuOebNm8f48eMrpJG1iTNY03kWGubaNtftGH1oKMbWrQHI+mNVme/lVlstvCAAc5bsuIjuutvULEQgd/PmMt9TKhtnz5qnn00u4C5J1YT/3XejDQrCmpxMxm+/qXN9e05Wd275HNISXGU7rDkGADwayp5xqfyVOljr2rUrM2fO5KOPPqJevXoEBAQQGBhIvXr1mDlzJh9++CHdunWryLbWCs6lprQe9gsbdy0ES67bcT691aHQrBVlzwp11lbTBgViMsSBooEmfYo/OKrzhXVC//mnzPe8lgiH48IcxKvkLIjr4SdrrElSdaHx9CRw+DAA0mbNRjgc0KgrNO4JDhuseg3OJSAcYMlSS3rIGmtSRSh1sAbwxBNPkJCQwNSpU3nwwQe5//77mTZtGvHx8Tz11FMV1cZaxbXUlF4NjNDo1C71fT+6HedbMBSau3UrtrNny3QvV2LBTVFqbbXwDmAqYYHwyFsKrRO6sUz3u9akvPoqh26+hfMLF13VdRxmM5bjxwEw+FnBX/5nLknVRcADD6Dx8cFy5AhZqwpGOnq+rv7ze+AX2LMYa64W7ALFwwNd3bpV22CpVrqiYA2gfv36PPPMM8ycOZOPP/6YcePG0aAcK+3Xdq45a9o8dUOrB9TPW+e4HaevXx/PFi1AiAt/IK5A4dpq/vXOqBubFT8ECoBPKF7NIkARWI6duOq5crWdsNvJWvkH2O2kTpxI2rx5Zb6W5cgRcDjQeDjQeTrkMKgkVSNab28CHhoCQNpnsxBCQN3rIPYh9YDUPRfWBG0YjqK54rdVSbos+VNVyZzDZlpdQZ2eW54BjR6SthUp4+EqkFuGoVBXbbXrm2PILaidVsJ8NSdts854BhTMW/tXlvC4FPOhQziyslwlNk6/9TZnPv5Y/UN+pddyZoL6WlF0HmCqU65tlSTp6gQOHYpiNJK/bx85f29QN3b9L+jVZC2rMxNUrgkqVRAZrFUyV4KBhwO0BgiMhub91Z0XJRr49FKDtdzNW644Q9M1BNqhkTq3IqQZBDW69ElRt+JVsPRUjgzWLil3yxYATLfeQsj/jQXg7IwPOTNt2hUHbOZDBWuC+tnArwHI/8wlqVrRBQQQcN+9AKR99pm60ScUOo0BkDXWpAon3xUqmS29YBjU4ABTiNoz0+4RdefuRWDOch3r0bAhhuuag91O1urVpb7HhdpqevzqpKgbL+pVs9gcfL7+CEt2JpFvLUh2iLy1UuatCSGIOxfH/H3z+evkXxV2n4qUu0XtrfS68UaCn3qKOi+9CEDa519wavJkdSJyKbl61vzkmqCSVF0FPvII6PXkbt1K7rZt6sZOYyH8JiyKOnVBL5MLpAqiq+oGXGtcCQYGh7qECUDkrRDUWE0B3/P9heANtUDumf0HyFqxkoB77y3VPVy11bp1QZtUkLjQ7MKqBUIIXvh+Fz/vTAIUfDx13NmqHve1C+eG6xrDX+ewJqdiOXkSj3Kaj5hlyWJT8ib+TvqbDUkbOJ13GgCdRse6wevw9Si65mx1JQoty+XVrh0AQcOHozF6kfraa5z/9jscuXmEvTEZRXf5XzFzoYK4MhNUkqonfWgo/gMGkL54MWdnzaLhZ5+BwRtGrMT6c3/gvCzbIVWYK+5Zi46OJi0trcj29PR0oqOjy6VRtZkrwcDZswZq71rbggBt6xwoNIzmUzBvLeeff0pVJsKttlqHRmDJAu9QqNfGdcy0lYf4NW4j3jGT8W3yP2whs1h8ZBZ3f/kJX+SH4xl09fPWnL1nn+/5nOHLh3Pbgtt4bt1z/BT/E6fzTuOp9cSoM2Jz2Nh+anuZ71MVLAkJ2M+fR/H0xHj99a7tAYPvo947b4NWS8bPP5M0/nmExXLJazlyc7GeOAEUBGuyZ02Sqq2gx0aARkPOur/IP3AAUEv4WI6rv8OybIdUUa44WEtMTMRutxfZbjabSUpKKpdG1VaOvDxEvppY4BasAbR+UJ3Dlrobki8EL4aoKAxNmoDNRtafay57D1dttZBgTF5H1I1N+7jmQX23+Tgfb1qLMXwuii4Xoc1E530IQ/BajA2+5cPQ/SyK8QDgl29nMmXdPPae2YfVbr3svbMsWfxx7A8mbpxIj8U9uOfXe/hg+wdsO7UNm7AR6RvJQ80f4rMen/H3A39zR7Ta27cldUupXr/qwjlfzXhDU5T9P4Dd5trn178/9d9/D0WvJ2v5ck6OGYsjP7+kS2FOUL9HWi+tmgkqe9YkqdryiIjAt29fAM7OmgWA7fRphNkMOh36sLCqbJ5Ui5V6GPSXX35xPV6xYgV+fn6ur+12O6tXryYyMrJcG1fbOHvV0CpodAK8CwVrXoFw3V2wZxFsnQv127p2+fTuhfnQIbJWrMB/0MBL3sOVWNC/P0p8QTmQgoXb18Sd5tXfV+EVPgdFa6Zd3XaMbTOWQ+cOceDcAfadPcDh9MPsiHRw5yYHjY6l8O7RqSxIVNCgJcInmpZ1rqN5UHOaBTajaUBTkrKTWJ+0nr+T/mbX6V3YxIXAxVPrSfuw9txS/xZuqX8L4T7ugciNdW/k+0Pf18BgrWAIVJ8APz8J5xIurBkI+Pbsiebjjzk5ZgzZ69Zx4oknCf94JhqTqci1XEOg/gW9qbJnTZKqtaDHR5L5229kLV+BeexRbKfV0kge9euXatqDJJVFqX+yBgwYAICiKAwbNsxtn16vJzIykmnTppVr42ob5+oFOi+9WvGhcM8aQLtH1WBt7w/Qewp4qgGxb+/enP3wI7I3bsSelYXWx6f46xeurXZzU/gjBfQmiLqNvUkZjFq0AkP4bBRdLi2CW/BR948w6U3E1om9cA2HjSOfdsGqPUtgtkK9lIYk1T2DQ5vP0azDHM06zJKEJSU+x0jfSFdw1i60HQatocRj24Wq870OnjtIpiWzRsxbE0K4eta8jInqxvXT1IrmDW9yHed96y00nD2LE088Se6//3J8xGOEz/oMra/7czQXrAlq8M5RN8gaa5JUrXk2bYp3165kr1lD2uzPMca2BuSaoFLFKvUwqMPhwOFw0LBhQ06fPu362uFwYDabiYuLo1+/fhXZ1hrPlVzgWbDh4mCtYQe1xIY1V80MLWBo3BiPRo3AaiV7TclDoa7aai1aYMgvqNnWuDtJOYLhX61ACfsMjS6bJgFN+aTHJ5j0RXt6dBodTWK64x2kzrX6JuJhprX/hda8izlpKOYz3bFlNUdY1UBSrzFwS71b+c9N/+H3Qb/z68BfebH9i9xc/+ZLBmoAdbzqEOkbiUDUmHlr1uPHsZ05g6LTYAy0AAoIB/z0uFsmL6iZog3nzUXj50fezp0cGz68SAkWc3xBsOZrBkULPvUq66lIklRGwU88DkDGL7+Q+486t1eW7ZAq0hXPWTt69CjBwcEV0ZZazy25AC5kgzq5JRrMdUs0uFAgd2WJ13cNgQ4cAHG/A5Ab3Yeh81aSF/QxGn0GET6RzOr5GX4GvxKvQ9RtrnVC8zf/S+8bwvhqWB82jBnL8+3H0sAyiuz4l8mKm8C5/a/w57r+rNjUiNW7bSSezSnlq6Fy9q7VlKFQZ6+aZ10dGh3QYyL4NYTzibD8pSLHG1u2JOLL+WiDgjDvP8Cxh4diPXXatf9CQVwb+NYDrRxGkaTqzti6NV433QQ2G5m//QbI5AKpYpXpnWH16tWsXr3a1cNW2Jw5c0o4S3IFa/qCDMGLe9YAWg1WFwc+vQ9OboHw9oC6sPvZjz8hZ/167Nk5aL3de8Xcaqt1ugHm7UcoWp7aZiTFawZajzTCvOrzRe/PCTKWsD6oU8MOmMLsnN0Luf/8g3A4UDQaQnwMjLwtmsdujWLXyQy+33aCPw+cJjkjn7VxZ1gbdwZ+3U9kkBddmtahc9MQOkYH4anXlnirmjZvzTVfzS8NUKD1EGjQHubdATu+hiZ94f/bu+/wpsr2gePfJG3SvVvaMjqAsjeCbJAtKi7EgYLiRsAXFyhDXxVcP8WBAxRwIcor4gDZU0D23hRKWV10z6TJ8/sjbSC0hY6UlnJ/risX5eTk5M7h0N59zvPcdxP7EWaXRo0I+/57Yh97DGN0NKeGDaPenDnofLzJP2etgyc11oS4vgQ89SSxl6yYl9ugojKVeWTtjTfeoF+/fqxatYqkpCRSUlLsHqJktlZTuoLVgcW1FXL1heZ3W7++pF+oISoKfVgYymgka/26Ii9LW7QIAI/evdGd3wDAHrdmbNN8hc6QgL8hiDkDv6GWeymaDOvdcW3ZCo3Ogjk1jbxjx+2e1mg0tK7rw1t3tmDj+FtY/p/uTBjYmE6R/jjrNMRcyGbuphgenbONVm8sZ8ScrczdeLLYUbfL561Vd7b5akFGCOsCHkEQ3gW6jLXu8OcYyCjaV9UQGUHYDz/gXLcuptOnOTVsmK3nq5O3GzqDkpWgQlxH3Dp1wqVlS9vfpcaaqExlHln78ssvmTt3Lg8//HBlxFOjmQu6FzgZCkqfuJUwwtXuUdj9Ixz4DQZMA1dfNBoNnv37c2HmTNKXLcfr1osdCZTRSNoffwLgc9edcPg9sjUaxnqa0bmcw9PZlzkDv6a2R+1Sx6qp3x23wKNkxbmQveVfXBpFFb+fRkNULU+iannyVI/6ZObls/F4UsFIWwLnrzLqVjhvLSY9hp3xO+lZt2epY7zWTGfPYjp3DjTg5m+EpndcfLLXaxC9CuL2we+j4KEFtr6hhfR1ahP2w/fEPvoYxhMnOD/hVQAMQa7WHWRxgRDXDY1GQ8BTT3Jm1HOg0+Fcp/TfX4UoqzKPrBmNRjp37lwZsdR4+ZfOWXPxASd98TvWaQ+1WkB+LuyZb9tcWCA3c/16LNnZtu2ZGzZcrK3WpgnZsZsYXSuQZNcMXLQezBkwiwjviLIFG9Edt1pl7xPqYXCif7Ngpt3dgk3jb2HZ8xdH3Zy0RUfdJi3af93MWyvsWuDiZ0TrrC72dAXrv+Xds6y18o6vgO3fFHsM51q1CPvhewxNmtjmJOp9C+YmysiaENcVj169CBg1iuBJE9HqS/h+LoQDlDlZe/zxx5k3b15lxFLj2VaD6i3Fz1crpNFA+xHWry/paODStCnOtWujcnLI3PCPbffC9lLed9zB/o3/48Ugf7a6uuCscWXOwFk08mtU9mDr3IR7iHU+YvaWLahiCiFfjUajoVGwdcTtpydvZtfkvnw5rB0PdKhLiLcLefkWvv/3FBHu1lsJ2+O3lz3Oa8jWYirQCHU7WhcEXCqoCfR9w/r1somQdKzY4zj5+RH27VxcW7WyHs8/x/qEjKwJcV3RaLUEjn4O3/vvr+pQRA1X5tugubm5zJw5k5UrV9KyZUucnZ3tnv/www8dFlxNY7ca1KOY+WqXanEfLJ8MSUfh1CYI72K7FZo8ezYZy5bh1b8f+cnJZK61zmGLv7kn7+59hr0erjgrLTP7f07zgOblC9bZBZdW7dCuOoYlM4vcQ4dxbd7s6q+7Ak8XZwY0D2ZA82CUUtz31Wa2xaSQmW6d61Hd661lby2cr5ZnLWBcnA5PwdGlcGItLHwCRq4AnXOR3XReXoT98D3GkyfR/9ID8gEfmfMihBCiqDKPrO3du5fWrVuj1WrZv38/u3btsj12795dCSHWHPZ9Qa9S/sTFC1rca/16xxzb5sISHplr12LJzbXVVtM2acqIfZ+x1yMPZ6WY3nqc7fZieWnq97COIgHZW/6t0LGKHFujoUeUdXRx9wkL4V7hWJSFXfG7HPo+jmJKSMB46hSgcAswQpM7it9Rq4U7v7De5j63C9a9V+IxNc7OGGr7o8kvuKXtJXNehBBCFFXmZG3NmjUlPlavXl0ZMdYISilbsuZ0eV/QkrQvqLl28HfIugCAS8uWOIWEYMnOJmvjRltttbkhJkzuO9EpxfsZZrq3eqTiQYd3x72Wtd5a1r/lb+pekm4NredgU/QF2gZZ22tV13lrOQW3QA2+JnQRba98y9IrFG77yPr1hg/g9NaS902Ltf7pUQucXUreTwghxA2rzMlaoePHj7Ns2TJycqzzbdQlBVxFUZasbJTJ2gy9SBP3koS2sT7MRuvqUKwjUl79+gKQNONz8g4dwqTTsKblCTQKpiVeoHfEwCIrEculdlvcQq2XSPa2rbb4HaV5bW983ZzJzMsnwKkpANviq2eyZjdfraRboJdqfje0HGrtbrDwiSLdDWxST1v/lMUFQgghSlDmZO3ChQv07t2bqKgobr31Vs6ftxb1HDlyJC+88ILDA6wpCst2aJw0aHTq6rdBCxV2NNgxFwoKEHv27w9A7sGDAGxvCFmuGialGxmYlQ2Nby3uSGWnc8bQugM6vRmVm0fOvv2OOW7h4bUauhaMrqVcsCYr1bXeWuFtYLegK9wCvdyt71uTsJQYWDqh+H1SC0bWpCCuEEKIEpQ5WfvPf/6Ds7MzsbGxuLm52bYPHTqUpUuXOjS4msQ2X81VW9DE/SoLDAo1vwf0npAcDTHrAWurE6fAiyNza1toGBZ4J0OS46z7hndzWNyayB7WBAXI3urgW6HGbHpGegCw44S52s5by09JIS/6JABuzRqCXynLoLh4w11fAhrY9T0c+qvoPmkFI2uyElQIIUQJypysLV++nHfffZc6derYbW/YsCGnTp1yWGA1ja17ga0vaClugwIYPKwtqMDaLxTrcvFTraxFalPdwbfDcF7RF7R0atgHnK7cQL1MwrvhVjhvbbMDFxmkn4dP2zJ40z24k8Pes2m08G8LVL95a4W3QPVeJpza31W2F4d3hc6jrV8X191AboMKIYS4ijIna1lZWXYjaoWSk5MxGByYJNQwtsUFzgXzvkqbrMHFW6GH/4JMaxPwr+qncioQlt3SjI9vfxkOWxu302iQo0K2CmmFex1rscecXTux5OVV/JgWC/z+LGScxyntFJO9l6AUuFqsCWh1m7eWs9la0856C7QU89Uud8tEa5Hj7Avwx3O2unnAxQUGchtU3IDS8tL4dNennEg9UdWhCFGtlTlZ69atG999953t7xqNBovFwnvvvUevXr3KdKz169dz++23ExoaikajYVFBf8tCSikmT55MSEgIrq6u9OnTh2PHii80Wt0VbeJeyjlrAMHNoc5NYMmHXT9wIuUch3yP8tLjTnR6fApciIakI6B1goZ9HRu4Voe+VWd0LmaU0UTO7j0VP+a2WRC92hovcK/xd8I150mIt5auqG7z1rI2WevYuTUIgoAGZT+AkwHuKehucGy5Xc9XmbMmblRKKSZsmMDMvTOZumVqVYcjRLVW5mTtvffeY+bMmQwcOBCj0cjLL79M8+bNWb9+Pe+++26ZjpWVlUWrVq2YMWNGie/1ySef8OWXX7Jlyxbc3d3p378/ubm5ZQ27ytm1mtLprfOZyqL9Y9Y/d8zl439/QKNROBvr0y+qORxebH0uvCu4+jgu6AKayO64B1lH1LLL0HqqWAmHYcVk69f9p0GDPuhUPhOdfmBrdD5hXmHVat6aOSODvBjrrUu3XreV/0BBTaDP69avl0+EpOOQmw65adZtchtU3GAWHF3AhrMbAOtoenJuchVHJET1VeZkrXnz5hw9epSuXbsyePBgsrKyuPvuu9m1axf169cv07EGDhzIW2+9xV13FZ0HpJRi+vTpTJw4kcGDB9OyZUu+++47zp07V2QE7lJ5eXmkp6fbPaqDi62mlPUWaFlLazS7C1y8saSeYmvc7wDcHDQQjUYDRyrpFmihS/uE/ru5/MfJN1rLWOTnQv3e0OEJ6D8NpXWij24XTTK3EOXVGqg+89ayN1sXdTh75OPc+YGKHazj0xDRA0zZ1vOQYl20gKuvdW6iEGV0POU43x74lpz8nKoOpUxi0mL4YPsHABh0BizKwupYqdMpREnKVWfN29ub1157jV9++YUlS5bw1ltvERIS4tDATp48SVxcHH369LF7344dO7J5c8kJw7Rp0/D29rY96tatHiMWF7sXmMt2C7SQsyu0eoBtLgYytekos4FRHe6GrCQ4XTDa1WigAyO+RGAT3MNcAcjZu9euiXyZrJ0GcXutycngGdaENTAKTcenAZjk9D1OudaVltVl3lrOyoUAuNVzhcBy9Fi9lK27gTec2wmLC0rdyKiaKAeTxcTYNWP5YPsHjF8/HrOl7P17q4LJYmLChgnk5OfQMaQjT7Z8EoAVp1ZUcWRCVF9lTtbmzJnDggULimxfsGAB3377rUOCAoiLiwOgVq1adttr1aple644EyZMIC0tzfY4ffq0w2KqCPtWU2VYXHCpdo+y0NM6AhOQ35JmIYHWPpTKAsEtK6/8g1aLc4uuOLnlQ76Z7J3luEV5ajNsnG79+vaPweuS5L7Hy+Q4+1Ffe576x3YD1WfeWtaO3QC43XSTYw7oXftid4MzBQmpzFcT5bDo+CJiM6xzHlefXs172967LoqTz9w7k/0X9uOp9+StLm/RL8zaQm/L+S2k5qZWbXBCVFNlTtamTZtGQEDRkaGgoCCmTq36SaIGgwEvLy+7R3VQWBS31K2mipHmHcIKd3cARhmsKzRtq0AbV9It0AKayO641ypnn9DcdPjtSWtS2fqhoh0AXLxJ6/IqAA+mLKCee51qMW/NkhxH7rksANxvfdhxB25+D7S47+Lfy5mspeWl8evRX6tFUiuurdz8XL7c8yUAPev2BGDe4Xl8f/D7Kozq6nYn7GbW3lkATL55MsHuwYR7hxPlG4VZmVlzek0VRyhE9VTmZC02NpaIiKJFQcPCwoiNjXVIUADBwcEAxMfb16WKj4+3PXc9yS+cs1aaJu4lmHdgESYNROUZuStpvbWFUXTBPI9GDupaUJKIHrgFFfYJLWOytnS8ddWjTz0Y8E6xu9Tq/hgHNfXx1OTQIsv6PlU9by17yVxQGpw8NDi37OHYg9/6PngV1Cr0iyzXIT7d9Smvb36dx5c9LgnbDebnIz+TkJ1AsHswH/T4gBfbvwjAB9s/YHnM8iqOrnjZpmxe/edVzMrMoMhBDIgYYHuub5h1FbvcChWieGVO1oKCgti7d2+R7Xv27MHf398hQQFEREQQHBzMqlWrbNvS09PZsmULnTp1ctj7XAtKKfuiuKXtXnDZMX4+/D8Abs3MxynjLCx7DfJzwLseBLdwZMhF+TfAPdIHgNwDBzBnlNDr8nIHf7f2NdVo4a6Z4FL8SKdGq2N1hHUOV/eEQ0DVz1vLXr8MAPemYY7ptXopVx94eCH0eAVa3V/ml5ssJpbFWOM7lHyIUStHkW0q51xCcV3JNGby9b6vAWjqcg+3Tt9MO5/BPND4ARTWchi7E3ZXbZDFeG/be5zOOE2wezCvdnzV7rnCW6Gbz2+WXzyEKEaZk7UHHniAMWPGsGbNGsxmM2azmdWrVzN27Fjuv79sP3QyMzPZvXs3u3fvBqyLCnbv3k1sbCwajYbnn3+et956iz/++IN9+/bxyCOPEBoayp133lnWsKuUJTMT8vMB0OnLdxv0YPJBLphiUBYnWvpbv7Gxs2COYCMHNW6/Eo0G5+bdcPbIB4uyVfW/ovTz8OdY69ddnoewi0m2UtZjFPY3BQhr1YtfzV1pn2sdWavSeWvGLLIPW+c7unbvVznvEdgIer0KBs8yv3Tb+W2k5qXipffCU+/J7sTdjFk9hjyzA4oWi2rt+4Pfk5qXSohbXf7aVJvoxCxGzdvFsy3G0bNuT4wWI6NXjyYmLaaqQ7VZE7uGX4/9igYNU7tOxUtv/0tbpE8k9b3rk2/JZ93pdVUUpRDVV5mTtTfffJOOHTvSu3dvXF1dcXV1pV+/ftxyyy1lnrO2fft22rRpQ5s2bQAYN24cbdq0YfJkax2ul19+mdGjR/Pkk09y0003kZmZydKlS3FxcSlr2FWqcHGBxrmgDmw5krU5e362HiuzOVG3jLF/0lGN268mojvuBa2nsv+9Sr01peD3UZCTAiGtoOfFRuZ5x45xeuTjnBr2MCeH3k/2zp0AdG0QwHv5D+Ce70SYyVSl89YsB5aQm2Qt2uve+84qieFKlsZY+/AOCB/Al32+xM3JjS1xWxi3dhwms6mKoxOVJSU3hW8PWn9JU8n9MVus38JPXcjmtUUHebfbu7QIaEFqXirPrHyGCzkXqjJcAJJyknh98+sAjGg2gpuCi1+s0zfceit0+anqeRtXiKpUpmRNKUVcXBxz587lyJEj/PjjjyxcuJDo6Ghmz56NXq8v05v37NkTpVSRx9y5cwFrd4T//ve/xMXFkZuby8qVK4mKiirTe1QHtlZThoKVWmWcs5aTn8PqM9ZbXs08++BdtwlEdLc+6eINYV0cFusVRXSzJWtZ/2668r5bZ0H0KnBygbtngZOe/JQU4v77X04MvpOsTQWvN5k4M2Ysprg4fN31BNeJ4LP8u2ifUzBv7ezGyvxEJcpZMR9l0aDzcsE5PLxKYiiJyWxiZexKAAZEDKBlYEs+6/0ZLjoX1p9Zz/gN48m35FdxlJUvNj2WJ5Y/wUvrXiI23XHzZauz2ftnk2XKopYhkmMnI3HX6/jiobY4aTUs3nueX3ck8uktn1LbozZnMs8wZvWYKq3BppRiyqYpJOcm08i3Ec+1ea7EfQvnrW06u4lMY+a1ClGI60KZk7UGDRpw5swZGjZsyJAhQ7jtttsICwurrPhqBFv3An3BD1CPss1ZWx6zHJPKxmL046FWt1g3dh4DaKDl/aBzdmC0V+AbjlsD66hg3pFjts9VROIRWDHJ+nXf/6K8I0j+9lui+w8gZd5PYLHg2bcvEb8vwhAVhTkpiTOjx2DJy6N7wwC+MQ+kscla123bib+vxSezZ8ohe4d1tM+9bWtr4eFqZPP5zWQYMwhwDaBtUFsAbgq+iem9puOkdWL5qeVM2TQFi7JUcaSVZ8WpFdz31338e/5flsYsZfDvg/lw+4dkGEs5lxLr97M9p1M5Gl/611Sl+Kx4fjr8EwAJsbcAWl7o14iBLUIYP7AxAG/+eZDzyU580ecLvA3e7E3aW6U12BYcXcD6M+vRa/VM6zYNva7kX+gb+jQk3Csco8XI+jPrr2GUQlR/ZUrWtFotDRs25MKFqh9av55c7F5Q8A3TrWwja98fsNa1Uxkd6Ne0oD5Zw74w7hD0f9tRYZaKU9MeGLytt9mytxazAOCSLgUqshcZ2VGcuGMw8dPewZKejqFxY+rNnUudTz/BpVEj6nw+A523N7n79hE35XW6NwzAiDNrsu8G4LAxhfQ4B/QjLYvjq8iOsyZort0c3GvVAQoXFvQN64tOq7Nt71K7Cx90/wCdRscf0X8wdcvU66LuVlmYzCbe3fou49aOI8uURdugtnSp3YV8Sz5zDszhtt9uY8HRBVdMThLSc/libTS9P1zH4BkbGfjxBr5cF43FUr3P1Vd7vyLPnIePNor05Po0C/XikU7WX5RHdo2gT5MgjGYLo+btJMBQh096fYJeq2f16dW8v/39ax7vpV0KxrYdS0PfhlfcX6PRyKpQIUpQ5jlr77zzDi+99BL79++vjHhqJLuCuC7e4FT628UxaTEcSd2DUhq6BQ/A3eB08UmvkGs3qlYooruthEexfULXvQPn95CX68fpVZ6ceeZZjDEx6Pz9CX7zv0T8+j/cb+5o211fpw61p38EOh1pixYRvu4vPA1OLMu8mbrKCYtGw66VrxZ9n0qk9v5GTpL1vLp3cFAxXAfJM+fZ2vIMCB9Q5PneYb15q+tbaNDw85Gf+WjHRzUmYYvLimPEshH8cOgHAB5t9ihf9/+aL/t8yee9PyfCO4Lk3GT+u/m/3PfXfWw9v9X2WmO+haX7zzNy7jY6vbOad5ce5kRiFs46DWaL4p2/D/Pk99tJy66e8/1i02P57dhvAJw70QuNRsPbd7XASWf9Fq7RaPhgSCtq+7hy6kI2Exbuo01QG97uZv1l7sdDP17TGmyXdykY1nRYsfvtP5vGk99t559jScDFW6Ebzm6Q1c1CXKLMydojjzzC1q1badWqFa6urvj5+dk9RFEV6V6wsOAbtDmzEUNaN3d4bGUW0e1in9DNl81bO7WZ/FXTidvuzYk/3Mjash2NszP+j4+k/rKl+A4ZgkanK3JI906dqPXySwAkvf8+Q3VxgAY/l/YAbEveD8dWVurHssnPI+ffFSizFp2XB/oy9rutbJvObiLTlEmQWxCtg1oXu89tkbcxuZN1kc6cA3P4cu+X1zDCyvHP2X8Y8ucQ9ibuxVPvySe9PmFc+3E4a61Jdbc63fj1jl8Z32E8XnovjqYcZeTykTz29yheXrSam6et4ukfdrLqcAJmi6J9mC/v3tOCXZP7MfWuFuidtKw8lMCgTzew90xq1X7YYszYPYN8lY/e2BRzTgTDOobRuq6P3T4+bno+fbANTloNf+09z49bYhkQPoAX2llL4ry/7f1rNmJ1eZcCraboj5ptMck8MPNflh+MZ8z8XaRlm2js15g6HnXIM+fZmrwLIcDp6rvYmz59eiWEUbMVdi8oa9kOk8XEr0etyZpzzs10jypnmypH8grFvVFt+Ccb48kY8hMTcQoMRGUkk/LG4yRuC8Ri0gLWeWlBL72Ivt7VK/T7PvIIuQcPkvb7Hwz+43P+7DSKhIxmoP+XbS4Ga2HdiE1lGpUsl+g1ZJ+z3kJzvakjGm252udWmsJVoP3C+hX7A7DQvVH3kpOfw3vb3uPz3Z/j5uTG8GbDr1WYDmO2mPlizxfM3DsThaKpf1P+r8f/UcezTpF9nbXOPNTkIboF92PS+g/ZmbKEbQnrUWojJvcuBOoGcG/bhtzbrg71Az1sr3uwYz1a1vHm2R93Epuczb1fbGbSbU0YdnNYtZiveCT5CH+ftM7dTDnbmwAPAy/2L75Pbdt6vowf2Ji3Fh/iv38dpHVdH4Y3G87ZzLPMPzKfCRsmEOgaWGKi7wh7EvfYuhRMunkSwe5Fi5j/cyyJJ77bTo7JjEYDyVlGpq86ypTbm9E3vC9z9s9hxakV9A/vX2lxCnE9KXOyNnz49fcNv6rlp5Sv1dSGMxtIN6Vgyffgtshe6J2qR+Kga9IDg+8f5KXoyfp3C1pPDxImvYAx0QJoMUQ1pNarr9nd7rwajUZD8BtvkBd9gtz9+5m8ZS4vew5H2wgO6/Wkxx3Ha+tM6FzyajKHOPg72QnWhLC63QLNzc9l7em1AHbV30vycNOHycnP4dNdn/LB9g9wdXLlvkb3XfV11UVSThLjN4xny3nr7fahjYby0k0vYdAZiuxrtig2RSfxy/YzLDsQhzG/K1p9Q1yCF6NzP4refz2uhn1ERo4m3L/o3Knmtb35c3RXXlqwh+UH45n0+wG2xqQw7e4WeBjK/G3SoT7b/RkKhTmjJZbc2ky6vwneriVPfxjZNYJ/T1xg5aEEnpu3kz9Hd2V8h/HEZcWx9sxaRq8ezQ+3/kCYl+MXhmWbspmwYYKtS8HAiIFF9ll5MJ5nf9yJ0Wyhe1QgwzrW48nvd/Dd5lM82KEe/cL6MWf/HNafWU9Ofg6uTq4Oj1OI6025fvpHR0czceJEHnjgARISEgD4+++/OXDggEODqynMdq2mSp+s/e/orwDkp7XlztbVaMVteDfcg6y3QuPefJMzTz+DMTEbncFM8NhHiPjttzIlaoW0Li7U+fQTdP7+RKafZ8y/SwjQh1rnrRkMsO5dyExw9Ke5KN+IOrSYnERrsubavn3lvVc5/HP2H7LzswlxD6FlQMtSveaJFk8wsvlIAN769y3+jP6zMkN0mB3xO7jvz/vYcn4Lrk6uvNPtHSbePLFIohaTlMWHy4/Q7d3VPPzNVv7ccw5jvoXGwZ5M7NeLf4b/xIzeMwj3CiclL6XY+WyFvF2d+erhdkwc1AQnrYY/95zjjs/+4Uhc1a0W3Z2w25qgKw05CX3p2iCAO1qFXvE1l85fiymYv6bVaHm3+7s0929uq8GWnJvs8Hiv1KUA4M8953j6hx0YzRb6N6vFrEfa0a9ZMH2b1sJsUbzx50Ga+jUlxD2EnPwcNp29SokgIW4QZU7W1q1bR4sWLdiyZQsLFy4kM9NaD2fPnj1MmTLF4QHWBPatpkqXrMVnxfPP2X8A8MrvQoeIajQfMLwbbgX11izp6Wi0Cv/GGdR/6158n5lQ7Ly00nIOCaHOJx9j1unofm4vt22wJk7bAupBXjqsesMhH6FYJ9eTG5eNJV+L1sMDl8aNK++9yqHwFmj/8P6lvj2n0WgY23YsDzZ+EIVi4saJ1XqlnVKK2ftnM3LZSBJzEqnvXZ/5g+YzKHIQALkmM+uOJvLGnwe45YO19PxgLZ+sPs65tFy8XZ15pFMYf43uyt9ju/FY1wj83PV0r9OdhYMX8spNr+Cp97TNZxu7emyR+mwajYbHu0Uy/8mbCfZy4URiFoNn/MOvO85Uybn4ZNcnABjT2uFsqcWbdzYv1b99cfPX3Jzd+LS3tQbb6YzTjF412qE12K7WpeCXbacZM38X+RbFna1DmfFgWwxO1u8VEwc1Qa/T8s/xJFYcSrAtNJACuUJYlXl8f/z48bz11luMGzcOT8+LbXJuueUWPvvsM4cGV1PYLzAoXdmOP6L/QGEhPzucwU1bo9NW/dwZG49A3JtH4nkyDo3eQGDjRPQNm8HA1x1yeLd27Uh/fCy+X33IgNXH2eOvZVubWnD6KOz6EdqPhNptHfJedg4uIrtwVK1d2wolnY6Wbcq21Z4qXAUanZjJZ6uPk5d/9RpaSvWhluY08WoDL6x9iabaMfhpW6HVaGhZx5uejYJoGORRpXO00vLSmLhxou1W722RtzHp5kkkpcN3m2NYcziBzScukGu6WD/OSauhU31/7mtfl75Na+HiXPy/mbPWmWFNh3Fb5G18vudzfjnyC6tPr2b92fV0rd3VtlDhUu07WNh9OpWkTCOvbYIvD7nSLNQL7WX/FyO8I3iy5ZPF3p6tiH/P/8u2uG2gdBgT+zC2Z30iAtxL/fq29Xx5ZUBj3l5ycf5a89oBfNHnCx7++2H2Ju1lwoYJ/F+P/7MrAVMel3YpGN5seJEuBXM3nuT1P62t5R7oUI+372xudx7D/N15onsEM9ZE89big/zfsN58d/A71p1ZR545z+HnVojrTZmTtX379jFv3rwi24OCgkhKSnJIUDWJsljKPLJmURZ+LVgFakq9iTtuv/Jtj6qgbdiDOl0KVhle0qXAUVo9+ygzl29iwMl/GfOHhYl+saS3uAevfb/C36/AY8vAkZP/zSY4/NfF+Wo3Va/5auvPWufv1PGoQ1P/piilGP/rXrbFlFCYuFgDcQlNx9l7D/vzPyXn9KOYs+vz197zTF1ymNo+rvRoFEjPqEC6NAiwLxNTyQ5cOMALa1/gbOZZ9Fo9d4c/hynlJm77eCsnkrLs9g32cqFno0B6NrLG6elS+vI1Pi4+vNrxVe6Luo/3t7/PpnObbMlhsbTgXDBAFGeGuNPF77bl/BY+ueUT/FwcMwKulOKTnQWjaik3E+5Tm6d7lH1l8uPdIthy0n7+WoR3BJ/0+oQnlj/BqthVvL/9fca2HVvuuWGXdimI8o1idJvRds/PWHOc95cdscbTNYLXBjUp9peCZ3s24H87znA6OYcth2oT5BZEQnYCm89tpmfdnuWK7Vowmo1oNJpiE34hHKXM3419fHw4f/48ERERdtt37dpF7dq1HRZYTWFJTweLdSTASW8pVfeC7XHbOZt5GmU2UMe5Iy1qe1d2mGUX3g22FCRrfd6AIMfeMnQ3OLHtjseo+30czZJjeOF/JnZ/1pfuh5fCma2w7xdodb/j3jDmH1R2CjlJ1qLDbtVsvtqyk9ZCuIW3QNccSWBbTAoGJy3jBzbGqZQjr2bVhN/PvcPxrC14h3/PHbVe5+TZQDafuMDZ1BzmbYll3pZYnHUabgr3o1ejIHo2CqRBJY26KaX45cgvvLPtXfItJgwqkMxTDzDrQBBwCrCOnrUL86VnQSyNgz0rHEsD3wZ82edLtsdvJzo1+qr7H0/I5H87zpBlzMfFSctdbWrTNNSbPHMeX+39ij2Je3ho8UPM6DODSO/ICsUGsDp2Nfsv7EdZ9BiTevLmiOYljhpeSeH8tUGf/GObv/bpA21oW6stb3d7m5fWvcSPh37kx0M/4uHsQYBrQLGPQNdA/F39CXANwNfF124lcmGXAmets12XAqUUHyw/wow11vM7pndD/tOnYYn/du4GJyYMbMLzP+/m87UnubdfLxad+JkVp1ZU22Rty/ktvLjuRXwMPswZMIcA17IVPBeitMqcrN1///288sorLFiwAI1Gg8ViYePGjbz44os88sgjlRHjda1wJajWWaHRUaqRtYXHFwJgSm/N4FYR1aJ8QBH1e0Hdm8G/PnR4slLeokvjEN7u8AgzNr5LnQt5xL83F/X0ODRr3oQVU6DxIDB4Xv1ApXHwd/LSnDDnadC4uuLSrJljjusAWaYsW82pAREDsFgUHxSMVAzvHM6jXSKu9PIiHjDPYPSq0Ww+v5nlF96mX+N+hEVBfEYu51JzOZeaQ2ZePjuyYMdO+GAnuOudCPFxIdTHlWAvF5x0ZbsmlUWRm28hx2gmN99MjtFMjsnMhdx4Es17ATBlNCXj3BCwuFLLy2BLFDs3CMCrDKNnpaXRaLgp+KYSG4vbaQyPt8rluXk72X4qhe+Ww2NdIhg/sDHd6nRj1MpRnMk8w7Alw5jeczodQjqUOy6zxcwnuz4FwJjchTtaNKJrw/InAT5uej55oA1Dv9rMX3vPc3OkP8NuDmNA+ADSctP4aOdHZJmyyDRlkmnKJCY95orH02l0+Lv4E+BmTeS2xVk7mYxtO5YoX2vvZqWsiwXmbrIea8LAxjxVipHBwa1D+f7fU+w4lULs6QaAdS6cyWzC+VoXAL+K3479xn83/5d8lU9qXirPrnyWuQPm4ubsVtWhiRpIo8pY3txoNDJq1Cjmzp2L2WzGyckJs9nMgw8+yNy5c9FVo3k+AOnp6Xh7e5OWloaXl9fVX+Bg2Tt3cerBB3F2z6fB7QnwSgy4+pa4f1peGr1+uQWTxUjWyVGsGDXMribUjWT/2TRu+/QfWppX8+aSJejNEPDUEwRqv4OUk9D1P9Dn9Yq/kcUMH0SRvCeb+B0+uHfuRL3Zsyt+XAdZfGIx4zeMJ9wrnD/u/IPF+87z3LxdeBic2PByL3zdy377OduUzTMrn2Fnws5KiLhslNJiShxIK6876NWolsNGzyqDyWzh/WVHmLn+BABt6/nw2YNtcXHJYezqsexO3I2TxokpnadwZ4M7y/Uef0T/wWv/vIYyu6I58yqr/jOAIE+XCsc+a/0J3l5yCL2Tlt+e7UyzUOuIvVKKTFMmSTlJdo/EnEQu5FwgMTuRpNwkLuRcKHEFacfgjszsNxOtRovZonh14T5+3m69Z/zm4GY83Cm81HHuP5vG7Z/9g1IW6rT6gDRjMp/3/pxudbpV+Bw4gkVZ+HTXp3y972sAetfrzc74naTkpdC9Tnc+7vUxTtqqLfdSU1T1z+/qpMxXlF6vZ9asWUyePJl9+/aRmZlJmzZtaNjwyn3fblS2grgGC2idwMXnivsvObkEk8WIOTeYJv5Nb9hEDaBpiBf+7nr25bVj5sClPPeXhaSvZmF4ZTheKdNg8wxo87B1dK8iTm2C7CSyL1hvUbtVs/lqtkK44f0wWxQfLj8KwBPdIsuVqAG4ObvxRZ8v+DP6T1LzUq+4r8msOJ2SxcmkLE4mZZOWbSzXe2o04KZ3wt3ghLteZ/3T4ESPOt257/6bK2X0zNGcdVpevbUJ7cN8eWHBHnbGpjJg+nr+0zeKL/rM5I3Nk1kas5RJGycRmx7Lc22eu2Lx4suZzCY+3TkDAOOFHkzq18YhiRpcPn9tF3881wVPF2c0Gg2eek889Z5EeF95lNZkMZGck2yX1GWZsrij/h1oNVpMZgvjftnDn3vOodXAe/e24t52RQsYX0nz2t4MbV+X+dtOY85oAYZ1rDi1oloka7n5uUzcONHWn/fJlk8yqvUo9ibu5fHlj7P+zHqmbZnGxJsnVstfNsT1q9TJmsVi4f333+ePP/7AaDTSu3dvpkyZgqurFCy8kiKtpq7yH3jhsYJboKk3MbjTjT0HUKvV0K1hAIt2G9nVujaL488waJvi3Ke/oH+oCy4ZG2HxC9bFDR4V6O5w8HeUguwkN8BYrearpRvT2Xh2I2BdBbpw51lOJGXh565nZLey3f68nJuzG0MbDy3Ta5RSnEjKYu2RRNYeSWDLyWT0Oi2BnoaLDw8DQV6Ff7oQ6GHd7ueur16rmiugX7NgFgd7MWreTvadTeONPw/yw7+neHXQC9T1rMusfbOYtW8WpzNO81bXt0q9mvHXY78Sl30OS74njdxu5cEOV+/+UVqXzl87mZRlm79WlqTCWetMLfda1HKvVeS5XJOZ5+btYuWheJy0Gj55oA23tggpV6wv9m/E4n3nSYiLwi1sHatPr2aSZVKVTuK/kHOBMWvGsDdxL05aJ17v9DqDGwwGoHVQa97p9g7j1o7jl6O/UNuzNo81f6zKYhU1T6mTtbfffpvXX3+dPn364Orqyscff0xCQgKzq9HtourIXIbuBQcvHORw8mGUxYn89DbcfpXilzeCbg0DWbT7HCqnPt/fco6OWUEEHDzPmcXZRHRyRndiDXzYGKIGQJth0KAv6MowYGyxwKE/MGboMGca0ej1uLQsXcHZa2Ht6bWYLCbqe9enrkckw1euBeDZnvWrpLK+RqOhfqAH9QM9GNk1AqXUDTuCUM/fjd+e7cz8baf5cMVRohOzGDl3Bz0b3czoVkF8sf9dlsYs5XzW+VKtFM02ZfPpzi8AMCXdwjsPt3V4cnv5/LVO9f15qGPFC25nG/N56vsdbDiWhN5Jy5fD2nJL46IJXWkFeBh4vk8Ub/5lBLMHaXlpbIvbRufQzhWOtTxOpJ7g2VXPcjbzLJ56Tz7u9XGRuY59wvrw8k0v8+62d/lox0eEuIcU28FBiPIo9fj8d999x+eff86yZctYtGgRf/75Jz/++CMWi+XqL76B5ZehiXvhqFp+RjNuqleHEG8ZtewWZZ1YnZRUB4tWw+yhvjjXro3pXDxno7ugQtqCJR8O/wU/3Q8fNoHlkyDxSOne4PQWyIwnO8UHANeWLdEaqk9Np6UnLxbCnbcllnNpuYR4uzDs5urR0eJGTdQKOem0DLs5jDUv9uSJbhE46zSsPZLIu//zopP7BDycPW0rRU+knbjisb4/OI90UzIWox8PNr3PNqfM0dqFWeuvAbzx50EOnEur0PHSc00Mn72VDceScNPrmPvoTRVK1Ao90imMBkFeGNOti32qqpjzlvNbGLZkGGczz1LHow4/3PoDNwXfhFKKv/ae45YP1nL35xs5dSGLYU2HMazJMABe++c1tsdtr5KYRc1T6l/NY2NjufXWW21/79OnDxqNhnPnzlGnTtnmJNxIbK2mrtLEPSc/hyUnlgAFt0D7y6gaQJCnC01CvDicaL3ltzPvOL7TvyHxkSfJ2n2UhNYjCHpmBprdP8Ke+ZCVAJs+sT7q3GQdbWt2N7iUMDn14O8AZOfUBRJwq0b9QNPy0th8bjMA3Wv34ZEvjwPWEgjlKeMgKo+3qzOvDWrKgx3DeHvxIVYeimfJNne8vJ7BO+zbq64UTTemM3PPNwC4ZA7kxX5NKzXeS+evjfpxJ/dX4Hbr4r3n2Xc2DU8XJ+Y+2oF2YSUvoCoLZ52WKbc3ZcRPzdH7bmF5zEpe6/jaNZ28f+mKz9aBrfn4lo/xc/Fj35k0/vvXAbs6h7d9+g/v39uKF9u/SFxWHCtjVzJmzRh+GPgDkT4VL+cibmylvurz8/NxcbGf6Ors7IzJZHJ4UDWJfUHckpffrzy1kgxTBhajH5rc+tzavHxzPWqi7g0DOHQ+HTdNMNkqjv0+WbSZ+jZn/zOO5LlzyU9KIuSN19H2eR2OLYddP8DRZXBmm/Xx93hoOhjaPARhXS8W0y24BaoUZJ+xTpqvTvPVVseuJl/lE+Ubxeq9cCHLSLi/W5knbItrJyLAna+Ht+efY0m8+ddBjsRDxsEn8In4kQxO8tSKp4pdKTp96yyMKhNzXhBv9hlW6be4L6+/9s7fhyt0PD93Pd891oHmDq4J2a1hID3Dbubf/J9IJ5Ud8TvoGFL2vsNlZVEWPtv1GbP2zQJgYPhA3uz6JqlZihf/3MOvO8+gFLg4a3miWySboi+w41QKT/+wg8e7RvDfvm+TkJPA3sS9PLvqWX649QepwSYqpNTfEZRSjBgxAsMlt4hyc3N5+umncXe/2AJl4cKFjo3wOme3wOAKBXEvLixoR/eoWuVe5VcTdY8K5Kv1J8jLCAePOLbFbaPHwBfJT7pA/DvvkP7XX+QeOkSdj6djaDzIWn8tIx72/mxN3JKOwN751odPmHW0rdUDkBEH6WcxmTzJT0oFJydcW7eu4k97UeEq0B61+zDzD+sttHH9GuGsc2DnBlEpujYMYPGYrrb5bMnRj+ESsgC89xZZKZqUncSvx38CDTTSD2Fg82uzsMjHTc/3IzswZ2MMOaartywribtex/DO4URW0sr1Kbe1ZMCPzcB7G7N3/V7pyVpufi6TNk6y/f97suWTjGz2NF+vP8WMNcfJNlrP1V1tavPygEaEeLsyxmzhvaWHmbXhJF//c5Jdp1N56573efGfJ4jNiGXUqlHM6T9HarCJcit1sjZ8+PAi24YNG+bQYGqi0iwwOJV+iu3x20FpMKW1Z3BfuQV6qfbhvrg668hMC8fV41+2xVuLcPo9PAyXZk05+59xGKOjOTnkPkLeeB3vO+4Az1rQZQx0Hg1nd8Cu72H/Qkg9BWvehjVTwdM6eplNG+A4rs2aoXWrHt9MU3JT2HJ+CwDx5xqTkZdN42BPbivn6jpx7RXOZ7u9VSifrT7G3E0PYDH5YwhYw6x9s4hOPcV7PaYyYfV0LJo8LLl1+fjeh6/pPMDIQA/evLP5NXu/8qjn70a/8L6sStnG5rh1ZOUZcTdUzi+zybnJjFk9hj2Je3DSOjHl5ik45XSg74cbOJtqbXrfpp4Pk29rSpt6F2/3Ouu0vDaoKe3D/XhxwR52nErhoa+yePWOt/nk0BgOXjjIy+tfZnqv6VKDTZRLqa+aOXPmVGYcNVaR0h3F+K2gD2h+VhQGjS99mlR8cm5NYnDScXOkH2ujrfPWDicfJt2YjpfeC7e2bYn4bSHnXnyJrE2bOPfyK2Rv30Gt1161LhTQaKBOe+uj/zQ49Kc1cYvZABnnAMhO8wHA7abqcwt0ZexKzMpMQ5/G/Lo1F4CX+jcq0kRcVH/289mCWXvOH5eQhaw+vZxBC04Sn3sCNDC43kjq+Ze+UfuN5PU+d7Lq549QunSmrv6btwcOdvh7nEg7YetE4an3ZEyzt/lxlYFtMbsACPF2YfzAxtzRKrTEhLp/s2AaB3vy7I87OXAunZfmn2Vo15dZmf86686s452t7/Bax9du+IU5ouzkfkolUvn5mNPTgZLnrOVb8vk92jrJ3ZR6E32bBl/TBtrXi24NA1H53uhVLSzKwq74XbbnnPz8qDtrJgGjRoFGQ+ovvxDzwAMYY2PtD6J3g1ZDYcRfMHYP9JwA3V4g+2g8UL2K4Rb2AnXObUOuyUK7MF9uaXz1vrKi+iqczzb33lEEZDyHMrsQn3cMNGb0piim9LmzqkOstnzcXGnj3wWARUeXcj4tx6HH33p+K8OWDONM5hlC3GvTSjuJCT9lsy0mBRdnLc/3acjqF3oyuHXtqyZaYf7u/PpMZx7sWA+lYP4GDSF5I9Gg4ecjPzPngAx8iLKTZK0SmdPToaCbV0mrQTec2UBSThKYPcjPsP7WJorqHmU9dznp1pIV2+Ptl8RrdDoCRz9H3Vmz0Pn6knfwECfvuZeMlSuLP6BvOPQcj6n5U5hOnwatFte2bSvzI5RaUk6S7VbvzoPWVXov9W8kv43XEF0bBrDy2ZE8Uf8jMPmjLE68dNM4DLLC94oea1Mwmua+l6mLDzrsuIuOL+KpFU+RYcyglr4RZ/Y/zt+7LCgFd7YOZc2LPXm+TxSu+tL/+7g465h6Vws+GtoKV2cd+47Vwyn1TgA+2vERf5/822HxixuDJGuVyGxr4m5Bo6XYZK1wYYExtS3erq70iKpAJf4arH6gO7V9XDFmWpfAFzaPvpxH1y5E/LYQ1zZtsGRkcOa50cS/+x6qhFXL2dusSZ9L48boPB3UFL6CVp5aiUVZ8NJEYsrzpVvDAG6O9K/qsIQDOem0jO3RlY3D/mbBoD+5v1WXqg6p2usc2hlXnRta53QWH9vCtpji+5SWlkVZ+GTnJ0zaOIl8lY9TThuO7x1Gdq4rrev6sPDZzky/v02F6l3e1aYOfzzXhQZBHiSf74gpuSsgNdhE2UmyVons5qsZvMHJvthqQnYCG85uAMCU2p5bWwSjd5J/kuJoNBq6RwVgzrbOWzuUfIgMY0ax+zoHBxP23bf4PfooAMlz5nBq+AhMcXFF9s3ebk36qtN8tcJVaInx1sKlL/dvXJXhiErk5eJKkyApxVIaep2eW8J6AeDsuY/X/ziA2aLKdazc/FyeXT7OVpojL6kXKTFDCPb0ZPrQ1ix8pjNt6zmmXlzDWp78PqoLg1uHkht/K6b05pgsJkavHsOJ1CsXShaikGQGlSjfbiVo0flqf0T/gVmZITcCizFI2ktdReG8NZ050DpvLWFXiftqnJ2p9crL1P70E7QeHuTs3MnJu+4mc+NGu/0KR9aqy3y1hOwEdsbvBMCU1pKBzYNpUadyKtkLcb3pG9YXAL33fg6cS+PnbadL/drMvHyWHYhj3P820nHOfWyMW4VSWnLO3Ys2dSDP92nE6hd7cGeb2g5fyONucGL60Na8dWdLLPEPYM6uR6Ypg8eXPW2dBiPEVchM9kp0pZWgSinbLdCc5HbU8jLQMUJudV1Jl/oBaDWQkx6O3jeRbXHb6F6n+xVf49W3Ly6NGnHm+efJO3iI048/QcCzzxLw7DOYU1MxRkcD4Nqu3bX4CFe14tQKFApzdhgasw8v9Iuq6pCEqDa6hHbB1cmVHFLRupzhg+UGBrUIwdutaIN3pRTHEjJZeySBtUcS2RaTjFkXj2vduWj1ySizK1GM4vbu3bm1RQi1vFyKeUfH0Wg0DLs5jFZ1fHj6J0h1+pBEzvPA70+w6O4fcNfLSmBRMhlZq0TmVGvPveJWgm6P387pjNPocCE/vSW3tQx1eNPmmsbbzZnWdX0wZ1953trl9PXqEf7TT/jcdx8oRdKMGZx+4gkyVlh7DRoaNsTJ1zG3PCqqsBeoKb0Fd7etQ4Og6jGPTojqwMXJhR51egAQFHyE5Cwj01cdtT1fOHo2YeE+uryzmn4frWfqksNsir6AxXAcj4gv0OqT8TeEsOCOeSx8bDiPdomo9ETtUi3qeLNk1EDa6l/Cku9OXN5xbvv5KTLysq9ZDJf6/fjvTNgwge1x21GqfLeVReWTkbVKdKXuBRvPWm/HmdKbg9IzuLXcAi2Nbg0D2bXOmqwVzlvz1F89odEaDIT89w3c2rXl/OtvkLVpM1mbrH03yztfLddkJtdkxsfNMQU647Li2J24G6U0kNWKsb0bOuS4QtQkfcP6sjRmKa4+B4DefLf5FJ4uzmyPSWZbTDIm88WEQ++k5eZIf4JC9rIycTZmZaZVYCs+ueUT/Fz8quwzeLs5890jt/LmCg2/nH2NJPYw4OeHWHTv1wS6XZs7LGaLmQ93fMh3B78D4K8Tf9EmqA2Pt3icbrW7yerzakZG1irRlW6DxmZYa4AZs4MJ93ejhYN76tVU3aOs89YwBVx13lpxvAcPJuKXn9FHXmysXJb5akop9pxOZeKifdz09kpa/3cFY37aZatuXhHLYqy11czZ4TzYrjl1/apHNwUhqpOutbvionMhKe88XZrkYbYoPll1jE3RFzCZFWH+bgzvFMacETexa1If2rf+l2UJH2NWZgaED+Drfl9XaaJWSKPRMLnfrYxu9g7K7Eq6Os6g/w3heEp0pb93timb/6z9jy1R61a7G85aZ3Yl7GLUqlEM+XMIS2OWYraUvw2ZcCwZWatEtlZTxdRYO5NxBgCLyY87Ol690KKwalXHGy8XJ/IyI9D7JpVq3trlDA0bErHgF+LfeQfjyRjcu1399Rcy8/ht11l+2R7LsZQYdIZzaD3PY/DK588DXVl2II6nukfydM/6uOnL99/ql0N/AaDJbsWoWxqU6xhC1HRuzm50q9ONFadW0KRhDFmZN+Pl6kzPqEB6NQ4iIsA69yvPnMekf17j7xhrTbMnWjxh68danTzVoT8GfHl/z0vk6BO5788H+bzPx9wcenOlvF9idiLPrX6OgxcOotfqebvr2wyIGEBidiLfHfyOn4/8zJGUI7y07iXCvMIY2Xwkt0XehrOu6LxAce1IslaJ8lMvHVm7OGdNKUVsunVkTRn9pRBuGTjptHRtGMDyU5Hgu40t57dgUZYyfwPWursT8uabV9wn25jLz3u28/uhrRxJPgKGs+i8z+PhZ7Tbz8VvO9nnB/HJajM/bz/NKwMac2frsq0oi00/Q2zWYZTSMLTJIII8r90cGiGuN33D+rLi1Ar+jV/Dn8+OK/LLbnJuMmNXj2V34m6cNE5M7jSZuxreVUXRXt2IDh3QqBm8u3M8uJ3iyRVP80bnKQ6P+UjyEZ5b/RxxWXH4Gnz55JZPaB3UGoBAt0BeaP8Cj7d4nHmH5vHj4R85lX6KyZsmM2P3DB5t/ih3N7wbV6fy150T5SfJWiUyp6QCRW+DpuSlkJWfhVIaGgeE0yDIo4oivD51axjI34cuzltr+31b/F38CXALIMC16CPQNRB/V38CXANK/EaTaczkcPJhjqQcYevZfeyM30+q6QxorLcBnC5Zf6DXGojybUhj/8YcTT7K3qS9uIT+iof/ARJi72TcL3l8uymGybc3pV1Y6W63fLz5fwBocuvzfK/qsTJViOqqe53u6LV6TqWf4ljqMaJ8L66avrzH50c9P6JjSMcqjLZ0hndsjsX8Ee9ufwNn7z1M3jSZ2IxYRrcZ7ZDRwH/O/sOL614ky5RFuFc4n/f+nLpedYvs523w5pnWzzC82XAWHF3Atwe+JT47nne2vsNXe77i4aYPM7TxULz0XhWOSZSeJGuVyH7O2sUFBqczrLWBVL4XPaJkVK2sCuet5ae3xMlrL2ZlJiEngYSchKu+1sPZwy6RMyszh5MP2/5N7GgAsytBhkg61m5Bp7otaeLXhHDvcJy01v86ZouZ7w5+x2e7PsNoOIxf1Cfkxg9iz5m23PPFZu5oFcorAxtT26fk30aN+RZWnV4GztA9tE+xZQiEEBe5O7vTpXYX1pxew4pTK2zJ2ra4bYxdM5YMYwa1PWrzee/PifSJvMrRqo9HOzfEaJrC/23/DEPAar7e9zWnM07zVpe3cHEq/2j7z4d/ZtrWaZiVmZuCb+Kjnh/hbbjyPGk3ZzeGNxvO/Y3v54/oP5i9bzZnMs/wya5PmL1/Nvc3vp9hTYbh7yolp64FSdYqiTKZsGRYK+xffhu0MDGwGP1s8ytE6dX2caV+oDvRZx9kRs93aB+pJyk3iQs5F0jMTiQpJ8nukZhj3ZZnziPTlEmmKZOY9Jgix7WYvLHkhqLyQmka0IQhzW/m7pbNr9izUafV8WjzR+lRpweTNk5ib9JetEELiAw5QsyRW/ljD1edz/bVpi2Ync+A0vJar/sceaqEqLH6hvW1JmsxKxjVehS/H/+d1ze/Tr4ln1aBrfi418fXZSLxVI+GZBtHMWO7Py4hC1kWs4y4rLhyrWC9fMXn4PqDmdJpSpnmnxl0BoZEDeGuBnexLGYZX+/7muOpx/l639d8f/B77ml4DyOajSDEI6RMsYmykWStkphTUwu+UugMWnDxsT13Or0gWTP5S7JWTt0aBhKdmMU/x1IZ1KIFtdxr2Z7LMZpJyMglMSOPxIw8EjLySEjP5XxGKuczE0jMSSQ5N5ksczIWpbDkBmPJCyXSL4j72tflrra1yzxnLNInku8GfmcbZUs07yWgUTQ+OfdwNLoJn6w+Xux8tlyTmdm7F4E3hLm1ItRTesMKURo96/bESetEdFo0kzZOYtHxRQD0D+9f4ZGoqvZ8n4bkmIbwzXYfXOt8z57EPTy4+MEyjRRmm7IZv2E8a06vAWB0m9E80eKJci9mc9I6MShyEAMjBrLu9Dpm7ZvFvqR9zDs8j1+O/MLz7Z5neLPh5Tq2uDpJ1ipJYaspnd6CxiMAtBfnHMSkXVxcEO4vyVp59IgKZO6mGJYdiCM910RiRh5JBYlZZl7+FV6pA4ILHuBhcOL2ViHc264ubev5VGhVbnGjbDn672jXsT3nj9/OuQsw7pc9fLv5FJNva0q7MF++3RRDnmEnOuDhlneU+72FuNF46j3pHNqZ9WfW2xK16rris6w0Gg0TBjYmKy+febu8cKs7h7OZZxm2ZBgf9br6HLzLV3y+1fUtBkYMdEhsWo2WXvV60bNuT9bGbuKTHV9xPGMXXtqi89+E40iyVkkKR9ast0CD7Z6LTj0FgLMlkAAPxxRUvdF0jPTD4KQlOcvI4r3nizzv4qwlyNOFQE8DQZ6Gy/60bg/0NODvrsdJ59hv7JePsh1N34577cPc3mQ4q7eGsed0Kvd8sYnbW4Wy/uR+dLXj0KJjQERfh8YhRE3XL6wf68+svy5WfJaVRqPhzcHNyTGZ+W3Ps7jV/Z4MTvH0iqev+FmPphxl1KpRthWfH9/yMW2C2jgkJqUUR+OtLbzWHElge0wa+ZahaA3dSI4Md8h7iOJJslZJ7FaCetjf2jqbab0NGupeR+qrlZOb3okvH27H1pPJBHoYbMlXYULmYXCq0nNb3Cjb2gsz6Ni5E+7p9/PXrhz+3HMOfcBODEDn0M5XnfArhLA3KHIQF3Iv0Daora0ERU2i1Wp4756W5JrMLNn/OO61/0e+Z8krRUu74rMsMvPy+edYEuuOWnusnk/LtXs+IsCdHlGdaR9e9YWGazJJ1ipJSd0LskxZZOanAhDpG1YVodUYvRoF0atR0NV3rEKFo2zfHvyWGbtmsC1+Mx7O+xh313Os3xXBQc0+AAZGDqjiSIW4/jhpnXis+WNVHUalctJpmT60DTlGM2uODMWjVgAav1VFVor+cuQXpm6ZWqYVn8W5dPRs7ZFEtp+yb+FlcNLSub4/PRsF0bNRIGEyleeakGStkphTi0/WbCtB891pGCyTyW8EOq2Ox5o/Rs86PZm4cSL7kvYx89A7tKnXBm1CPM5aZ3rV7VXVYQohqim9k5YvhrXjsbnb2BTdF09zALqgX20rRZsHNOfHQz8CcEf9O3i90+tlWvF56ejZuiOJnCt29CyQno0CuTnSH5crrJAXlUOStUpiazVVQtkOZfIjXFaC3lAuncs2Y9cMW1/TLrW7lKoZvRDixuXirGPWI+15+Jst7Ixtg6/FH/fa1pWiexL3APBc6+d4suWTV5wCkm3M53BcBgfOpXPwXBoHzqVz6Hx6kdGzTvX96RkVSM9GQfKzqhqQZK2SXLoatLiCuBajP+H+0qj7RlN426ZnnZ5M2jiJ/Rf280CjB6o6LCHEdcDd4MScRzvw4Kx/OXCuHoE8R2jE91zIS+SNzm8wKHKQ3f7JWUYOnEvj4Ll0DpxL58C5NE4mZWFRRY8d7u9mu7Upo2fVjyRrlaSkVlMnC1aCWoz+8tvKDSzSJ5Ifbv2BLFMWHnppNyaEKB1vV2e+H9mRoV9t5lgCGBjHT4+2wkXnwdL9cRw8l8bB89bk7PLFAIUCPQ00DfGiWagXzUK9aVHbm3oyeFCtSbJWSewXGFy8DRqdYk3WDCoQf3cp23Ej02g0kqgJIcrMz13Pj493ZMhXmzl1IZv+H24rdrQMrCNmzUK9aRrqRdNQa4JW1qLfoupJslZJSloNeibzDADBUrZDCCFEOQV5ufDj4x0Z+tW/nE3NwVmnoWGQZ8FomRdNQ71pEuKJp4v0Gq4JJFmrJPYLDKzJmtFsJMVobTYe6SNlO4QQQpRfHV83loztxvm0HCIDPNA7Xd+dG0TJJFmrBBajEUt2NgA6T3dwtg45n808CyiURU+Uf/AVjiCEEEJcnberM96uMnpW00kaXgkKFxegUWh9/W3bL64E9SM8QOYqCSGEEOLqJFmrBLaCuHoLGo8SynbISlAhhBBClIIka5WgpMUFhWU7lMmfCEnWhBBCCFEKkqxVgpK6FxwrKNuhV4H4uskcAyGEEEJcnSRrlSDfbmTtktug6bEAhLhJ2Q4hhBBClI4ka5XAbNdqynob1GwxcyEvDoAw73pVFpsQQgghri+SrFUC+1ZT1tug8dnxWMhHKR2NAupWYXRCCCGEuJ5IslYJiltgULgSVBl9qR/oWWWxCSGEEOL6IslaJbhSsmYx+RPuLytBhRBCCFE6kqxVgvyUZKBgNWhBnbUTBWU7LEYp2yGEEEKI0pNkrRKYC5I1nQvg4gPA0QsxABhUID5u+qoJTAghhBDXHUnWKoE5NQ0AnY8PaK2nuPA2aJBb7aoKSwghhBDXIUnWHMySk4PKzQNA52ddCaqUIjH3LAARXlK2QwghhBClJ8mag5lTU61faBVaX+viguTcZEwqF6U0NA4Mr7LYhBBCCHH9kWTNwWytpi5p4m4r25HvRYNAn6oKTQghhBDXIUnWHCz/SmU7jP6ESdkOIYQQQpRBtU7WXn/9dTQajd2jcePGVR3WFRXXvSA65ZKyHZKsCSGEEKIMnKo6gKtp1qwZK1eutP3dyal6h1xcQdwjyTEAuBCIt5tzVYUmhBBCiOtQ9c58sCZnwcHBVR1GqdklawVz1mLTYgEIcpWyHUIIIYQom2p9GxTg2LFjhIaGEhkZyUMPPURsbOwV98/LyyM9Pd3ucS2ZUwuSNf3F26AJBWU7wqRshxBCCCHKqFonax07dmTu3LksXbqUL774gpMnT9KtWzcyMjJKfM20adPw9va2PerWrXsNI744Z82p4DZopjGTXIs1YWwcEHFNYxFCCCHE9a9aJ2sDBw5kyJAhtGzZkv79+7NkyRJSU1P55ZdfSnzNhAkTSEtLsz1Onz59DSOG/OREoOA2qFvAxZWg+e40DAy4prEIIYQQ4vpX7eesXcrHx4eoqCiOHz9e4j4GgwGDwXANo7JnvnABAJ27HvRuF2usSQN3IYQQQpRDtR5Zu1xmZibR0dGEhIRUdSglKuxgoPP1AeBYSgwAFpM/4ZKsCSGEEKKMqnWy9uKLL7Ju3TpiYmLYtGkTd911FzqdjgceeKCqQyuWUgpzmnU+nZOvPwBHkmIAMBCIl4uU7RBCCCFE2VTr26BnzpzhgQce4MKFCwQGBtK1a1f+/fdfAgMDqzq0YqnsbJQpHwBdgLVsx6n0grIdLlK2QwghhBBlV62Ttfnz51d1CGWSX7ASVKNVaHysyVp8jrVsR13Pa7sqVQghhBA1Q7W+DXq9ubQgrsYjCKPZSJbZuuCgsX94FUYmhBBCiOuVJGsOZCuIW9C94EzmGUChzHoaB4VWbXBCCCGEuC5JsuZA9n1BAzidXlBjzeRPZKBHVYYmhBBCiOuUJGsOVJisFXYvsJXtMPoT5u9WhZEJIYQQ4nolyZoD5RfWWCtI1g4lngTAhUA8pWyHEEIIIcpBkjUHMicXdC/QW8A9iJg0a9mOAIOU7RBCCCFE+Uiy5kDmpAQAdC4KXH0vlu3wkrIdQgghhCgfSdYcyHwhCQCdpztmFOn58QA08o+oyrCEEEIIcR2TZM2BbAsMfLyJy45DYUZZdDQLkpE1IYQQQpSPJGsOlJ+WDoDO15fTGYVlO/yIDPSsyrCEEEIIcR2TZM1BlFKYM7IB0AXU4uiFGOt2oz9h/u5VGJkQQgghrmeSrDmIJTMTzBYAdIHBHEw8AYCBQDwM1boFqxBCCCGqMUnWHKRwvppGZ0HrG8xJW9kOaTMlhBBCiPKTZM1B7FtNBRKXdQaAOp6yuEAIIYQQ5SfJmoOYC7oXOBksKLcA0vLjAGjoH151QQkhhBDiuifJmoPkXzKydsHZBTN5KKWhRVB41QYmhBBCiOuaJGsOcult0NMqDwBl8qZBoG9VhiWEEEKI65wkaw5iazVlsHAkOxUAi8mf8AC3KoxKCCGEENc7SdYcxJx4HgCdqxMHUs4B1rIdbnop2yGEEEKI8pNkzUEK+4I6eblxIjUGAH+9lO0QQgghRMVIsuYg+SnJAOi8vTmfdRaA2h5StkMIIYQQFSPJmoOYUwv6gvr5kWoqKNvhF16FEQkhhBCiJpBkzUHMGVkA5Pr5YiIDgBa1IqoyJCGEEELUAJKsOYCyWDBn5gIQ5+0BgCXfg8a1AqsyLCGEEELUAJKsOYAlIwOU9esTHnoAlNGfMD/3KoxKCCGEEDWBJGsOUFgQV+tk4ZDZBFjLdrjqdVUZlhBCCCFqAEnWHODSVlPRxkwAfPUhVRmSEEIIIWoISdYcwJySCliTtVhjGiBlO4QQQgjhGJKsOYA52VoQV2ewkGS21ltr4BNWlSEJIYQQooaQZM0BzAnW9lIagyKXVACa14qswoiEEEIIUVNIsuYAhX1Bsz0MACizgebB0mpKCCGEEBUnyZoD5CclAJDqaU3WLCZ/wvylbIcQQgghKk6SNQcoLN2RUFBjzaACcXGWsh1CCCGEqDhJ1hzAnJoKwBk3a4Lmq5dboEIIIYRwDEnWHMCcbu0LespVA0CIe52qDEcIIYQQNYgkaw5Q2Bf0lFs+IGU7hBBCCOE4kqxVkDKbMWdbW0ydcc8DoGlQRFWGJIQQQogaRJK1CjKnp9u+znBVKIsTrUNkZE0IIYQQjiHJWgUVrgS16C2YdRqUyY8wf48qjkoIIYQQNYUkaxVkTra2lzK5KAD0UrZDCCGEEA4kyVoFmRPjAMh2tf7dxzmkCqMRQgghRE0jyVoF5cefBiDNVrajdlWGI4QQQogaRpK1CirsC3rB3XoqI6VshxBCCCEcSJK1CjIX9AWNd7OOrDUNjKzKcIQQQghRw0iyVkHm5AsApLhrUEpDm1BJ1oQQQgjhOJKsVZA5LQ2ADFdQJh8iA7yqOCIhhBBC1CSSrFWQOS0TgAw3cFaBGJykbIcQQgghHEeStQrKz8gBIN1VI2U7hBBCCOFwkqxVkDnLCFhH1oLdpGyHEEIIIRxLkrUKUCYTljwLYJ2zFuEtZTuEEEII4ViSrFVA4eICC5DpAk2DIqo2ICGEEELUOJKsVYD5grVsR5YLKK2GtiH1qzgiIYQQQtQ0kqxVQH7cKcA6X03le9AwMKCKIxJCCCFETSPJWgWYC/qCpruCkyUIvZOcTiGEEEI4lmQXFWBOOAdAhpsGb6fgKo5GCCGEEDWRJGsVYL5g7Qua4Qq1pGyHEEIIISqBJGsVYE5OAqxz1sK961VxNEIIIYSoiSRZqwBzSipg7V7QJEDKdgghhBDC8SRZqwBjWjpgHVlrG9qwiqMRQgghRE0kyVoFZKdnWf806GgSVKuKoxFCCCFETSTJWgXkZ5kAMBk80DvpqjgaIYQQQtREkqxVgCbH2hcUd7+qDUQIIYQQNZYka+VkMRpxsg6sofeRlaBCCCGEqBySrJVTYUFciwb8gppUcTRCCCGEqKkkWSsn8/mTgLUgbsPgRlUcjRBCCCFqKknWyinvXAxgTdakbIcQQgghKst1kazNmDGD8PBwXFxc6NixI1u3bq3qkDh96jAAma7QIrhuFUcjhBBCiJqq2idrP//8M+PGjWPKlCns3LmTVq1a0b9/fxISEqo0rviCkbU8Fy16J6cqjUUIIYQQNVe1T9Y+/PBDnnjiCR599FGaNm3Kl19+iZubG7Nnz67SuDKSEwEwu0qiJoQQQojKU62TNaPRyI4dO+jTp49tm1arpU+fPmzevLnY1+Tl5ZGenm73qAymzAwANG4ulXJ8IYQQQgio5slaUlISZrOZWrXsWznVqlWLuLi4Yl8zbdo0vL29bY+6dStpPpnZgkkHzp7elXN8IYQQQgigxt3DmzBhAuPGjbP9PT09vVIStiE/7yDPaCTcmO3wYwshhBBCFKrWyVpAQAA6nY74+Hi77fHx8QQHBxf7GoPBgMFguBbhYdDrMej11+S9hBBCCHFjqta3QfV6Pe3atWPVqlW2bRaLhVWrVtGpU6cqjEwIIYQQ4tqo1iNrAOPGjWP48OG0b9+eDh06MH36dLKysnj00UerOjQhhBBCiEpX7ZO1oUOHkpiYyOTJk4mLi6N169YsXbq0yKIDIYQQQoiaSKOUUlUdRGVKT0/H29ubtLQ0vLy8qjocIYQQQpSC/Py+qFrPWRNCCCGEuNFJsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1JsiaEEEIIUY1V+3ZTFVXYoCE9Pb2KIxFCCCFEaRX+3K7hjZZKpcYnaxkZGQDUrVu3iiMRQgghRFllZGTg7e1d1WFUqRrfG9RisXDu3Dk8PT3RaDQOP356ejp169bl9OnTN3zvMjkXF8m5uEjOhT05HxfJubhIzsVFheciNjYWjUZDaGgoWu2NPWurxo+sabVa6tSpU+nv4+XldcP/Bysk5+IiORcXybmwJ+fjIjkXF8m5uMjb21vORYEbO1UVQgghhKjmJFkTQgghhKjGJFmrIIPBwJQpUzAYDFUdSpWTc3GRnIuL5FzYk/NxkZyLi+RcXCTnoqgav8BACCGEEOJ6JiNrQgghhBDVmCRrQgghhBDVmCRrQgghhBDVmCRrQgghhBDVmCRrlwgPD0ej0RR5jBo1qsTXLFiwgMaNG+Pi4kKLFi1YsmSJ3fNKKSZPnkxISAiurq706dOHY8eOVfZHqbCynotZs2bRrVs3fH198fX1pU+fPmzdutVunxEjRhQ53oABA67Fx6mQsp6LuXPnFtnXxcXFbp8b5bro2bNnsfsPGjTIts/1el2YzWYmTZpEREQErq6u1K9fnzfffPOqfQzXrl1L27ZtMRgMNGjQgLlz5xbZZ8aMGYSHh+Pi4kLHjh2L/F+qbspzLhYuXEjfvn0JDAzEy8uLTp06sWzZMrt9Xn/99SLXRuPGjSv741RIec7F2rVri/1/EhcXZ7ffjXBdFPf9QKPR0KxZM9s+1+N1UWFK2CQkJKjz58/bHitWrFCAWrNmTbH7b9y4Uel0OvXee++pgwcPqokTJypnZ2e1b98+2z7vvPOO8vb2VosWLVJ79uxRd9xxh4qIiFA5OTnX6FOVT1nPxYMPPqhmzJihdu3apQ4dOqRGjBihvL291ZkzZ2z7DB8+XA0YMMDuuMnJydfoE5VfWc/FnDlzlJeXl91r4uLi7Pa5Ua6LCxcu2O2/f/9+pdPp1Jw5c2z7XK/Xxdtvv638/f3VX3/9pU6ePKkWLFigPDw81Mcff1zia06cOKHc3NzUuHHj1MGDB9Wnn36qdDqdWrp0qW2f+fPnK71er2bPnq0OHDignnjiCeXj46Pi4+Ovxccql/Kci7Fjx6p3331Xbd26VR09elRNmDBBOTs7q507d9r2mTJlimrWrJndtZGYmHgtPlK5ledcrFmzRgHqyJEjdp/VbDbb9rlRrovU1FS7c3D69Gnl5+enpkyZYtvnerwuKkqStSsYO3asql+/vrJYLMU+f99996lBgwbZbevYsaN66qmnlFJKWSwWFRwcrN5//33b86mpqcpgMKiffvqp8gKvBFc7F5fLz89Xnp6e6ttvv7VtGz58uBo8eHAlRXjtXO1czJkzR3l7e5f4+hv5uvjoo4+Up6enyszMtG27Xq+LQYMGqccee8xu2913360eeuihEl/z8ssvq2bNmtltGzp0qOrfv7/t7x06dFCjRo2y/d1sNqvQ0FA1bdo0B0XueOU5F8Vp2rSpeuONN2x/nzJlimrVqpUjQrxmynMuCpO1lJSUEve5Ua+L3377TWk0GhUTE2Pbdj1eFxUlt0FLYDQa+eGHH3jsscdKbAC/efNm+vTpY7etf//+bN68GYCTJ08SFxdnt4+3tzcdO3a07XM9KM25uFx2djYmkwk/Pz+77WvXriUoKIhGjRrxzDPPcOHChcoIudKU9lxkZmYSFhZG3bp1GTx4MAcOHLA9dyNfF9988w33338/7u7udtuvx+uic+fOrFq1iqNHjwKwZ88e/vnnHwYOHFjia672PcNoNLJjxw67fbRaLX369KnW10Z5zsXlLBYLGRkZRb5nHDt2jNDQUCIjI3nooYeIjY11aOyOVpFz0bp1a0JCQujbty8bN260bb+Rr4tvvvmGPn36EBYWZrf9ersuKqrGN3Ivr0WLFpGamsqIESNK3CcuLo5atWrZbatVq5ZtnkHhn1fa53pQmnNxuVdeeYXQ0FC7by4DBgzg7rvvJiIigujoaF599VUGDhzI5s2b0el0lRC545XmXDRq1IjZs2fTsmVL0tLS+OCDD+jcuTMHDhygTp06N+x1sXXrVvbv388333xjt/16vS7Gjx9Peno6jRs3RqfTYTabefvtt3nooYdKfE1J3zPS09PJyckhJSUFs9lc7D6HDx+ulM/hCOU5F5f74IMPyMzM5L777rNt69ixI3PnzqVRo0acP3+eN954g27durF//348PT0r46NUWHnORUhICF9++SXt27cnLy+Pr7/+mp49e7Jlyxbatm1LUlLSDXldnDt3jr///pt58+bZbb8er4sKq+qhveqqX79+6rbbbrviPs7OzmrevHl222bMmKGCgoKUUtY5bYA6d+6c3T5DhgxR9913n2MDrkSlOReXmjZtmvL19VV79uy54n7R0dEKUCtXrqxoiNdMWc+FUkoZjUZVv359NXHiRKXUjXtdPPnkk6pFixZX3e96uS5++uknVadOHfXTTz+pvXv3qu+++075+fmpuXPnlviahg0bqqlTp9ptW7x4sQJUdna2Onv2rALUpk2b7PZ56aWXVIcOHSrlczhCec7FpX788Ufl5uamVqxYccX9UlJSlJeXl/r6668dEXalqOi5KNS9e3c1bNgwpZS6Ya+LqVOnKn9/f5WXl3fF/a6H66KiJFkrRkxMjNJqtWrRokVX3K9u3brqo48+sts2efJk1bJlS6XUxR86u3btstune/fuasyYMY4MudKU9lwUev/995W3t7fatm1bqfYPCAhQX375ZUVCvGbKei4ude+996r7779fKXVjXheZmZnKy8tLTZ8+vVT7Xw/XRZ06ddRnn31mt+3NN99UjRo1KvE13bp1U2PHjrXbNnv2bOXl5aWUUiovL0/pdDr122+/2e3zyCOPqDvuuMMhcVeG8pyLQj/99JNydXVVf/31V6neq3379mr8+PHlivNaqMi5uNSLL76obr75ZqXUjXldWCwW1aBBA/X888+X6r2q+3VRUTJnrRhz5swhKCjIrrxAcTp16sSqVavstq1YsYJOnToBEBERQXBwsN0+6enpbNmyxbZPdVfacwHw3nvv8eabb7J06VLat29/1f3PnDnDhQsXCAkJcUSola4s5+JSZrOZffv22T7njXZdgLXETV5eHsOGDbvqvtfLdZGdnY1Wa/8tVKfTYbFYSnzN1b5n6PV62rVrZ7ePxWJh1apV1fraKM+5APjpp5949NFH+emnn0p1LWVmZhIdHV2tr43ynovL7d692/Y5b7TrAmDdunUcP36ckSNHXnXf6+G6qLCqzharG7PZrOrVq6deeeWVIs89/PDDdpn7xo0blZOTk/rggw/UoUOH1JQpU4ot3eHj46N+//13tXfvXjV48ODrokSDUmU7F++8847S6/Xqf//7n91y6oyMDKWUUhkZGerFF19UmzdvVidPnlQrV65Ubdu2VQ0bNlS5ubnX7DOVV1nOxRtvvKGWLVumoqOj1Y4dO9T999+vXFxc1IEDB2z73CjXRaGuXbuqoUOHFtl+PV8Xw4cPV7Vr17aVJVi4cKEKCAhQL7/8sm2f8ePHq4cfftj298LSHS+99JI6dOiQmjFjRrGlOwwGg5o7d646ePCgevLJJ5WPj0+R8i/VSXnOxY8//qicnJzUjBkz7L5npKam2vZ54YUX1Nq1a9XJkyfVxo0bVZ8+fVRAQIBKSEi4pp+vLMpzLj766CO1aNEidezYMbVv3z41duxYpdVq7aYC3CjXRaFhw4apjh07Fnvc6/G6qChJ1i6zbNkyW72by/Xo0UMNHz7cbtsvv/yioqKilF6vV82aNVOLFy+2e95isahJkyapWrVqKYPBoHr37l3ssaujspyLsLAwBRR5FNbGyc7OVv369VOBgYHK2dlZhYWFqSeeeKJaf6O5VFnOxfPPP6/q1aun9Hq9qlWrlrr11lvtakcpdeNcF0opdfjwYQWo5cuXF9n/er4u0tPT1dixY1W9evWUi4uLioyMVK+99prd/Jrhw4erHj162L1uzZo1qnXr1kqv16vIyEi7mnOFPv30U9s11KFDB/Xvv/9W8qepmPKcix49ehT7PePS62fo0KEqJCRE6fV6Vbt2bTV06FB1/Pjxa/jJyq485+Ldd99V9evXVy4uLsrPz0/17NlTrV69usixb4TrQilrKSNXV1c1c+bMYo97PV4XFaVR6irltoUQQgghRJWROWtCCCGEENWYJGtCCCGEENWYJGtCCCGEENWYJGtCCCGEENWYJGtCCCGEENWYJGtCCCGEENWYJGtCCCGEENWYJGtCCCGqpfXr13P77bcTGhqKRqNh0aJFZXp9bm4uI0aMoEWLFjg5OXHnnXcW2WfhwoX07duXwMBAvLy86NSpE8uWLatQ3G+//TadO3fGzc0NHx+fUr1Go9EU+3j//fcBiImJYeTIkURERODq6kr9+vWZMmUKRqPRdowjR47Qq1cvatWqhYuLC5GRkUycOBGTyWT3XqmpqYwaNYqQkBAMBgNRUVEsWbLE9vy0adO46aab8PT0JCgoiDvvvJMjR46U6RycP3+eBx98kKioKLRaLc8//3yx+02fPp1GjRrh6upK3bp1+c9//kNubm6Z3utGIMmaEKJaGzFiRLE/ZEXNl5WVRatWrZgxY0a5Xm82m3F1dWXMmDH06dOn2H3Wr19P3759WbJkCTt27KBXr17cfvvt7Nq1q8Tj9uzZk7lz55b4vNFoZMiQITzzzDOljvX8+fN2j9mzZ6PRaLjnnnsAOHz4MBaLha+++ooDBw7w0Ucf8eWXX/Lqq6/ajuHs7MwjjzzC8uXLOXLkCNOnT2fWrFlMmTLFLra+ffsSExPD//73P44cOcKsWbOoXbu2bZ9169YxatQo/v33X1asWIHJZKJfv35kZWWV+vPk5eURGBjIxIkTadWqVbH7zJs3j/HjxzNlyhQOHTrEN998w88//2z3mUSBqm6hIIS4cVFMuyEua1eWmpqqUlJSqjpUUcUA9dtvv9lty83NVS+88IIKDQ1Vbm5uqkOHDmrNmjXFvn748OFq8ODBpXqvpk2bqjfeeKPE53v06FFsm7DLzZkzR3l7e5fqPS83ePBgdcstt1xxn/fee09FRERccZ///Oc/qmvXrra/f/HFFyoyMlIZjcZSx5KQkKAAtW7dOtu2lJQUNXLkSBUQEKA8PT1Vr1691O7du4t9fY8ePdTYsWOLbB81alSRzzhu3DjVpUuXUsd2o5CRNSFElbl0JGH69Ol4eXnZbXvxxRfx9vYu9a0kcWN57rnn2Lx5M/Pnz2fv3r0MGTKEAQMGcOzYsXIf02KxkJGRgZ+fnwMjLZv4+HgWL17MyJEjr7hfWlraFeM8fvw4S5cupUePHrZtf/zxB506dWLUqFHUqlWL5s2bM3XqVMxm8xXfB7B7ryFDhpCQkMDff//Njh07aNu2Lb179yY5Obm0H5POnTuzY8cOtm7dCsCJEydYsmQJt956a6mPccOo6mxRCCGUKnkU4vIRkR49eqjnnntOjR07Vvn4+KigoCA1c+ZMlZmZqUaMGKE8PDxU/fr11ZIlS+yOs2/fPjVgwADl7u6ugoKC1LBhw1RiYmIlfyrhKFw2snbq1Cml0+nU2bNn7fbr3bu3mjBhQpHXl3Zk7d1331W+vr4qPj6+xH0qe2StMIacnJwS9zl27Jjy8vIqttl5p06dlMFgUIB68sknldlstj3XqFEjZTAY1GOPPaa2b9+u5s+fr/z8/NTrr79e7PuYzWY1aNAgu9GuDRs2KC8vL5Wbm2u3b/369dVXX31V5BgljawppdTHH3+snJ2dlZOTkwLU008/XeJnvpHJyJoQ4rrz7bffEhAQwNatWxk9ejTPPPMMQ4YMoXPnzuzcuZN+/frx8MMPk52dDVgnVN9yyy20adOG7du3s3TpUuLj47nvvvuq+JOI8tq3bx9ms5moqCg8PDxsj3Xr1hEdHV2uY86bN4833niDX375haCgINv2qVOn2r3Hhg0bePrpp+22xcbGOuqjMXv2bB566CFcXFyKff7s2bMMGDCAIUOG8MQTTxR5/ueff2bnzp3MmzePxYsX88EHH9ies1gsBAUFMXPmTNq1a8fQoUN57bXX+PLLL4t9r1GjRrF//37mz59v27Znzx4yMzPx9/e3OwcnT54s07lfu3YtU6dO5fPPP2fnzp0sXLiQxYsX8+abb5b6GDcKp6oOQAghyqpVq1ZMnDgRgAkTJvDOO+8QEBBg+8E1efJkvvjiC/bu3cvNN9/MZ599Rps2bZg6dartGLNnz6Zu3bocPXqUqKioKvkcovwyMzPR6XTs2LEDnU5n95yHh0eZjzd//nwef/xxFixYUGQxwtNPP22X2D/00EPcc8893H333bZtoaGhZX7P4mzYsIEjR47w888/F/v8uXPn6NWrF507d2bmzJnF7lO3bl0AmjZtitls5sknn+SFF15Ap9MREhKCs7Oz3Tlr0qQJcXFxGI1G9Hq9bftzzz3HX3/9xfr166lTp45te2ZmJiEhIaxdu7bIe5dlysKkSZN4+OGHefzxxwFo0aIFWVlZPPnkk7z22mtotTKeVEiSNSHEdadly5a2r3U6Hf7+/rRo0cK2rVatWgAkJCQA1pGANWvWFPtDPDo6WpK161CbNm0wm80kJCTQrVu3Ch3rp59+4rHHHmP+/PkMGjSoyPN+fn5287VcXV0JCgqiQYMGFXrf4nzzzTe0a9eu2BWUZ8+epVevXrRr1445c+aUKpmxWCyYTCYsFgs6nY4uXbowb948LBaL7fVHjx4lJCTElqgppRg9ejS//fYba9euJSIiwu6Ybdu2JS4uDicnJ8LDw8v9WbOzs4t8hsIkUilV7uPWRJKsCSGuO87OznZ/12g0dts0Gg1g/UEF1pGA22+/nXfffbfIsUJCQioxUlERmZmZHD9+3Pb3kydPsnv3bvz8/IiKiuKhhx7ikUce4f/+7/9o06YNiYmJrFq1ipYtW9qSroMHD2I0GklOTiYjI4Pdu3cD0Lp1a8B663P48OF8/PHHdOzYkbi4OMCakHl7e5cr7tjYWJKTk4mNjcVsNtves0GDBrZfGBo3bsy0adO46667bK9LT09nwYIF/N///V+RY549e5aePXsSFhbGBx98QGJiou254OBgAH788UecnZ1p0aIFBoOB7du3M2HCBIYOHWr7//HMM8/w2WefMXbsWEaPHs2xY8eYOnUqY8aMsR1v1KhRzJs3j99//x1PT0/bOfH29sbV1ZU+ffrQqVMn7rzzTt577z2ioqI4d+4cixcv5q677qJ9+/YAts+dmZlJYmIiu3fvRq/X07RpUwBuv/12PvzwQ9q0aUPHjh05fvw4kyZN4vbbby8yWnrDq+pJc0IIoVTZFhhcPlk5LCxMffTRR3bbuGRC+quvvqoaNWqkTCaTY4MWlWrNmjXFlnQZPny4Ukopo9GoJk+erMLDw5Wzs7MKCQlRd911l9q7d6/tGGFhYcUeo1CPHj2u+B7FudoCg+HDhxd7zEvLigBFjvHVV18pV1dXlZqaWuSYc+bMKbHETaH58+ertm3bKg8PD+Xu7q6aNm2qpk6dWmShwqZNm1THjh2VwWBQkZGR6u2331b5+fl2sRX3uDTe9PR0NXr0aBUaGqqcnZ1V3bp11UMPPaRiY2OveJywsDDb8yaTSb3++uuqfv36ysXFRdWtW1c9++yzUqqnGBqlZKxRCFH15s6dy/PPP09qaqrd9hEjRpCammqrXt+zZ09at27N9OnTbfuEh4fz/PPP21VJ12g0/Pbbb9x5552cO3eO1q1b06NHD15++WX8/Pw4fvw48+fP5+uvv5bf4oUQ1ZrM3hNC1HihoaFs3LgRs9lMv379aNGiBc8//zw+Pj4yiVkIUe3JyJoQQgghRDUmv1IKIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRjkqwJIYQQQlRj/w+UE7wx66ktdAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# plot CPU 1 and 2 utilization, across user and system states. Reported values are in percent, but in 0..1 format, so, multiply by 100:\n", + "fig = plot.figure()\n", + "plot.plot(cpu1_system['time_unix_nano'], cpu1_system['gauge_double'] * 100.0, label='CPU 1 usage, system state')\n", + "plot.plot(cpu1_user['time_unix_nano'], cpu1_user['gauge_double'] * 100.0, label='CPU 1 usage, user state')\n", + "plot.plot(cpu2_system['time_unix_nano'], cpu2_system['gauge_double'] * 100.0, label='CPU 2 usage, system state')\n", + "plot.plot(cpu2_user['time_unix_nano'], cpu2_user['gauge_double'] * 100.0, label='CPU 2 usage, user state')\n", + "plot.xlabel('Time')\n", + "plot.ylabel('Percent CPU')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b2173f27-73de-4e1a-bd02-3d77a5e2d0ca", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Gauge values\n", + "\n", + "A Gauge can be integer- or double-valued. As seen in the tables above, this will be noted in the `gauge_type` column, and the corresponding value in \n", + "`gauge_int` or `gauge_double.`\n", + "\n", + "To avoid checking each time which value column to use, let's get a single column, `value`, for all gauges:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Gauge values\n", + "\n", + "A Gauge can be integer- or double-valued. As seen in the tables above, this will be noted in the `gauge_type` column, and the corresponding value in \n", + "`gauge_int` or `gauge_double.`\n", + "\n", + "To avoid checking each time which value column to use, let's get a single column, `value`, for all gauges:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "93928c1a", + "metadata": {}, + "outputs": [], + "source": [ + "# get the gauge values to a single column:\n", + "gauges_values_df=pd.concat([\n", + " gauges_df[gauges_df['gauge_type'] == 'AS_INT'][['gauge_int']].rename(columns={'gauge_int': 'value'}),\n", + " gauges_df[gauges_df['gauge_type'] == 'AS_DOUBLE'][['gauge_double']].rename(columns={'gauge_double': 'value'})\n", + "])\n", + "# gauges_values_df will be needed later" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "5cac3516-e7d8-4f92-a200-8109ad676173", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Sum metrics\n", + "\n", + "As you might have guessed - with Gauge `metrics` details on what happened **during** the interval are completely lost. To provide some extra information, but \n", + "still report only one single value for a given time period - OpenTelemetry also has Sum `metrics.`\n", + "\n", + "Sum `metrics` are aggregated as a sum of all changes during a time interval. Two more columns are added to further specify how this sum should \n", + "be used.\n", + "\n", + "The `aggregation_temporality` specifies if the sum is:\n", + "- DELTA - only recording the change since last reported time interval (since last `time_unix_nano` until current `time_unix_nano`)\n", + "- CUMULATIVE - recording the sum from `start_time_unix_nano` until current `time_unix_nano`, or in other words - since observations began\n", + "\n", + "The introduction of `start_time_unix_nano` is a notable improvement of OpenTelemetry on earlier telemetry packages. Its use is optional, but strongly \n", + "recommended as it allows you to identify gaps in metric reporting.\n", + "\n", + "Basically, when OpenTelemetry starts - it will get the current timestamp and keep it in `start_time_unix_nano`. As it continues to work - the same \n", + "`start_time_unix_nano` will be reported each time. If it encounters an error that prevents it from reporting continuos time intervals, that is - \n", + "data of a time interval is potentially lost - it will 'reset' to a new value of `start_time_unix_nano` and continue reporting this new timestamp.\n", + "When processing your telemetry data - if you see a changing `start_time_unix_nano` - it's a sure sign you have got a gap. \n", + "\n", + "A simple example of this is if your app crashes and gets restarted - it's obvious that there will be no reports of a metric during the restart, \n", + "but without a changing `start_time_unix_nano` you will not have an easy way to notice this!\n", + "\n", + "Another way of looking at it is to think of the `start_time_unix_nano` as a **session-like** parameter. A `metric` is observed at continuous time intervals during a **session**.\n", + "The end of each observation interval will be saved in `time_unix_nano` and the **session** - in `start_time_unix_nano`.\n", + "\n", + "The second additional column for Sum metrics is a boolean-valued `is_monotonic` column. When `True`, the sum is constantly increasing, like for example - \n", + "when counting the number of processed requests - it never goes down!\n", + "\n", + "Keep reading for more examples.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Sum metrics\n", + "\n", + "As you might have guessed - with Gauge `metrics` details on what happened **during** the interval are completely lost. To provide some extra information, but \n", + "still report only one single value for a given time period - OpenTelemetry also has Sum `metrics.`\n", + "\n", + "Sum `metrics` are aggregated as a sum of all changes during a time interval. Two more columns are added to further specify how this sum should \n", + "be used.\n", + "\n", + "The `aggregation_temporality` specifies if the sum is:\n", + "- DELTA - only recording the change since last reported time interval (since last `time_unix_nano` until current `time_unix_nano`)\n", + "- CUMULATIVE - recording the sum from `start_time_unix_nano` until current `time_unix_nano`, or in other words - since observations began\n", + "\n", + "The introduction of `start_time_unix_nano` is a notable improvement of OpenTelemetry on earlier telemetry packages. Its use is optional, but strongly \n", + "recommended as it allows you to identify gaps in metric reporting.\n", + "\n", + "Basically, when OpenTelemetry starts - it will get the current timestamp and keep it in `start_time_unix_nano`. As it continues to work - the same \n", + "`start_time_unix_nano` will be reported each time. If it encounters an error that prevents it from reporting continuos time intervals, that is - \n", + "data of a time interval is potentially lost - it will 'reset' to a new value of `start_time_unix_nano` and continue reporting this new timestamp.\n", + "When processing your telemetry data - if you see a changing `start_time_unix_nano` - it's a sure sign you have got a gap. \n", + "\n", + "A simple example of this is if your app crashes and gets restarted - it's obvious that there will be no reports of a metric during the restart, \n", + "but without a changing `start_time_unix_nano` you will not have an easy way to notice this!\n", + "\n", + "Another way of looking at it is to think of the `start_time_unix_nano` as a **session-like** parameter. A `metric` is observed at continuous time intervals during a **session**.\n", + "The end of each observation interval will be saved in `time_unix_nano` and the **session** - in `start_time_unix_nano`.\n", + "\n", + "The second additional column for Sum metrics is a boolean-valued `is_monotonic` column. When `True`, the sum is constantly increasing, like for example - \n", + "when counting the number of processed requests - it never goes down!\n", + "\n", + "Keep reading for more examples." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "4d74144d-d1fa-469a-9daa-ca83011847b7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunittypesum_typesum_intsum_doublestart_time_unix_nanotime_unix_nanoaggregation_temporalityis_monotonic
1httpcheck.errorRecords errors occurring during HTTP check.{error}SUMAS_INT10.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
2httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT00.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
3httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT00.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
4httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT00.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
5httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT00.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
6httpcheck.status1 if the check resulted in status_code matching the status_class, otherwise 0.1SUMAS_INT00.017236269303353246121723626931381380943b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
13http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT30.017236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
14http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT00.017236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
15http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT00.017236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
16http.server.active_requestsMeasures the number of concurrent HTTP requests that are currently in-flight.{request}SUMAS_INT00.017236269298654324951723626941865987025b'AGGREGATION_TEMPORALITY_CUMULATIVE'False
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "1 httpcheck.error \n", + "2 httpcheck.status \n", + "3 httpcheck.status \n", + "4 httpcheck.status \n", + "5 httpcheck.status \n", + "6 httpcheck.status \n", + "13 http.server.active_requests \n", + "14 http.server.active_requests \n", + "15 http.server.active_requests \n", + "16 http.server.active_requests \n", + "\n", + " description \\\n", + "1 Records errors occurring during HTTP check. \n", + "2 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "3 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "4 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "5 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "6 1 if the check resulted in status_code matching the status_class, otherwise 0. \n", + "13 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "14 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "15 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "16 Measures the number of concurrent HTTP requests that are currently in-flight. \n", + "\n", + " unit type sum_type sum_int sum_double start_time_unix_nano \\\n", + "1 {error} SUM AS_INT 1 0.0 1723626930335324612 \n", + "2 1 SUM AS_INT 0 0.0 1723626930335324612 \n", + "3 1 SUM AS_INT 0 0.0 1723626930335324612 \n", + "4 1 SUM AS_INT 0 0.0 1723626930335324612 \n", + "5 1 SUM AS_INT 0 0.0 1723626930335324612 \n", + "6 1 SUM AS_INT 0 0.0 1723626930335324612 \n", + "13 {request} SUM AS_INT 3 0.0 1723626929865432495 \n", + "14 {request} SUM AS_INT 0 0.0 1723626929865432495 \n", + "15 {request} SUM AS_INT 0 0.0 1723626929865432495 \n", + "16 {request} SUM AS_INT 0 0.0 1723626929865432495 \n", + "\n", + " time_unix_nano aggregation_temporality is_monotonic \n", + "1 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "2 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "3 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "4 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "5 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "6 1723626931381380943 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "13 1723626941865987025 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "14 1723626941865987025 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "15 1723626941865987025 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False \n", + "16 1723626941865987025 b'AGGREGATION_TEMPORALITY_CUMULATIVE' False " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sums_df=metrics_df[metrics_df['type'] == 'SUM']\n", + "sums_df[\n", + " [\n", + " 'name', 'description', 'unit', 'type', 'sum_type', 'sum_int', 'sum_double',\n", + " 'start_time_unix_nano', 'time_unix_nano', 'aggregation_temporality', 'is_monotonic'\n", + " ]\n", + "].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "d3a3dbc8-95ec-4055-a5be-924586da0a90", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Charting Sums\n", + "\n", + "To illustrate how Sum `metrics` work, let's explore two of them - Java's memory usage (`jvm.memory.used`) and maximum memory it has (`jvm.memory.limit`).\n", + "\n", + "Due to the way Java works, these two `metrics` are reported by **memory type** (heap or non-heap) and **memory pool**. These details are recorded in \n", + "`a_jvm.memory.type` and `a_jvm.memory.pool.name`.\n", + "\n", + "To anyone who has worked with the Java Garbage Collector these will look familiar:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Charting Sums\n", + "\n", + "To illustrate how Sum `metrics` work, let's explore two of them - Java's memory usage (`jvm.memory.used`) and maximum memory it has (`jvm.memory.limit`).\n", + "\n", + "Due to the way Java works, these two `metrics` are reported by **memory type** (heap or non-heap) and **memory pool**. These details are recorded in \n", + "`a_jvm.memory.type` and `a_jvm.memory.pool.name`.\n", + "\n", + "To anyone who has worked with the Java Garbage Collector these will look familiar:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "7f3b1f64-41e6-4b5b-8494-4b293cc7f93c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
a_jvm.memory.pool.namea_jvm.memory.type
1647CodeHeap 'non-nmethods'non_heap
1648Tenured Genheap
1649Metaspacenon_heap
1650CodeHeap 'profiled nmethods'non_heap
1651Eden Spaceheap
1652Survivor Spaceheap
1653Compressed Class Spacenon_heap
1654CodeHeap 'non-profiled nmethods'non_heap
\n", + "
" + ], + "text/plain": [ + " a_jvm.memory.pool.name a_jvm.memory.type\n", + "1647 CodeHeap 'non-nmethods' non_heap\n", + "1648 Tenured Gen heap\n", + "1649 Metaspace non_heap\n", + "1650 CodeHeap 'profiled nmethods' non_heap\n", + "1651 Eden Space heap\n", + "1652 Survivor Space heap\n", + "1653 Compressed Class Space non_heap\n", + "1654 CodeHeap 'non-profiled nmethods' non_heap" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sums_df[(sums_df['name'] == 'jvm.memory.used')][['a_jvm.memory.pool.name', 'a_jvm.memory.type']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "28799d8d-301c-4dcc-b191-b5740ccc1a2d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Emitters of java memory metrics\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) used to obtain our data set has a few Java services:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Emitters of java memory metrics\n", + "\n", + "The [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) used to obtain our data set has a few Java services:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "437356c1-a6cb-4fab-88a0-d4d8d45fddc4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
emitter
1619io.opentelemetry.runtime-telemetry-java8@adservice
2013io.opentelemetry.runtime-telemetry-java8@kafka
2154io.opentelemetry.runtime-telemetry-java8@frauddetectionservice
\n", + "
" + ], + "text/plain": [ + " emitter\n", + "1619 io.opentelemetry.runtime-telemetry-java8@adservice\n", + "2013 io.opentelemetry.runtime-telemetry-java8@kafka\n", + "2154 io.opentelemetry.runtime-telemetry-java8@frauddetectionservice" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sums_df[(sums_df['name'] == 'jvm.memory.limit')][['emitter']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "0992da1b-f5c8-46c0-b1d5-c3af21bb6e67", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### JVM Heap limits and usage by emitter\n", + "\n", + "Although technically wrong (as each pool has its own limit), for simplicity we'll sum all **heap** pools togheter and report the total limits and usage, per `emitter` and over time:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### JVM Heap limits and usage by emitter\n", + "\n", + "Although technically wrong (as each pool has its own limit), for simplicity we'll sum all **heap** pools togheter and report the total limits and usage, per `emitter` and over time:" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "882662af-2fea-47b5-b45c-2b379e97211a", + "metadata": {}, + "outputs": [], + "source": [ + "# get JVM heap limits, sum by emitter and timestamp:\n", + "heap_limit_df=sums_df[(sums_df['name'] == 'jvm.memory.limit') & (sums_df['a_jvm.memory.type'] == 'heap')][['time_unix_nano', 'emitter', 'sum_int']].groupby(['emitter', 'time_unix_nano']).sum()\n", + "heap_limit_df=heap_limit_df.sort_values(['emitter', 'time_unix_nano'])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "dca22c52-edcd-4885-af19-fca4d71d152f", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "***Note:*** In the code above we're also ignoring `start_time_unix_nano`. Again, for simplicity. This only works because our demo data set contains a single value of it.\n", + "\n", + "When working with your own data sets - you should always consider it!\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "***Note:*** In the code above we're also ignoring `start_time_unix_nano`. Again, for simplicity. This only works because our demo data set contains a single value of it.\n", + "\n", + "When working with your own data sets - you should always consider it!" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "72668a78-94cf-4c15-9df2-e5c9f22d7ac0", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Plot the limits for Fraud detection and Kafka demo Astronomy webshop services\n", + "\n", + "Let's take two of our emitters and plot the lines of their total heap memory limits:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Plot the limits for Fraud detection and Kafka demo Astronomy webshop services\n", + "\n", + "Let's take two of our emitters and plot the lines of their total heap memory limits:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "a0ce0b89-f122-4714-b02a-61e7952090f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnQAAAHjCAYAAACq4oKpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABdQklEQVR4nO3dd1gUV/828HspS5Mq0gRBMRYUFEsUjYq9Ym8RFZToo0Fjb08sQaOoMbbEaGIB83tEEo0lauwKRjS22AtRLKiAYEEElLbn/cOX1ZW2i7vixPtzXXuFnTkz851xYO+cmTkrE0IIEBEREZFk6ZV1AURERET0dhjoiIiIiCSOgY6IiIhI4hjoiIiIiCTOoKwLICIqSV5eHnJycsq6DCKiMmNoaAh9ff0i5zPQEdF7SwiBpKQkpKamlnUpRERlzsrKCg4ODpDJZAXmMdAR0XsrP8zZ2dnB1NS00D9iRET/dkIIZGZmIjk5GQDg6OhYoA0DHRG9l/Ly8pRhrnz58mVdDhFRmTIxMQEAJCcnw87OrsDlVz4UQUTvpfx75kxNTcu4EiKi90P+38PC7ilmoCOi9xovsxIRvVTc30MGOiIiIiKJY6AjIvqXCgwMRPfu3cu6DJ2QyWTYtm1bWZehM1FRUZDJZHzC+z301VdfoW7dum+1jtu3b0Mmk+HcuXNaqQlgoCMi0qrAwEDIZLICrxs3bpR1aQXkhwaZTAY9PT1YWlrC29sbkydPRmJiokbr0sUHFFD0h2diYiI6duyo1W29KS8vD/Pnz0eNGjVgYmICGxsbNGrUCGvWrNHpdgGgSZMmSExMhKWlpc624evri7FjxwIAPD09MWLEiELb/d///R+MjIzw8OFD5TljbW2NFy9eqLQ7deqU8nwqjpubG5YuXVpgujaCkjaUdC5PnDgRBw8efKttuLi4IDExEbVr1wagnQDPQEdEpGUdOnRAYmKiyqty5coF2mVnZ5dBdQXFxsYiISEBp06dwpQpU3DgwAHUrl0bFy9eLOvSiuTg4AAjIyOdbiMkJARLlizBnDlzcOXKFRw+fBjDhw9/qw9dIQRyc3NLbCeXy4scb0wXgoKCEBkZiefPnxeYFxYWhq5du8LW1lY5zdzcHFu3blVpt3btWlSqVEnntZa1cuXKvfWT9/r6+nBwcICBgfYGG2GgIyLSMiMjIzg4OKi89PX14evri1GjRmHs2LGwtbVF+/btAQCLFy+Gp6cnzMzM4OLigs8//xzp6enK9RXWc7F06VK4ubkp3+fl5WH8+PGwsrJC+fLlMXnyZAgh1KrXzs4ODg4OqFatGvr374+YmBhUqFABI0eOVGm3Zs0a1KxZE8bGxqhRowZ++OEH5bz8wOrt7Q2ZTAZfX1+1lgOAe/fu4dNPP4WNjQ3MzMzQoEEDnDhxAuHh4QgJCcH58+eVPT/h4eEACl5yvXjxIlq1agUTExOUL18ew4cPVzmG+ZefFy1aBEdHR5QvXx7BwcHFfgPJ77//js8//xx9+vRB5cqVUadOHQQFBWHixInKNgqFAqGhoahcuTJMTExQp04dbN68WTk/v+dl9+7dqF+/PoyMjLBu3TrIZDJcu3ZNZXtLliyBu7u7ynKvh8eYmBj4+vrC1NQU1tbWaN++PZ48eaJWHSUZOHAgnj9/jt9++01l+q1btxAVFYWgoCCV6QEBAVi3bp3y/fPnzxEZGYmAgAC1t6mOks6dKVOmoFq1ajA1NUWVKlUwY8YMlX/T/N+dH3/8ES4uLjA1NUXfvn3x9OnTUtf05u9j/rk1b9482Nvbw8rKCrNnz0Zubi4mTZoEGxsbODs7IywsTLnM672At2/fRsuWLQEA1tbWkMlkCAwM1LguBjoikgQhBDKzc8vkpW4wUsf69eshl8sRExODVatWAQD09PSwfPlyXL58GevXr8ehQ4cwefJkjdb77bffIjw8HOvWrcPRo0fx+PHjAj0o6jIxMcGIESMQExOjHMh0w4YNmDlzJubOnYurV69i3rx5mDFjBtavXw8AOHnyJADgwIEDSExMxJYtW9RaLj09HS1atMD9+/fx+++/4/z585g8eTIUCgX69euHCRMmoFatWsqezn79+hWoNyMjA+3bt4e1tTVOnTqFTZs24cCBAxg1apRKu8OHDyMuLg6HDx/G+vXrER4ergyIhXFwcMChQ4eQkpJSZJvQ0FD8/PPPWLVqFS5fvoxx48Zh4MCBiI6OVmk3depUzJ8/H1evXkXv3r3RoEEDbNiwQaXNhg0bMGDAgEK3c+7cObRu3RoeHh44fvw4jh49Cj8/P+Tl5WlUR1FsbW3RrVs3lZAGAOHh4XB2dka7du1Upg8aNAh//vkn4uPjAQC//fYb3NzcUK9ePbW2p46Szh3gZU9heHg4rly5gmXLlmH16tVYsmSJynpu3LiBX3/9FTt27MCePXtw9uxZfP7551qrEwAOHTqEhIQEHDlyBIsXL8asWbPQpUsXWFtb48SJExgxYgT+85//4N69ewWWdXFxUQbp2NhYJCYmYtmyZZoXIYiI3kPPnz8XV65cEc+fPxdCCJGRlSNcp+wsk1dGVo7adQcEBAh9fX1hZmamfPXu3VsIIUSLFi2Et7d3ievYtGmTKF++vPL9rFmzRJ06dVTaLFmyRLi6uirfOzo6ioULFyrf5+TkCGdnZ9GtW7cit3P48GEBQDx58qTAvN27dwsA4sSJE0IIIdzd3UVERIRKmzlz5ggfHx8hhBC3bt0SAMTZs2dV2pS03I8//ijMzc3Fo0ePCq2xsH0XQggAYuvWrUIIIX766SdhbW0t0tPTlfN37dol9PT0RFJSkhDi5b+Lq6uryM3NVbbp06eP6NevX6HbFUKIy5cvi5o1awo9PT3h6ekp/vOf/4g//vhDOf/FixfC1NRUHDt2TGW5oKAg8emnnwohXh3jbdu2qbRZsmSJcHd3V76PjY0VAMTVq1dVlsv/t/n0009F06ZNC61TnToK06JFCzFmzBjl+z179giZTCZu3rwphBBCoVAIV1dXMX36dGWb1+vq3r27CAkJEUII0bJlS7Fs2TKxdetWUVK0cHV1FXK5XOV3xMzMTBgaGqr8W5d07hTmm2++EfXr11e+nzVrltDX1xf37t1TTtu9e7fQ09MTiYmJha6jqHP59XW+Xmf+uZWXl6ecVr16ddGsWTPl+9zcXGFmZiY2btxY6DaK+1183Zt/F1/Hb4ogItKyli1bYuXKlcr3ZmZmyp/r169foP2BAwcQGhqKa9euIS0tDbm5uXjx4gUyMzPVGlj56dOnSExMRKNGjZTTDAwM0KBBg1L3LuYvJ5PJkJGRgbi4OAQFBWHYsGHKNrm5ucXetK/OcufOnYO3tzdsbGxKVScAXL16FXXq1FE5zk2bNoVCoUBsbCzs7e0BALVq1VIZXd/R0bHY+wQ9PDxw6dIlnDlzBjExMThy5Aj8/PwQGBiINWvW4MaNG8jMzETbtm1VlsvOzoa3t7fKtAYNGqi879+/PyZOnIi//voLjRs3xoYNG1CvXj3UqFGj0FrOnTuHPn36FDpPkzqK07ZtW+WlwdmzZ+PgwYOIj4/HkCFDCm0/dOhQjBkzBgMHDsTx48exadMm/Pnnn2pta9KkSQUuKy5fvhxHjhwBoN65AwC//PILli9fjri4OKSnpyM3NxcWFhYq661UqRIqVqyofO/j46M8NxwcHNSqtyS1atWCnt6ri5729vbKBx6Al/fMlS9fXtnjrQsMdEQkCSaG+rgyu32ZbVsTZmZmqFq1apHzXnf79m106dIFI0eOxNy5c2FjY4OjR48iKCgI2dnZMDU1hZ6eXoFgVty9X9pw9epVAC+fSMy/F2316tUqoRFAga8fep06y+V/ndG7YGhoqPJeJpNBoVAUu4yenh4aNmyIhg0bYuzYsfjf//6HQYMG4csvv1Tu365du1QCA4ACD2y8+e/u4OCAVq1aISIiAo0bN0ZERESBexZfV9xx0qSO4ujp6SEwMBDr16/HV199hbCwMLRs2RJVqlQptH3Hjh0xfPhwBAUFwc/PT6MHBWxtbQv8jrwe6tU5d44fPw5/f3+EhISgffv2sLS0RGRkJL799lu169CWws6t0pxvb4OBjogkQSaTwVT+7/uTdebMGSgUCnz77bfK/8P/9ddfVdpUqFABSUlJEEIon3p8fUgFS0tLODo64sSJE2jevDmAlz0ZZ86cKdU9Tc+fP8dPP/2E5s2bo0KFCgAAJycn3Lx5E/7+/oUuI5fLAUB5TxfwspeipOW8vLywZs0aPH78uNBeOrlcrrLOwtSsWRPh4eHIyMhQBqeYmBjo6emhevXqJe+wBjw8PAC87EHy8PCAkZER4uPj0aJFC43X5e/vj8mTJ+PTTz/FzZs30b9//yLbenl54eDBgwgJCSm0prep43VDhgzB119/jS1btmDr1q3FDtFiYGCAwYMHY+HChdi9e/dbbfdN6pw7x44dg6urK7788kvltDt37hRoFx8fj4SEBDg5OQEA/vrrL52cG2+jsN8fTf37/joSEUlI1apVkZOTg++++w5+fn4qD0vk8/X1RUpKChYuXIjevXtjz5492L17t8qlpTFjxmD+/Pn46KOPUKNGDSxevFjt4TWSk5Px4sULPHv2DGfOnMHChQvx8OFD5YMNwMshPL744gtYWlqiQ4cOyMrKwunTp/HkyROMHz8ednZ2MDExwZ49e+Ds7AxjY2NYWlqWuNynn36KefPmoXv37ggNDYWjoyPOnj0LJycn+Pj4wM3NDbdu3cK5c+fg7OwMc3PzAr1O/v7+mDVrFgICAvDVV18hJSUFo0ePxqBBg5SXW0ujd+/eaNq0KZo0aQIHBwfcunUL06ZNQ7Vq1VCjRg0YGBhg4sSJGDduHBQKBT755BM8ffoUMTExsLCwKPGJz549e2LkyJEYOXIkWrZsqQwchZk2bRo8PT3x+eefY8SIEZDL5Th8+DD69OkDW1vbt6rjdZUrV0arVq0wfPhwGBkZoWfPnsW2nzNnDiZNmvTWw3gUpqRz56OPPkJ8fDwiIyPRsGFD7Nq1q9AHgYyNjREQEIBFixYhLS0NX3zxBfr27Vvi5dbY2NgC02rVqqW1/Xudq6srZDIZdu7ciU6dOsHExATlypXTaB18ypWIqAzVqVMHixcvxoIFC1C7dm1s2LABoaGhKm1q1qyJH374AStWrECdOnVw8uRJlaEzAGDChAkYNGgQAgIC4OPjA3Nzc/To0UOtGqpXrw4nJyfUr18f8+fPR5s2bXDp0iVlbxQAfPbZZ1izZg3CwsLg6emJFi1aIDw8XDlciYGBAZYvX44ff/wRTk5O6Natm1rLyeVy7Nu3D3Z2dujUqRM8PT0xf/585WW1Xr16oUOHDmjZsiUqVKiAjRs3Fqjf1NQUe/fuxePHj9GwYUP07t0brVu3xvfff6/mv0Lh2rdvjx07dsDPzw/VqlVDQEAAatSogX379inHD5szZw5mzJiB0NBQ1KxZEx06dMCuXbsKHXfwTebm5vDz88P58+eL7IXKV61aNezbtw/nz5/Hxx9/DB8fH2zfvv2t6lAoFIWOgxYUFIQnT55gwIABMDY2LrYuuVwOW1tbnYyXV9K507VrV4wbNw6jRo1C3bp1cezYMcyYMaPAeqpWrYqePXuiU6dOaNeuHby8vAoMf1KY/v37w9vbW+X14MEDre8nAFSsWBEhISGYOnUq7O3tCzyhrQ6ZKO0ds0REOvTixQvcunULlStXLvFDhYg0V6NGDXz22WcF/ufg3+Srr77Ctm3btP4NJmWluL+LvORKRET0AUlOTsbu3bsRGxuL1q1bl3U5pCUMdERERB+QDh064MmTJ1i+fLlGw5rQ+42XXInovcRLrkREqor7u8iHIoiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiI3kPbtm1D1apVoa+vj7FjxyI8PBxWVlZlXRYBuH37NmQy2Vt/+4Cvry/Gjh2rlZqIGOiIiLQoMDAQ3bt3V5m2efNmGBsb49tvv1V7Pf/5z3/Qu3dv3L17F3PmzNFylS+9HhK//fZbWFtb48WLFwXaZWZmwsLCAsuXLwcAuLm5QSaTITIyskDbWrVqQSaTITw8vMjtfvXVV6hbt26B6doKStpQXNhycXFBYmIiateu/Vbb2LJli8q/rZubG5YuXfpW66QPFwMdEZEOrVmzBv7+/li5ciUmTJig1jLp6elITk5G+/bt4eTkBHNzcx1XCQwaNAgZGRnYsmVLgXmbN29GdnY2Bg4cqJzm4uKCsLAwlXZ//fUXkpKSYGZmpvN6y5K+vj4cHBwK/WJ7TdjY2LyTf1v6MDDQERHpyMKFCzF69GhERkZiyJAhyumLFy+Gp6cnzMzM4OLigs8//xzp6ekAgKioKOWHfKtWrSCTyRAVFVVg3SkpKWjQoAF69OiBrKwsxMXFoVu3brC3t0e5cuXQsGFDHDhwQO1a7ezs4Ofnh3Xr1hWYt27dOnTv3h02NjbKaf7+/oiOjsbdu3dV2vn7+7910HndpUuX0LFjR5QrVw729vYYNGgQHj58qJy/Z88efPLJJ7CyskL58uXRpUsXxMXFKefn9/pFRkaiSZMmMDY2Ru3atREdHV3qmt7sSYyKioJMJsPevXvh7e0NExMTtGrVSvmdqTVr1oSFhQUGDBiAzMxM5Xpe7wX09fXFnTt3MG7cOMhkMshkslLXRx8mBjoikgYhgOyMsnmV4hsSp0yZgjlz5mDnzp3o0aOHyjw9PT0sX74cly9fxvr163Ho0CFMnjwZANCkSRPExsYCAH777TckJiaiSZMmKsvfvXsXzZo1Q+3atbF582YYGRkhPT0dnTp1wsGDB3H27Fl06NABfn5+iI+PV7vmoKAgHDp0CHfu3FFOu3nzJo4cOYKgoCCVtvb29mjfvj3Wr18P4OVl2V9++QVDhw5V/yCVIDU1Fa1atYK3tzdOnz6NPXv24MGDB+jbt6+yTUZGBsaPH4/Tp0/j4MGD0NPTQ48ePaBQKFTWNWnSJEyYMAFnz56Fj48P/Pz88OjRI63VCry8lPz999/j2LFjuHv3Lvr27YulS5ciIiICu3btwr59+/Ddd98VuuyWLVvg7OyM2bNnIzExEYmJiVqtjf79tPe/UUREupSTCcxzKptt/zcBkKt/GXH37t3Yvn07Dh48iFatWhWY//q9WW5ubvj6668xYsQI/PDDD5DL5bCzswPw8pKcg4ODyrKxsbFo27YtevTogaVLlyp7curUqYM6deoo282ZMwdbt27F77//jlGjRqlVd/4l3rCwMHz11VcAXt5n5+LigtatWxdoP3ToUEyYMAFffvklNm/eDHd390LvjSvMxYsXUa5cOZVpb361+Pfffw9vb2/MmzdPOW3dunVwcXHBP//8g2rVqqFXr14qy6xbtw4VKlTAlStXVO5xGzVqlLLtypUrsWfPHqxdu1YZpLXh66+/RtOmTQG8DMfTpk1DXFwcqlSpAgDo3bs3Dh8+jClTphRY1sbGBvr6+jA3Ny/wb06kDvbQERFpmZeXF9zc3DBr1izlpdTXHThwAK1bt0bFihVhbm6OQYMG4dGjRyqX4wrz/PlzNGvWDD179sSyZctULsulp6dj4sSJqFmzJqysrFCuXDlcvXpVox46fX19BAQEIDw8HEIIKBQKrF+/HkOGDIGeXsGPi86dOyM9PR1HjhzBunXrNOqdq169Os6dO6fy+uOPP1TanD9/HocPH0a5cuWUrxo1agCA8rLq9evX8emnn6JKlSqwsLCAm5sbABTYbx8fH+XPBgYGaNCgAa5evap2verw8vJS/mxvbw9TU1NlmMuflpycrNVtEuVjDx0RSYOh6cuesrLatgYqVqyIzZs3o2XLlujQoQN2796tvC/u9u3b6NKlC0aOHIm5c+fCxsYGR48eRVBQELKzs2FqWvS2jIyM0KZNG+zcuROTJk1CxYoVlfMmTpyI/fv3Y9GiRahatSpMTEzQu3dvZGdna1T70KFDERoaikOHDkGhUODu3bsq9/+9zsDAAIMGDcKsWbNw4sQJbN26Ve3tyOVyVK1atcD6Xpeeng4/Pz8sWLCgwPKOjo4AAD8/P7i6umL16tVwcnKCQqFA7dq1Nd5vbTA0NFT+LJPJVN7nT3vzUjCRtjDQEZE0yGQaXfYsa66uroiOjlaGuj179sDc3BxnzpyBQqHAt99+q+z1+vXXX9Vap56eHv7v//4PAwYMQMuWLREVFQUnp5eXoWNiYhAYGKi8Xy89PR23b9/WuG53d3e0aNEC69atgxACbdq0gaura5Hthw4dikWLFqFfv36wtrbWeHvFqVevHn777Te4ubkV+qDFo0ePEBsbi9WrV6NZs2YAgKNHjxa6rr/++gvNmzcHAOTm5uLMmTNqX4p+V+RyOfLy8sq6DJIoXnIlItIRFxcXREVFKYcgSUtLQ9WqVZGTk4PvvvsON2/exP/93/9h1apVaq9TX18fGzZsQJ06ddCqVSskJSUBAD766CNs2bIF586dw/nz5zFgwIBS9wYFBQVhy5Yt2Lp1a4GHId5Us2ZNPHz4sMAQJtoQHByMx48f49NPP8WpU6cQFxeHvXv3YsiQIcjLy4O1tTXKly+Pn376CTdu3MChQ4cwfvz4Qte1YsUKbN26FdeuXUNwcDCePHlS4iXilJSUApeFHzx4oPX9zOfm5oYjR47g/v37Kk/yEqmDgY6ISIecnZ0RFRWFhw8fon379qhcuTIWL16MBQsWoHbt2tiwYQNCQ0M1WqeBgQE2btyIWrVqKYfHWLx4MaytrdGkSRP4+fmhffv2qFevXrHrUSgUhfZ89erVC0ZGRjA1NS0wSHJhypcvDxMTE432QR1OTk6IiYlBXl4e2rVrB09PT4wdOxZWVlbQ09ODnp4eIiMjcebMGdSuXRvjxo3DN998U+i65s+fj/nz56NOnTo4evQofv/9d9ja2ha7/YiICHh7e6u8Vq9erfX9zDd79mzcvn0b7u7uqFChgs62Q/9OMvHmY0VERO+BFy9e4NatW6hcuTKMjY3Lupx/pfnz5+N///sfLl26VNal6Mzt27dRuXJlnD17Vu0ncIneV8X9XeQ9dEREH5jMzExcu3YNYWFh6NixY1mXQ0RawEuuREQfmJ9++glt2rRBnTp1MHPmzLIuh4i0gJdciei9xEuuRESqivu7yB46IiIiIoljoCMiIiKSOAY6InqvcWR9IqKXivt7yKdciei9JJfLoaenh4SEBFSoUAFyuVzlu0uJiD4UQghkZ2cjJSUFenp6kMvlBdrwoQgiem9lZ2cjMTGxxC+tJyL6EJiamsLR0ZGBjoikRwiB3NxcfsclEX3Q9PX1YWBgUOSVCgY6IiIiIonjQxFEREREEsdAR0RERCRxDHREREREEsdAR0RERCRxHIcOLwfqS0hIgLm5Oce5IiIikgghBJ49ewYnJyfo6X3YfVQMdAASEhLg4uJS1mUQERFRKdy9exfOzs5lXUaZYqADYG5uDuDlCWFhYVHG1RAREZE60tLS4OLiovwc/5Ax0AHKy6wWFhYMdERERBLD26X4UAQRERGR5DHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUmcQVkX8K8lBJCTWdZVEBERlT1DU0AmK+sq/tUY6HQlJxOY51TWVRAREZW9/yYAcrOyruJfjZdciYiIiCSOPXS6Ymj68v9IiIiIPnSGpmVdwb8eA52uyGTsXiYiIqJ3gpdciYiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSuTAPdypUr4eXlBQsLC1hYWMDHxwe7d+9Wzvf19YVMJlN5jRgxQmUd8fHx6Ny5M0xNTWFnZ4dJkyYhNzf3Xe8KERERUZkxKMuNOzs7Y/78+fjoo48ghMD69evRrVs3nD17FrVq1QIADBs2DLNnz1YuY2pqqvw5Ly8PnTt3hoODA44dO4bExEQMHjwYhoaGmDdv3jvfHyIiIqKyIBNCiLIu4nU2Njb45ptvEBQUBF9fX9StWxdLly4ttO3u3bvRpUsXJCQkwN7eHgCwatUqTJkyBSkpKZDL5WptMy0tDZaWlnj69CksLCy0tStERESkQ/z8fuW9uYcuLy8PkZGRyMjIgI+Pj3L6hg0bYGtri9q1a2PatGnIzMxUzjt+/Dg8PT2VYQ4A2rdvj7S0NFy+fLnIbWVlZSEtLU3lRURERCRVZXrJFQAuXrwIHx8fvHjxAuXKlcPWrVvh4eEBABgwYABcXV3h5OSECxcuYMqUKYiNjcWWLVsAAElJSSphDoDyfVJSUpHbDA0NRUhIiI72iIiIiOjdKvNAV716dZw7dw5Pnz7F5s2bERAQgOjoaHh4eGD48OHKdp6ennB0dETr1q0RFxcHd3f3Um9z2rRpGD9+vPJ9WloaXFxc3mo/iIiIiMpKmV9ylcvlqFq1KurXr4/Q0FDUqVMHy5YtK7Rto0aNAAA3btwAADg4OODBgwcqbfLfOzg4FLlNIyMj5ZO1+S8iIiIiqSrzQPcmhUKBrKysQuedO3cOAODo6AgA8PHxwcWLF5GcnKxss3//flhYWCgv2xIRERH925XpJddp06ahY8eOqFSpEp49e4aIiAhERUVh7969iIuLQ0REBDp16oTy5cvjwoULGDduHJo3bw4vLy8AQLt27eDh4YFBgwZh4cKFSEpKwvTp0xEcHAwjI6Oy3DUiIiKid6ZMA11ycjIGDx6MxMREWFpawsvLC3v37kXbtm1x9+5dHDhwAEuXLkVGRgZcXFzQq1cvTJ8+Xbm8vr4+du7ciZEjR8LHxwdmZmYICAhQGbeOiIiI6N/uvRuHrixwHBsiIiLp4ef3K+/dPXREREREpBkGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjiNAt3z58+RmZmpfH/nzh0sXboU+/bt03phRERERKQejQJdt27d8PPPPwMAUlNT0ahRI3z77bfo1q0bVq5cqZMCiYiIiKh4GgW6v//+G82aNQMAbN68Gfb29rhz5w5+/vlnLF++XCcFEhEREVHxNAp0mZmZMDc3BwDs27cPPXv2hJ6eHho3bow7d+7opEAiIiIiKp5Gga5q1arYtm0b7t69i71796Jdu3YAgOTkZFhYWOikQCIiIiIqnkaBbubMmZg4cSLc3Nzw8ccfw8fHB8DL3jpvb2+dFEhERERExZMJIYQmCyQlJSExMRF16tSBnt7LPHjy5ElYWFigRo0aOilS19LS0mBpaYmnT5+yp5GIiEgi+Pn9isbj0Dk4OMDc3Bz79+/H8+fPAQANGzaUbJgjIiIikjqNAt2jR4/QunVrVKtWDZ06dUJiYiIAICgoCBMmTNBJgURERERUPI0C3bhx42BoaIj4+HiYmpoqp/fr1w979uzRenFEREREVDIDTRrv27cPe/fuhbOzs8r0jz76iMOWEBEREZURjXroMjIyVHrm8j1+/BhGRkZaK4qIiIiI1KdRoGvWrJnyq78AQCaTQaFQYOHChWjZsqXWiyMiIiKikml0yXXhwoVo3bo1Tp8+jezsbEyePBmXL1/G48ePERMTo6saiYiIiKgYGvXQ1a5dG//88w8++eQTdOvWDRkZGejZsyfOnj0Ld3d3XdVIRERERMXQaGDh+Ph4uLi4QCaTFTqvUqVKWi3uXeHAhERERNLDz+9XNOqhq1y5MlJSUgpMf/ToESpXrqy1ooiIiIhIfRoFOiFEob1z6enpMDY21lpRRERERKQ+tR6KGD9+PICXT7XOmDFDZeiSvLw8nDhxAnXr1tVJgURERERUPLUC3dmzZwG87KG7ePEi5HK5cp5cLkedOnUwceJE3VRIRERERMVSK9AdPnwYADBkyBAsW7bsg7/xkIiIiOh9otE9dM2bN4ehoaGuaiEiIiKiUtAo0E2dOhX29vYICgrCsWPHdFUTEREREWlAo0B3//59rF+/Hg8fPoSvry9q1KiBBQsWICkpSVf1EREREVEJNAp0BgYG6NGjB7Zv3467d+9i2LBh2LBhAypVqoSuXbti+/btUCgUuqqViIiIiAqhUaB7nb29PT755BP4+PhAT08PFy9eREBAANzd3REVFaXFEomIiIioOBoHugcPHmDRokWoVasWfH19kZaWhp07d+LWrVu4f/8++vbti4CAAF3USkRERESF0Oi7XP38/LB3715Uq1YNn332GQYPHgwbGxuVNsnJyXBwcJDUpVd+FxwREZH08PP7FbXGoctnZ2eH6Oho+Pj4FNmmQoUKuHXr1lsXRkRERETq0aiH7t+KCZ+IiEh6+Pn9isb30B08eBBdunSBu7s73N3d0aVLFxw4cEAXtRERERGRGjQKdD/88AM6dOgAc3NzjBkzBmPGjIGFhQU6deqEFStW6KpGIiIiIiqGRpdcnZ2dMXXqVIwaNUpl+ooVKzBv3jzcv39f6wW+C+yyJSIikh5+fr+iUQ9damoqOnToUGB6u3bt8PTpU60VRURERETq0yjQde3aFVu3bi0wffv27ejSpYvWiiIiIiIi9ZU4bMny5cuVP3t4eGDu3LmIiopSDl3y119/ISYmBhMmTNBdlURERERUpBLvoatcubJ6K5LJcPPmTa0U9a7xGjwREZH08PP7lRJ76DhIMBEREdH7TeNx6IiIiIjo/aLRV38BwL179/D7778jPj4e2dnZKvMWL16stcKIiIiISD0aBbqDBw+ia9euqFKlCq5du4batWvj9u3bEEKgXr16uqqRiIiIiIqh0SXXadOmYeLEibh48SKMjY3x22+/4e7du2jRogX69OmjqxqJiIiIqBgaBbqrV69i8ODBAAADAwM8f/4c5cqVw+zZs7FgwQKNN75y5Up4eXnBwsICFhYW8PHxwe7du5XzX7x4geDgYJQvXx7lypVDr1698ODBA5V1xMfHo3PnzjA1NYWdnR0mTZqE3NxcjWshIiIikiqNAp2ZmZnyvjlHR0fExcUp5z18+FDjjTs7O2P+/Pk4c+YMTp8+jVatWqFbt264fPkyAGDcuHHYsWMHNm3ahOjoaCQkJKBnz57K5fPy8tC5c2dkZ2fj2LFjWL9+PcLDwzFz5kyNayEiIiKSKo2+y7V79+7o3Lkzhg0bhokTJ2L79u0IDAzEli1bYG1tjQMHDrx1QTY2Nvjmm2/Qu3dvVKhQAREREejduzcA4Nq1a6hZsyaOHz+Oxo0bY/fu3ejSpQsSEhJgb28PAFi1ahWmTJmClJQUyOVytbbJcWyIiIikh5/fr2jUQ7d48WI0atQIABASEoLWrVvjl19+gZubG9auXftWheTl5SEyMhIZGRnw8fHBmTNnkJOTgzZt2ijb1KhRA5UqVcLx48cBAMePH4enp6cyzAFA+/btkZaWpuzlK0xWVhbS0tJUXkRERERSpdFTrlWqVFH+bGZmhlWrVr11ARcvXoSPjw9evHiBcuXKYevWrfDw8MC5c+cgl8thZWWl0t7e3h5JSUkAgKSkJJUwlz8/f15RQkNDERIS8ta1ExEREb0Pynxg4erVq+PcuXM4ceIERo4ciYCAAFy5ckWn25w2bRqePn2qfN29e1en2yMiIiLSJY166KytrSGTyQpMl8lkMDY2RtWqVREYGIghQ4aovU65XI6qVasCAOrXr49Tp05h2bJl6NevH7Kzs5GamqrSS/fgwQM4ODgAABwcHHDy5EmV9eU/BZvfpjBGRkYwMjJSu0YiIiKi95lGPXQzZ86Enp4eOnfujJCQEISEhKBz587Q09NDcHAwqlWrhpEjR2L16tWlLkihUCArKwv169eHoaEhDh48qJwXGxuL+Ph4+Pj4AAB8fHxw8eJFJCcnK9vs378fFhYW8PDwKHUNRERERFKiUQ/d0aNH8fXXX2PEiBEq03/88Ufs27cPv/32G7y8vLB8+XIMGzasxPVNmzYNHTt2RKVKlfDs2TNEREQgKioKe/fuhaWlJYKCgjB+/HjY2NjAwsICo0ePho+PDxo3bgwAaNeuHTw8PDBo0CAsXLgQSUlJmD59OoKDg9kDR0RERB8MjXro9u7dq/LUab7WrVtj7969AIBOnTrh5s2baq0vOTkZgwcPRvXq1dG6dWucOnUKe/fuRdu2bQEAS5YsQZcuXdCrVy80b94cDg4O2LJli3J5fX197Ny5E/r6+vDx8cHAgQMxePBgzJ49W5PdIiIiIpI0jXrobGxssGPHDowbN05l+o4dO2BjYwMAyMjIgLm5uVrrK2moE2NjY6xYsQIrVqwoso2rqyv++OMPtbZHRERE9G+kUaCbMWMGRo4cicOHD+Pjjz8GAJw6dQp//PGHcgiT/fv3o0WLFtqvlIiIiIgKpdE3RQBATEwMvv/+e8TGxgJ4OezI6NGj0aRJE50U+C5wpGkiIiLp4ef3KxoHun8jnhBERETSw8/vVzQeWDguLg7Tp0/HgAEDlMOF7N69u9iv2iIiIiIi3dEo0EVHR8PT0xMnTpzAb7/9hvT0dADA+fPnMWvWLJ0USERERETF0yjQTZ06FV9//TX2798PuVyunN6qVSv89ddfWi+OiIiIiEqmUaC7ePEievToUWC6nZ0dHj58qLWiiIiIiEh9GgU6KysrJCYmFph+9uxZVKxYUWtFEREREZH6NAp0/fv3x5QpU5CUlASZTAaFQoGYmBhMnDgRgwcP1lWNRERERFQMjQLdvHnzUKNGDbi4uCA9PR0eHh5o3rw5mjRpgunTp+uqRiIiIiIqRqnGoYuPj8elS5eQnp4Ob29vfPTRR7qo7Z3hODZERETSw8/vVzT66q98lSpVQqVKlbRdCxERERGVglqBbvbs2WqtbObMmW9VDBERERFpTq1Lrnp6enBycoKdnR2Kai6TyfD3339rvcB3gV22RERE0sPP71fU6qHr2LEjDh06hAYNGmDo0KHo0qUL9PQ0/tYwIiIiItIBtVLZrl27EBcXh0aNGmHSpEmoWLEipkyZgtjYWF3XR0REREQlULubzcnJCdOmTUNsbCx++eUXJCcno2HDhmjatCmeP3+uyxqJiIiIqBilesq1YcOGuH37Nq5cuYKzZ88iJycHJiYm2q6NiIiIiNSg0Y1wx48fx7Bhw+Dg4IDvvvsOAQEBSEhI+OBvRCQiIiIqS2r10C1cuBDh4eF4+PAh/P398eeff8LLy0vXtRERERGRGtQetqRSpUro0qUL5HJ5ke0WL16s1eLeFT72TEREJD38/H5FrR665s2bQyaT4fLly0W2kclkWiuKiIiIiNSnVqCLiorScRlEREREVFocHZiIiIhI4hjoiIiIiCSOgY6IiIhI4hjoiIiIiCSOgY6IiIhI4rQW6OLj45GXl6et1RERERGRmrQW6Nzc3ODh4YEtW7Zoa5VEREREpAa1xqFTx+HDh3Hz5k388ssv6Nmzp7ZWS0REREQlUOurv/7t+NUhRERE0sPP71c0uuQ6a9Ys3LlzR1e1EBEREVEpaBTotm/fDnd3d7Ru3RoRERHIysrSVV1EREREpCaNAt25c+dw6tQp1KpVC2PGjIGDgwNGjhyJU6dO6ao+IiIiIiqBxk+5ent7Y/ny5UhISMDatWtx7949NG3aFF5eXli2bBmePn2qizqJiIiIqAilHrZECIGcnBxkZ2dDCAFra2t8//33cHFxwS+//KLNGomIiIioGBoHujNnzmDUqFFwdHTEuHHj4O3tjatXryI6OhrXr1/H3Llz8cUXX+iiViIiIiIqhEbDlnh6euLatWto164dhg0bBj8/P+jr66u0efjwIezs7KBQKLRerK7wsWciIiLp4ef3KxoNLNy3b18MHToUFStWLLKNra2tpMIcERERkdSpfck1JycH4eHhSEtL02U9RERERKQhtQOdoaEhXrx4octaiIiIiKgUNHooIjg4GAsWLEBubq6u6iEiIiIiDWl0D92pU6dw8OBB7Nu3D56enjAzM1OZv2XLFq0WR0REREQl0yjQWVlZoVevXrqqhYiIiIhKQaNAFxYWpqs6iIiIiKiUNAp0+VJSUhAbGwsAqF69OipUqKDVooiIiIhIfRo9FJGRkYGhQ4fC0dERzZs3R/PmzeHk5ISgoCBkZmbqqkYiIiIiKoZGgW78+PGIjo7Gjh07kJqaitTUVGzfvh3R0dGYMGGCrmokIiIiomJo9NVftra22Lx5M3x9fVWmHz58GH379kVKSoq263sn+NUhRERE0sPP71c06qHLzMyEvb19gel2dna85EpERERURjQKdD4+Ppg1a5bKN0Y8f/4cISEh8PHx0XpxRERERFQyjQLdsmXLEBMTA2dnZ7Ru3RqtW7eGi4sLjh07hmXLlmm88dDQUDRs2BDm5uaws7ND9+7dlU/P5vP19YVMJlN5jRgxQqVNfHw8OnfuDFNTU9jZ2WHSpEn8NgsiIiL6YGg0bEnt2rVx/fp1bNiwAdeuXQMAfPrpp/D394eJiYnGG4+OjkZwcDAaNmyI3Nxc/Pe//0W7du1w5coVlW+hGDZsGGbPnq18b2pqqvw5Ly8PnTt3hoODA44dO4bExEQMHjwYhoaGmDdvnsY1EREREUmNRg9F6FpKSgrs7OwQHR2N5s2bA3jZQ1e3bl0sXbq00GV2796NLl26ICEhQXl/36pVqzBlyhSkpKRALpeXuF3eVElERCQ9/Px+ReOBhRMSEnD06FEkJydDoVCozPviiy/eqpinT58CAGxsbFSmb9iwAf/73//g4OAAPz8/zJgxQ9lLd/z4cXh6eqo8rNG+fXuMHDkSly9fhre3d4HtZGVlISsrS/k+LS3treomIiIiKksaBbrw8HD85z//gVwuR/ny5SGTyZTzZDLZWwU6hUKBsWPHomnTpqhdu7Zy+oABA+Dq6gonJydcuHABU6ZMQWxsLLZs2QIASEpKKvDkbf77pKSkQrcVGhqKkJCQUtdKRERE9D7RKNDNmDEDM2fOxLRp06Cnp9HzFCUKDg7GpUuXcPToUZXpw4cPV/7s6ekJR0dHtG7dGnFxcXB3dy/VtqZNm4bx48cr36elpcHFxaV0hRMRERGVMY3Hoevfv7/Ww9yoUaOwc+dOHD58GM7OzsW2bdSoEQDgxo0bAAAHBwc8ePBApU3+ewcHh0LXYWRkBAsLC5UXERERkVRplMyCgoKwadMmrW1cCIFRo0Zh69atOHToECpXrlziMufOnQMAODo6Ang5Nt7FixeRnJysbLN//35YWFjAw8NDa7USERERva80eso1Ly8PXbp0wfPnz+Hp6QlDQ0OV+YsXL9Zo459//jkiIiKwfft2VK9eXTnd0tISJiYmiIuLQ0REBDp16oTy5cvjwoULGDduHJydnREdHa2sqW7dunBycsLChQuRlJSEQYMG4bPPPlN72BI+JUNERCQ9/Px+RaN76EJDQ7F3715l+HrzoQhNrVy5EgAKfDdsWFgYAgMDIZfLceDAASxduhQZGRlwcXFBr169MH36dGVbfX197Ny5EyNHjoSPjw/MzMwQEBCgMm4dERER0b+ZRj101tbWWLJkCQIDA3VY0rvHhE9ERCQ9/Px+RaN76IyMjNC0aVNd1UJEREREpaBRoBszZgy+++47XdVCRERERKWg0T10J0+exKFDh7Bz507UqlWrwEMR+YP9EhEREdG7o1Ggs7KyQs+ePXVVCxERERGVgkaBLiwsTFd1EBEREVEpafyVD7m5uThw4AB+/PFHPHv2DACQkJCA9PR0rRdHRERERCXTqIfuzp076NChA+Lj45GVlYW2bdvC3NwcCxYsQFZWFlatWqWrOomIiIioCBo/5dqgQQM8efIEJiYmyuk9evTAwYMHtV4cEREREZVMox66P//8E8eOHYNcLleZ7ubmhvv372u1MCIiIiJSj0Y9dAqFAnl5eQWm37t3D+bm5lorioiIiIjUp1Gga9euHZYuXap8L5PJkJ6ejlmzZqFTp07aro2IiIiI1KDRd7neu3cP7du3hxAC169fR4MGDXD9+nXY2triyJEjsLOz02WtOsPvgiMiIpIefn6/olGgA14OWxIZGYkLFy4gPT0d9erVg7+/v8pDElLDE4KIiEh6+Pn9ikYPRQCAgYEBBg4cqItaiIiIiKgU1Ap0R44cUWtlzZs3f6tiiIiIiEhzagU6X19fyGQyAEBRV2hlMlmhT8ASERERkW6pFeisra1hbm6OwMBADBo0CLa2trqui4iIiIjUpNawJYmJiViwYAGOHz8OT09PBAUF4dixY7CwsIClpaXyRURERETvnlqBTi6Xo1+/fti7dy+uXbsGLy8vjBo1Ci4uLvjyyy+Rm5ur6zqJiIiIqAgaD1uS79atWwgKCkJ0dDRSUlJgY2Oj7dreGT72TEREJD38/H5Fo2+KyMrKQkREBNq0aYPatWvD1tYWu3btknSYIyIiIpI6tR6KOHnyJMLCwhAZGQk3NzcMGTIEv/76K4McERER0XtArUuuenp6qFSpEgICAlC/fv0i23Xt2lWrxb0r7LIlIiKSHn5+v6J2oCtxRRIeh44nBBERkfTw8/sVtS65KhQKXddBRERERKWk0UMRRERERPT+YaAjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJU+sp1zedPn0aV69eBQDUrFkTDRo00GpRRERERKQ+jQLdvXv38OmnnyImJgZWVlYAgNTUVDRp0gSRkZFwdnbWRY1EREREVAyNLrl+9tlnyMnJwdWrV/H48WM8fvwYV69ehUKhwGeffaarGomIiIioGGp9U0Q+ExMTHDt2DN7e3irTz5w5g2bNmiEzM1PrBb4LHGmaiIhIevj5/YpGPXQuLi7IyckpMD0vLw9OTk5aK4qIiIiI1KdRoPvmm28wevRonD59Wjnt9OnTGDNmDBYtWqT14oiIiIioZBpdcrW2tkZmZiZyc3NhYPDyeYr8n83MzFTaPn78WLuV6hC7bImIiKSHn9+vaPSU69KlS3VUBhERERGVlkaBLiAgQFd1EBEREVEplWpgYQB48eIFsrOzVaZ96N2dRERERGVBo4ciMjIyMGrUKNjZ2cHMzAzW1tYqLyIiIiJ69zQKdJMnT8ahQ4ewcuVKGBkZYc2aNQgJCYGTkxN+/vlnXdVIRERERMXQ6JLrjh078PPPP8PX1xdDhgxBs2bNULVqVbi6umLDhg3w9/fXVZ1EREREVASNeugeP36MKlWqAHh5v1z+0CSffPIJjhw5ov3qiIiIiKhEGgW6KlWq4NatWwCAGjVq4NdffwXwsufOyspK68URERERUck0CnRDhgzB+fPnAQBTp07FihUrYGxsjHHjxmHSpEk6KZCIiIiIiqfRN0W86c6dOzhz5gyqVq0KLy8vbdb1TnGkaSIiIunh5/crbzUOnaurK1xdXbVZDxERERFpSKNLrnl5eZgzZw4qVqyIcuXK4ebNmwCAGTNmYO3atTopkIiIiIiKp1Ggmzt3LsLDw7Fw4ULI5XLl9Nq1a2PNmjVaL46IiIiISqZRoPv555/x008/wd/fH/r6+srpderUwbVr17ReHBERERGVTKNAd//+fVStWrXAdIVCgZycHK0VRURERETq0yjQeXh44M8//ywwffPmzfD29tZaUURERESkPo0C3cyZMzFq1CgsWLAACoUCW7ZswbBhwzB37lzMnDlT442HhoaiYcOGMDc3h52dHbp3747Y2FiVNi9evEBwcDDKly+PcuXKoVevXnjw4IFKm/j4eHTu3Bmmpqaws7PDpEmTkJubq3E9RERERFKkUaDr1q0bduzYgQMHDsDMzAwzZ87E1atXsWPHDrRt21bjjUdHRyM4OBh//fUX9u/fj5ycHLRr1w4ZGRnKNuPGjcOOHTuwadMmREdHIyEhAT179lTOz8vLQ+fOnZGdnY1jx45h/fr1CA8PL1XAJCIiIpKitxpYWNtSUlJgZ2eH6OhoNG/eHE+fPkWFChUQERGB3r17AwCuXbuGmjVr4vjx42jcuDF2796NLl26ICEhAfb29gCAVatWYcqUKUhJSVF5GrcoHJiQiIhIevj5/YpGPXS69vTpUwCAjY0NAODMmTPIyclBmzZtlG1q1KiBSpUq4fjx4wCA48ePw9PTUxnmAKB9+/ZIS0vD5cuXC91OVlYW0tLSVF5EREREUqXWN0VYW1tDJpOV2O7x48elLkShUGDs2LFo2rQpateuDQBISkqCXC6HlZWVSlt7e3skJSUp27we5vLn588rTGhoKEJCQkpdKxEREdH7RK1At3TpUuXPQgiMHDkSs2fPhp2dndYKCQ4OxqVLl3D06FGtrbMo06ZNw/jx45Xv09LS4OLiovPtEhEREemCWoEuICBA5f3o0aPRq1cvVKlSRStFjBo1Cjt37sSRI0fg7OysnO7g4IDs7Gykpqaq9NI9ePAADg4OyjYnT55UWV/+U7D5bd5kZGQEIyMjrdROREREVNbK9B46IQRGjRqFrVu34tChQ6hcubLK/Pr168PQ0BAHDx5UTouNjUV8fDx8fHwAAD4+Prh48SKSk5OVbfbv3w8LCwt4eHi8mx0hIiIiKkNq9dDpSnBwMCIiIrB9+3aYm5sr73mztLSEiYkJLC0tERQUhPHjx8PGxgYWFhYYPXo0fHx80LhxYwBAu3bt4OHhgUGDBmHhwoVISkrC9OnTERwczF44IiIi+iCUaaBbuXIlAMDX11dlelhYGAIDAwEAS5YsgZ6eHnr16oWsrCy0b98eP/zwg7Ktvr4+du7ciZEjR8LHxwdmZmYICAjA7Nmz39VuEBEREZUptcahe/0BAgBYsWIFBg4cCEtLS5Xpixcv1m517wjHsSEiIpIefn6/olYP3dmzZ1XeN2nSBDdv3lSZps6wJkRERESkfWoFusOHD+u6DiIiIiIqpffqmyKIiIiISHMMdEREREQSx0BHREREJHEMdEREREQSx0BHREREJHFqPeUaHx+v1soqVar0VsUQERERkebUCnSvf8dq/jjEr487J4SATCZDXl6elssjIiIiopKoFehkMhmcnZ0RGBgIPz8/GBiU6TeGEREREdFr1Epm9+7dw/r16xEWFoZVq1Zh4MCBCAoKQs2aNXVdHxERERGVQK2HIhwcHDBlyhRcu3YNmzdvxpMnT9CoUSM0btwYq1evhkKh0HWdRERERFQEjZ9y/eSTT7B27Vpcv34dpqamGDFiBFJTU3VQGhERERGpQ+NAd+zYMXz22WeoVq0a0tPTsWLFClhZWemgNCIiIiJSh1r30CUmJuLnn39GWFgYnjx5An9/f8TExKB27dq6ro+IiIiISqBWoKtUqRIqVqyIgIAAdO3aFYaGhlAoFLhw4YJKOy8vL50USURERERFk4n8geWKoaf36sps/vhzby4m5XHo0tLSYGlpiadPn8LCwqKsyyEiIiI18PP7FbV66G7duqXrOoiIiIiolNQKdM+ePeP9ckRERETvKbWecvXy8kKjRo2wevVqPHv2TNc1EREREZEG1Ap00dHRqFWrFiZMmABHR0cEBATgzz//1HVtRERERKQGtQJds2bNsG7dOiQmJuK7777D7du30aJFC1SrVg0LFixAUlKSruskIiIioiJoNLCwmZkZhgwZgujoaPzzzz/o06cPVqxYgUqVKqFr1666qpGIiIiIiqHWsCVFycjIwIYNGzBt2jSkpqZy2BIiIiJ6Z/j5/YpaT7m+6ciRI1i3bh1+++036OnpoW/fvggKCtJ2bURERESkBrUDXUJCAsLDwxEeHo4bN26gSZMmWL58Ofr27QszMzNd1khERERExVAr0HXs2BEHDhyAra0tBg8ejKFDh6J69eq6ro2IiIiI1KBWoDM0NMRvv/2Gzp07Q19fX9c1EREREZEG1Ap0+vr6ysutRa7IwAAODg5o27Yt/Pz8tFUfEREREZVArWFLrKysYGlpWezLxMQE169fR79+/TBz5kxd101ERERE/99bDVtSmJ07d+Lzzz9HfHy8NlerU3zsmYiISHr4+f2KRgMLq+OTTz5BgwYNtL1aIiIiIiqC1gOdlZUVtmzZou3VEhEREVERtB7oiIiIiOjdYqAjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJY6AjIiIikjgGOiIiIiKJK9NAd+TIEfj5+cHJyQkymQzbtm1TmR8YGAiZTKby6tChg0qbx48fw9/fHxYWFrCyskJQUBDS09Pf4V4QERERla0yDXQZGRmoU6cOVqxYUWSbDh06IDExUfnauHGjynx/f39cvnwZ+/fvx86dO3HkyBEMHz5c16UTERERvTcMynLjHTt2RMeOHYttY2RkBAcHh0LnXb16FXv27MGpU6fQoEEDAMB3332HTp06YdGiRXByctJ6zURERETvm/f+HrqoqCjY2dmhevXqGDlyJB49eqScd/z4cVhZWSnDHAC0adMGenp6OHHiRJHrzMrKQlpamsqLiIiISKre60DXoUMH/Pzzzzh48CAWLFiA6OhodOzYEXl5eQCApKQk2NnZqSxjYGAAGxsbJCUlFbne0NBQWFpaKl8uLi463Q8iIiIiXSrTS64l6d+/v/JnT09PeHl5wd3dHVFRUWjdunWp1ztt2jSMHz9e+T4tLY2hjoiIiCTrve6he1OVKlVga2uLGzduAAAcHByQnJys0iY3NxePHz8u8r474OV9eRYWFiovIiIiIqmSVKC7d+8eHj16BEdHRwCAj48PUlNTcebMGWWbQ4cOQaFQoFGjRmVVJhEREdE7VaaXXNPT05W9bQBw69YtnDt3DjY2NrCxsUFISAh69eoFBwcHxMXFYfLkyahatSrat28PAKhZsyY6dOiAYcOGYdWqVcjJycGoUaPQv39/PuFKREREHwyZEEKU1cajoqLQsmXLAtMDAgKwcuVKdO/eHWfPnkVqaiqcnJzQrl07zJkzB/b29sq2jx8/xqhRo7Bjxw7o6emhV69eWL58OcqVK6d2HWlpabC0tMTTp095+ZWIiEgi+Pn9SpkGuvcFTwgiIiLp4ef3K5K6h46IiIiICmKgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiWOgIyIiIpI4BjoiIiIiiTMo6wL+zYQQeJ6TV9ZlEBERlTkTQ33IZLKyLuNfi4FOh57n5MFj5t6yLoOIiKjMXZndHqZyxg5d4SVXIiIiIoljVNYhE0N9XJndvqzLICIiKnMmhvplXcK/GgOdDslkMnYvExERkc7xkisRERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxDHQEREREUkcAx0RERGRxBmUdQHvAyEEACAtLa2MKyEiIiJ15X9u53+Of8gY6AA8e/YMAODi4lLGlRAREZGmnj17BktLy7Iuo0zJBGMtFAoFEhISYG5uDplMptV1p6WlwcXFBXfv3oWFhYVW1y01PBav8Fi8wmPxCo/FKzwWr/BYvPLmsRBC4NmzZ3BycoKe3od9Fxl76ADo6enB2dlZp9uwsLD44H8R8/FYvMJj8QqPxSs8Fq/wWLzCY/HK68fiQ++Zy/dhx1kiIiKifwEGOiIiIiKJY6DTMSMjI8yaNQtGRkZlXUqZ47F4hcfiFR6LV3gsXuGxeIXH4hUei6LxoQgiIiIiiWMPHREREZHEMdARERERSRwDHREREZHEMdARERERSRwDnQbc3Nwgk8kKvIKDg4tcZtOmTahRowaMjY3h6emJP/74Q2W+EAIzZ86Eo6MjTExM0KZNG1y/fl3Xu/LWND0Wq1evRrNmzWBtbQ1ra2u0adMGJ0+eVGkTGBhYYH0dOnR4F7vzVjQ9FuHh4QXaGhsbq7T5UM4LX1/fQtt37txZ2UaK50VeXh5mzJiBypUrw8TEBO7u7pgzZ06J3zcZFRWFevXqwcjICFWrVkV4eHiBNitWrICbmxuMjY3RqFGjAr9H75vSHIstW7agbdu2qFChAiwsLODj44O9e/eqtPnqq68KnBc1atTQ9e68ldIci6ioqEJ/R5KSklTafQjnRWF/C2QyGWrVqqVsI8XzQmsEqS05OVkkJiYqX/v37xcAxOHDhwttHxMTI/T19cXChQvFlStXxPTp04WhoaG4ePGiss38+fOFpaWl2LZtmzh//rzo2rWrqFy5snj+/Pk72qvS0fRYDBgwQKxYsUKcPXtWXL16VQQGBgpLS0tx7949ZZuAgADRoUMHlfU+fvz4He1R6Wl6LMLCwoSFhYXKMklJSSptPpTz4tGjRyrtL126JPT19UVYWJiyjRTPi7lz54ry5cuLnTt3ilu3bolNmzaJcuXKiWXLlhW5zM2bN4WpqakYP368uHLlivjuu++Evr6+2LNnj7JNZGSkkMvlYt26deLy5cti2LBhwsrKSjx48OBd7FaplOZYjBkzRixYsECcPHlS/PPPP2LatGnC0NBQ/P3338o2s2bNErVq1VI5L1JSUt7FLpVaaY7F4cOHBQARGxursq95eXnKNh/KeZGamqpyDO7evStsbGzErFmzlG2keF5oCwPdWxgzZoxwd3cXCoWi0Pl9+/YVnTt3VpnWqFEj8Z///EcIIYRCoRAODg7im2++Uc5PTU0VRkZGYuPGjborXAdKOhZvys3NFebm5mL9+vXKaQEBAaJbt246qvDdKelYhIWFCUtLyyKX/5DPiyVLlghzc3ORnp6unCbF86Jz585i6NChKtN69uwp/P39i1xm8uTJolatWirT+vXrJ9q3b698//HHH4vg4GDl+7y8POHk5CRCQ0O1VLn2leZYFMbDw0OEhIQo38+aNUvUqVNHGyW+M6U5FvmB7smTJ0W2+VDPi61btwqZTCZu376tnCbF80JbeMm1lLKzs/G///0PQ4cOhUwmK7TN8ePH0aZNG5Vp7du3x/HjxwEAt27dQlJSkkobS0tLNGrUSNlGCtQ5Fm/KzMxETk4ObGxsVKZHRUXBzs4O1atXx8iRI/Ho0SNdlKwz6h6L9PR0uLq6wsXFBd26dcPly5eV8z7k82Lt2rXo378/zMzMVKZL7bxo0qQJDh48iH/++QcAcP78eRw9ehQdO3YscpmS/l5kZ2fjzJkzKm309PTQpk2b9/q8KM2xeJNCocCzZ88K/L24fv06nJycUKVKFfj7+yM+Pl6rtWvb2xyLunXrwtHREW3btkVMTIxy+od8XqxduxZt2rSBq6urynSpnRfaYlDWBUjVtm3bkJqaisDAwCLbJCUlwd7eXmWavb298t6H/P8W10YK1DkWb5oyZQqcnJxU/gh16NABPXv2ROXKlREXF4f//ve/6NixI44fPw59fX0dVK596hyL6tWrY926dfDy8sLTp0+xaNEiNGnSBJcvX4azs/MHe16cPHkSly5dwtq1a1WmS/G8mDp1KtLS0lCjRg3o6+sjLy8Pc+fOhb+/f5HLFPX3Ii0tDc+fP8eTJ0+Ql5dXaJtr167pZD+0oTTH4k2LFi1Ceno6+vbtq5zWqFEjhIeHo3r16khMTERISAiaNWuGS5cuwdzcXBe78tZKcywcHR2xatUqNGjQAFlZWVizZg18fX1x4sQJ1KtXDw8fPvwgz4uEhATs3r0bERERKtOleF5oTVl3EUpVu3btRJcuXYptY2hoKCIiIlSmrVixQtjZ2QkhXt5jB0AkJCSotOnTp4/o27evdgvWIXWOxetCQ0OFtbW1OH/+fLHt4uLiBABx4MCBty3xndH0WAghRHZ2tnB3dxfTp08XQny458Xw4cOFp6dnie2kcF5s3LhRODs7i40bN4oLFy6In3/+WdjY2Ijw8PAil/noo4/EvHnzVKbt2rVLABCZmZni/v37AoA4duyYSptJkyaJjz/+WCf7oQ2lORav27BhgzA1NRX79+8vtt2TJ0+EhYWFWLNmjTbK1om3PRb5mjdvLgYOHCiEEB/seTFv3jxRvnx5kZWVVWw7KZwX2sJAVwq3b98Wenp6Ytu2bcW2c3FxEUuWLFGZNnPmTOHl5SWEePXBdPbsWZU2zZs3F1988YU2S9YZdY9Fvm+++UZYWlqKU6dOqdXe1tZWrFq16m1KfGc0PRav6927t+jfv78Q4sM8L9LT04WFhYVYunSpWu3f9/PC2dlZfP/99yrT5syZI6pXr17kMs2aNRNjxoxRmbZu3TphYWEhhBAiKytL6Ovri61bt6q0GTx4sOjatatW6taF0hyLfBs3bhQmJiZi586dam2rQYMGYurUqaWq8114m2PxuokTJ4rGjRsLIT7M80KhUIiqVauKsWPHqrWt9/280BbeQ1cKYWFhsLOzUxlaoTA+Pj44ePCgyrT9+/fDx8cHAFC5cmU4ODiotElLS8OJEyeUbd536h4LAFi4cCHmzJmDPXv2oEGDBiW2v3fvHh49egRHR0dtlKpzmhyL1+Xl5eHixYvK/fzQzgvg5fA+WVlZGDhwYIltpXBeZGZmQk9P9c+rvr4+FApFkcuU9PdCLpejfv36Km0UCgUOHjz4Xp8XpTkWALBx40YMGTIEGzduVOs8Sk9PR1xc3L/uvCjMuXPnlPv5oZ0XABAdHY0bN24gKCioxLZSOC+0pqwTpdTk5eWJSpUqiSlTphSYN2jQIJX/C4iJiREGBgZi0aJF4urVq2LWrFmFDltiZWUltm/fLi5cuCC6desmieEphNDsWMyfP1/I5XKxefNmlcfJnz17JoQQ4tmzZ2LixIni+PHj4tatW+LAgQOiXr164qOPPhIvXrx4Z/tUWpoci5CQELF3714RFxcnzpw5I/r37y+MjY3F5cuXlW0+lPMi3yeffCL69etXYLpUz4uAgABRsWJF5ZAMW7ZsEba2tmLy5MnKNlOnThWDBg1Svs8ftmTSpEni6tWrYsWKFYUOW2JkZCTCw8PFlStXxPDhw4WVlVWBYW/eJ6U5Fhs2bBAGBgZixYoVKn8vUlNTlW0mTJggoqKixK1bt0RMTIxo06aNsLW1FcnJye90/zRRmmOxZMkSsW3bNnH9+nVx8eJFMWbMGKGnp6dyy8GHcl7kGzhwoGjUqFGh65XieaEtDHQa2rt3r3JMoDe1aNFCBAQEqEz79ddfRbVq1YRcLhe1atUSu3btUpmvUCjEjBkzhL29vTAyMhKtW7cudN3vI02OhaurqwBQ4JU/flBmZqZo166dqFChgjA0NBSurq5i2LBh7/UfpNdpcizGjh0rKlWqJORyubC3txedOnVSGV9LiA/nvBBCiGvXrgkAYt++fQXaS/W8SEtLE2PGjBGVKlUSxsbGokqVKuLLL79Uud8nICBAtGjRQmW5w4cPi7p16wq5XC6qVKmiMh5fvu+++055/nz88cfir7/+0vHevJ3SHIsWLVoU+vfi9XOnX79+wtHRUcjlclGxYkXRr18/cePGjXe4Z5orzbFYsGCBcHd3F8bGxsLGxkb4+vqKQ4cOFVj3h3BeCPFyCCcTExPx008/FbpeKZ4X2iITooShy4mIiIjovcZ76IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIgk68iRI/Dz84OTkxNkMhm2bdum0fIvXrxAYGAgPD09YWBggO7duxdos2XLFrRt2xYVKlSAhYUFfHx8sHfv3reqe+7cuWjSpAlMTU1hZWWl1jIymazQ1zfffAMAuH37NoKCglC5cmWYmJjA3d0ds2bNQnZ2tnIdsbGxaNmyJezt7WFsbIwqVapg+vTpyMnJUdlWamoqgoOD4ejoCCMjI1SrVg1//PGHcn5oaCgaNmwIc3Nz2NnZoXv37oiNjdXoGCQmJmLAgAGoVq0a9PT0MHbs2ELbLV26FNWrV4eJiQlcXFwwbtw4vHjxQqNtfQgY6IhI8gIDAwv9IKZ/v4yMDNSpUwcrVqwo1fJ5eXkwMTHBF198gTZt2hTa5siRI2jbti3++OMPnDlzBi1btoSfnx/Onj1b5Hp9fX0RHh5e5Pzs7Gz06dMHI0eOVLvWxMRElde6desgk8nQq1cvAMC1a9egUCjw448/4vLly1iyZAlWrVqF//73v8p1GBoaYvDgwdi3bx9iY2OxdOlSrF69GrNmzVKprW3btrh9+zY2b96M2NhYrF69GhUrVlS2iY6ORnBwMP766y/s378fOTk5aNeuHTIyMtTen6ysLFSoUAHTp09HnTp1Cm0TERGBqVOnYtasWbh69SrWrl2LX375RWWf6P8r66+qICIqDgr5Cii88fVxqamp4smTJ2VdKpUxAGLr1q0q0168eCEmTJggnJychKmpqfj444/F4cOHC10+ICBAdOvWTa1teXh4iJCQkCLnt2jRotCvbntTWFiYsLS0VGubb+rWrZto1apVsW0WLlwoKleuXGybcePGiU8++UT5fuXKlaJKlSoiOztb7VqSk5MFABEdHa2c9uTJExEUFCRsbW2Fubm5aNmypTh37lyhy7do0UKMGTOmwPTg4OAC+zh+/HjRtGlTtWv7ULCHjojea6/3SCxduhQWFhYq0yZOnAhLS0u1L1vRh2XUqFE4fvw4IiMjceHCBfTp0wcdOnTA9evXS71OhUKBZ8+ewcbGRouVaubBgwfYtWsXgoKCim339OnTYuu8ceMG9uzZgxYtWiin/f777/Dx8UFwcDDs7e1Ru3ZtzJs3D3l5ecVuB4DKtvr06YPk5GTs3r0bZ86cQb169dC6dWs8fvxY3d1EkyZNcObMGZw8eRIAcPPmTfzxxx/o1KmT2uv4YJR1oiQiUldRvRlv9qy0aNFCjBo1SowZM0ZYWVkJOzs78dNPP4n09HQRGBgoypUrJ9zd3cUff/yhsp6LFy+KDh06CDMzM2FnZycGDhwoUlJSdLxXpC14o4fuzp07Ql9fX9y/f1+lXevWrcW0adMKLK9uD92CBQuEtbW1ePDgQZFtdN1Dl1/D8+fPi2xz/fp1YWFhUegX2fv4+AgjIyMBQAwfPlzk5eUp51WvXl0YGRmJoUOHitOnT4vIyEhhY2Mjvvrqq0K3k5eXJzp37qzSa/bnn38KCwsL8eLFC5W27u7u4scffyywjqJ66IQQYtmyZcLQ0FAYGBgIAGLEiBFF7vOHjD10RPSvtH79etja2uLkyZMYPXo0Ro4ciT59+qBJkyb4+++/0a5dOwwaNAiZmZkAXt4E3qpVK3h7e+P06dPYs2cPHjx4gL59+5bxnlBpXbx4EXl5eahWrRrKlSunfEVHRyMuLq5U64yIiEBISAh+/fVX2NnZKafPmzdPZRt//vknRowYoTItPj5eW7uGdevWwd/fH8bGxoXOv3//Pjp06IA+ffpg2LBhBeb/8ssv+PvvvxEREYFdu3Zh0aJFynkKhQJ2dnb46aefUL9+ffTr1w9ffvklVq1aVei2goODcenSJURGRiqnnT9/Hunp6ShfvrzKMbh165ZGxz4qKgrz5s3DDz/8gL///htbtmzBrl27MGfOHLXX8aEwKOsCiIh0oU6dOpg+fToAYNq0aZg/fz5sbW2VH24zZ87EypUrceHCBTRu3Bjff/89vL29MW/ePOU61q1bBxcXF/zzzz+oVq1amewHlV56ejr09fVx5swZ6Ovrq8wrV66cxuuLjIzEZ599hk2bNhV4gGLEiBEq4d/f3x+9evVCz549ldOcnJw03mZh/vzzT8TGxuKXX34pdH5CQgJatmyJJk2a4Keffiq0jYuLCwDAw8MDeXl5GD58OCZMmAB9fX04OjrC0NBQ5ZjVrFkTSUlJyM7OhlwuV04fNWoUdu7ciSNHjsDZ2Vk5PT09HY6OjoiKiiqwbU1uj5gxYwYGDRqEzz77DADg6emJjIwMDB8+HF9++SX09NgvlY+Bjoj+lby8vJQ/6+vro3z58vD09FROs7e3BwAkJycDeNmjcPjw4UI/6OPi4hjoJMjb2xt5eXlITk5Gs2bN3mpdGzduxNChQxEZGYnOnTsXmG9jY6Ny/5iJiQns7OxQtWrVt9puYdauXYv69esX+mTo/fv30bJlS9SvXx9hYWFqBR6FQoGcnBwoFAro6+ujadOmiIiIgEKhUC7/zz//wNHRURnmhBAYPXo0tm7diqioKFSuXFllnfXq1UNSUhIMDAzg5uZW6n3NzMwssA/5QVMIUer1/hsx0BHRv5KhoaHKe5lMpjJNJpMBePlhBrzsUfDz88OCBQsKrMvR0VGHldLbSE9Px40bN5Tvb926hXPnzsHGxgbVqlWDv78/Bg8ejG+//Rbe3t5ISUnBwYMH4eXlpQxmV65cQXZ2Nh4/foxnz57h3LlzAIC6desCeHmZNSAgAMuWLUOjRo2QlJQE4GVos7S0LFXd8fHxePz4MeLj45GXl6fcZtWqVZX/U1GjRg2EhoaiR48eyuXS0tKwadMmfPvttwXWef/+ffj6+sLV1RWLFi1CSkqKcp6DgwMAYMOGDTA0NISnpyeMjIxw+vRpTJs2Df369VP+fowcORLff/89xowZg9GjR+P69euYN28evvjiC+X6goODERERge3bt8Pc3Fx5TCwtLWFiYoI2bdrAx8cH3bt3x8KFC1GtWjUkJCRg165d6NGjBxo0aAAAyv1OT09HSkoKzp07B7lcDg8PDwCAn58fFi9eDG9vbzRq1Ag3btzAjBkz4OfnV6DX9YNX1jfxERGpS5OHIt68wdrV1VUsWbJEZRpeu4n+v//9r6hevbrIycnRbtGkU4cPHy50OJuAgAAhhBDZ2dli5syZws3NTRgaGgpHR0fRo0cPceHCBeU6XF1dC11HvhYtWhS7jcKU9FBEQEBAoet8fUgVAAXW8eOPPwoTExORmppaYJ1hYWFFDu+TLzIyUtSrV0+UK1dOmJmZCQ8PDzFv3rwCD1ccO3ZMNGrUSBgZGYkqVaqIuXPnitzcXJXaCnu9Xm9aWpoYPXq0cHJyEoaGhsLFxUX4+/uL+Pj4Ytfj6uqqnJ+TkyO++uor4e7uLoyNjYWLi4v4/PPPOUxRIWRCsM+SiKQhPDwcY8eORWpqqsr0wMBApKamKr8lwNfXF3Xr1sXSpUuVbdzc3DB27FiV0ehlMhm2bt2K7t27IyEhAXXr1kWLFi0wefJk2NjY4MaNG4iMjMSaNWvYG0BE7zXeTUhEhJc3rMfExCAvLw/t2rWDp6cnxo4dCysrK954TUTvPfbQEREREUkc/7eTiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOIY6IiIiIgkjoGOiIiISOL+H8fB4LFCxpexAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# fraud detection microservice limits:\n", + "fraud_limit_df=heap_limit_df.loc['io.opentelemetry.runtime-telemetry-java8@frauddetectionservice']\n", + "# kafka limits:\n", + "kafka_limit_df=heap_limit_df.loc['io.opentelemetry.runtime-telemetry-java8@kafka']\n", + "fig = plot.figure()\n", + "# also convert the values to megabytes:\n", + "plot.plot(fraud_limit_df.index, fraud_limit_df['sum_int'] / 1024 / 1024, label='Fraud Detection Service JVM Heap Limit')\n", + "plot.plot(kafka_limit_df.index, kafka_limit_df['sum_int'] / 1024 / 1024, label='Kafka JVM Heap Limit')\n", + "plot.xlabel('Time')\n", + "plot.ylabel('JVM Heap Memory, Megabytes')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "6a7a29d9-4ed0-458b-acfe-18b7e251cb75", + "metadata": {}, + "outputs": [], + "source": [ + "# similarly to heap_limit_df above, let's get the heap usage DataFrame. This time we're also including the start_time_unix_nano column:\n", + "heap_used_df=sums_df[(sums_df['name'] == 'jvm.memory.used') & (sums_df['a_jvm.memory.type'] == 'heap')][['start_time_unix_nano', 'time_unix_nano', 'emitter', 'sum_int']].groupby(['emitter', 'start_time_unix_nano', 'time_unix_nano']).sum()\n", + "heap_used_df=heap_used_df.sort_values(['emitter', 'start_time_unix_nano', 'time_unix_nano'])" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "4f436a85-1b8a-4f0b-aed2-c765ecb8072b", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Now plot both heap limits and heap usage:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Now plot both heap limits and heap usage:" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "a018eb1b-5d46-4779-8146-442054bd37a4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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a1caNmxIgwYN8PDw4OrVq0yaNInKlStTtWpVTExMGDduHKNHj0aj0fDGG2+QmJjIkSNHsLOze2KPz86dOzNkyBCGDBlC06ZNtQlHfiZNmkSNGjUYOnQogwcPxszMjAMHDvD222/j4uLyTHE8zMfHh2bNmjFo0CDMzc3p3LnzY8tPnz6d8ePHP/MwHvl50nenUqVKREZGsnHjRurXr8/PP/+cb0cgCwsLgoKC+Pzzz0lKSuL999+nW7duT7zdGhERkWdZtWrVCu31Pczb2xuVSsWOHTto27YtlpaW2NjYFPpxpJerEEIUkVq1ajF//nw+++wzqlevzvr165k1a5ZOGV9fX5YuXcqXX35JrVq1+O2333SGzgAYO3YsvXv3JigoCH9/f2xtbenUqVOBYqhSpQqenp688sorzJ49mxYtWvDXX39pa6MABgwYwKpVqwgJCaFGjRo0btyY0NBQ7XAlJiYmLF68mK+++gpPT086dOhQoO3MzMzYs2cPbm5utG3blho1ajB79mztbbUuXbrQunVrmjZtiqurK99++22e+K2srNi9ezdxcXHUr1+frl270rx5c7744osCfgr5CwgI4KeffiIwMJDKlSsTFBRE1apV2bNnj3b8sOnTp/Pxxx8za9YsfH19ad26NT///HO+4w7+l62tLYGBgZw9e/aRtVC5KleuzJ49ezh79iyvvvoq/v7+/PDDD88Uh0ajyXcctODgYOLj4+nZsycWFhaPjcvMzAwXF5ciGS/vSd+dt956i9GjRzN8+HBq167N0aNH+fjjj/Psp2LFinTu3Jm2bdvSqlUratasmWf4k/y888471KlTR+dx9+7dQn+dAKVLl2batGl88MEHuLu75+mhXVhUytO2qhVCiKeUnp7O1atX8fHxeeJFRQihv6pVqzJgwIA8Pw5eJFOnTuX7778v9im2DOlx50655SqEEEK8IKKjo9m5cycRERE0b97c0OGIYiQJnRBCCPGCaN26NfHx8SxevFivYU1EySe3XIUQxU5uuQohhP4ed+6UThFCCCGEECWcJHRCCCGEECWcJHRCCCGEECWcJHRCCCGEECWcJHRCCCGEECWcJHRCCCGEECWcJHRCCFHMvv/+eypWrIixsTGjRo0iNDQUBwcHQ4clgGvXrqFSqZ559oEmTZowatSoQolJiIKQhE4IIQqob9++dOzYUWfZ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+js1NRUxMTEwNzdHt27dsGjRIvz1r39Fr1694OTkhA8++AB2dnbSk7B9+vRBcHAwXnrpJaxfvx5VVVVYsGABpk2b1ugnXImIiIi0XaMCOn19ffzyyy8YO3YsdHV1W2zj58+fx7Bhw6S/33jjDQBAaGgoNm/ejLfffht37tzB3LlzUVhYiMGDB+PAgQMwMjKS1vnxxx+xYMECDB8+HDo6Opg0aRI+//zzFqsjERERUUfXqPfQTZgwQfoN14bo6enB1tYWI0aMwLhx41qsgm2B77EhIiLSPjx/12rUHDpTU1ON13zU95HL5UhKSsLUqVOxdOnS1q43EREREf1Po0bommLPnj3405/+hBs3brRksa2KET4REZH24fm7VrPfQ9eQwYMHa/xyAxERERG1rhYP6ExNTbFz586WLpaIiIiIGtDiAR0RERERtS0GdERERERajgEdERERkZZjQEdERESk5RjQEREREWk5BnREREREWo4BHREREZGWY0BHREREpOUY0BERERFpOQZ0RERERFqOAR0RERGRlmNAR0RERKTlGNARERERaTkGdERERERajgEdERERkZZjQEdERESk5RjQEREREWk5BnREREREWo4BHREREZGWY0BHREREpOUY0BERERFpOQZ0RERERFqOAR0RERGRlmNAR0RERKTlGNARERERaTkGdERERERajgEdERERkZZjQEdERESk5RjQEREREWk5BnREREREWo4BHREREZGWY0BHREREpOU6dED34YcfQiaTaXx69+4tLS8vL8f8+fNhYWGBLl26YNKkScjKymrHGhMRERG1vQ4d0AGAu7s7MjIypM/JkyelZa+//jr+/e9/Y8eOHTh27BjS09MxceLEdqwtERERUdvTa+8KPIqenh5sbW3rpBcVFWHjxo3YsmULnn76aQBAeHg4+vTpg8jISAwYMKCtq0pERETULjr8CF1SUhLs7Ozg7OyMkJAQ3LhxAwAQFRWFqqoqBAUFSXl79+6Nbt26ISIi4qFlVlRUoLi4WONDREREpK06dEDn7++PzZs348CBA/j666+RmpqKwMBAlJSUIDMzEwYGBjA1NdVYx8bGBpmZmQ8td9WqVVAoFNLHwcGhFfeCiIiIqHV16Fuuo0ePlv7f09MT/v7+cHR0xE8//QS5XN7schcvXow33nhD+ru4uJhBHREREWmtDj1C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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fraud_used_df=heap_used_df.loc['io.opentelemetry.runtime-telemetry-java8@frauddetectionservice']\n", + "kafka_used_df=heap_used_df.loc['io.opentelemetry.runtime-telemetry-java8@kafka']\n", + "# only use the first value of the 'start_time_unix_nano' index level\n", + "fraud_used_df=fraud_used_df.loc[fraud_used_df.index[0][0]]\n", + "kafka_used_df=kafka_used_df.loc[kafka_used_df.index[0][0]]\n", + "\n", + "fig = plot.figure()\n", + "# plot the same limits from above, in megabytes:\n", + "plot.plot(fraud_limit_df.index, fraud_limit_df['sum_int'] / 1024 / 1024, label='Fraud Detection Service JVM Heap Limit')\n", + "plot.plot(kafka_limit_df.index, kafka_limit_df['sum_int'] / 1024 / 1024, label='Kafka JVM Heap Limit')\n", + "plot.plot(fraud_used_df.index, fraud_used_df['sum_int'] / 1024 / 1024, label='Fraud Detection Service JVM Heap Usage')\n", + "plot.plot(kafka_used_df.index, kafka_used_df['sum_int'] / 1024 / 1024, label='Kafka JVM Heap Usage')\n", + "plot.xlabel('Time')\n", + "plot.ylabel('JVM Heap Memory, Megabytes')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "8e341cc8-cfcb-4db3-a314-9b9b5da4c877", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Monotonic sums: Golang Garbage Collection\n", + "\n", + "To illustrate **monotonic** Sum `metrics`, we'll consider two of them, both emitted by the Go programming language garbage collector:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Monotonic sums: Golang Garbage Collection\n", + "\n", + "To illustrate **monotonic** Sum `metrics`, we'll consider two of them, both emitted by the Go programming language garbage collector:" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "ffa63767-8dd0-4d00-96b4-a915411814ec", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunitis_monotonic
1668process.runtime.go.gc.countNumber of completed garbage collection cyclesTrue
1669process.runtime.go.gc.pause_total_nsCumulative nanoseconds in GC stop-the-world pauses since the program startedTrue
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "1668 process.runtime.go.gc.count \n", + "1669 process.runtime.go.gc.pause_total_ns \n", + "\n", + " description \\\n", + "1668 Number of completed garbage collection cycles \n", + "1669 Cumulative nanoseconds in GC stop-the-world pauses since the program started \n", + "\n", + " unit is_monotonic \n", + "1668 True \n", + "1669 True " + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sums_df[sums_df['name'].isin(['process.runtime.go.gc.count', 'process.runtime.go.gc.pause_total_ns'])][['name', 'description', 'unit', 'is_monotonic']].drop_duplicates()" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "5e1f3d75-df46-435e-a362-6bc6e59fc68d", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Build DataFrames for both monotonic sums\n", + "\n", + "Much like with the JVM Heap example above, let's get a couple of DataFrames for both Golang `metrics`. We'll also add a `sum_delta` that will be needed later.\n", + "\n", + "***Note:*** This time our data, as emitted by the Product Catalog demo service, contains a **reset** of the metric observation session!\n", + "\n", + "Scroll through the table below and note how our data contains two distinct values in the `start_time_unix_nano` column for the `go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice` emitter!\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Build DataFrames for both monotonic sums\n", + "\n", + "Much like with the JVM Heap example above, let's get a couple of DataFrames for both Golang `metrics`. We'll also add a `sum_delta` that will be needed later.\n", + "\n", + "***Note:*** This time our data, as emitted by the Product Catalog demo service, contains a **reset** of the metric observation session!\n", + "\n", + "Scroll through the table below and note how our data contains two distinct values in the `start_time_unix_nano` column for the `go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice` emitter!" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "d37943ce-e09b-4138-a47e-ef14ef76f90a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sum_intsum_delta
emitterstart_time_unix_nanotime_unix_nano
go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice1723626941614721758172362700161836165833
172362706161470234241
172362712162138626840
172362718161633111951
172362724163419496550
172362730164390405661
172362736167802021471
172362742185257869370
172362748162934691281
172362754161277528780
172362760161951195691
1723627661639162360101
1723627721643158342100
1723627781635058071111
1723627841635962082110
1723627901622890303121
1723627961622869545120
1723628021655380547131
1723628081631528372130
1723628141624389604141
1723628201633682454140
1723628261651248577151
1723628321806264087150
1723628381640261996161
1723628441857620713160
1723628501620680571171
1723628561636406330170
1723628622176479004170
go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice1723626931374482015172362699137743516866
1723627051380024670115
1723627111372885997176
1723627171389459791203
1723627231390918774222
1723627291473476325253
1723628216478028153172362827652852334488
1723628336471138653146
1723628396471585927184
1723628456471693649257
1723628516471046670327
1723628576471582225419
1723628636471602376487
\n", + "
" + ], + "text/plain": [ + " sum_int \\\n", + "emitter start_time_unix_nano time_unix_nano \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice 1723626941614721758 1723627001618361658 3 \n", + " 1723627061614702342 4 \n", + " 1723627121621386268 4 \n", + " 1723627181616331119 5 \n", + " 1723627241634194965 5 \n", + " 1723627301643904056 6 \n", + " 1723627361678020214 7 \n", + " 1723627421852578693 7 \n", + " 1723627481629346912 8 \n", + " 1723627541612775287 8 \n", + " 1723627601619511956 9 \n", + " 1723627661639162360 10 \n", + " 1723627721643158342 10 \n", + " 1723627781635058071 11 \n", + " 1723627841635962082 11 \n", + " 1723627901622890303 12 \n", + " 1723627961622869545 12 \n", + " 1723628021655380547 13 \n", + " 1723628081631528372 13 \n", + " 1723628141624389604 14 \n", + " 1723628201633682454 14 \n", + " 1723628261651248577 15 \n", + " 1723628321806264087 15 \n", + " 1723628381640261996 16 \n", + " 1723628441857620713 16 \n", + " 1723628501620680571 17 \n", + " 1723628561636406330 17 \n", + " 1723628622176479004 17 \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice 1723626931374482015 1723626991377435168 6 \n", + " 1723627051380024670 11 \n", + " 1723627111372885997 17 \n", + " 1723627171389459791 20 \n", + " 1723627231390918774 22 \n", + " 1723627291473476325 25 \n", + " 1723628216478028153 1723628276528523344 8 \n", + " 1723628336471138653 14 \n", + " 1723628396471585927 18 \n", + " 1723628456471693649 25 \n", + " 1723628516471046670 32 \n", + " 1723628576471582225 41 \n", + " 1723628636471602376 48 \n", + "\n", + " sum_delta \n", + "emitter start_time_unix_nano time_unix_nano \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice 1723626941614721758 1723627001618361658 3 \n", + " 1723627061614702342 1 \n", + " 1723627121621386268 0 \n", + " 1723627181616331119 1 \n", + " 1723627241634194965 0 \n", + " 1723627301643904056 1 \n", + " 1723627361678020214 1 \n", + " 1723627421852578693 0 \n", + " 1723627481629346912 1 \n", + " 1723627541612775287 0 \n", + " 1723627601619511956 1 \n", + " 1723627661639162360 1 \n", + " 1723627721643158342 0 \n", + " 1723627781635058071 1 \n", + " 1723627841635962082 0 \n", + " 1723627901622890303 1 \n", + " 1723627961622869545 0 \n", + " 1723628021655380547 1 \n", + " 1723628081631528372 0 \n", + " 1723628141624389604 1 \n", + " 1723628201633682454 0 \n", + " 1723628261651248577 1 \n", + " 1723628321806264087 0 \n", + " 1723628381640261996 1 \n", + " 1723628441857620713 0 \n", + " 1723628501620680571 1 \n", + " 1723628561636406330 0 \n", + " 1723628622176479004 0 \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice 1723626931374482015 1723626991377435168 6 \n", + " 1723627051380024670 5 \n", + " 1723627111372885997 6 \n", + " 1723627171389459791 3 \n", + " 1723627231390918774 2 \n", + " 1723627291473476325 3 \n", + " 1723628216478028153 1723628276528523344 8 \n", + " 1723628336471138653 6 \n", + " 1723628396471585927 4 \n", + " 1723628456471693649 7 \n", + " 1723628516471046670 7 \n", + " 1723628576471582225 9 \n", + " 1723628636471602376 7 " + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gogc_count_df=sums_df[sums_df['name'] == 'process.runtime.go.gc.count'][['start_time_unix_nano', 'time_unix_nano', 'emitter', 'sum_int']].groupby(['emitter', 'start_time_unix_nano', 'time_unix_nano']).sum()\n", + "gogc_count_df=gogc_count_df.sort_values(['emitter', 'start_time_unix_nano', 'time_unix_nano'])\n", + "# Set the 'sum_delta' column. Use 'start_time_unix_nano' otherwise the delta value will be computed wrongly, over a gap in the data!\n", + "gogc_count_df['sum_delta']=gogc_count_df['sum_int'] - gogc_count_df.groupby(['emitter', 'start_time_unix_nano'])['sum_int'].shift(1, fill_value=0)\n", + "gogc_count_df" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "50450899-e871-40e5-804c-322fb849ac1d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sum_intsum_delta
emitterstart_time_unix_nanotime_unix_nano
go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice1723626941614724503172362700161836186826906682690668
1723627061614702524273730846640
172362712162138766827373080
17236271816163313863689394952086
172362724163419523236893940
1723627301643904538127024979013103
17236273616780204071273244329946
1723627421852578897127324430
17236274816293471612532000212587559
1723627541612775526253200020
172362760161951219425438275118273
17236276616391628082547674938474
1723627721643158744254767490
172362778163505847625656211179462
1723627841635962628256562110
17236279016228905092573441478203
1723627961622869821257344140
172362802165538073826000865266451
1723628081631528582260008650
17236281416243898003887066112869796
1723628201633682651388706610
17236282616512488003894472174060
1723628321806264405389447210
1723628381640262239407484491803728
1723628441857621070407484490
17236285016206807624080482056371
1723628561636406539408048200
1723628622176481155408048200
go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice17236269313744845171723626991377435411503813503813
1723627051380024875978961475148
17236271113728862241300511321550
17236271713894602901739309438798
17236272313909192611927134187825
17236272914734765401637454314447409
17236282164780298731723628276528523648153114818153114818
1723628336471138839153542440427622
1723628396471586107153727076184636
172362845647169405919836604444638968
1723628516471046853198846790480746
1723628576471582422199295048448258
1723628636471602598199656090361042
\n", + "
" + ], + "text/plain": [ + " sum_int \\\n", + "emitter start_time_unix_nano time_unix_nano \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice 1723626941614724503 1723627001618361868 2690668 \n", + " 1723627061614702524 2737308 \n", + " 1723627121621387668 2737308 \n", + " 1723627181616331386 3689394 \n", + " 1723627241634195232 3689394 \n", + " 1723627301643904538 12702497 \n", + " 1723627361678020407 12732443 \n", + " 1723627421852578897 12732443 \n", + " 1723627481629347161 25320002 \n", + " 1723627541612775526 25320002 \n", + " 1723627601619512194 25438275 \n", + " 1723627661639162808 25476749 \n", + " 1723627721643158744 25476749 \n", + " 1723627781635058476 25656211 \n", + " 1723627841635962628 25656211 \n", + " 1723627901622890509 25734414 \n", + " 1723627961622869821 25734414 \n", + " 1723628021655380738 26000865 \n", + " 1723628081631528582 26000865 \n", + " 1723628141624389800 38870661 \n", + " 1723628201633682651 38870661 \n", + " 1723628261651248800 38944721 \n", + " 1723628321806264405 38944721 \n", + " 1723628381640262239 40748449 \n", + " 1723628441857621070 40748449 \n", + " 1723628501620680762 40804820 \n", + " 1723628561636406539 40804820 \n", + " 1723628622176481155 40804820 \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice 1723626931374484517 1723626991377435411 503813 \n", + " 1723627051380024875 978961 \n", + " 1723627111372886224 1300511 \n", + " 1723627171389460290 1739309 \n", + " 1723627231390919261 1927134 \n", + " 1723627291473476540 16374543 \n", + " 1723628216478029873 1723628276528523648 153114818 \n", + " 1723628336471138839 153542440 \n", + " 1723628396471586107 153727076 \n", + " 1723628456471694059 198366044 \n", + " 1723628516471046853 198846790 \n", + " 1723628576471582422 199295048 \n", + " 1723628636471602598 199656090 \n", + "\n", + " sum_delta \n", + "emitter start_time_unix_nano time_unix_nano \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice 1723626941614724503 1723627001618361868 2690668 \n", + " 1723627061614702524 46640 \n", + " 1723627121621387668 0 \n", + " 1723627181616331386 952086 \n", + " 1723627241634195232 0 \n", + " 1723627301643904538 9013103 \n", + " 1723627361678020407 29946 \n", + " 1723627421852578897 0 \n", + " 1723627481629347161 12587559 \n", + " 1723627541612775526 0 \n", + " 1723627601619512194 118273 \n", + " 1723627661639162808 38474 \n", + " 1723627721643158744 0 \n", + " 1723627781635058476 179462 \n", + " 1723627841635962628 0 \n", + " 1723627901622890509 78203 \n", + " 1723627961622869821 0 \n", + " 1723628021655380738 266451 \n", + " 1723628081631528582 0 \n", + " 1723628141624389800 12869796 \n", + " 1723628201633682651 0 \n", + " 1723628261651248800 74060 \n", + " 1723628321806264405 0 \n", + " 1723628381640262239 1803728 \n", + " 1723628441857621070 0 \n", + " 1723628501620680762 56371 \n", + " 1723628561636406539 0 \n", + " 1723628622176481155 0 \n", + "go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice 1723626931374484517 1723626991377435411 503813 \n", + " 1723627051380024875 475148 \n", + " 1723627111372886224 321550 \n", + " 1723627171389460290 438798 \n", + " 1723627231390919261 187825 \n", + " 1723627291473476540 14447409 \n", + " 1723628216478029873 1723628276528523648 153114818 \n", + " 1723628336471138839 427622 \n", + " 1723628396471586107 184636 \n", + " 1723628456471694059 44638968 \n", + " 1723628516471046853 480746 \n", + " 1723628576471582422 448258 \n", + " 1723628636471602598 361042 " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gogc_pause_df=sums_df[sums_df['name'] == 'process.runtime.go.gc.pause_total_ns'][['start_time_unix_nano', 'time_unix_nano', 'emitter', 'sum_int']].groupby(['emitter', 'start_time_unix_nano', 'time_unix_nano']).sum()\n", + "gogc_pause_df=gogc_pause_df.sort_values(['emitter', 'start_time_unix_nano', 'time_unix_nano'])\n", + "# Same as above - delta value should not consider earlier timestamps that belong to a different \"session\":\n", + "gogc_pause_df['sum_delta']=gogc_pause_df['sum_int'] - gogc_pause_df.groupby(['emitter', 'start_time_unix_nano'])['sum_int'].shift(1, fill_value=0)\n", + "gogc_pause_df" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "e7981ba5-3f5a-4ba1-a4e3-32ad2c605a2e", + "metadata": {}, + "outputs": [], + "source": [ + "# For simplicity, get some more specific DataFrames, one for the Checkout demo service, and two for each of the Product Catalog 'sessions':\n", + "checkout_count_df=gogc_count_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice', 1723626941614721758)]\n", + "catalog_count1_df=gogc_count_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice', 1723626931374482015)]\n", + "catalog_count2_df=gogc_count_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice', 1723628216478028153)]\n", + "\n", + "checkout_pause_df=gogc_pause_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@checkoutservice', 1723626941614724503)]\n", + "catalog_pause1_df=gogc_pause_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice', 1723626931374484517)]\n", + "catalog_pause2_df=gogc_pause_df.loc[('go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice', 1723628216478029873)]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "99efb03d-cc70-4ffc-9161-812fb2365395", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Checkout demo service Golang garbage collection:\n", + "\n", + "Now, **monotonic** metrics, if taken directly (the `sum_int` column in this case) will look like this:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Checkout demo service Golang garbage collection:\n", + "\n", + "Now, **monotonic** metrics, if taken directly (the `sum_int` column in this case) will look like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "b3c99f3a-a789-490c-9069-5e4b3c54ad63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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mZlGqnoEItZHU1MT3blzR3UrKioiAFRcXKxx/QsXLpBQKKS0tDSqqKig5ORkEolEdOPGDeMWriVd87311luUkZFB165do8rKSoqPjydbW1v6z3/+Y9zCtaRrvl51dXXk7OxMM2bMoNdff90otepK12yPHj0if39/mjdvHp0/f57q6uqopKSEysrKjFu4lnTNl52dTWKxmLKzs6muro5OnTpFjo6OtHr1auMWroXt27fTmDFj6MSJE1RXV0dHjx4lKysr2rt3b7/b1NbW0qhRo2jNmjVUUVFBv//970koFNLJkyeNWLl29MmXlJREO3fupMuXL1N1dTVt2LCBRCIRXb161YiVa0effL3u379P7u7uFBERQVOnTjV8sTrSN9trr71GAQEBVFRURHV1dXTx4kU6f/68kaoeebhh00JSUhJ5eHiQUqnUuHzBggUUGRmpNhYQEEC/+c1vjFHegD0r35N6enrI2tqaPv/8cwNX9nxok6+np4eCgoLo008/pbi4OJNt2J70rGz79+8nd3d36urqMnJlz8ez8snlcpo1a5ba2Jo1ayg4ONgY5ekkMjKSEhIS1MbeeOMNio2N7XebdevW0UsvvaQ2tnDhQpozZ45BahwIffJp4u3tTVu3bn2epT0XA8m3cOFCSk5OppSUFJNs2PTJ9vXXX5OtrS3997//NXR57P/4LdFn6Orqwp///GckJCRAIBBoXOfSpUsICwtTG5szZw4uXbpkjBIHRJt8T+ro6EB3dzfs7e0NXN3AaZvvgw8+gFQqxZIlS4xY3cBok+348eMIDAyEXC6Hg4MDXn75ZaSmpkKhUBi5Wt1pky8oKAilpaWqt+hra2tRWFiIefPmGbNUrQQFBeH06dOorq4GAFy/fh3nz5/Hz372s363GUrPLfrke5JSqURbW5tJPrfomy8rKwu1tbVISUkxRpl60Sfb8ePH4e/vj7S0NDg7O8PT0xNr167Fw4cPjVX2yDPYHaOpO3LkCAmFQmpoaOh3HZFIRDk5OWpjGRkZJJVKDV3egGmT70nLly8nd3d3evjwoQErez60yXfu3Dlydnam5uZmIqIhc4RNm2xeXl4kFospISGBrly5Qnl5eWRvb09btmwxYqX60fZ3c+/evSQSicjc3JwAUGJiopEq1I1CoaD33nuPBAIBmZubk0AgoNTU1KduM2nSpD7rFBQUEADq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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs_cnt = plot.subplots()\n", + "axs_ns = axs_cnt.twinx()\n", + "\n", + "axs_cnt.plot(checkout_count_df.index, checkout_count_df['sum_int'],\n", + " label='Checkout Service, GC count, monotonic',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][0])\n", + "# also convert nanoseconds to milliseconds:\n", + "axs_ns.plot(checkout_pause_df.index, checkout_pause_df['sum_int'] / 1000000,\n", + " label='Checkout Service, GC pause, monotonic',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][1])\n", + "\n", + "axs_cnt.set_xlabel('Time')\n", + "axs_cnt.set_ylabel('Completed GC Cycles')\n", + "axs_ns.set_ylabel('GC stop-the-world pauses, millisec')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "34a47cef-4007-4f54-acca-2886df660014", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Monotonic metrics deltas\n", + "\n", + "While the chart above is techinically correct, it's a bit hard to understand what exactly happened during each observation interval. So, this time, let's plot the `sum_delta` column that we computed above:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Monotonic metrics deltas\n", + "\n", + "While the chart above is techinically correct, it's a bit hard to understand what exactly happened during each observation interval. So, this time, let's plot the `sum_delta` column that we computed above:" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "f9697ac0-a066-487a-a223-9859e6a2d647", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Q7ncXYdIgSMIgqiFwwun1cqYodz3D8Fi644bN24wlUrF5s2b5/ZYAKxZs2ZszZo17K+//mLPP/88i4mJYTdu3GCM2Ras5ORkNmPGDHbq1Cl2+PBhNmjQINa/f3/+HNOnT2eJiYls1apVLCsri+3atYutWLGCMWa/OFdVVbExY8awLl26sOvXrzPGbEqORqNhS5cuZWfOnGELFixgYWFhbOvWrXVezyFc3M1mM1u3bh0DwM6cOcNyc3PtlAch//jHP1j79u3ZhQsXnH4eq1evZqmpqWzdunXs/PnzbN26dSwpKYmtWrXKTp709HT+mKtXr7Jx48axRx991O5c9957L7+t9vu4fPkyS0pKYmPHjmW///47O3PmDFu5ciU7ffq0KDnEMHLkSNauXTu3x1ksFpaYmMieeuop0efmmDVrFouOjmZ33XUXO3LkCNuxYwdr3bo1e/jhh/ljfv31V/bvf/+bnTp1ip08eZI9+eSTLCUlhZWWljLGxClwkydPZp07d2a///47y87OZlu2bGHfffcdY4wxo9HIbrrpJvbEE0+w48ePs5MnT7KHH36YtWvXjhkMBtHvZdiwYaxTp05s37597ODBg6xnz54sMjLSToEbOHAgu+eee9jvv//Ozp49y/7v//6PNWjQgP+9CBW4srIydv/997OhQ4ey3Nxclpuby8szZ84ctmfPHpadnc2+++47lpKSwt59912HcpECRxAEIRGHF05DOWOz4nz/MNS1pDnjwIEDDABbv36922MBsNdee41/Xl5ezgCwn376iTFmW2gGDx5s95pLly7xClNpaSnT6XS8wlYbbnHetWsXGzBgAOvdu7edgtWzZ082ceJEu9fcd999bPjw4Xavd7W4b9u2jQGwsyw64urVq+yOO+5gAFjbtm3Z+PHj2X//+19msVj4Y1q1asXWrFlj97o5c+awHj162MmzaNEiu2M2bNjAW9sYY6ykpIRFRETwn2Pt9zFjxgyWkZHh1OriTg4xtG/fno0cOdJu25QpU1h0dDSLjo5mTZs2ZYzZLE8A2AcffCD63ByzZs1iYWFh7PLly/y2n376ianVapabm+vwNRaLhcXGxrL/9//+H2NM3Hd8zz33sMcff9zh+f7973+zdu3a2VkUDQYDi4yMZJs3bxb1Ps6cOcMAsN9++43fdurUKQaAV+B27drF4uLiWFVVld1r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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs_cnt = plot.subplots()\n", + "axs_ns = axs_cnt.twinx()\n", + "\n", + "axs_cnt.plot(checkout_count_df.index, checkout_count_df['sum_delta'],\n", + " label='Checkout Service, GC count, delta',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][0])\n", + "# Again, convert nanosec to millisec:\n", + "axs_ns.plot(checkout_pause_df.index, checkout_pause_df['sum_delta'] / 1000000,\n", + " label='Checkout Service, GC pause, delta',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][1])\n", + "\n", + "axs_cnt.set_xlabel('Time')\n", + "axs_cnt.set_ylabel('Completed GC Cycles')\n", + "axs_ns.set_ylabel('GC stop-the-world pauses, millisec')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "e9784c9e-40ac-4e72-bb02-3cf6e9a3ad3e", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Gaps in observation sessions\n", + "\n", + "In the following plot we'll illustrate how the `start_time_unix_nano` column can help you interpret `metrics` data correctly, without a complicated logic to specifically check for gaps in time.\n", + "\n", + "Let's plot the two `process.runtime.go.gc*` metrics for the Product Catalog demo service. Remember - earlier we showed that this time our data has a gap:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Gaps in observation sessions\n", + "\n", + "In the following plot we'll illustrate how the `start_time_unix_nano` column can help you interpret `metrics` data correctly, without a complicated logic to specifically check for gaps in time.\n", + "\n", + "Let's plot the two `process.runtime.go.gc*` metrics for the Product Catalog demo service. Remember - earlier we showed that this time our data has a gap:" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "2ae15771-bd58-4c35-8819-3664c9b01b35", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Sik5sI/SkkJKivdRUlJIaVkRpWX7KS0/QElFMWXeYkq9JZRVllFWWU6pv4wy46XMVFCOj9MTT6bbyWdGsLdERKROJk2C8nKwWiEtLSxV9up7AW/1vSD02u+vpKx438G/GSX7KS3dT2l5EaXlBygtD/7dKPOWUuorDf7t8JdR5i+nLOCl3Hgps/hob2vNKYfU29Scd8H1nHfB9bEOAwj2ud9bga/SS2WlF7+vgspKL5W+4OvUltEfbtWzZ88ar6dMmcIDDzxQY9vu3bvx+/1kZGTU2J6RkcG3334b6RCbPCUDcc5ms5OQmEpCYmpM43C6EnC6Ekhr1SamcYiISBhYrfDggxFtwmazk5jSmsSU1hFtRw6y2ezYPHacNJ3huBs2bKBNm4PnDodfFZDjUzIgIiIiIiekpKQkkpOTj1mmVatW2Gw2CgpqLt5WUFBAZmZmJMM7ITT96d8iIiIiIg3kdDrp168fy5cvD20LBAIsX76cgQMHxjCypkFXBkRERESkWbvtttsYO3Ysp59+Ov3792fmzJmUlJSE7i4Uz5QMiIiIiEizNnr0aHbt2sX9999Pfn4+p512GkuXLj1iUnE8UjIgIiIiIs3ejTfeyI036hbkh9OcARERERGROKVkQEREREQkTikZEBERERGJU0oGRERERETilJIBEREREZE4pWRARERERCROKRkQEREREYlTSgZEREREROKUkgERERERkTilZEBEREREJE4pGRARERERiVNKBkRERERE4pSSARERERGROKVkQEREREQkTikZEBERERGJU0oGRERERETilJIBEREREZE4pWRARERERCROKRkQEREREYlTSgZEREREROKUPdYBNDWBQACAHTt2xDgSEREREalN9Xla9XmbNJySgcMUFBQA0L9//xhHIiIiIiLHUlBQQPv27WMdxgnNYowxsQ6iKamsrOSLL74gIyMDqzW6o6gOHDhAz5492bBhA0lJSVFtu7lSn0aG+jUy1K/hpz6NDPVrZKhf6y4QCFBQUECfPn2w2/XddmMoGWhCioqKSElJYf/+/SQnJ8c6nGZBfRoZ6tfIUL+Gn/o0MtSvkaF+lVjQBGIRERERkTilZEBEREREJE4pGWhCXC4XU6ZMweVyxTqUZkN9Ghnq18hQv4af+jQy1K+RoX6VWNCcARERERGROKUrAyIiIiIicUrJgIiIiIhInFIyICIiIiISp5QMiIiIiIjEKSUDEdChQwcsFssRjwkTJhz1M4sXL6ZHjx643W569erFO++8U+N9Ywz3338/WVlZeDwehg4dyqZNmyK9K01Kffv1xRdf5KyzziItLY20tDSGDh3K6tWra5QZN27cEfUNGzYsGrvTZNS3X+fNm3dEWbfbXaNMvB+v9e3TIUOG1Fr+wgsvDJXRsQp+v5/JkyfTsWNHPB4PnTt35qGHHuJ498FYuXIlffv2xeVy0aVLF+bNm3dEmVmzZtGhQwfcbjcDBgw44ndFc9aQfl2yZAnnnXcerVu3Jjk5mYEDB/Lee+/VKPPAAw8cccz26NEj0rvTJDSkT1euXFnr74H8/Pwa5eL5WJUIMRJ2O3fuNDt27Ag9li1bZgCzYsWKWst/8sknxmazmccff9xs2LDB3HfffcbhcJivv/46VObRRx81KSkp5o033jBffvml+dWvfmU6duxoysrKorRXsVfffr3iiivMrFmzzBdffGG++eYbM27cOJOSkmK2bdsWKjN27FgzbNiwGvXu3bs3SnvUNNS3X+fOnWuSk5NrfCY/P79GmXg/Xuvbp3v27KlRft26dcZms5m5c+eGyuhYNebhhx82J510knnrrbfM1q1bzeLFi01iYqL505/+dNTPfP/99yYhIcHcdtttZsOGDeaZZ54xNpvNLF26NFRmwYIFxul0mjlz5pj169eb8ePHm9TUVFNQUBCN3Yq5hvTrLbfcYh577DGzevVq891335m7777bOBwO8/nnn4fKTJkyxZx88sk1jtldu3ZFY5diriF9umLFCgOYjRs31ugzv98fKhPvx6pEhpKBKLjllltM586dTSAQqPX9yy67zFx44YU1tg0YMMBcd911xhhjAoGAyczMNE888UTo/cLCQuNyucwrr7wSucCbuOP16+EqKytNUlKSeemll0Lbxo4day666KIIRXhiOl6/zp0716SkpBz18zpej1TfY3XGjBkmKSnJFBcXh7bpWDXmwgsvNFdffXWNbZdeeqkZM2bMUT9z5513mpNPPrnGttGjR5sLLrgg9Lp///5mwoQJodd+v99kZ2ebRx55JEyRN20N6dfa9OzZ00ydOjX0esqUKebUU08NR4gnnIb0aXUysG/fvqOWifdjVSJDw4QizOv18re//Y2rr74ai8VSa5lVq1YxdOjQGtsuuOACVq1aBcDWrVvJz8+vUSYlJYUBAwaEysSbuvTr4UpLS/H5fLRs2bLG9pUrV5Kenk737t254YYb2LNnTyRCPiHUtV+Li4vJycmhXbt2XHTRRaxfvz70no7XmhpyrM6ePZvLL7+cFi1a1Nge78fqoEGDWL58Od999x0AX375JR9//DHDhw8/6meO9/vV6/WyZs2aGmWsVitDhw6Nm+O1If16uEAgwIEDB474/bpp0yays7Pp1KkTY8aMITc3N6yxN1WN6dPTTjuNrKwszjvvPD755JPQdh2rEin2WAfQ3L3xxhsUFhYybty4o5bJz88nIyOjxraMjIzQOMHqn8cqE2/q0q+Hu+uuu8jOzq7xi3TYsGFceumldOzYkS1btnDPPfcwfPhwVq1ahc1mi0DkTVtd+rV79+7MmTOH3r17s3//fqZPn86gQYNYv349bdu21fF6mPoeq6tXr2bdunXMnj27xnYdqzBp0iSKioro0aMHNpsNv9/Pww8/zJgxY476maP9fi0qKqKsrIx9+/bh9/trLfPtt99GZD+amob06+GmT59OcXExl112WWjbgAEDmDdvHt27d2fHjh1MnTqVs846i3Xr1pGUlBSJXWkyGtKnWVlZPPfcc5x++ulUVFTwv//7vwwZMoRPP/2Uvn37snv37rg/ViUylAxE2OzZsxk+fDjZ2dmxDqVZqW+/PvrooyxYsICVK1fWmOx6+eWXh5736tWL3r1707lzZ1auXMm5554b9riburr068CBAxk4cGDo9aBBg/jZz37G888/z0MPPRSNME8o9T1WZ8+eTa9evejfv3+N7TpWYdGiRbz88svMnz+fk08+mbVr1zJx4kSys7MZO3ZsrMM7YTW2X+fPn8/UqVN58803SU9PD20/9Fvw3r17M2DAAHJycli0aBHXXHNNRPalqWhIn3bv3p3u3buHXg8aNIgtW7YwY8YM/vrXv0YrdIlDSgYi6Mcff+SDDz5gyZIlxyyXmZlJQUFBjW0FBQVkZmaG3q/elpWVVaPMaaedFt6gTwB17ddq06dP59FHH+WDDz6gd+/exyzbqVMnWrVqxebNm+PmBKtaffu1msPhoE+fPmzevBnQ8Xqo+vZpSUkJCxYs4MEHHzxu2Xg8Vv/whz8wadKkUGLUq1cvfvzxRx555JGjnmAd7fdrcnIyHo8Hm82GzWY75u/g5q4h/VptwYIF/O53v2Px4sVHDMc6XGpqKt26dQv9rmjOGtOnh+rfvz8ff/wxAK1atYr7Y1UiQ3MGImju3Lmkp6fXuD1gbQYOHMjy5ctrbFu2bFno29eOHTuSmZlZo0xRURGffvppjW9o40Vd+xXg8ccf56GHHmLp0qWcfvrpxy2/bds29uzZU+MkNl7Up18P5ff7+frrr0N9puP1oPr26eLFi6moqOB//ud/jls2Ho/V0tJSrNaaf7ZsNhuBQOConzne71en00m/fv1qlAkEAixfvjxujteG9CvAK6+8wlVXXcUrr7xSp2O8uLiYLVu2xMUx29A+PdzatWtD/aVjVSIm1jOYmyu/32/at29v7rrrriPeu/LKK82kSZNCrz/55BNjt9vN9OnTzTfffGOmTJlS661FU1NTzZtvvmm++uorc9FFF8XVrRqr1adfH330UeN0Os2rr75a4zZtBw4cMMYYc+DAAXPHHXeYVatWma1bt5oPPvjA9O3b13Tt2tWUl5dHbZ+agvr069SpU817771ntmzZYtasWWMuv/xy43a7zfr160NldLzWr0+rnXnmmWb06NFHbNexGjR27FjTpk2b0O0alyxZYlq1amXuvPPOUJlJkyaZK6+8MvS6+taif/jDH8w333xjZs2aVeutRV0ul5k3b57ZsGGDufbaa01qauoRt8xtrhrSry+//LKx2+1m1qxZNX6/FhYWhsrcfvvtZuXKlWbr1q3mk08+MUOHDjWtWrUyO3fujOr+xUJD+nTGjBnmjTfeMJs2bTJff/21ueWWW4zVajUffPBBqEy8H6sSGUoGIuS9994L3S/4cIMHDzZjx46tsW3RokWmW7duxul0mpNPPtm8/fbbNd4PBAJm8uTJJiMjw7hcLnPuuefWWndzV59+zcnJMcARjylTphhjjCktLTXnn3++ad26tXE4HCYnJ8eMHz8+Ln+p1qdfJ06caNq3b2+cTqfJyMgwv/jFL2rcW9wYHa/G1P93wLfffmsA8/777x9RXsdqUFFRkbnllltM+/btjdvtNp06dTL33nuvqaioCJUZO3asGTx4cI3PrVixwpx22mnG6XSaTp061Vi/odozzzwTOq779+9v/vOf/0R4b5qOhvTr4MGDa/39euhxPXr0aJOVlWWcTqdp06aNGT16tNm8eXMU9yx2GtKnjz32mOncubNxu92mZcuWZsiQIeaf//znEXXH87EqkWEx5jhLN4qIiIiISLOkOQMiIiIiInFKyYCIiIiISJxSMiAiIiIiEqeUDIiIiIiIxCklAyIiIiIicUrJgIiIiIhInFIyICIiIiISp5QMiIg0A+PGjePiiy+OdRgiUfPRRx8xYsQIsrOzsVgsvPHGG/X6fHl5OePGjaNXr17Y7fZa//0sWbKE8847j9atW5OcnMzAgQN57733GhX3ww8/zKBBg0hISCA1NbVOn7FYLLU+nnjiCQB++OEHrrnmGjp27IjH46Fz585MmTIFr9cbqmPjxo2cffbZZGRk4Ha76dSpE/fddx8+n69GW4WFhUyYMIGsrCxcLhfdunXjnXfeCb3/yCOP8POf/5ykpCTS09O5+OKL2bhxY736YMeOHVxxxRV069YNq9XKxIkTay03c+ZMunfvjsfjoV27dtx6662Ul5fXqy05PiUDIiJN3NFOBKofDzzwAH/605+YN29erEMViZqSkhJOPfVUZs2a1aDP+/1+PB4PN998M0OHDq21zEcffcR5553HO++8w5o1azj77LMZMWIEX3zxxVHrHTJkyDH/LXq9XkaNGsUNN9xQ51h37NhR4zFnzhwsFgsjR44E4NtvvyUQCPD888+zfv16ZsyYwXPPPcc999wTqsPhcPDb3/6W999/n40bNzJz5kxefPFFpkyZUiO28847jx9++IFXX32VjRs38uKLL9KmTZtQmQ8//JAJEybwn//8h2XLluHz+Tj//PMpKSmp8/5UVFTQunVr7rvvPk499dRay8yfP59JkyYxZcoUvvnmG2bPns3ChQtr7JOESayXQBYRkWPbsWNH6DFz5kyTnJxcY9uBAwdiHaJITAHm9ddfr7GtvLzc3H777SY7O9skJCSY/v37mxUrVtT6+bFjx5qLLrqoTm317NnTTJ069ajvDx482MydO/e49cydO9ekpKTUqc3DXXTRReacc845ZpnHH3/cdOzY8Zhlbr31VnPmmWeGXv/lL38xnTp1Ml6vt86x7Ny50wDmww8/DG3bt2+fueaaa0yrVq1MUlKSOfvss83atWtr/fzgwYPNLbfccsT2CRMmHLGPt912mznjjDPqHJvUja4MiIg0cZmZmaFHSkoKFoulxrbExMQjhgkNGTKEm266iYkTJ5KWlkZGRgYvvvgiJSUlXHXVVSQlJdGlSxfefffdGm2tW7eO4cOHk5iYSEZGBldeeSW7d++O8h6LNN6NN97IqlWrWLBgAV999RWjRo1i2LBhbNq0qcF1BgIBDhw4QMuWLcMYaf0UFBTw9ttvc8011xyz3P79+48Z5+bNm1m6dCmDBw8Obfv73//OwIEDmTBhAhkZGZxyyilMmzYNv99/zHaAGm2NGjWKnTt38u6777JmzRr69u3Lueeey969e+u6mwwaNIg1a9awevVqAL7//nveeecdfvGLX9S5DqkbJQMiIs3USy+9RKtWrVi9ejU33XQTN9xwA6NGjWLQoEF8/vnnnH/++Vx55ZWUlpYCwbHC55xzDn369OGzzz5j6dKlFBQUcNlll8V4T0TqJzc3l7lz57J48WLOOussOnfuzB133MGZZ57J3LlzG1zv9OnTKS4ujum/iZdeeomkpCQuvfTSo5bZvHkzzzzzDNddd90R7w0aNAi3203Xrl0566yzePDBB0Pvff/997z66qv4/X7eeecdJk+ezJNPPskf//jHWtsJBAJMnDiRM844g1NOOQWAjz/+mNWrV7N48WJOP/10unbtyvTp00lNTeXVV1+t835eccUVPPjgg5x55pk4HA46d+7MkCFDNEwoApQMiIg0U6eeeir33XcfXbt25e6778btdtOqVSvGjx9P165duf/++9mzZw9fffUVAM8++yx9+vRh2rRp9OjRgz59+jBnzhxWrFjBd999F+O9Eam7r7/+Gr/fT7du3UhMTAw9PvzwQ7Zs2dKgOufPn8/UqVNZtGgR6enpoe3Tpk2r0ca//vUvrr/++hrbcnNzw7VrzJkzhzFjxuB2u2t9Py8vj2HDhjFq1CjGjx9/xPsLFy7k888/Z/78+bz99ttMnz499F4gECA9PZ0XXniBfv36MXr0aO69916ee+65WtuaMGEC69atY8GCBaFtX375JcXFxZx00kk1+mDr1q316vuVK1cybdo0/vznP/P555+zZMkS3n77bR566KE61yF1Y491ACIiEhm9e/cOPbfZbJx00kn06tUrtC0jIwOAnTt3AsE/4itWrCAxMfGIurZs2UK3bt0iHLFIeBQXF2Oz2VizZg02m63Ge7Ud38ezYMECfve737F48eIjJhtff/31Na4UjBkzhpEjR9b45j47O7vebdbmX//6Fxs3bmThwoW1vr99+3bOPvtsBg0axAsvvFBrmXbt2gHQs2dP/H4/1157Lbfffjs2m42srCwcDkeNPvvZz35Gfn4+Xq8Xp9MZ2n7jjTfy1ltv8dFHH9G2bdvQ9uLiYrKysli5cuURbdf17kkAkydP5sorr+R3v/sdAL169aKkpIRrr72We++9F6tV32eHi5IBEZFmyuFw1HhtsVhqbLNYLEDw20AI/hEfMWIEjz322BF1ZWVlRTBSkfDq06cPfr+fnTt3ctZZZzWqrldeeYWrr76aBQsWcOGFFx7xfsuWLWuMl/d4PKSnp9OlS5dGtVub2bNn069fv1rvwJOXl8fZZ59Nv379mDt3bp1OlgOBAD6fj0AggM1m44wzzmD+/PkEAoHQ57/77juysrJCiYAxhptuuonXX3+dlStX0rFjxxp19u3bl/z8fOx2Ox06dGjwvpaWlh6xD9VJijGmwfXKkZQMiIgIEPwj/tprr9GhQwfsdv15kKatuLiYzZs3h15v3bqVtWvX0rJlS7p168aYMWP47W9/y5NPPkmfPn3YtWsXy5cvp3fv3qGT+g0bNuD1etm7dy8HDhxg7dq1AJx22mlAcGjQ2LFj+dOf/sSAAQPIz88Hgif8KSkpDYo7NzeXvXv3kpubi9/vD7XZpUuX0FWLHj168Mgjj3DJJZeEPldUVMTixYt58sknj6gzLy+PIUOGkJOTw/Tp09m1a1fovczMTABefvllHA4HvXr1wuVy8dlnn3H33XczevTo0JcEN9xwA88++yy33HILN910E5s2bWLatGncfPPNofomTJjA/PnzefPNN0lKSgr1SUpKCh6Ph6FDhzJw4EAuvvhiHn/8cbp168b27dt5++23ueSSSzj99NMBQvtdXFzMrl27WLt2LU6nk549ewIwYsQInnrqKfr06cOAAQPYvHkzkydPZsSIEUdc7ZFGivXtjEREpO6OdjvCw2+NWNvt+nJycsyMGTNqbOOQWzLm5eWZ1q1bm1//+tdm9erVZvPmzWbp0qVm3LhxprKyMrw7ItJIK1asMMARj7FjxxpjjPF6veb+++83HTp0MA6Hw2RlZZlLLrnEfPXVV6E6cnJyaq2j2uDBg4/ZRm2Od2vRsWPH1lrnobc9BY6o4/nnnzcej8cUFhYeUefcuXNrrfPQfVmwYIHp27evSUxMNC1atDA9e/Y006ZNM2VlZTXq+ve//20GDBhgXC6X6dSpk3n44Ydr/Ps/WjuHxltUVGRuuukmk52dbRwOh2nXrp0ZM2aMyc3NPWY9OTk5ofd9Pp954IEHTOfOnY3b7Tbt2rUzv//9782+ffuO2rfSMBZjdK1FROREMW/ePCZOnEhhYWGN7ePGjaOwsDC0CuuQIUM47bTTmDlzZqhMhw4dmDhxYo3VPi0WC6+//nrotqSbNm3irrvuYsWKFVRUVJCTk8OwYcN46qmnQsOKRESk+VAyICIiIiISpzQVW0REREQkTikZEBERERGJU0oGRERERETilJIBEREREZE4pWRARERERCROKRkQEREREYlTSgZEREREROKUkgERERERkTilZEBEREREJE4pGRARERERiVNKBkRERERE4pSSARERERGROPX/AZTDnQbmpjxdAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# to illustrate what happens if start_time_unix_nano is ignored, build some 'wrong' DataFrames:\n", + "w_count_df=sums_df[\n", + " (sums_df['name'] == 'process.runtime.go.gc.count') & (sums_df['emitter'] == 'go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice')\n", + "][\n", + " ['time_unix_nano', 'sum_int']\n", + "].groupby(['time_unix_nano']).sum()\n", + "w_count_df=w_count_df.sort_values(['time_unix_nano'])\n", + "w_count_df['sum_delta'] = w_count_df['sum_int'] - w_count_df['sum_int'].shift(1, fill_value=0)\n", + "\n", + "w_pause_df=sums_df[\n", + " (sums_df['name'] == 'process.runtime.go.gc.pause_total_ns') & (sums_df['emitter'] == 'go.opentelemetry.io/contrib/instrumentation/runtime@productcatalogservice')\n", + "][\n", + " ['time_unix_nano', 'sum_int']\n", + "].groupby(['time_unix_nano']).sum()\n", + "w_pause_df=w_pause_df.sort_values(['time_unix_nano'])\n", + "w_pause_df['sum_delta'] = w_pause_df['sum_int'] - w_pause_df['sum_int'].shift(1, fill_value=0)\n", + "\n", + "\n", + "fig,axs_cnt = plot.subplots()\n", + "axs_ns = axs_cnt.twinx()\n", + "\n", + "axs_cnt.plot(w_count_df.index, w_count_df['sum_delta'],\n", + " label='Product Catalog Service, GC count, INCORRECT delta',\n", + " color='r')\n", + "axs_cnt.plot(catalog_count1_df.index, catalog_count1_df['sum_delta'],\n", + " label='Product Catalog Service, GC count, Correct delta',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][0])\n", + "axs_cnt.plot(catalog_count2_df.index, catalog_count2_df['sum_delta'],\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][0])\n", + "\n", + "axs_ns.plot(w_pause_df.index, w_pause_df['sum_delta'] / 1000000,\n", + " label='Product Catalog Service, GC pause, INCORRECT delta',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][3])\n", + "axs_ns.plot(catalog_pause1_df.index, catalog_pause1_df['sum_delta'] / 1000000,\n", + " label='Product Catalog Service, GC pause, Correct delta',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][2])\n", + "axs_ns.plot(catalog_pause2_df.index, catalog_pause2_df['sum_delta'] / 1000000,\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][2])\n", + "\n", + "axs_cnt.set_xlabel('Time')\n", + "axs_cnt.set_ylabel('Completed GC Cycles')\n", + "axs_ns.set_ylabel('GC stop-the-world pauses, millisec')\n", + "fig.set_figwidth(8)\n", + "fig.set_figheight(8)\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "082e2972-68c1-4e5b-b841-56ceade9f953", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## Sum values\n", + "\n", + "Sum `metrics` are further split into two sub-types, depending on if they're reported in ***integers*** or ***doubles***. The former will have a `sum_type` equal to `AS_INT` and its actual value in `sum_int`. \n", + "The latter - a `sum_type` of `AS_DOUBLE` and the value in `sum_double`.\n", + "\n", + "Just like with the Gauge `metrics` above - we'll create a new DataFrame to avoid using the same check again and again (to be used later):\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## Sum values\n", + "\n", + "Sum `metrics` are further split into two sub-types, depending on if they're reported in ***integers*** or ***doubles***. The former will have a `sum_type` equal to `AS_INT` and its actual value in `sum_int`. \n", + "The latter - a `sum_type` of `AS_DOUBLE` and the value in `sum_double`.\n", + "\n", + "Just like with the Gauge `metrics` above - we'll create a new DataFrame to avoid using the same check again and again (to be used later):" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "fe85fc11", + "metadata": {}, + "outputs": [], + "source": [ + "sums_values_df=pd.concat([\n", + " sums_df[sums_df['sum_type'] == 'AS_INT'][['sum_int']].rename(columns={'sum_int': 'value'}),\n", + " sums_df[sums_df['sum_type'] == 'AS_DOUBLE'][['sum_double']].rename(columns={'sum_double': 'value'})\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "8f68eb44-9a4b-4100-b9ee-5dbe9fd8e1d4", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Histogram metrics\n", + "\n", + "Another way you can 'aggregate' measurements is to use a histogram `metric`. As the name suggests - OpenTelemetry will transmit a histogram of observed measurements, allowing you to have a bit more information on the metric compared to `SUMs` and `GAUGEs`.\n", + "\n", + "Histograms essentially **split** the potential values of the metric into ranges (called **buckets**), like - 0 to 5, 5 to 10, 10 to 25 and so on. When your code supplies a new observation of the metric - OpenTelemetry finds which bucket this observation belongs to and \n", + "increases a counter for that bucket. Or in other words histograms are **counting** how many observations were made per range of values seen. Again, over a period of time.\n", + "\n", + "For examples, take a look at the table below. Some of the columns were introduced earlier and they have the same meaning here. The histogram-specific columns to look at are:\n", + "- `histogram_count` - giving the total number of observations (basically all values in all `histogram_bucket_counts` added together)\n", + "- `histogram_sum` - the sum of ***only the positive*** `metric` values observed, with ***negative values IGNORED;*** the sum is **monotonic** (see above for monotinic sums)\n", + "- `histogram_min` and `histogram_max` - the minimum and maximum values observed\n", + "- `histogram_bucket_counts` - the counters per bucket\n", + "- `histogram_explicit_bounds` - the ranges for the buckets\n", + "\n", + "We'll explore these later, but for now - take a look at some examples, as emitted by our demo Astronomy webshop:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Histogram metrics\n", + "\n", + "Another way you can 'aggregate' measurements is to use a histogram `metric`. As the name suggests - OpenTelemetry will transmit a histogram of observed measurements, allowing you to have a bit more information on the metric compared to `SUMs` and `GAUGEs`.\n", + "\n", + "Histograms essentially **split** the potential values of the metric into ranges (called **buckets**), like - 0 to 5, 5 to 10, 10 to 25 and so on. When your code supplies a new observation of the metric - OpenTelemetry finds which bucket this observation belongs to and \n", + "increases a counter for that bucket. Or in other words histograms are **counting** how many observations were made per range of values seen. Again, over a period of time.\n", + "\n", + "For examples, take a look at the table below. Some of the columns were introduced earlier and they have the same meaning here. The histogram-specific columns to look at are:\n", + "- `histogram_count` - giving the total number of observations (basically all values in all `histogram_bucket_counts` added together)\n", + "- `histogram_sum` - the sum of ***only the positive*** `metric` values observed, with ***negative values IGNORED;*** the sum is **monotonic** (see above for monotinic sums)\n", + "- `histogram_min` and `histogram_max` - the minimum and maximum values observed\n", + "- `histogram_bucket_counts` - the counters per bucket\n", + "- `histogram_explicit_bounds` - the ranges for the buckets\n", + "\n", + "We'll explore these later, but for now - take a look at some examples, as emitted by our demo Astronomy webshop:" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "6440fb84", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunittypehistogram_counthistogram_sumhistogram_minhistogram_maxhistogram_bucket_countshistogram_explicit_boundsstart_time_unix_nanotime_unix_nanoaggregation_temporality
7http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM10.0019690.0019690.001969[0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'
8http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM30.0166410.0018910.010135[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'
9http.server.durationMeasures the duration of inbound HTTP requests.sHISTOGRAM30.0032350.0004370.002229[0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654051381723626941865978359b'AGGREGATION_TEMPORALITY_CUMULATIVE'
10http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM3132.044.044.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'
11http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM3117.039.039.0[0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'
12http.server.response.sizeMeasures the size of HTTP request messages (compressed).ByHISTOGRAM1235.0235.0235.0[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269298654194511723626941865985661b'AGGREGATION_TEMPORALITY_CUMULATIVE'
39http.client.durationmeasures the duration of the outbound HTTP requestmsHISTOGRAM15000.05000.05000.0[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269351110983931723626943634161700b'AGGREGATION_TEMPORALITY_CUMULATIVE'
40http.client.durationmeasures the duration of the outbound HTTP requestmsHISTOGRAM59000.01000.03000.0[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269351110983931723626943634161700b'AGGREGATION_TEMPORALITY_CUMULATIVE'
41http.client.durationmeasures the duration of the outbound HTTP requestmsHISTOGRAM23000.01000.02000.0[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269351110983931723626943634161700b'AGGREGATION_TEMPORALITY_CUMULATIVE'
42http.client.durationmeasures the duration of the outbound HTTP requestmsHISTOGRAM41664000.026000.0836000.0[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269351110983931723626943634161700b'AGGREGATION_TEMPORALITY_CUMULATIVE'
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "7 http.server.duration \n", + "8 http.server.duration \n", + "9 http.server.duration \n", + "10 http.server.response.size \n", + "11 http.server.response.size \n", + "12 http.server.response.size \n", + "39 http.client.duration \n", + "40 http.client.duration \n", + "41 http.client.duration \n", + "42 http.client.duration \n", + "\n", + " description unit type \\\n", + "7 Measures the duration of inbound HTTP requests. s HISTOGRAM \n", + "8 Measures the duration of inbound HTTP requests. s HISTOGRAM \n", + "9 Measures the duration of inbound HTTP requests. s HISTOGRAM \n", + "10 Measures the size of HTTP request messages (compressed). By HISTOGRAM \n", + "11 Measures the size of HTTP request messages (compressed). By HISTOGRAM \n", + "12 Measures the size of HTTP request messages (compressed). By HISTOGRAM \n", + "39 measures the duration of the outbound HTTP request ms HISTOGRAM \n", + "40 measures the duration of the outbound HTTP request ms HISTOGRAM \n", + "41 measures the duration of the outbound HTTP request ms HISTOGRAM \n", + "42 measures the duration of the outbound HTTP request ms HISTOGRAM \n", + "\n", + " histogram_count histogram_sum histogram_min histogram_max \\\n", + "7 1 0.001969 0.001969 0.001969 \n", + "8 3 0.016641 0.001891 0.010135 \n", + "9 3 0.003235 0.000437 0.002229 \n", + "10 3 132.0 44.0 44.0 \n", + "11 3 117.0 39.0 39.0 \n", + "12 1 235.0 235.0 235.0 \n", + "39 1 5000.0 5000.0 5000.0 \n", + "40 5 9000.0 1000.0 3000.0 \n", + "41 2 3000.0 1000.0 2000.0 \n", + "42 4 1664000.0 26000.0 836000.0 \n", + "\n", + " histogram_bucket_counts \\\n", + "7 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "8 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "9 [0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "10 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "11 [0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "12 [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "39 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0] \n", + "40 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 0, 0, 0] \n", + "41 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0] \n", + "42 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4] \n", + "\n", + " histogram_explicit_bounds \\\n", + "7 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "8 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "9 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "10 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "11 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "12 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "39 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "40 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "41 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "42 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "7 1723626929865405138 1723626941865978359 \n", + "8 1723626929865405138 1723626941865978359 \n", + "9 1723626929865405138 1723626941865978359 \n", + "10 1723626929865419451 1723626941865985661 \n", + "11 1723626929865419451 1723626941865985661 \n", + "12 1723626929865419451 1723626941865985661 \n", + "39 1723626935111098393 1723626943634161700 \n", + "40 1723626935111098393 1723626943634161700 \n", + "41 1723626935111098393 1723626943634161700 \n", + "42 1723626935111098393 1723626943634161700 \n", + "\n", + " aggregation_temporality \n", + "7 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "8 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "9 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "10 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "11 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "12 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "39 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "40 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "41 b'AGGREGATION_TEMPORALITY_CUMULATIVE' \n", + "42 b'AGGREGATION_TEMPORALITY_CUMULATIVE' " + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histograms_df=metrics_df[metrics_df['type'] == 'HISTOGRAM']\n", + "histograms_df[\n", + " [\n", + " 'name', 'description', 'unit', 'type',\n", + " 'histogram_count', 'histogram_sum', 'histogram_min', 'histogram_max',\n", + " 'histogram_bucket_counts', 'histogram_explicit_bounds',\n", + " 'start_time_unix_nano', 'time_unix_nano', 'aggregation_temporality'\n", + " ]\n", + "].head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "977ae25e-f6f9-406e-9256-7bcc5e7c97bc", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### A histogram metric\n", + "\n", + "Let's pick one histogram `metric` from our demo data set and explore it over time:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### A histogram metric\n", + "\n", + "Let's pick one histogram `metric` from our demo data set and explore it over time:" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "8109eb47-993b-446f-b547-4bf498f75144", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namedescriptionunittypehistogram_counthistogram_sumhistogram_minhistogram_maxhistogram_bucket_countshistogram_explicit_boundsstart_time_unix_nanotime_unix_nanoaggregation_temporalitya_http.flavora_http.methoda_http.schemea_http.status_codea_net.host.namea_net.host.portemitter
1727http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM5759994.3940650.825294828.055515[0, 195, 136, 153, 64, 13, 6, 5, 1, 1, 1, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269409890000001723626992168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
1728http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM2625.7792790.4423613.004565[0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269411390000001723626992168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp308opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
1729http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM3747.7695089.542451607.283459[0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269790400000001723626992168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1POSThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
3577http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM121921869.3651280.7697531810.788853[0, 476, 306, 290, 100, 24, 6, 7, 5, 1, 1, 3, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269409890000001723627052168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
3578http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM5749.7254420.4273573.004565[0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269411390000001723627052168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp308opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
3579http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM101092.9088146.764419607.283459[0, 0, 3, 2, 1, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269790400000001723627052168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1POSThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
4520http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM192266145.7059660.6044675014.63826[0, 919, 469, 354, 119, 29, 6, 8, 5, 1, 1, 3, 0, 8, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269409890000001723627112168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
4521http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM9675.2309850.2816283.004565[0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269411390000001723627112168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp308opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
4522http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM151173.3082226.764419607.283459[0, 0, 5, 4, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236269790400000001723627112168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1POSThttp200opentelemetry-demo-frontendproxy8080.0@opentelemetry/instrumentation-http@frontend
4523http.server.durationMeasures the duration of inbound HTTP requests.msHISTOGRAM52221367.7308933007.86297515004.564657[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 3, 0, 4][0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1...17236270548750000001723627112168000000b'AGGREGATION_TEMPORALITY_CUMULATIVE'1.1GEThttp200opentelemetry-demo-frontendproxy<NA>@opentelemetry/instrumentation-http@frontend
\n", + "
" + ], + "text/plain": [ + " name description \\\n", + "1727 http.server.duration Measures the duration of inbound HTTP requests. \n", + "1728 http.server.duration Measures the duration of inbound HTTP requests. \n", + "1729 http.server.duration Measures the duration of inbound HTTP requests. \n", + "3577 http.server.duration Measures the duration of inbound HTTP requests. \n", + "3578 http.server.duration Measures the duration of inbound HTTP requests. \n", + "3579 http.server.duration Measures the duration of inbound HTTP requests. \n", + "4520 http.server.duration Measures the duration of inbound HTTP requests. \n", + "4521 http.server.duration Measures the duration of inbound HTTP requests. \n", + "4522 http.server.duration Measures the duration of inbound HTTP requests. \n", + "4523 http.server.duration Measures the duration of inbound HTTP requests. \n", + "\n", + " unit type histogram_count histogram_sum histogram_min \\\n", + "1727 ms HISTOGRAM 575 9994.394065 0.825294 \n", + "1728 ms HISTOGRAM 26 25.779279 0.442361 \n", + "1729 ms HISTOGRAM 3 747.769508 9.542451 \n", + "3577 ms HISTOGRAM 1219 21869.365128 0.769753 \n", + "3578 ms HISTOGRAM 57 49.725442 0.427357 \n", + "3579 ms HISTOGRAM 10 1092.908814 6.764419 \n", + "4520 ms HISTOGRAM 1922 66145.705966 0.604467 \n", + "4521 ms HISTOGRAM 96 75.230985 0.281628 \n", + "4522 ms HISTOGRAM 15 1173.308222 6.764419 \n", + "4523 ms HISTOGRAM 52 221367.730893 3007.862975 \n", + "\n", + " histogram_max \\\n", + "1727 828.055515 \n", + "1728 3.004565 \n", + "1729 607.283459 \n", + "3577 1810.788853 \n", + "3578 3.004565 \n", + "3579 607.283459 \n", + "4520 5014.63826 \n", + "4521 3.004565 \n", + "4522 607.283459 \n", + "4523 15004.564657 \n", + "\n", + " histogram_bucket_counts \\\n", + "1727 [0, 195, 136, 153, 64, 13, 6, 5, 1, 1, 1, 0, 0, 0, 0, 0] \n", + "1728 [0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "1729 [0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0] \n", + "3577 [0, 476, 306, 290, 100, 24, 6, 7, 5, 1, 1, 3, 0, 0, 0, 0] \n", + "3578 [0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "3579 [0, 0, 3, 2, 1, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0] \n", + "4520 [0, 919, 469, 354, 119, 29, 6, 8, 5, 1, 1, 3, 0, 8, 0, 0] \n", + "4521 [0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] \n", + "4522 [0, 0, 5, 4, 2, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0] \n", + "4523 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 3, 0, 4] \n", + "\n", + " histogram_explicit_bounds \\\n", + "1727 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "1728 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "1729 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "3577 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "3578 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "3579 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "4520 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "4521 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "4522 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "4523 [0.0, 5.0, 10.0, 25.0, 50.0, 75.0, 100.0, 250.0, 500.0, 750.0, 1000.0, 2500.0, 5000.0, 7500.0, 1... \n", + "\n", + " start_time_unix_nano time_unix_nano \\\n", + "1727 1723626940989000000 1723626992168000000 \n", + "1728 1723626941139000000 1723626992168000000 \n", + "1729 1723626979040000000 1723626992168000000 \n", + "3577 1723626940989000000 1723627052168000000 \n", + "3578 1723626941139000000 1723627052168000000 \n", + "3579 1723626979040000000 1723627052168000000 \n", + "4520 1723626940989000000 1723627112168000000 \n", + "4521 1723626941139000000 1723627112168000000 \n", + "4522 1723626979040000000 1723627112168000000 \n", + "4523 1723627054875000000 1723627112168000000 \n", + "\n", + " aggregation_temporality a_http.flavor a_http.method \\\n", + "1727 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "1728 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "1729 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 POST \n", + "3577 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "3578 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "3579 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 POST \n", + "4520 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "4521 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "4522 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 POST \n", + "4523 b'AGGREGATION_TEMPORALITY_CUMULATIVE' 1.1 GET \n", + "\n", + " a_http.scheme a_http.status_code a_net.host.name \\\n", + "1727 http 200 opentelemetry-demo-frontendproxy \n", + "1728 http 308 opentelemetry-demo-frontendproxy \n", + "1729 http 200 opentelemetry-demo-frontendproxy \n", + "3577 http 200 opentelemetry-demo-frontendproxy \n", + "3578 http 308 opentelemetry-demo-frontendproxy \n", + "3579 http 200 opentelemetry-demo-frontendproxy \n", + "4520 http 200 opentelemetry-demo-frontendproxy \n", + "4521 http 308 opentelemetry-demo-frontendproxy \n", + "4522 http 200 opentelemetry-demo-frontendproxy \n", + "4523 http 200 opentelemetry-demo-frontendproxy \n", + "\n", + " a_net.host.port emitter \n", + "1727 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "1728 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "1729 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "3577 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "3578 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "3579 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "4520 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "4521 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "4522 8080.0 @opentelemetry/instrumentation-http@frontend \n", + "4523 @opentelemetry/instrumentation-http@frontend " + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "frontend_duration_df=histograms_df[(histograms_df['name'] == 'http.server.duration') & (histograms_df['emitter'] == '@opentelemetry/instrumentation-http@frontend')]\n", + "frontend_duration_df.dropna(axis=1, how='all').head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "id": "1efc187e-91da-42c0-9561-cfc1b22e3b4e", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### A single histogram\n", + "\n", + "Let's plot a **single data point** of a histogram `metric` (the first row in the table above):\n", + "\n", + "***Note:*** the ***average request duration*** is not present in the data, it is computed in the code below.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### A single histogram\n", + "\n", + "Let's plot a **single data point** of a histogram `metric` (the first row in the table above):\n", + "\n", + "***Note:*** the ***average request duration*** is not present in the data, it is computed in the code below." + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "24b5f55a-136e-4efb-951b-0dd940a66533", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 0.01, 'Duration of inbound HTTP requests at unix time 1723626992168000000')" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA68AAAPrCAYAAAC3UbqTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADQY0lEQVR4nOzdd3QV1d7G8eekkkAKwVRaIr2EjvQapIo0BTR0pAkivVwJAipNehEUqQqiIiAXpAsixdCLgiAY2ksoAgETBFLO+weLuRwSIAeTnBP4ftY6a2X27Jn5zSRk8WTP7DGZzWazAAAAAACwYw62LgAAAAAAgCchvAIAAAAA7B7hFQAAAABg9wivAAAAAAC7R3gFAAAAANg9J1sXAAAAANtJTExUfHy8rcsAADk7O8vR0fGR6wmvAAAAzyGz2ayLFy8qJibG1qUAgMHb21sBAQEymUzJ1hFeAQAAnkP3g6ufn5/c3d1T/I8iAGQUs9msW7du6fLly5KkwMDAZH0IrwAAAM+ZxMREI7jmyJHD1uUAgCTJzc1NknT58mX5+fklu4WYCZsAAACeM/efcXV3d7dxJQBg6f7vpZSexSe8AgAAPKe4VRiAvXnc7yXCKwAAAJAKp0+flslk0sGDB21diuH3339XxYoVlSVLFpUqVcrW5eApdOjQQU2bNrX5Pp5kwYIF8vb2TtdjPAnhFQAAAJlChw4dZDKZNHbsWIv2lStXPrejyO+//76yZs2q48ePa/PmzSn2eVSw2bp1q0wmk2JiYoxr+6hPcHDwY9ebTCadPn1aI0aMMJadnJwUHBysvn37KjY2Np2vhG2kRWicOnWqFixYkCb12LMHf96eFhM2AQAAQJIUPGRNhh7v9NhGVm+TJUsWjRs3Tt26dVP27NnToaqMd/fuXbm4uDzVtqdOnVKjRo2UN2/ef1XD1KlTLf4oEBgYqPnz56t+/fqS7j1/6OzsbKxv3ry5ihcvrlGjRhltvr6+kqRixYpp06ZNSkhI0I4dO9SpUyfdunVLn376aapq+TfXIzPy8vKydQmZBiOvAAAAyDTq1KmjgIAAjRkz5pF9RowYkewW2ilTpig4ONhYvj9iNnr0aPn7+8vb21ujRo1SQkKCBg4cKB8fH+XKlUvz589Ptv/ff/9dlStXVpYsWVS8eHH99NNPFut//fVXNWjQQNmyZZO/v7/atm2rv/76y1hfs2ZN9erVS3369NELL7ygevXqpXgeSUlJGjVqlHLlyiVXV1eVKlVK69atM9abTCbt27dPo0aNkslk0ogRIx5z5R7Py8tLAQEBxkf63/s2AwIClDt3bov1Li4ucnd3t2i7PzOsk5OTAgIClCtXLrVq1Urh4eFatWrVI48dHBysDz74QO3atZOnp6e6du0qSdq+fbuqVasmNzc35c6dW71791ZcXJyx3eXLl9W4cWO5ubkpJCREixcvVnBwsKZMmSIp5du8Y2JiZDKZtHXrVqPtSd+vZcuWKTQ0VG5ubsqRI4fq1KmjuLg4jRgxQgsXLtT3339vjDZv3bpVd+/eVa9evRQYGKgsWbIob968j/15fXj0tmbNmurdu7cGDRokHx8fBQQEpPp7O3LkSPn6+srT01Pdu3fX3bt3La7z/WtzX6lSpSz2HRMTo27dusnf39/4+V69enWKx7py5YrKlSunZs2a6c6dO0pKStKYMWMUEhIiNzc3lSxZUsuWLZN073tRq1YtSVL27NllMpnUoUOHVJ3TgwivAAAAyDQcHR01evRoTZ8+XefPn/9X+/rxxx914cIFbdu2TZMmTdL777+vV155RdmzZ1dkZKS6d++ubt26JTvOwIED1b9/fx04cECVKlVS48aNdfXqVUn3/vNfu3ZtlS5dWnv37tW6det06dIltWzZ0mIfCxculIuLi3bs2KHZs2enWN/UqVM1ceJETZgwQYcPH1a9evX06quv6o8//pAkRUdHq1ixYurfv7+io6M1YMCAf3U90oubm5tFiErJhAkTVLJkSR04cEARERE6deqU6tevrxYtWujw4cP6+uuvtX37dvXq1cvYpkOHDjp37py2bNmiZcuW6ZNPPjHeEZpaT/p+RUdH64033lCnTp107Ngxbd26Vc2bN5fZbNaAAQPUsmVL1a9fX9HR0YqOjlblypU1bdo0rVq1St98842OHz9uhGprLFy4UFmzZlVkZKTGjx+vUaNGaePGjY/dZvPmzUaNX331lZYvX66RI0em+phJSUlq0KCBduzYoS+//FJHjx7V2LFjk72uRpLOnTunatWqqXjx4lq2bJlcXV01ZswYLVq0SLNnz9Zvv/2mvn37qk2bNvrpp5+UO3dufffdd5Kk48ePKzo6WlOnTrXqmkjcNgwAAIBMplmzZipVqpTef/99zZ0796n3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q5Y8PDzk6empsmXLau/evdq6das6duyoGzduGCPND+73YWPHjpW/v788PDzUuXNn3b5922J9zZo11adPH4u2pk2bWozMBwcH64MPPlC7du3k6emprl27SpIGDx6sggULyt3dXS+++KIiIiIUHx8v6d7o8MiRI3Xo0CGLUXIp+W3DR44cUe3ateXm5qYcOXKoa9euio2NTfa9mjBhggIDA5UjRw717NnTOBaSI7wCAAA858xms5Ju3bLJx2w2W11vp06dNH/+fGN53rx56tixY7J+cXFx6tevn/bu3avNmzfLwcFBzZo1U1JSkiSpXbt2atiwocLDw5WQkKA1a9bo888/1+LFi+Xu7v70FzQd3Q+1jxsl3Lx5s44fP66NGzdq9erVio+PV7169eTh4aGff/5ZO3bsULZs2VS/fn1jPxMnTtSCBQs0b948bd++XdeuXdOKFSusru/111/X5cuXtXbtWu3bt09lypRRWFiYrl27JkkKDw9Xrly5tGfPHu3bt09DhgyRs7OzKleurClTpsjT09MYfR4wYECKx/jmm280YsQIjR49Wnv37lVgYKA++eQTq2uVpAkTJqhkyZI6cOCAIiIiJEkeHh5asGCBjh49qqlTp2rOnDmaPHmypHuj6g+PlD84Sn5fXFyc6tWrp+zZs2vPnj369ttvtWnTJvXq1cui35YtW3Tq1Clt2bJFCxcu1IIFC4wwjOScbF0AAAAAbMv8zz86XqasTY5daP8+mawMim3atNHQoUN15swZSdKOHTu0dOlSbd261aJfixYtLJbnzZsnX19fHT16VMWLF5ckffrppypRooR69+6t5cuXa8SIESpb9vHX4saNG8qWLZtVNaeF6OhoTZgwQTlz5jRGVFOSNWtWff7553JxcZEkffnll0pKStLnn38uk8kkSZo/f768vb21detW1a1bV1OmTNHQoUPVvHlzSdLs2bO1fv16q+rbvn27du/ercuXLxu3z06YMEErV67UsmXL1LVrV509e1YDBw5U4cKFJUkFChQwtvfy8pLJZFJAQMBjjzNlyhR17txZnTt3liR9+OGH2rRpU7LR19SoXbu2+vfvb9E2bNgw4+vg4GANGDBAS5cu1aBBg+Tm5mYxUv4oS5Ys0e3bt7Vo0SJlzZpVkjRjxgw1btxY48aNk7+/vyQpe/bsmjFjhhwdHVW4cGE1atRI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yjo6WadOnauqzxlKly6tzp07a+rUqRo9erQ++OADSZcfw35+fqpQocJlf0cAAP8uhFcAKGAXLlxQcnKykpOTtW3bNj3++ONKTU21rmpbuXJllStXTkOGDNHOnTs1Z84cvfPOOw7LGDRokNatW6e+fftq8+bN2r59uyZMmKDjx4879KtataqWLFmir7/+2rrqa6dOnVSqVCm1bt1aP/74o/bs2aOlS5fqiSee0MGDByVJFSpU0ObNm7Vjxw4dP34839vB7N+/X/3799eOHTv0+eefa8yYMXryySclSVWqVFHr1q3Vs2dPrVixQr/88osefvhhlSlTRq1bt5b0zxVpjx07prfeeku7d+/WuHHjNG/evKvap1FRUWrWrJl69+6tn376SRs2bFCPHj0cjlBPmTJFH3/8sbZs2aI//vhDU6dOlbe3tyIiInJdZp06dVSqVKkrushPlSpVtH79ei1YsEC///67XnrpJa1bt+6qtqFatWpq0qSJevXqpbVr12rjxo3q1auXvL29raPmTZo0UVxcnNq0aaMffvhBe/fu1apVq/TCCy9o/fr1OnfunPr166elS5dq3759WrlypdatW+dw0ak1a9bI09NTcXFxV1VfUXv55Zc1e/Zs7dq1S7/99pu+//57azuuZAwPGTJE77zzjt577z3t3LlTP//8s8aMGePMTQIAFDLCKwAUsPnz5yssLExhYWGqX7++1q1bpxkzZqhRo0aS/pma+fnnn2v79u2qWbOm3nzzTQ0bNsxhGVWrVtUPP/ygX375RfXq1VNcXJxmz56d6z0yo6KitHjxYn3++ed65pln5OPjo+XLl6t8+fJq27atqlevru7du+v8+fPy9/eXJPXs2VNRUVGqW7euSpcunW+Ae/TRR3Xu3DnVq1dPiYmJevLJJ9WrVy/r9cmTJys2Nlb33HOP4uLiZIzR3LlzrSmn1atX1/jx4zVu3DjVqlVLa9eu1YABA656v06ePFnh4eGKj49X27Zt1atXLwUHB1uvBwYG6sMPP1SDBg1Us2ZNLVq0SN99912eV3l2dXVV165dc52aml3v3r3Vtm1bdezYUfXr19dff/2lvn37XvU2/L//9/8UEhKihg0b6r777lPPnj3l5+dnnXvr4uKiuXPnqmHDhuratauqVq2qBx54QPv27VNISIhcXV31119/6dFHH1XVqlXVoUMHNW/eXEOHDrXW8fnnn6tTp07y8fGx2rp06WKNP7vw8PDQoEGDVLNmTTVs2FCurq6aPn26JF3RGO7cubNGjx6t8ePHKyYmRvfcc4/DLZoAAP8+Lib7iUgAAPxHJCcnKyYmRj///HOeR2gL08GDB1WuXDktWrSoQC4+dPz4cUVFRWn9+vWKjIy02uPj43XnnXdqyJAh170OAACchfAKAPhP++abb1SyZEndcccdhb6uxYsXKzU1VTVq1NDhw4f13HPP6c8//9Tvv/9+VffEzcv69eu1e/dudezY0WpLSUlRTEyMtm/fLl9f3+teBwAAzkJ4BQCgiCxYsEDPPPOM/vjjD/n5+em2227T6NGjnXLUFwCAGw3hFQAAAABge1ywCQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV4BAAAAALZHeAUAAAAA2B7hFQAAAABge4RXAAAAAIDtEV7xnzJkyBC5uLg4u4x8paen67nnnlO5cuVUrFgxtWnTJs++jRo1UqNGja5pPY0aNdJNN910bUU62d69e+Xi4qIpU6Y4uxTguri4uGjIkCGFvp7r+awAAMAuCK+4alOmTJGLi4v18PLyUnh4uBISEvTee+/p9OnTTq3v7NmzGjJkiJYuXerUOq7VpEmTNGLECLVv316ffPKJnn76aWeXdMNaunSpXFxc9NVXX+X6epcuXeTr6ysp57jO61GhQoUr7if93xcmWQ8fHx9FR0frxRdf1KlTp4pqV9jWqlWrNGTIEJ08ebLI1z1+/Ph/1RcgW7du1ZAhQ7R3715nl3JZqampGjx4sJo1a6agoKB8v4zK7/fs7rvvtvpt375dzz33nGrXri0/Pz+FhYWpZcuWWr9+fY5lzpo1SwkJCQoPD5enp6fKli2r9u3ba8uWLbnWcPr0aT333HOKjIyUp6enypQpo/bt2+vs2bNWn6SkJHXr1k1Vq1aVj4+PKlasqB49eujw4cO5LjMtLU2vv/66qlWrJi8vL4WEhKhly5Y6ePCgQ78NGzaoWbNm8vf3l5+fn5o2bapNmzblWN7Fixc1dOhQVaxYUZ6enqpYsaKGDRum9PR0h37r1q1Tv379FBMTo+LFi6t8+fLq0KGDfv/99xzLXLt2rfr27avY2Fi5u7tf9svfI0eOqHfv3ipTpoy8vLxUoUIFde/ePUe/RYsW6c4771SpUqUUGBioevXq6dNPP811mR9//LGqV68uLy8vValSRWPGjMm1359//qkOHTooMDBQ/v7+at26tf74448bepkAcnJzdgG4cb3yyiuKjIzUxYsXlZycrKVLl+qpp57SyJEj9e2336pmzZpOqevs2bMaOnSoJOU40vDiiy/q+eefd0JVV27x4sUqU6aMRo0addm+P/zwQxFU9N/QsGHDHH889ejRQ/Xq1VOvXr2stqNHjyo4OPiy/bJCcZYJEybI19dXqamp+uGHH/Taa69p8eLFWrlype1nAxSmVatWaejQoerSpYsCAwOLdN3jx49XqVKl1KVLlyJd76XOnTsnN7eC+ad469atGjp0qBo1amR9eZLFbp8Vx48f1yuvvKLy5curVq1a+X7ZmFuoWb9+vd599101bdrUavvoo4/08ccfq127durbt69SUlI0ceJE3XrrrZo/f76aNGli9f31119VokQJPfnkkypVqpSSk5M1adIk1atXT6tXr1atWrWsvikpKYqPj9fBgwfVq1cvVa5cWceOHdOPP/6oCxcuyMfHR5I0cOBA/f3337r//vtVpUoV/fHHHxo7dqy+//57bdq0SaGhodYyL168qJYtW2rVqlXq2bOnatasqRMnTuinn35SSkqKypYtK0n6+eefdfvtt6tcuXIaPHiwMjMzNX78eMXHx2vt2rWKioqylvnwww9rxowZ6tatm+rWras1a9bopZde0v79+/XBBx9Y/d58802tXLlS999/v2rWrKnk5GSNHTtWN998s9asWeMwI2fu3Ln66KOPVLNmTVWsWDHXgJvlwIEDatCggSSpT58+KlOmjA4dOqS1a9c69Pv222/Vpk0bxcXFWV/uffnll3r0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rfj4eL3zzjsO09uMMWrdurU+/fRTPfzwwxo2bJgOHjyozp07X9W6Tp8+rePHj+d45PVHaFHYvXu3JF3RNLFXX31Vc+bM0YABA/T666/Lw8NDixcvVsOGDXXq1CkNHjxYr7/+uk6ePKm77rrLYZrer7/+qqZNm+ro0aMaMmSIunbtqsGDB2vWrFnXXPuRI0d06623atGiRerXr5/effddVa5cWd27d9fo0aOtfh9++KGeeOIJRUdHa/To0Ro6dKhq166tn376SZLUtm1bPfjgg5KkUaNGWWO+dOnS+u2333TPPffowoULeuWVV/TOO+/o3nvvzTWcZzdhwgRFRETof//7n9555x2VK1dOffv21bhx46w+o0ePVtmyZVWtWjVrvS+88MI175PsrmR8Z+ft7a1PPvlEu3btcqglMTFRKSkpmjJlilxdXXN9b8OGDfXEE09Ikv73v/9d8efH8OHDtWDBAj3//PPq1q2bZs6cqT59+qhbt276/fffNWTIELVt21ZTpkzRm2++6fDe1157TY8++qiqVKmikSNH6qmnnlJSUpIaNmxYqF8wzZ07VydPnsz1My03ycnJKlWqVK6vnTx5UseOHdOvv/6qHj166NSpU2rcuLH1+ooVK3T+/HlVrlxZ7du3l4+Pj7y9vdWgQYNczzvNLjU1VampqQ7r37p1qw4dOqSaNWuqV69eKl68uIoXL66aNWs6fBkr/RPUcwuPPj4+SktLs87Rzfosy943a0rzhg0b8q3TGKMjR47kuZ8uZ9GiRZL+CbuNGzeWt7e3vL291bx58xznYDdq1Ei//fabXnrpJe3atUu7d+/Wq6++qvXr1+u5556z+m3cuFGSVLduXYf3x8bGqlixYtbrmZmZ2rx5c45+klSvXj3t3r3buhbHjbJMAPlw6nFf3JDymzacJSAgwNSpU8d6Hh8fn+v0vM6dO5uIiAjredZ0UH9/f3P06FGHvunp6TmmOp04ccKEhISYbt26WW35TRvOmsKZZdOmTUaS6dGjh0O/AQMGGElm8eLFVltERISRZJYvX261HT161Hh6eppnnnkm9x3x//vmm2+MJDNs2DCH9vbt2xsXFxeza9cuq+1qpvNm369Z02SrV6/usK/effddI8n8+uuvDu+VZN555x2r7cKFC6Z27domODjYpKWlGWOMGT16tJFkpk6davVLS0szcXFxxtfX15w6dcph3dmnLOY2xbdz585GknnllVcc+tapU8fExsZaz7P221tvvWW1paenmzvuuOOqpg3n9yiqacM7duwwx44dM3v27DETJ040np6eJiQkxJw5c+ay9VesWNFhGn5mZqapUqWKSUhIMJmZmVb72bNnTWRkpLn77ruttjZt2hgvLy+zb98+q23r1q3G1dXV4Xchv6nY2X+funfvbsLCwnJMD3zggQdMQECAVWvr1q0vO5bzmjY8atSoXKdbX4ncTllISEgwFStWdGi7mmnDhTG+jcm5b40xZtCgQaZYsWJm+fLl1lTg0aNHX7bG/KYN5/VZcdNNN1m/68YY8+CDDxoXFxfTvHlzh/fHxcU5fFbv3bvXuLq6mtdee82h36+//mrc3NxytOfnaqcNt2vXznh6epoTJ05ctu/y5cuNi4tLjum0WaKioqzPAl9fX/Piiy86TP0dOXKkkWRKlixp6tWrZz777DMzfvx4ExISYkqUKGEOHTqU7/pfffVVI8kkJSVZbTNnzrSWWaVKFTN58mQzefJkU6VKFePh4eEwxbdGjRqmatWqJj093Wq7cOGCKV++vJFkvvrqK2OMMV9//bWRZD799FOH9b///vvWzzk/n376qZFkPv744zz75Ddt+IknnrC2qVmzZuaLL74wI0aMML6+vqZSpUoOn3OpqammQ4cOxsXFxdr3Pj4+5ptvvsmxPldX11zXV7p0afPAAw8YY/7v3/zsv2/GGDNu3DgjyWzfvv2GWiaAvHHkFYXC19f3ur5BbNeunTX9N4urq6s11SkzM1N///230tPTVbduXf3888/XtJ65c+dKknX0M8szzzwjSQ7TfSQpOjpad9xxh/W8dOnSioqKuuyVAufOnStXV1fryMil6zHGaN68eddUf166du3qMC0sq+bsdbq5ual3797Wcw8PD/Xu3VtHjx61vqmfO3euQkNDrSNkkuTu7q4nnnhCqampWrZs2TXX2adPH4fnd9xxh0ONc+fOlZubmx577DGrzdXVVY8//vhVrefll1/WwoULczwuvdhLYYuKilLp0qUVGRmp3r17q3LlypozZ451ZCQ/nTt3djiismnTJu3cuVMPPfSQ/vrrL+tI8pkzZ9S4cWMtX75cmZmZysjI0IIFC9SmTRuVL1/een/16tWVkJBwTdthjNHXX3+tVq1ayRjjcCQ7ISFB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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs_cnt = plot.subplots()\n", + "axs_ms = axs_cnt.twinx()\n", + "\n", + "axs_cnt.stairs(\n", + " frontend_duration_df.iloc[0]['histogram_bucket_counts'],\n", + " np.concatenate((['-∞'], ['%.0f' % x for x in frontend_duration_df.iloc[0]['histogram_explicit_bounds']], ['+∞'])),\n", + " fill=True,\n", + " label='Number of HTTP requests in bucket')\n", + "\n", + "axs_ms.axhline(\n", + " y=frontend_duration_df.iloc[0]['histogram_min'],\n", + " label='Min HTTP request duration',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][1])\n", + "# plot the average of request durations:\n", + "axs_ms.axhline(\n", + " y=frontend_duration_df.iloc[0]['histogram_sum'] / frontend_duration_df.iloc[0]['histogram_count'],\n", + " label='Average HTTP request duration',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][2])\n", + "axs_ms.axhline(\n", + " y=frontend_duration_df.iloc[0]['histogram_max'],\n", + " label='Max HTTP request duration',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][3])\n", + "\n", + "axs_cnt.set_xlabel('Bucket bounds (ranges), millisec')\n", + "axs_cnt.set_ylabel('Number of HTTP requests')\n", + "axs_ms.set_ylabel('HTTP request duration, millisec')\n", + "fig.legend()\n", + "fig.set_figwidth(10)\n", + "fig.set_figheight(10)\n", + "fig.supxlabel('Duration of inbound HTTP requests at unix time ' + frontend_duration_df.iloc[0]['time_unix_nano'].astype('str'))" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "id": "ef0b9a5c-ed3b-4ddd-bb76-565e09f59c23", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "## 'Explode' histograms for easier processing\n", + "\n", + "Due to their multi-valued structure histograms are a bit tricky to analyze over time. In this example we'll 'explode' them - that is - we'll turn each count of each bucket\n", + "into an individual row (plus a few more). We'll also label each new row so that we know where it came from (in the `population_stat` column).\n", + "\n", + "Take a look at the following transformation and the table below it:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "## 'Explode' histograms for easier processing\n", + "\n", + "Due to their multi-valued structure histograms are a bit tricky to analyze over time. In this example we'll 'explode' them - that is - we'll turn each count of each bucket\n", + "into an individual row (plus a few more). We'll also label each new row so that we know where it came from (in the `population_stat` column).\n", + "\n", + "Take a look at the following transformation and the table below it:" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "4988ecbd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuepopulation_stat
71count
70.001969sum
70.001969min
70.001969max
70lt_0.0
710.0-5.0
705.0-10.0
7010.0-25.0
7025.0-50.0
7050.0-75.0
7075.0-100.0
70100.0-250.0
70250.0-500.0
70500.0-750.0
70750.0-1000.0
701000.0-2500.0
702500.0-5000.0
705000.0-7500.0
707500.0-10000.0
70gt_10000.0
83count
80.016641sum
80.001891min
80.010135max
80lt_0.0
\n", + "
" + ], + "text/plain": [ + " value population_stat\n", + "7 1 count\n", + "7 0.001969 sum\n", + "7 0.001969 min\n", + "7 0.001969 max\n", + "7 0 lt_0.0\n", + "7 1 0.0-5.0\n", + "7 0 5.0-10.0\n", + "7 0 10.0-25.0\n", + "7 0 25.0-50.0\n", + "7 0 50.0-75.0\n", + "7 0 75.0-100.0\n", + "7 0 100.0-250.0\n", + "7 0 250.0-500.0\n", + "7 0 500.0-750.0\n", + "7 0 750.0-1000.0\n", + "7 0 1000.0-2500.0\n", + "7 0 2500.0-5000.0\n", + "7 0 5000.0-7500.0\n", + "7 0 7500.0-10000.0\n", + "7 0 gt_10000.0\n", + "8 3 count\n", + "8 0.016641 sum\n", + "8 0.001891 min\n", + "8 0.010135 max\n", + "8 0 lt_0.0" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def otel_histogram(series):\n", + " def bucket_names(bounds):\n", + " if bounds.size > 0:\n", + " return [f'lt_{bounds[i]}' if i == 0 else f'gt_{bounds[i-1]}' if i == bounds.size else f'{bounds[i-1]}-{bounds[i]}' for i in range(bounds.size + 1)]\n", + " else:\n", + " return []\n", + "\n", + " return pd.Series([\n", + " [\n", + " series['histogram_count'],\n", + " series['histogram_sum'],\n", + " series['histogram_min'],\n", + " series['histogram_max'],\n", + " *series['histogram_bucket_counts']\n", + " ],\n", + " [\n", + " 'count',\n", + " 'sum',\n", + " 'min',\n", + " 'max',\n", + " *bucket_names(series['histogram_explicit_bounds'])\n", + " ]\n", + " ], index=['value', 'population_stat'])\n", + "\n", + "histograms_values_df=histograms_df.apply(otel_histogram, axis=1).explode(['value', 'population_stat'])\n", + "histograms_values_df.head(25)" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "e7512cab-9022-4b28-842b-6b568446b390", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Histogram buckets (or ranges):\n", + "\n", + "In the table above we've 'exploded' a single histogram metric data point into muliple rows - one for each of the `count`, `sum`, `min` and `max` stats, and also a row per bucket (range).\n", + "\n", + "The way bucket bounds are saved (in the `histogram_explicit_bounds` array) is this:\n", + "- each array element is the upper bound of a bucket, inclusive. The first array element covers values from minus infinity to itself, inclusive (0.0 in our example). We've marked it as `lt_0.0`.\n", + "\n", + " Subsequent array elements represent a range from previous (exclusive) to current (inclusive). For example - 0.0 (exclusive) to 5.0 (inclusive). We've marked these as `0.0-5.0` and similar.\n", + "\n", + "- the last array element also defines the range from its value (exclusive) to plus infinity. In the table above it's marked as `gt_10000.0`.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Histogram buckets (or ranges):\n", + "\n", + "In the table above we've 'exploded' a single histogram metric data point into muliple rows - one for each of the `count`, `sum`, `min` and `max` stats, and also a row per bucket (range).\n", + "\n", + "The way bucket bounds are saved (in the `histogram_explicit_bounds` array) is this:\n", + "- each array element is the upper bound of a bucket, inclusive. The first array element covers values from minus infinity to itself, inclusive (0.0 in our example). We've marked it as `lt_0.0`.\n", + "\n", + " Subsequent array elements represent a range from previous (exclusive) to current (inclusive). For example - 0.0 (exclusive) to 5.0 (inclusive). We've marked these as `0.0-5.0` and similar.\n", + "\n", + "- the last array element also defines the range from its value (exclusive) to plus infinity. In the table above it's marked as `gt_10000.0`." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "5de4c3f2-dbb7-448b-913b-765d6fd9402d", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Let's create a new DataFrame for our example metric with these new rows:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Let's create a new DataFrame for our example metric with these new rows:" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "bff6f90a-d901-4360-916c-80cc981f9473", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
start_time_unix_nanotime_unix_nanoa_http.methoda_http.status_codevaluepopulation_stat
172717236269409890000001723626992168000000GET2001950.0-5.0
357717236269409890000001723627052168000000GET2004760.0-5.0
452017236269409890000001723627112168000000GET2009190.0-5.0
3392217236269409890000001723627172168000000GET20012900.0-5.0
3487817236269409890000001723627232168000000GET20014970.0-5.0
3581117236269409890000001723627292172000000GET20018310.0-5.0
4954517236269409890000001723627352169000000GET20019540.0-5.0
5131017236269409890000001723627412169000000GET20021400.0-5.0
5220217236269409890000001723627472168000000GET20024790.0-5.0
5545617236269409890000001723627532169000000GET20027150.0-5.0
\n", + "
" + ], + "text/plain": [ + " start_time_unix_nano time_unix_nano a_http.method \\\n", + "1727 1723626940989000000 1723626992168000000 GET \n", + "3577 1723626940989000000 1723627052168000000 GET \n", + "4520 1723626940989000000 1723627112168000000 GET \n", + "33922 1723626940989000000 1723627172168000000 GET \n", + "34878 1723626940989000000 1723627232168000000 GET \n", + "35811 1723626940989000000 1723627292172000000 GET \n", + "49545 1723626940989000000 1723627352169000000 GET \n", + "51310 1723626940989000000 1723627412169000000 GET \n", + "52202 1723626940989000000 1723627472168000000 GET \n", + "55456 1723626940989000000 1723627532169000000 GET \n", + "\n", + " a_http.status_code value population_stat \n", + "1727 200 195 0.0-5.0 \n", + "3577 200 476 0.0-5.0 \n", + "4520 200 919 0.0-5.0 \n", + "33922 200 1290 0.0-5.0 \n", + "34878 200 1497 0.0-5.0 \n", + "35811 200 1831 0.0-5.0 \n", + "49545 200 1954 0.0-5.0 \n", + "51310 200 2140 0.0-5.0 \n", + "52202 200 2479 0.0-5.0 \n", + "55456 200 2715 0.0-5.0 " + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_frontend_duration_df=frontend_duration_df[\n", + " [\n", + " 'start_time_unix_nano', 'time_unix_nano',\n", + " 'a_http.method', 'a_http.status_code'\n", + " ]\n", + "].join(histograms_values_df.loc[frontend_duration_df.index]).sort_values(by=['a_http.method', 'a_http.status_code', 'population_stat', 'start_time_unix_nano', 'time_unix_nano'])\n", + "\n", + "new_frontend_duration_df.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "875e45bc-5f6a-45f4-b4f8-28a713bef136", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "### Plotting Histograms\n", + "\n", + "Our example metric - `http.server.duration` has data points for various request methods and HTTP status codes. To keep things simple we'll only \n", + "consider `GET` methods with status code `200` (**success**). We'll not plot all of the `population_stats` for the same reason.\n", + "\n", + "In your own analytics you can use the same method to also plot **failed** or `POST` requests.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "### Plotting Histograms\n", + "\n", + "Our example metric - `http.server.duration` has data points for various request methods and HTTP status codes. To keep things simple we'll only \n", + "consider `GET` methods with status code `200` (**success**). We'll not plot all of the `population_stats` for the same reason.\n", + "\n", + "In your own analytics you can use the same method to also plot **failed** or `POST` requests." + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "964302aa-0b66-4a2f-9b7d-7df4f74692cd", + "metadata": {}, + "outputs": [], + "source": [ + "# prepare some 'selectors' for our DataFrame\n", + "# selectors for the two 'sessions' of GET, 200 requests in our demo data:\n", + "get200_interval_1=(new_frontend_duration_df['a_http.method'] == 'GET') & (new_frontend_duration_df['a_http.status_code'] == 200) & (new_frontend_duration_df['start_time_unix_nano'] == 1723626940989000000)\n", + "get200_interval_2=(new_frontend_duration_df['a_http.method'] == 'GET') & (new_frontend_duration_df['a_http.status_code'] == 200) & (new_frontend_duration_df['start_time_unix_nano'] == 1723627054875000000)\n", + "# a selector for the GET, 500 requests (data for it does not contain a gap): \n", + "get500=(new_frontend_duration_df['a_http.method'] == 'GET') & (new_frontend_duration_df['a_http.status_code'] == 500)\n", + "# same as above, but for POST requests:\n", + "post200_interval_1=(new_frontend_duration_df['a_http.method'] == 'POST') & (new_frontend_duration_df['a_http.status_code'] == 200) & (new_frontend_duration_df['start_time_unix_nano'] == 1723626979040000000)\n", + "post200_interval_2=(new_frontend_duration_df['a_http.method'] == 'POST') & (new_frontend_duration_df['a_http.status_code'] == 200) & (new_frontend_duration_df['start_time_unix_nano'] == 1723627069470000000)\n", + "post500=(new_frontend_duration_df['a_http.method'] == 'POST') & (new_frontend_duration_df['a_http.status_code'] == 500)\n", + "# a few population_stat selectors:\n", + "pop_0_5=new_frontend_duration_df['population_stat'] == '0.0-5.0'\n", + "pop_5_10=new_frontend_duration_df['population_stat'] == '5.0-10.0'\n", + "pop_10_25=new_frontend_duration_df['population_stat'] == '10.0-25.0'\n", + "pop_25_50=new_frontend_duration_df['population_stat'] == '25.0-50.0'\n", + "\n", + "pop_gt10000=new_frontend_duration_df['population_stat'] == 'gt_10000.0'\n", + "\n", + "pop_count=new_frontend_duration_df['population_stat'] == 'count'\n", + "pop_sum=new_frontend_duration_df['population_stat'] == 'sum'\n", + "pop_min=new_frontend_duration_df['population_stat'] == 'min'\n", + "pop_max=new_frontend_duration_df['population_stat'] == 'max'" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "7f12baac-8a32-43e2-a172-90933ba02db7", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### Minimum and average durations:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### Minimum and average durations:" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "42a44133-41b3-4356-b960-48adc16e6c1f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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jMkaERERkQVjskZERERkwZisEREREVkwJmtEREREFozJGhEREZEFY7JGREREZMGYrBERERFZMCZrRERERBaMyRoRERGRBWOyRkRERGTBLH4h98rSLH2alpZm5kiIiIhIX5rf29V8CXO9VPtkLT09HQAQHBxs5kiIiIjIUOnp6fDy8jJ3GGalENU8ZVWr1bh27Ro8PDygUChM8h5paWkIDg7G5cuX4enpaZL3sBa8FkV4LYrwWhThtSjCa1GE16KI5lokJSVBoVCgVq1asLOz7VFb1b5lzc7ODnXq1KmS9/L09LT5/8k0eC2K8FoU4bUowmtRhNeiCK9FES8vL16LQradqhIRERFZOCZrRERERBaMyZoRODk5YdasWXBycjJ3KGbHa1GE16IIr0URXosivBZFeC2K8FqUVu0nGBARERFZM7asEREREVkwJmtEREREFozJGhEREZEFY7JGREREZMGYrBUTGhoKhUJR6jZ+/PgyX7NhwwY0bNgQzs7OaNasGbZu3aq1XwiBmTNnIigoCC4uLoiOjsb58+dN/VEqzdBr8fnnn+Phhx+Gj48PfHx8EB0djQMHDmgdM2rUqFLn69mzZ1V8nEoz9HrExMSUOtbZ2VnrGFv5bnTp0kXn8X369JGPsdbvhkqlwltvvYWwsDC4uLggPDwcb7/99n3XMty1axdat24NJycnREREICYmptQxy5YtQ2hoKJydndG+fftS/z9Zmopci02bNqFbt26oUaMGPD090aFDB/z2229ax8yePbvUd6Nhw4am/jiVUpFrsWvXLp3/n1y/fl3rOFv4Xuj690ChUKBJkybyMdb4vagUQbKUlBSRnJws33bu3CkAiLi4OJ3H79u3TyiVSrFw4UJx+vRpMWPGDOHg4CBOnjwpH7NgwQLh5eUlNm/eLI4fPy769+8vwsLCRHZ2dhV9qoox9Fo89dRTYtmyZeLo0aPizJkzYtSoUcLLy0tcuXJFPmbkyJGiZ8+eWue9c+dOFX2iyjH0eqxevVp4enpqveb69etax9jKd+P27dtax586dUoolUqxevVq+Rhr/W68++67ws/PT/z6668iMTFRbNiwQbi7u4ulS5eW+ZqLFy8KV1dXMWXKFHH69Gnx8ccfC6VSKbZv3y4fs27dOuHo6ChWrVol/v33X/H8888Lb29vcePGjar4WBVSkWsxadIk8d57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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs=plot.subplots()\n", + "\n", + "axs.plot(\n", + " new_frontend_duration_df[get200_interval_1 & pop_min]['time_unix_nano'],\n", + " new_frontend_duration_df[get200_interval_1 & pop_min]['value'] - \n", + " new_frontend_duration_df[get200_interval_1 & pop_min]['value'].shift(1, fill_value=0.0),\n", + " label='GET-200 HTTP requests min duration',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][0]\n", + ")\n", + "axs.plot(\n", + " new_frontend_duration_df[get200_interval_1 & pop_sum]['time_unix_nano'],\n", + " (new_frontend_duration_df[get200_interval_1 & pop_sum]['value'] - \n", + " new_frontend_duration_df[get200_interval_1 & pop_sum]['value'].shift(1, fill_value=0.0)) / \n", + " new_frontend_duration_df[get200_interval_1 & pop_count]['value'],\n", + " label='GET-200 HTTP requests average duration',\n", + " color=plot.rcParams['axes.prop_cycle'].by_key()['color'][1]\n", + ")\n", + "\n", + "axs.set_xlabel('Time')\n", + "axs.set_ylabel('Duration of HTTP requests, milliseconds')\n", + "fig.legend()" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "026b601a-6732-493e-9374-0d35b126f4a4", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "#### A few histogram bucket counts:\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "#### A few histogram bucket counts:" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "08cf13cb-1482-4565-b350-916b79e58c46", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ZPEYvBIREREREZHFY/BKREREREREFo/BKxEREREREVk8Bq9ERERERERk8Ri8EhERERERkcVj8EpEREREREQWj8ErERERERERWTwGr0RERERERGTxGLwSERERERGRxWPwSkRERERERBaPwSsRERERERFZPAavREREREREZPEYvBIREREREZHFY/BKREREREREFo/BKxEREREREVk8swavixYtQt++feHo6AhPT088/PDDSExMNNqmsLAQM2fOhJubGxwcHPDoo4/ixo0bRttcuXIFo0ePhp2dHTw9PTFnzhzodLqmfCpERERERETUiMwavO7btw8zZ87En3/+iZ07d6KkpAQjR45EXl6evM3LL7+MX375BT/99BP27duH5ORkPPLII/L60tJSjB49GsXFxTh06BC+/fZbrF69Gm+//bY5nhIRERERERE1AoUQQpi7EZK0tDR4enpi3759GDJkCLKysuDh4YF169bhscceAwAkJCSgU6dOOHz4MAYMGIBt27ZhzJgxSE5OhpeXFwDg888/x2uvvYa0tDSo1epqj5udnQ0nJydkZWVBq9U26nMkIiIiIiLLxdjAclnUmNesrCwAgKurKwDg2LFjKCkpQVhYmLxNaGgo2rRpg8OHDwMADh8+jG7dusmBKwCEh4cjOzsbp0+fNnmcoqIiZGdnG92IiIiIiIjIcllM8KrX6/HSSy9h8ODB6Nq1KwAgNTUVarUazs7ORtt6eXkhNTVV3qZ84Cqtl9aZsmjRIjg5Ocm3gICABn42RERERERE1JAsJnidOXMmTp06hfXr1zf6sd544w1kZWXJt6tXrzb6MYmIiIiIiKjurM3dAACYNWsWtm7div3798Pf319e7u3tjeLiYmRmZhr1vt64cQPe3t7yNn/99ZfR/qRqxNI2d9NoNNBoNA38LIiIiIiIiKixmLXnVQiBWbNmYdOmTdizZw+Cg4ON1vfp0wcqlQq7d++WlyUmJuLKlSsYOHAgAGDgwIGIi4vDzZs35W127twJrVaLzp07N80TISIiIiIiokZl1p7XmTNnYt26dfjf//4HR0dHeYyqk5MTbG1t4eTkhGnTpmH27NlwdXWFVqvFCy+8gIEDB2LAgAEAgJEjR6Jz5874f//v/2Hp0qVITU3FW2+9hZkzZ7J3lYiIiIiIqIUw61Q5CoXC5PJVq1Zh6tSpAIDCwkL8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REREREREZPGYvBIREREREZHFY/JKREREREREFo/JKxEREREREVk8Jq9ERERERERk8Zi8EhERERERkcVj8kpEREREREQWj8krERERERERWTwmr0RERERERGTxmLwSERERERGRxWPySkRERERERBaPySsRERERERFZPJtJXufMmYOwsDA4ODigZ8+eOHz4sNwhERERERERkZHYRPK6bNkyzJgxA7NmzcLx48fRqVMnDB06FKmpqXKHRkREREREREZgE8nr119/jSeeeALTpk1Du3bt8PPPP8PJyQnz5s2TOzQiIiIiIiIyAqtPXktLS3Hs2DEMGjTIcJtSqcSgQYNw4MCBah9TUlKC3NzcKl9ERERERERkuaw+eU1PT4dOp4O/v3+V2/39/ZGcnFztYz755BO4u7sbvoKDg80RKhERERERETWQ1SevDfHWW28hJyfH8JWQkCB3SERERERERFQLtdwBNJaPjw9UKhVSUlKq3J6SkoKAgIBqH2Nvbw97e3tzhEdERERERERGYPUrr3Z2dujatSu2bdtmuE2v12Pbtm3o3bu3jJERERERERGRsVj9yisAzJgxA1OmTEG3bt3Qo0cPfPPNNygoKMC0adPkDo2IiIiIiIiMwCaS1/HjxyMtLQ3vvfcekpOT0blzZ2zcuPGWJk5ERERERERknRSCIAhyByG33NxcuLu7IycnB25ubnKHQ0REREREMmFuYLmsfs8rERERERER2T4mr0RERERERGTxmLwSERERERGRxWPySkRERERERBaPySsRERERERFZPCavREREREREZPGYvBIREREREZHFY/JKREREREREFo/JKxEREREREVk8tdwBWAJBEAAAubm5MkdCRERERERyknICKUcgy8HkFUBeXh4AIDg4WOZIiIiIiIjIEuTl5cHd3V3uMKgShcCPFKDX63Hjxg24urpCoVDIHY5Bbm4ugoODkZCQADc3N7nDoWrwObJ8fI4sH58jy8fnyLLx+bF8fI4sX+XnyNXVFXl5eWjWrBmUSu6ytCRceQWgVCrRvHlzucOokZubG3/RWTg+R5aPz5Hl43Nk+fgcWTY+P5aPz5Hlk54jrrhaJn6UQERERERERBaPySsRERERERFZPCavFsze3h6zZs2Cvb293KFQDfgcWT4+R5aPz5Hl43Nk2fj8WD4+R5aPz5F1YMMmIiIiIiIisnhceSUiIiIiIiKLx+SViIiIiIiILB6TVyIiIiIiIrJ4TF6JiIiIiIjI4jF5NZOwsDAoFIpbvp577rkaH7NixQq0adMGDg4O6NChAzZs2FDl+4Ig4L333kNgYCAcHR0xaNAgXLp0ydQ/is2q73M0d+5c9O3bF56envD09MSgQYNw+PDhKveZOnXqLce79957zfHj2KT6PkcLFiy45b4ODg5V7sPXkXHV9znq379/tfe///77Dffh68h4dDod3n33XbRo0QKOjo5o2bIlPvroI9yud+POnTvRpUsX2Nvbo1WrVliwYMEt95kzZw7CwsLg4OCAnj173vL7kOqmIc/RX3/9hcGDB8PX1xdubm7o3bs3Nm3aVOU+77///i2vozZt2pj6x7FJDXmOdu7cWe3vuuTk5Cr34+vIOBryHFX3f41CoUBUVJThPnwdWQCBzCI1NVVISkoyfG3ZskUAIOzYsaPa++/bt09QqVTC559/Lpw/f1545513BI1GI5w5c8Zwn08//VRwd3cX1qxZI5w6dUp48MEHhRYtWghFRUVm+qlsS32fo4kTJwpz5swRTpw4IURHRwtTp04V3N3dhcTERMN9pkyZItx7771VjpuZmWmmn8j21Pc5mj9/vuDm5lblMcnJyVXuw9eRcdX3OcrIyKhy/7NnzwoqlUqYP3++4T58HRnPxx9/LHh7ewvr168Xrl69KqxYsUJwcXERvv322xofc+XKFcHJyUmYMWOGcP78eeH7778XVCqVsHHjRsN9li5dKtjZ2Qnz5s0Tzp07JzzxxBOCh4eHkJKSYo4fy6Y05Dl66aWXhM8++0w4fPiwcPHiReGtt94SNBqNcPz4ccN9Zs2aJURFRVV5HaWlpZnjR7I5DXmOduzYIQAQYmJiqjwHOp3OcB++joynIc9RdnZ2lecmISFB8PLyEmbNmmW4D19H8mPyKpOXXnpJaNmypaDX66v9/rhx44T777+/ym09e/YUnnrqKUEQBEGv1wsBAQHCF198Yfh+dna2YG9vLyxZssR0gTcht3uOblZWVia4uroKCxcuNNw2ZcoUYcSIESaKkG73HM2fP19wd3ev8fF8HZlefV9Hs2fPFlxdXYX8/HzDbXwdGc/9998vTJ8+vcpto0ePFiZNmlTjY9544w0hKiqqym3jx48Xhg4davhzjx49hOeee87wZ51OJzRr1kz45JNPjBR509GQ56g67dq1Ez744APDn2fNmiV06tTJGCE2eQ15jqTkNSsrq8b78HVkPMZ4Ha1evVpQKBRCXFyc4Ta+juTHsmEZlJaW4s8//8T06dOhUCiqvc+BAwcwaNCgKrcNHToUBw4cAABcvXoVycnJVe7j7u6Onj17Gu5DDVeX5+hmhYWF0Gq18PLyqnL7zp074efnh8jISDzzzDPIyMgwRchNTl2fo/z8fISGhiI4OBgjRozAuXPnDN/j68i0GvI6+u233zBhwgQ4OztXuZ2vI+Po06cPtm3bhosXLwIATp06hb1792LYsGE1PuZ2/x+Vlpbi2LFjVe6jVCoxaNAgvo4aoCHP0c30ej3y8vJu+f/o0qVLaNasGcLDwzFp0iTEx8cbNfamojHPUefOnREYGIjBgwdj3759htv5OjIuY7yOfvvtNwwaNAihoaFVbufrSF5quQNoitasWYPs7GxMnTq1xvskJyfD39+/ym3+/v6GvRHSZW33oYary3N0szfffBPNmjWr8h/Pvffei9GjR6NFixaIjY3Ff/7zHwwbNgwHDhyASqUyQeRNR12eo8jISMybNw8dO3ZETk4OvvzyS/Tp0wfnzp1D8+bN+Toysfq+jg4fPoyzZ8/it99+q3I7X0fGM3PmTOTm5qJNmzZQqVTQ6XT4+OOPMWnSpBofU9P/R7m5uSgqKkJWVhZ0Ol2197lw4YJJfg5b1pDn6GZffvkl8vPzMW7cOMNtPXv2xIIFCxAZGYmkpCR88MEH6Nu3L86ePQtXV1dT/Cg2qyHPUWBgIH7++Wd069YNJSUl+PXXX9G/f38cOnQIXbp0QXp6Ol9HRtTY19GNGzfw77//YvHixVVu5+tIfkxeZfDbb79h2LBhaNasmdyhUA3q+xx9+umnWLp0KXbu3FmlIdCECRMM1zt06ICOHTuiZcuW2LlzJ+655x6jx92U1OU56t27N3r37m34c58+fdC2bVv88ssv+Oijj8wRZpNW39fRb7/9hg4dOqBHjx5VbufryHiWL1+ORYsWYfHixYiKisLJkyfx8ssvo1mzZpgyZYrc4REa/xwtXrwYH3zwAf7++2/4+fkZbq+84tSxY0f07NkToaGhWL58OR577DGT/Cy2qiHPUWRkJCIjIw1/7tOnD2JjYzF79mz88ccf5gq9yWjs62jhwoXw8PDAyJEjq9zO15H8mLya2bVr17B161b89ddftd4vICAAKSkpVW5LSUlBQECA4fvSbYGBgVXu07lzZ+MG3cTU9TmSfPnll/j000+xdetWdOzYsdb7hoeHw8fHB5cvX+ab7kao73Mk0Wg0uOOOO3D58mUAfB2ZUn2fo4KCAixduhQffvjhbe/L11HDvf7665g5c6bhA4EOHTrg2rVr+OSTT2p8Q1fT/0dubm5wdHSESqWCSqWq9f8sqruGPEeSpUuX4vHHH8eKFStuKfW+mYeHByIiIgy/D6nuGvMcVdajRw/s3bsXAODj48PXkRE15jkSBAHz5s3DI488Ajs7u1rvy9eR+XHPq5nNnz8ffn5+VcZAVKd3797Ytm1bldu2bNliWEVq0aIFAgICqtwnNzcXhw4dqrLSRPVX1+cIAD7//HN89NFH2LhxI7p163bb+ycmJiIjI6NKokT1V5/nqDKdToczZ84Y/v75OjKd+j5HK1asQElJCSZPnnzb+/J11HCFhYVQKqv+169SqaDX62t8zO3+P7Kzs0PXrl2r3Eev12Pbtm18HTVAQ54jAFiyZAmmTZuGJUuW1Ol1l5+fj9jYWL6OGqChz9HNTp48afj75+vIuBrzHO3atQuXL1+u00oqX0cykLtjVFOi0+mEkJAQ4c0337zle4888ogwc+ZMw5/37dsnqNVq4csvvxSio6OFWbNmVTsqx8PDQ/j777+F06dPCyNGjOCIj0aqz3P06aefCnZ2dsLKlSurtEzPy8sTBEEQ8vLyhNdee004cOCAcPXqVWHr1q1Cly5dhNatWwvFxcVm+5lsTX2eow8++EDYtGmTEBsbKxw7dkyYMGGC4ODgIJw7d85wH76OjK8+z5HkrrvuEsaPH3/L7XwdGdeUKVOEoKAgw/iIv/76S/Dx8RHeeOMNw31mzpwpPPLII4Y/S6NyXn/9dSE6OlqYM2dOtaNy7O3thQULFgjnz58XnnzyScHDw+OW0VR0ew15jhYtWiSo1Wphzpw5Vf4/ys7ONtzn1VdfFXbu3ClcvXpV2LdvnzBo0CDBx8dHSE1NNevPZwsa8hzNnj1bWLNmjXDp0iXhzJkzwksvvSQolUph69athvvwdWQ8DXmOJJMnTxZ69uxZ7XH5OpIfk1cz2rRpk2HG183uvvtuYcqUKVVuW758uRARESHY2dkJUVFRwj///FPl+3q9Xnj33XcFf39/wd7eXrjnnnuqPTbVXX2eo9DQUAHALV/SPLDCwkJhyJAhgq+vr6DRaITQ0FDhiSee4H9CjVSf5+jll18WQkJCBDs7O8Hf31+47777qsw9FAS+jkyhvr/rLly4IAAQNm/efMv9+ToyrtzcXOGll14SQkJCBAcHByE8PFx4++23hZKSEsN9pkyZItx9991VHrdjxw6hc+fOgp2dnRAeHl5lDq/k+++/N7zeevToIRw8eNDEP41tashzdPfdd1f7/1Hl19r48eOFwMBAwc7OTggKChLGjx8vXL582Yw/me1oyHP02WefCS1bthQcHBwELy8voX///sL27dtvOTZfR8bR0N912dnZgqOjo/C///2v2uPydSQ/hSAIggwLvkRERERERER1xj2vREREREREZPGYvBIREREREZHFY/JKREREREREFo/JKxEREREREVk8Jq9ERERERERk8Zi8EhERERERkcVj8kpEREREREQWj8krERE1GVOnTsXIkSPlDoOILNzu3bsxfPhwNGvWDAqFAmvWrKnX44uLizF16lR06NABarW62t87f/31FwYPHgxfX1+4ubmhd+/e2LRpU6Pi/vjjj9GnTx84OTnBw8OjTo9RKBTVfn3xxRcAgLi4ODz22GNo0aIFHB0d0bJlS8yaNQulpaWGY8TExGDAgAHw9/eHg4MDwsPD8c4770Cr1VY5V3Z2Np577jkEBgbC3t4eERER2LBhg+H7n3zyCbp37w5XV1f4+flh5MiRiImJqdffQVJSEiZOnIiIiAgolUq8/PLL1d7vm2++QWRkJBwdHREcHIxXXnkFxcXF9ToXmR+TVyIisgk1vQGTvt5//318++23WLBggdyhEpGFKygoQKdOnTBnzpwGPV6n08HR0REvvvgiBg0aVO19du/ejcGDB2PDhg04duwYBgwYgOHDh+PEiRM1Hrd///61/g4rLS3F2LFj8cwzz9Q51qSkpCpf8+bNg0KhwJgxYwAAFy5cgF6vxy+//IJz585h9uzZ+Pnnn/Gf//zHcAyNRoNHH30UmzdvRkxMDL755hvMnTsXs2bNqhLb4MGDERcXh5UrVyImJgZz585FUFCQ4T67du3Cc889h4MHD2LLli3QarUYMmQICgoK6vzzlJSUwNfXF++88w46depU7X0WL16MmTNnYtasWYiOjsZvv/2GZcuWVfmZyEIJRERE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7u6OadOmYfLkyZg9ezZ2796NkJAQvHjxAtXV1UhLS0N0dDQASPM2m83o6upCc3Mzhg0bhrCwMABAamoq9uzZA41Gg5iYGBiNRhQXFyM1NdVuNZ2czFDf7piIiOhH+9I2Ef+7ZYWjbRTUarXYu3evTQyfbZXR1tYmRo4cKebNmycaGhqE0WgUtbW1YtGiReLTp08/diJENCTq6uoEALtHdna2EEKI/v5+sWnTJhEQECAUCoVQqVQiLS1NtLS0SDnUarXDHH9LTEz8ah+O/NNWOdnZ2Q5zfr6NDwC7HEePHhXu7u6ip6fHLmd5ebnDnJ/PxWAwiMjISKFUKsXw4cNFWFiY0Ov14v379za57ty5I2JiYoSrq6sYN26c2LFjh8375pf6+Xy8vb29QqvVitGjRwuFQiH8/f1FZmamMJlMX82jVqul9o8fP4rNmzeLwMBA4ebmJvz9/cXy5cvF69evv3huyTnIhODaOBER/VpOnjwJnU6Hnp4em/iiRYvQ09ODS5cuARjYKmfSpEnYt2+fdExAQAB0Oh10Op0Uk8lkuHjxorTNTmtrK9atW4e6ujp8+PABarUaKSkp2LNnj3SZMREREf1YLF6JiIiIiIjI6fFWWkREREREROT0WLwSERERERGR02PxSkRERERERE6PxSsRERERERE5PRavRERERERE5PRYvBIREREREZHTY/FKRERERERETo/FKxERERERETk9Fq9ERERERETk9Fi8EhERERERkdNj8UpEREREREROj8UrEREREREROb2/AEqJQsK3r5ifAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs_cnt=plot.subplots()\n", + "\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[get200_interval_1 & pop_5_10]['time_unix_nano'],\n", + " new_frontend_duration_df[get200_interval_1 & pop_5_10]['value'] - \n", + " new_frontend_duration_df[get200_interval_1 & pop_5_10]['value'].shift(1, fill_value=0.0),\n", + " label='Number of GET-200 HTTP requests between 5 and 10 ms'\n", + ")\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[get200_interval_1 & pop_10_25]['time_unix_nano'],\n", + " new_frontend_duration_df[get200_interval_1 & pop_10_25]['value'] - \n", + " new_frontend_duration_df[get200_interval_1 & pop_10_25]['value'].shift(1, fill_value=0.0),\n", + " label='Number of GET-200 HTTP requests between 10 and 25 ms'\n", + ")\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[get200_interval_1 & pop_25_50]['time_unix_nano'],\n", + " new_frontend_duration_df[get200_interval_1 & pop_25_50]['value'] - \n", + " new_frontend_duration_df[get200_interval_1 & pop_25_50]['value'].shift(1, fill_value=0.0),\n", + " label='Number of GET-200 HTTP requests between 25 and 50 ms'\n", + ")\n", + "\n", + "axs_cnt.set_xlabel('Time')\n", + "axs_cnt.set_ylabel('Number of incoming HTTP requests')\n", + "fig.legend()\n", + "fig.set_figwidth(10)\n", + "fig.set_figheight(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "8dab438f-577b-4b56-a6b9-08a1645598a9", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rFmzrOvVPeZbtmwxgwcPNo0aNTJJSUnm4osvNhs3brR+7nodTps2zSQnJ5vGjRub22+/3RQUFFR6/z15vh1t9+7dZsiQISY1NdVER0ebE044wbzxxhtu+/Tp08fceeedZsyYMSYpKcm0aNGi3N+PdevWmTPPPNM4HA7ToUMH8/nnn1f63K5IRft68lquSJ8+fcwdd9xhRo4caRITE03z5s3NCy+8YHJzc80NN9xg4uLiTJs2bcwnn3xi3Wbv3r1m6NChpmnTpiYqKsq0bdvW7e+5t6r7v0nGEwAADxhjdKigKChfxsslt8PDw/XII4/oP//5j/74449a3e+vvvpKW7du1aJFi/T4449r3Lhxuuiii5SUlKQlS5bo1ltv1S233FLuPGPGjNHo0aO1fPly9erVSwMHDtSePXskSfv379fZZ5+t7t2768cff9Rnn32mHTt26Morr3Q7xiuvvCK73a6srCw999xzFY7vySef1PTp0/XYY4/p559/Vv/+/XXxxRdbZWnbtm1Tp06dNHr06EqziZWJjo62Mq1vvPGG0tPTNXDgwHL7jR49Wnv27NGCBQskScnJyfrqq6+0a9cuj8/lrUOHDqmwsFCNGzeWJG3cuFHbt29Xv379rH0aNWqknj17avHixZKkxYsXKzExUSeddJK1T79+/RQWFqYlS5b4bay1Vfb3UJl7773XykT3799fr7/+uh566CFNmjRJa9as0SOPPKIHH3xQr7zyiiQpNzdXF110kTp27Khly5Zp/PjxXj03XL755htdd911GjlypFavXq3nn39ec+bM0aRJkyRJ77zzjmbMmKHnn39e69ev1/vvv6/OnTtLkt59910de+yxmjhxolsmeMSIEcrPz9eiRYu0atUqTZkyRXFxcVWOY9q0aeratauWL19uPRau56MkDR48WDt37tSnn36qZcuWqUePHjrnnHO0d+9eXXXVVRo9erQ6depkjeOqq65Snz599O2336q4uFiS9PXXX6tp06bKzMyUJP3555/Kzs5W3759Janax7ywsFD9+/dXfHy8vvnmG2VlZSkuLk4DBgxw+/0uXLhQ2dnZWrhwoV555RXNmTNHc+bMqfZ30a1bN6WkpOjcc88tV/5+tLy8PJ144on6+OOP9csvv+jmm2/WtddeW658/ZVXXlFsbKyWLFmiqVOnauLEidbjWlJSossuu0x2u11LlizRc889p3/961/VjrM6nryWK/PKK6+oadOm+uGHH3TnnXfqtttu0+DBg3Xaaafpp59+0nnnnadrr71Whw4dkiQ9+OCDWr16tT799FOtWbNGM2fOVNOmTWt9HyrDOp4AAHjgcGGxOj40PyjnXj2xv2Ls3v3LvvTSS9WtWzeNGzdOL730Uo3P3bhxYz311FMKCwtT+/btNXXqVB06dEj33XefJGns2LGaPHmyvv32Ww0ZMsS63R133KHLL79ckjRz5kx99tlneumll/TPf/5TTz/9tLp3765HHnnE2v/ll19WWlqa1q1bp/T0dElSu3btNHXq1CrH99hjj+lf//qXde4pU6Zo4cKFeuKJJ/TMM88oOTlZERERiouLU3Jyskf32RijL7/8UvPnz9edd94pSVq3bp06dOhQ4f6u7evWrZMkPf7447riiiuUnJysTp066bTTTtMll1yi888/36Pze+Jf//qXUlNTrTenrvlsLVq0cNuvRYsW1s+2b99ervwwIiJCjRs3rnY+3L/+9S898MADbtsKCgrUsWPHWt2PqhQXF2vu3Ln6+eefqy0HHjVqlC677DLr+rhx4zR9+nRrW+vWra3A8Prrr9cbb7yhkpISvfTSS4qKilKnTp30xx9/6LbbbvNqjBMmTNC9996r66+/XpJ0/PHH6+GHH9Y///lPjRs3Tlu2bFFycrL69eunyMhIHXfccTrllFMkOV9b4eHhio+Pd3tubtmyRZdffrkVoB5//PHVjuP000/XvffeK0lKT09XVlaWZsyYoXPPPVfffvutfvjhB+3cuVMOh0OS83Xz/vvv6//+7/908803Ky4uThEREW7jOPPMM3XgwAEtX75cJ554ohYtWqQxY8ZYZeWZmZk65phj1LZtW48e8zfffFMlJSV68cUXrfnms2fPVmJiojIzM3XeeedJkpKSkvT0008rPDxcGRkZuvDCC/Xll1/qpptuqvC+p6Sk6LnnntNJJ52k/Px8vfjii+rbt6+WLFmiHj16VHibY445xu2DhjvvvFPz58/XW2+9Zf1+JKlLly4aN26cJOffo6efflpffvmlzj33XH3xxRf67bffNH/+fKWmpkqSHnnkkVq/zj15LVema9eu1uvU9be5adOm1mP30EMPaebMmfr555916qmnasuWLerevbv1YZRrrrW/EHgCAFBPTZkyRWeffXaNMjkunTp1clubrUWLFjrhhBOs6+Hh4WrSpIl27tzpdrtevXpZlyMiInTSSSdpzZo1kqSVK1dq4cKFFWZxsrOzrcDzxBNPrHJsOTk52rp1q04//XS37aeffrpWrlzp4T084qOPPlJcXJwKCwtVUlKioUOHujX68TTz3LFjR/3yyy9atmyZsrKyrGYiN9xwg9VgqDJbtmxxC+buu+8+K8h3mTx5subNm6fMzMwKF2n3hzFjxuiGG25w2/bUU09p0aJFPj/Xs88+qxdffFEFBQUKDw/X3XffXW1AWDaLe/DgQWVnZ2v48OFuwUpRUZEaNWokSVqzZo26dOni9viVfc56auXKlcrKyrIynJIzYM7Ly9OhQ4c0ePBgPfHEEzr++OM1YMAAXXDBBRo4cKAiIip/C37XXXfptttu0+eff65+/frp8ssvV5cuXaocx9Fj79Wrl9W0aOXKlcrNzS03v/nw4cPKzs6u9JiJiYnq2rWrMjMzZbfbZbfbdfPNN2vcuHHKzc3V119/rT59+kjy7DFfuXKlNmzYoPj4eLfz5OXluY2jU6dOCg8Pt66npKRo1apVlY6zffv2at++vXX9tNNOU3Z2tmbMmKFXX321wtsUFxfrkUce0VtvvaU///xTBQUFys/PV0xMjNt+Rz/uKSkp1t+6NWvWKC0tzQo6pZo9h3yp7Hhdf5tdH2BIR4JZ13247bbbdPnll1vZ0EGDBum0007z2/gIPAEA8EB0ZLhWT+wftHPXRO/evdW/f3+NHTu2XNAQFhZWLpCqqClLZGSk23WbzVbhtpKSEo/HlZubq4EDB2rKlCnlfpaSkmJdjo2N9fiYvnDWWWdp5syZstvtSk1NdQsO0tPTrcD5aK7troBZcj6+J598sk4++WSNGjVKr732mq699lrdf//9at26daVjSE1NdVuKxlVK6/LYY49p8uTJ+uKLL9zeZLoyVTt27HB7DHfs2GF1K01OTi73AUFRUZH27t1bbTa4adOmVmarsrH5yrBhw3T//fcrOjpaKSkp1S5KL7k/V1xdemfNmqWePXu67Vc2oKmOJ6+R3NxcTZgwwS3b6hIVFaW0tDStXbtWX3zxhRYsWKDbb79d06ZN09dff13udeTy97//Xf3799fHH3+szz//XI8++qimT59uZd+9lZubq5SUFKtEtqzExMQqb9u3b19lZmbK4XCoT58+aty4sTp06KBvv/1WX3/9tUaPHm2dQ6r6Mc/NzdWJJ56o119/vdx5mjVrZl2u7d8XSTrllFP07bffVvrzadOm6cknn9QTTzyhzp07KzY2VqNGjSpX0u2LsXjLk9dyZar7e+3KNLvuw/nnn6/Nmzfrk08+0YIFC3TOOedoxIgReuyxx3xxV8oh8AQAwAM2m83rctdQMHnyZHXr1s0tIyA53+ht375dxhjrzYgv1978/vvv1bt3b0nO4GbZsmW64447JEk9evTQO++8o1atWlWZ+alOQkKCUlNTlZWVZWVeJCkrK8utXM5TsbGx5YIrlyFDhmjo0KH68MMPy83znD59upo0aaJzzz230mO7spgHDx6scgwRERGVjmHq1KmaNGmS5s+f75bhk5xljcnJyfryyy+tN6c5OTlasmSJlS3s1auX9u/fr2XLllnZ5K+++kolJSXlgoVgatSoUaWPgSdatGih1NRU/e9//9OwYcMq3KdDhw569dVXlZeXZ2U9v//+e7d9mjVrpgMHDujgwYNWYHv0a6RHjx5au3ZtleONjo7WwIEDNXDgQI0YMUIZGRlatWqVevToIbvdbs2hLCstLU233nqrbr31Vo0dO1azZs2qMvA8euzff/+9VQLeo0cPbd++XREREZWWUlY2jj59+ujll19WRESEBgwYIMkZjM6dO1fr1q2z5nd68pj36NFDb775ppo3b66EhIRK74svrFixwi1oO1pWVpYuueQSXXPNNZKcgdi6deu8Kh3v0KGDfv/9d23bts0619G/h5rw5LXsS82aNdP111+v66+/XmeeeabGjBlD4AkAALzXuXNnDRs2TE899ZTb9r59+2rXrl2aOnWqrrjiCn322Wf69NNPffaG8JlnnlG7du3UoUMHzZgxQ/v27dPf/vY3Sc7mKbNmzdLVV1+tf/7zn2rcuLE2bNigefPm6cUXX/QqKzVmzBiNGzdObdq0Ubdu3TR79mytWLGiwqxKbQwZMkRvv/22rr/+ek2bNk3nnHOOcnJy9Mwzz+iDDz7Q22+/bQUnV1xxhU4//XSddtppSk5O1saNGzV27Filp6crIyOjRuefMmWKHnroIb3xxhtq1aqVNdcrLi5OcXFxstlsGjVqlP7973+rXbt2at26tR588EGlpqZq0KBBkpxvlAcMGKCbbrpJzz33nAoLC3XHHXdoyJAhbuWC9cGECRN01113qVGjRhowYIDy8/P1448/at++ffrHP/6hoUOH6v7779dNN92ksWPHatOmTeXebPfs2VMxMTG67777dNddd2nJkiXlmtw89NBDuuiii3TcccfpiiuuUFhYmFauXKlffvlF//73vzVnzhwVFxdbx3rttdcUHR2tli1bSnLOqVu0aJGGDBkih8Ohpk2batSoUTr//POVnp6uffv2aeHChZXOL3bJysrS1KlTNWjQIC1YsEBvv/22Pv74Y0nOBlK9evXSoEGDNHXqVKWnp2vr1q36+OOPdemll+qkk05Sq1attHHjRq1YsULHHnus4uPj5XA41Lt3bx04cEAfffSRtTZw3759dcUVVyglJcUty1/dYz5s2DBNmzZNl1xyiSZOnKhjjz1Wmzdv1rvvvqt//vOfOvbYY2v0u37iiSfUunVrderUSXl5eXrxxRf11Vdf6fPPP6/0Nu3atdP//d//6bvvvlNSUpIef/xx7dixw6vAs1+/fkpPT7f+JuTk5Oj++++v9na5ubnasGGDdd31uDdu3FjHHXecR69lX3nooYd04oknqlOnTsrPz9dHH31U7XOtNuhqCwBAPTdx4sRy5WEdOnTQs88+q2eeeUZdu3bVDz/8UKu5oEebPHmyJk+erK5du+rbb7/VBx98YHVLdGUpi4uLdd5556lz584aNWqUEhMTPSqrLOuuu+7SP/7xD40ePVqdO3fWZ599pg8++EDt2rXz2X2RnBnvt956S/fdd59mzJih9u3b68wzz9TmzZuVmZnp9oawf//+VmbU9cY0IyNDn3/+eY0zvDNnzlRBQYH1ht/1VTZY+uc//6k777xTN998s04++WTl5ubqs88+c5vH+PrrrysjI0PnnHOOLrjgAp1xxhl64YUXavy4hKq///3vevHFFzV79mx17txZffr00Zw5c6wy57i4OH344YdatWqVunfvrvvvv79c6Xfjxo312muv6ZNPPlHnzp01d+5ctzm/kvN3/dFHH+nzzz/XySefrFNPPVUzZsywAsvExETNmjVLp59+urp06aIvvvhCH374oTXfcuLEidq0aZPatGljlZsWFxdrxIgR1gcF6enpevbZZ6u8v6NHj9aPP/6o7t2769///rcef/xx9e/vnBpgs9n0ySefqHfv3rrxxhuVnp6uIUOGaPPmzdacv8svv1wDBgzQWWedpWbNmlnrpiYlJalz585q1qyZ9aFJ7969VVJS4lZl4MljHhMTo0WLFum4447TZZddpg4dOmj48OHKy8ur1QdeBQUF1uu/T58+Wrlypb744gudc845ld7mgQceUI8ePdS/f3/17dtXycnJXgd1YWFheu+993T48GGdcsop+vvf/+4217cyrt9T9+7dJUn/+Mc/1L17dz300EPWPp68ln3Bbrdr7Nix6tKli3r37q3w8HDNmzfPp+coy2a87dEOAEADkJeXp40bN6p169YBa+ACIHg2bdqk1q1ba/ny5dXOpQNQXnX/N8l4AgAAAAD8isATAAAAAOBXNBcCAABAg9eqVSuP12oF4D0yngAAAAAAvyLwBAAAAAD4FYEnAAAAAMCvCDwBAAAAAH5F4AkAAAAA8CsCTwAAAACAXxF4AgAAn9m0aZNsNptWrFgR7KFYfvvtN5166qmKiopSt27dgj0cwKdatWqlJ554ItjDgIdC8W9koBB4AgBQj9xwww2y2WyaPHmy2/b3339fNpstSKMKrnHjxik2NlZr167Vl19+WeE+rsfNZrPJbrerbdu2mjhxooqKiqx9iouLNWPGDHXu3FlRUVFKSkrS+eefr6ysLLdjFRcXa/LkycrIyFB0dLQaN26snj176sUXX5Qk6zyVfY0fP77c+GbNmqUzzzxTSUlJSkpKUr9+/fTDDz+47WOM0UMPPaSUlBRFR0erX79+Wr9+vds+e/fu1bBhw5SQkKDExEQNHz5cubm5VT5+lQU248ePtwL5Vq1aVXmfyj6+FX21atVKktS3b19rW1RUlDp27Khnn322yvHVZaESNJb9XdY127Zt09ChQ5Wenq6wsDCNGjWqwv3efvttZWRkKCoqSp07d9Ynn3wS2IF6qLCwUP/617/UuXNnxcbGKjU1Vdddd522bt3qtl9Fr7mj/+6HGgJPAADqmaioKE2ZMkX79u0L9lB8pqCgoMa3zc7O1hlnnKGWLVuqSZMmle43YMAAbdu2TevXr9fo0aM1fvx4TZs2TZIzqBsyZIgmTpyokSNHas2aNcrMzFRaWpr69u2r999/3zrOhAkTNGPGDD388MNavXq1Fi5cqJtvvln79++X5Hyj7Pp64oknlJCQ4LbtnnvuKTe2zMxMXX311Vq4cKEWL16stLQ0nXfeefrzzz+tfaZOnaqnnnpKzz33nJYsWaLY2Fj1799feXl51j7Dhg3Tr7/+qgULFuijjz7SokWLdPPNN9f4sXVZunSpNf533nlHkrR27Vpr25NPPul2HyVp9uzZ1vWlS5dax7rpppu0bds2rV69WldeeaVGjBihuXPnejyWwsLCWt8f1B35+flq1qyZHnjgAXXt2rXCfb777jtdffXVGj58uJYvX65BgwZp0KBB+uWXXwI82uodOnRIP/30kx588EH99NNPevfdd7V27VpdfPHF5fadOHGi2+vqzjvvDMKIvWAAAEA5hw8fNqtXrzaHDx8O9lC8cv3115uLLrrIZGRkmDFjxljb33vvPVP23/64ceNM165d3W47Y8YM07JlS7djXXLJJWbSpEmmefPmplGjRmbChAmmsLDQ3HPPPSYpKckcc8wx5uWXX7Zus3HjRiPJzJ071/Tq1cs4HA7TqVMnk5mZ6XauVatWmQEDBpjY2FjTvHlzc80115hdu3ZZP+/Tp48ZMWKEGTlypGnSpInp27dvhfe3uLjYTJgwwRxzzDHGbrebrl27mk8//dT6uSS3r3HjxlX6uF1yySVu284991xz6qmnGmOMmTdvnpFkPvjgg3K3veyyy0yTJk1Mbm6uMcaYrl27mvHjx1d4nqPNnj3bNGrUyKN9yyoqKjLx8fHmlVdeMcYYU1JSYpKTk820adOsffbv328cDoeZO3euMcaY1atXG0lm6dKl1j6ffvqpsdls5s8//6z0XC1btjQzZswot72i55AxxixcuNBIMvv27av0mJLMe++9V257nz59zMiRI922tWvXzgwZMqTC47ieb/PmzTO9e/c2DofDzJ492xhjzKxZs0xGRoZxOBymffv25plnnnG77ZIlS0y3bt2Mw+EwJ554onn33XeNJLN8+XJjTMW/m6NfR8YY8/7775vu3bsbh8NhWrdubcaPH28KCwuNMc7fy7hx40xaWpqx2+0mJSXF3HnnndZ9Pfr5aYwxmzZtMhdddJFJTEw0MTExpmPHjubjjz+u9LFs2bKlmThxohkyZIiJiYkxqamp5umnn3bbZ9++fWb48OGmadOmJj4+3px11llmxYoV1v08ehyzZ882o0ePNhdeeKF1jBkzZhhJbq+vNm3amFmzZlnXq3vMt2zZYgYPHmwaNWpkkpKSzMUXX2w2btxo/dz1Opw2bZpJTk42jRs3NrfffrspKCio9P6XVdHzxxhjrrzySrf7YowxPXv2NLfcckulx9qwYYO5+OKLTfPmzU1sbKw56aSTzIIFC9z2admypZk0aZK58cYbTVxcnElLSzPPP/+82z7VPc888cMPPxhJZvPmzW7nruh1WRVJ5rnnnjMXXnihiY6ONhkZGea7774z69evN3369DExMTGmV69eZsOGDdZtVqxYYfr27Wvi4uJMfHy86dGjh9vfkLKq+79JxhMAAE8YIxUcDM6XMV4NNTw8XI888oj+85//6I8//qjV3f7qq6+0detWLVq0SI8//rjGjRuniy66SElJSVqyZIluvfVW3XLLLeXOM2bMGI0ePVrLly9Xr169NHDgQO3Zs0eStH//fp199tnq3r27fvzxR3322WfasWOHrrzySrdjvPLKK7Lb7crKytJzzz1X4fiefPJJTZ8+XY899ph+/vln9e/fXxdffLFVYrpt2zZ16tRJo0ePrjSbWJno6Ggr0/rGG28oPT1dAwcOLLff6NGjtWfPHi1YsECSlJycrK+++kq7du3y+FzeOnTokAoLC9W4cWNJ0saNG7V9+3b169fP2qdRo0bq2bOnFi9eLElavHixEhMTddJJJ1n79OvXT2FhYVqyZInfxlpbZX8Plbn33nutTHT//v31+uuv66GHHtKkSZO0Zs0aPfLII3rwwQf1yiuvSJJyc3N10UUXqWPHjlq2bJnGjx/v1XPD5ZtvvtF1112nkSNHavXq1Xr++ec1Z84cTZo0SZL0zjvvaMaMGXr++ee1fv16vf/+++rcubMk6d1339Wxxx7rlrWSpBEjRig/P1+LFi3SqlWrNGXKFMXFxVU5jmnTpqlr165avny59Vi4no+SNHjwYO3cuVOffvqpli1bph49euicc87R3r17ddVVV2n06NHq1KmTNY6rrrpKffr00bfffqvi4mJJ0tdff62mTZsqMzNTkvTnn38qOztbffv2laRqH/PCwkL1799f8fHx+uabb5SVlaW4uDgNGDDA7fe7cOFCZWdna+HChXrllVc0Z84czZkzx+vfTVmLFy92e21IUv/+/a3XRkVyc3N1wQUX6Msvv9Ty5cs1YMAADRw4UFu2bHHbb/r06TrppJO0fPly3X777brtttu0du1a6xi+eJ799ddfstlsSkxMdNs+efJkNWnSRN27d9e0adPcpgZU5uGHH9Z1112nFStWKCMjQ0OHDtUtt9yisWPH6scff5QxRnfccYe1/7Bhw3Tsscdq6dKlWrZsme69915FRkZ6fR8kkfEEAKAi5T65zc81ZlxCcL7ycz0ed9nM3amnnmr+9re/GWNqnvFs2bKlKS4utra1b9/enHnmmdb1oqIiExsba2XVXBmoyZMnW/sUFhaaY4891kyZMsUYY8zDDz9szjvvPLdz//7770aSWbt2rTHGmbno3r17tfc3NTXVTJo0yW3bySefbG6//XbreteuXSvNdJa9r67HraSkxCxYsMA4HA5zzz33GGOMycjIKJcRddm7d6+RZN2/X3/91XTo0MGEhYWZzp07m1tuucV88sknFd62phnP2267zRx//PHW8zMrK8tIMlu3bnXbb/DgwebKK680xhgzadIkk56eXu5YzZo1M88++2yl52rZsqWx2+0mNjbW7SsyMtKvGc+ioiLz6quvGknlMngurufbE0884ba9TZs25o033nDb9vDDD5tevXoZY4x5/vnnTZMmTdwyMzNnzvQ643nOOeeYRx55xG2fV1991aSkpBhjjJk+fbpJT0+vNGNXUdaqc+fOHmfMXccYMGCA27arrrrKnH/++cYYY7755huTkJBg8vLy3PZp06aNlZ2r6O/Bvn37TFhYmFm6dKkpKSkxjRs3No8++qjp2bOnMcaY1157zRxzzDFux6vqMX/11VdN+/btTUlJifXz/Px8Ex0dbebPn2+MOfI3p6ioyNpn8ODB5qqrrvLosags4xkZGVlubM8884xp3ry5R8d16dSpk/nPf/5jXW/ZsqW55pprrOslJSWmefPmZubMmcYYz55n1Tl8+LDp0aOHGTp0qNv26dOnm4ULF5qVK1eamTNnmsTERHP33XdXeSxJ5oEHHrCuL1682EgyL730krVt7ty5JioqyroeHx9v5syZ4/FYq8p4RtQsXAUAAKFuypQpOvvss2v0CbtLp06dFBZ2pECqRYsWOuGEE6zr4eHhatKkiXbu3Ol2u169elmXIyIidNJJJ2nNmjWSpJUrV2rhwoUVZnGys7OVnp4uSTrxxBOrHFtOTo62bt2q008/3W376aefrpUrV3p4D4/46KOPFBcXp8LCQpWUlGjo0KFujX6Mh5nnjh076pdfftGyZcuUlZWlRYsWaeDAgbrhhhusBkOV2bJlizp27Ghdv++++3Tfffe57TN5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3Dz00EP673//qwkTJujXX3/VmjVrNG/ePD3wwAOSpDlz5uill17SL7/8ov/973967bXXFB0drZYtW0pyrsW4aNEi/fnnn9q9e7ckadSoUZo/f742btyon376SQsXLrSCyMpkZWVp6tSpWrdunZ555hm9/fbb1mugX79+6tWrlwYNGqTPP/9cmzZt0nfffaf7779fP/74ozWOjRs3asWKFdq9e7fy8/MlOasmDhw4oI8++sgKMvv27avXX39dKSkpbln+6h7zYcOGqWnTprrkkkv0zTffaOPGjcrMzNRdd91V6yZoK1as0IoVK5Sbm6tdu3ZpxYoVWr16tfXzkSNH6rPPPtP06dP122+/afz48frxxx/dmugcrV27dnr33Xe1YsUKrVy5UkOHDvU6k+nJ8+xohYWFuuKKK/Tjjz/q9ddfV3FxsfV6d2VbFy9erCeeeEIrV67U//73P73++uu6++67dc011ygpKcmrMVbl8OHDuuOOO5SZmanNmzcrKytLS5curfb5WCmPZooCANDA1OXlVI5ugrNx40Zjt9vLLQMxc+ZMk5aWZmJjY811111nJk2aVOFyKmVV1LyjbIMUV7OXN954w5xyyinGbrebjh07mq+++srtNuvWrTOXXnqpSUxMtNr6jxo1ymo8UlmTkKMVFxeb8ePHm2OOOcZqdlN2uQdjvG8uVJnCwkIzbdo006lTJ2O3201CQoLp37+/+fbbb932e+GFF8xZZ51lmjVrZux2uznuuOPMDTfcYDZt2lTumJ42F2rZsmW5JS901PIwJSUl5sEHHzQtWrQwDofDnHPOOVazJpc9e/aYq6++2sTFxZmEhARz4403mgMHDlR77mAup1IV1/OtokYtr7/+uunWrZux2+0mKSnJ9O7d27z77rvWzxcvXmy6du1q7Ha76datm3nnnXfKHeu9994zbdu2NdHR0eaiiy4yL7zwQrnX0WeffWZOO+00Ex0dbRISEswpp5xiXnjhBev2PXv2NAkJCSY2Ntaceuqp5osvvnAbQ5cuXYzD4bCOe8cdd5g2bdoYh8NhmjVrZq699lqze/fuSh+Dli1bmgkTJpjBgwebmJgYk5ycbJ588km3fXJycsydd95pUlNTTWRkpElLSzPDhg0zW7ZsMcYYk5eXZy6//HKTmJhoLafi0rVrV5OcnGxd37Nnj7HZbBUucVPdY75t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fjD9+vUzTZo0MQkJCaZ3795m2bJlbvtIMrNmzTKDBg0y0dHRpm3btub//b//57bPxx9/bNq1a2eioqJM3759rce7qtdHRa+Dsj755BMTFhZmtm/fbm2bOXOmSUhIMPn5+RXexvVaefPNN80ZZ5xhoqKizEknnWTWrl1rfvjhB3PiiSea2NhYM2DAALNz507rdgsXLjQnn3yyiYmJMY0aNTKnnXaa2bRpU4XnqO7/JhlPAAA8YIzRocJDQfkyxng11vDwcD3yyCP6z3/+oz/++KNW9/urr77S1q1btWjRIj3++OMaN26cLrroIiUlJWnJkiW69dZbdcstt5Q7z5gxYzR69GgtX75cvXr10sCBA7Vnzx5J0v79+3X22Were/fu+vHHH/XZZ59px44duvLKK92O8corr8hutysrK0vPPfdcheN78sknNX36dD322GP6+eef1b9/f1188cVWiem2bdvUqVMnjR49utJsYmWio6OtTOsbb7yh9PR0DRw4sNx+o0eP1p49e7RgwQJJUnJysr766ivt2rXL43N569ChQyosLFTjxo0lSRs3btT27dvVr18/a59GjRqpZ8+eWrx4sSRp8eLFSkxM1EknnWTt069fP4WFhWnJkiV+G2ttlf09VObee++1MtH9+/fX66+/roceekiTJk3SmjVr9Mgjj+jBBx/UK6+8IknKzc3VRRddpI4dO2rZsmUaP368V88Nl2+++UbXXXedRo4cqdWrV+v555/XnDlzNGnSJEnSO++8oxkzZuj555/X+vXr9f7776tz586SnCWixx57rCZOnOiWCR4xYoTy8/O1aNEirVq1SlOmTFFcXFyV45g2bZq6du2q5cuXW4+F6/koSYMHD9bOnTv16aefatmyZerRo4fOOecc7d27V1dddZVGjx7tlhG86qqr1KdPH3377bcqLi6WJH399ddq2rSpMjMzJUl//vmnsrOz1bdvX0mq9jEvLCxU//79FR8fr2+++UZZWVmKi4vTgAED3H6/CxcuVHZ2thYuXGhl8ubMmePx76SkpEQHDhywXhsu69evV2pqqo4//ngNGzZMW7ZsqfI4Bw4c0PXXX69vv/1W33//vdq1a6cLLrhABw4ccNtvwoQJuvLKK/Xzzz/rggsu0LBhw7R3715J0u+//67LLrtMAwcO1IoVK/T3v/9d9957r0f34/XXX1fTpk11wgknaOzYsTp06JD1s8WLF6tz585q0aKFta1///7KycnRr7/+WuVxx40bpwceeEA//fSTIiIiNHToUP3zn//Uk08+qW+++UYbNmywMqdFRUUaNGiQ+vTpo59//lmLFy/WzTffXPNpG5WG0gAANGBHf3J7sOCgOWHOCUH5Olhw0ONxl83cnXrqqeZvf/ubMabmGc+WLVua4uJia1v79u3NmWeeaV0vKioysbGxVlbN9an65MmTrX0KCwvNsccea6ZMmWKMMebhhx825513ntu5f//9dyPJrF271hjj/MS/e/fu1d7f1NRUM2nSJLdtJ598srn99tut6127dq0001n2vroet5KSErNgwQLjcDjMPffcY4wxJiMjo1xG1GXv3r1GknX/fv31V9OhQwcTFhZmOnfubG655RbzySefVHjbmmY8b7vtNnP88cdbz8+srCwjyWzdutVtv8GDB5srr7zSGGPMpEmTTHp6erljNWvWzDz77LOVnqtly5bGbreb2NhYt6/IyEi/ZjyLiorMq6++aiSVy+C5uJ5vTzzxhNv2Nm3amDfeeMNt28MPP2x69epljDHm+eefN02aNHHLzMycOdPrjOc555xjHnnkEbd9Xn31VZOSkmKMMWb69OkmPT290oxdRdnkzp07e5wxdx1jwIABbtuuuuoqc/755xtjjPnmm29MQkKCycvLc9unTZs25vnnnzfGVPz3YN++fSYsLMwsXbrUlJSUmMaNG5tHH33U9OzZ0xhjzGuvvWaOOeYYt+NV9Zi/+uqrpn379qakpMT6eX5+vomOjjbz5883xhz5m1NUVGTtM3jwYHPVVVd5/HhMmTLFJCUlmR07dljbPvnkE/PWW2+ZlStXms8++8z06tXLHHfccSYnJ8fj4xYXF5v4+Hjz4YcfWtskmQceeMC6npub65YVHjt2rOnYsaPbcf71r39V+/p4/vnnzWeffWZ+/vln63G+9NJLrZ/fdNNN5f6GHjx40Eiq9G+N67Xy4osvWtvmzp1rJJkvv/zS2vboo4+a9u3bG2OM2bNnj5FUrmKlMtVlPCNqFq4CAIBQN2XKFJ199tk1yuS4dOrUSWFhRwqkWrRooRNOOMG6Hh4eriZNmmjnzp1ut+vVq5d1OSIiQieddJLWrFkjSVq5cqUWLlxYYRYnOztb6enpkqQTTzyxyrHl5ORo69atOv300922n3766Vq5cqWH9/CIjz76SHFxcSosLFRJSYmGDh3q1ujHeJh57tixo3755RctW7ZMWVlZWrRokQYOHKgbbrjBajBUmS1btqhjx47W9fvuu0/33Xef2z6TJ0/WvHnzlJmZqaioKM/vYC2MGTNGN9xwg9u2p556SosWLfL5uZ599lm9+OKLKigoUHh4uO6++27ddtttVd6mbBb34MGDys7O1vDhw3XTTTdZ24uKitSoUSNJ0po1a9SlSxe3x6/sc9ZTK1euVFZWlpXhlJzz7/Ly8nTo0CENHjxYTzzxhI4//ngNGDBAF1xwgQYOHKiIiMrfgt9111267bbb9Pnnn6tfv366/PLL1aVLlyrHcfTYe/XqZTUtWrlypXJzc8vNbz58+LCys7MrPWZiYqK6du2qzMxM2e122e123XzzzRo3bpxyc3P19ddfq0+fPpI8e8xXrlypDRs2KD4+3u08eXl5buPo1KmTwsPDrespKSlatWpVlfff5Y033tCECRP0//7f/1Pz5s2t7eeff751uUuXLurZs6datmypt956S8OHD6/wWDt27NADDzygzMxM7dy5U8XFxTp06FC5TGnZ301sbKwSEhKsv4dr1qxRz5493fb35HlWdt51586dlZKSonPOOUfZ2dlq06ZNtbevStnxujKmriy8a5tr/I0bN9YNN9yg/v3769xzz1W/fv105ZVXKiUlpUbnJvAEAMAD0RHRWjI0OOWI0RHRNbpd79691b9/f40dO7Zc0BAWFlYukKqoKUtkZKTbdZvNVuG2kpISj8eVm5urgQMHasqUKeV+VvYNTWxsrMfH9IWzzjpLM2fOlN1uV2pqqltwkJ6ebgXOR3NtdwXMkvPxPfnkk3XyySdr1KhReu2113Tttdfq/vvvV+vWrSsdQ2pqqttSNEeXCz722GOaPHmyvvjiC7c3kMnJyZKcb5bLPoY7duywupUmJyeX+4CgqKhIe/futW5fmaZNm6pt27Zu244em68MGzZM999/v6Kjo5WSkuL2wUdlyj5XXF16Z82aVe5Nf9mApjqevEZyc3M1YcIEXXbZZeVuHxUVpbS0NK1du1ZffPGFFixYoNtvv13Tpk3T119/Xe515PL3v/9d/fv318cff6zPP/9cjz76qKZPn64777zT47EfPcaUlBSrRLasxMTEKm/bt29fZWZmyuFwqE+fPmrcuLE6dOigb7/9Vl9//bVGjx5tnUOq+jHPzc3ViSeeqNdff73ceZo1a2Zdrunfl3nz5unvf/+73n77bbeS84okJiYqPT1dGzZsqHSf66+/Xnv27NGTTz6pli1byuFwqFevXuXKvmv799ATrsd0w4YNatOmjZKTk8t1td6xY4ckVftaLjteV8ns0dvKjn/27Nm666679Nlnn+nNN9/UAw88oAULFujUU0/1+n4QeAIA4AGbzaaYyJhgD8NrkydPVrdu3dS+fXu37c2aNdP27dtljLHefPhy7c3vv/9evXv3luQMbpYtW6Y77rhDktSjRw+98847atWqVZWZn+okJCQoNTVVWVlZVuZFkrKysnTKKad4fbzY2NhywZXLkCFDNHToUH344Yfl5nlOnz5dTZo00bnnnlvpsV1ZzIMHD1Y5hoiIiErHMHXqVE2aNEnz5893y/BJUuvWrZWcnKwvv/zSCjRzcnK0ZMkSK1vYq1cv7d+/X8uWLbOyyV999ZVKSkrKBQvB1KhRo0ofA0+0aNFCqamp+t///qdhw4ZVuE+HDh306quvKi8vz8p6fv/99277NGvWTAcOHNDBgwetwPbo10iPHj20du3aKscbHR2tgQMHauDAgRoxYoQyMjK0atUq9ejRQ3a73ZpDWVZaWppuvfVW3XrrrRo7dqxmzZpVZeB59Ni///57dejQwRrj9u3bFRERYS1bc7TKxtGnTx+9/PLLioiI0IABAyQ5g9G5c+dq3bp11vxOTx7zHj166M0331Tz5s2VkJBQ6X2piblz5+pvf/ub5s2bpwsvvLDa/XNzc5Wdna1rr7220n2ysrL07LPP6oILLpDknK+5e/dur8bVoUMHffDBB27bjv5decL1vHN9qNSrVy9NmjRJO3futDK7CxYsUEJCglvFhK90795d3bt319ixY9WrVy+98cYbNQo8aS4EAEA91rlzZw0bNkxPPfWU2/a+fftq165dmjp1qrKzs/XMM8/o008/9dl5n3nmGb333nv67bffNGLECO3bt09/+9vfJDmbp+zdu1dXX321li5dquzsbM2fP1833nhjhW9+qzJmzBhNmTJFb775ptauXat7771XK1as0MiRI312XyRn4HnppZfq+uuv10svvaRNmzbp559/1i233KIPPvhAL774ohWcXHHFFZoxY4aWLFmizZs3KzMzUyNGjFB6enqN1w6cMmWKHnzwQb388stq1aqVtm/fru3bt1uZJpvNplGjRunf//63PvjgA61atUrXXXedUlNTNWjQIEnON8EDBgzQTTfdpB9++EFZWVm64447NGTIEKWmpvrkcQoVEyZM0KOPPqqnnnpK69at06pVqzR79mw9/vjjkqShQ4fKZrPppptu0urVq/XJJ5/osccecztGz549FRMTo/vuu0/Z2dl64403yjW5eeihh/Tf//5XEyZM0K+//qo1a9Zo3rx5euCBByRJc+bM0UsvvaRffvlF//vf//Taa68pOjpaLVu2lORcx3PRokX6888/raBm1KhRmj9/vjZu3KiffvpJCxcutILIymRlZWnq1Klat26dnnnmGb399tvWa6Bfv37q1auXBg0apM8//1ybNm3Sd999p/vvv18//vijNY6NGzdqxYoV2r17t/Lz8yU5qyYOHDigjz76yAoy+/btq9dff10pKSluWf7qHvNhw4apadOmuuSSS/TNN99o48aNyszM1F133VWrJmhvvPGGrrvuOk2fPl09e/a0Xht//fWXtc8999yjr7/+2rrvl156qcLDw3X11VdXetx27drp1Vdf1Zo1a7RkyRINGzZM0dHeVZ/ceuutWr9+vcaMGaO1a9dW+Bw6WnZ2th5++GEtW7ZMmzZt0gcffKDrrrtOvXv3tqoczjvvPHXs2FHXXnutVq5cqfnz5+uBBx7QiBEj5HA4vBpjVTZu3KixY8dq8eLF2rx5sz7//HOtX7++2udjpTyaKQoAQANTl5dTOboJzsaNG43dbi+3DMTMmTNNWlqaiY2NNdddd52ZNGlShcuplFVRm/+yDVJcDSzeeOMNc8oppxi73W46duxovvrqK7fbrFu3zlx66aUmMTHRREdHm4yMDDNq1Cir8Uh1ywm4FBcXm/Hjx5tjjjnGanZTdrkHY7xvLlSZwsJCM23aNNOpUydjt9tNQkKC6d+/v/n222/d9nvhhRfMWWedZZo1a2bsdrs57rjjzA033FDhEgSeNhdq2bJluSUvdNTyMCUlJebBBx80LVq0MA6Hw5xzzjlWsyaXPXv2mKuvvtrExcWZhIQEc+ONN5oDBw5Ue+5gLqdSFdfzzdUQqKzXX3/ddOvWzdjtdpOUlGR69+5t3n33XevnixcvNl27djV2u91069bNvPPOO+WO9d5775m2bdua6Ohoc9FFF5kXXnih3Ovos88+M6eddpqJjo42CQkJ5pRTTjEvvPCCdfuePXuahIQEExsba0499VTzxRdfuI2hS5cuxuFwWMe94447TJs2bYzD4TDNmjUz1157rdm9e3elj0HLli3NhAkTzODBg01MTIxJTk42Tz75pNs+OTk55s477zSpqakmMjLSpKWlmWHDhpktW7YYY4zJy8szl19+uUlMTLSWU3Hp2rWrSU5Otq7v2bPH2Gy2Cpe4qe4x37Ztm7nuuutM06ZNjcPhMMcff7y56aabzF9//WWMqfh1OHLkSNOnT59K739Fy9JIMtdff721z1VXXWVSUlKM3W43xxxzjLnqqqvMhg0bKj2mMcb89NNP5qSTTjJRUVGmXbt25u233y73WqjoedyoUSO3x+/DDz80bdu2NQ6Hw5x55pnm5ZdfrvL1sWXLFtO7d2/TuHFj43A4TNu2bc2YMWOsx8hl06ZN5vzzzzfR0dGmadOmZvTo0dYyPhWp6LVS0Wu17N+k7du3m0GDBlmPXcuWLc1DDz3k1nCurOr+b9qM8bJHOwAADUBeXp42btyo1q1bB6yBC4Dg2bRpk1q3bq3ly5db5coAPFfd/01KbQEAAAAAfkXgCQAAAADwK7raAgAAoMFr1aqVx2u1AvAeGU8AAAAAgF8ReAIAAAAA/IrAEwCAKlB6BwBA9ar7f0ngCQBABSIjIyVJhw4dCvJIAAAIfa7/l67/n0ejuRAAABUIDw9XYmKidu7cKUmKiYmRzWYL8qgAAAgtxhgdOnRIO3fuVGJiosLDwyvcz2aoIQIAoELGGG3fvl379+8P9lAAAAhpiYmJSk5OrvRDWgJPAACqUVxcrMLCwmAPAwCAkBQZGVlpptOFwBMAAAAA4Fc0FwIAAAAA+BWBJwAAAADArwg8AQAAAAB+ReAJAAAAAPArAk8AAAAAgF8ReAIAAAAA/IrAEwAAAADgVwSeAAAAAAC/IvAEAAAAAPgVgScAAAAAwK8IPAEAAAAAfkXgCQAAAADwKwJPAAAAAIBfEXgCAAAAAPyKwBMAAAAA4FcEngAAAAAAvyLwBAAAAAD4FYEnAAAAAMCvCDwBAAAAAH5F4AkAAAAA8CsCTwAAAACAXxF4AgAAAAD8isATAAAAAOBXBJ4AAAAAAL8i8AQAAAAA+BWBJwAAAADArwg8AQAAAAB+ReAJAAAAAPArAk8AAAAAgF8ReAIAAAAA/IrAEwAAAADgVwSeAAAAAAC/IvAEAAAAAPgVgScAAAAAwK8IPAEAAAAAfkXgCQAAAADwKwJPAAAAAIBfEXgCAAAAAPyKwBMAAAAA4FcEngAAAAAAvyLwBAAAAAD4FYEnAAAAAMCvCDwBAAAAAH5F4AkAAAAA8CsCTwAAAACAX0UEewC1UVJSoq1btyo+Pl42my3YwwEAAAAQJMYYHThwQKmpqQoLI78Waup04Ll161alpaUFexgAAAAAQsTvv/+uY489NtjDwFHqdOAZHx8vyfnkSkhICPJoAAAAAARLTk6O0tLSrBgBoaVOB56u8tqEhAQCTwAAAABMwQtRFD8DAAAAAPyKwBMAAAAA4FcEngAAAAAAvyLwBAAAAAD4FYEnAAAAAMCvCDwBAAAAAH5F4AkAAAAA8CsCTwAAAACAXxF4AgAAAAD8isATAAAAAOBXBJ4AAAAAAL8i8AQAAAAA+BWBJwAAAADArwg8AQAAAAB+ReAJAAAAAPArAk8AAAAAgF8ReAIAAAAA/IrAEwAAAADgVwSeAAAAAAC/IvAEAAAAAPgVgScAAAAAwK8IPAEAAAAAfkXgCQAAAADwKwJPAAAAAIBfEXgCAAAAAPyKwBMAAAAA4FcEngAAAAAAvyLwBAAAAAD4VVADz/Hjx8tms7l9ZWRkBHNIAAAAAAAfiwj2ADp16qQvvvjCuh4REfQhAQAAAAB8KOhRXkREhJKTk4M9DATazjVSTBMprnmwRwIAAADAz4I+x3P9+vVKTU3V8ccfr2HDhmnLli2V7pufn6+cnBy3L9RBB7ZLz50hvXZZsEcCAAAAIACCGnj27NlTc+bM0WeffaaZM2dq48aNOvPMM3XgwIEK93/00UfVqFEj6ystLS3AI4ZP7NsslRQ5vwMAAACo92zGGBPsQbjs379fLVu21OOPP67hw4eX+3l+fr7y8/Ot6zk5OUpLS9Nff/2lhISEQA4VtbF+gfT6FZItTHpor2SzBXtEAAAAqONycnLUqFEjYoMQFfQ5nmUlJiYqPT1dGzZsqPDnDodDDocjwKOCz+X95fxuSqSifCkyKrjjAQAAAOBXQZ/jWVZubq6ys7OVkpIS7KHAn1yBpyQVHAzeOAAAAAAERFADz3vuuUdff/21Nm3apO+++06XXnqpwsPDdfXVVwdzWPC3/DJNoQoJPAEAAID6Lqiltn/88Yeuvvpq7dmzR82aNdMZZ5yh77//Xs2aNQvmsOBveWUCTzKeAAAAQL0X1MBz3rx5wTw9gsWt1PZQ8MYBAAAAICBCao4nGoiypbYFucEbBwAAAICAIPBE4JUttS0k4wkAAADUdwSeCDy62gIAAAANCoEnAi+f5kIAAABAQ0LgicCjqy0AAADQoBB4IvDKltqyjicAAABQ7xF4IrBKiqWCA0euk/EEAAAA6j0CTwRW/gH366zjCQAAANR7BJ4IrLJlthIZTwAAAKABIPBEYJXtaCsxxxMAAABoAAg8EVh5RwWeZDwBAACAeo/AE4FVrtSWOZ4AAABAfUfgicA6utS2IDc44wAAAAAQMASeCCxXqW1sM+f3QjKeAAAAQH1H4InAcpXaxqc4vzPHEwAAAKj3CDwRWPmlgWdCqvM7gScAAABQ7xF4IrBcpbZkPAEAAIAGg8ATgZV3VMazpFAqKgjeeAAAAAD4HYEnAsvV1TY++ci2QrKeAAAAQH1G4InAcmU8Y5pKYZHOy6zlCQAAANRrBJ4ILNccz6gEyR7rvMw8TwAAAKBeI/BEYLlKbR1lAk9KbQEAAIB6jcATgeUqtY1qRMYTAAAAaCAIPBE4RQVSUZ7zclSCFBnjvMwcTwAAAKBeI/BE4LjKbKXSUts45+WC3OCMBwAAAEBAEHgicFxltvZ4KSxcspdmPAvJeAIAAAD1GYEnAsea35ng/M4cTwAAAKBBIPBE4JTtaCtJkQSeAAAAQENA4InAKdvRViLjCQAAADQQBJ4InLzSjKdVasscTwAAAKAhIPBE4BxdamtlPOlqCwAAANRnBJ4InKNLba05nmQ8AQAAgPqMwBOBU67UljmeAAAAQENA4InAqazUtpDAEwAAAKjPCDwROHS1BQAAABokAk8ETrk5nqVdbZnjCQAAANRrBJ4InHKltnHO72Q8AQAAgHqNwBOBU67U1rWOJ4EnAAAAUJ8ReCJw6GoLAAAANEgEnggMY8qX2rrW8SzKk0qKgzMuAAAAAH5H4InAKDwklRQ5Lx/d1VYi6wkAAADUYwSeCAxXma0t/EjAGeGQbKVPwUI62wIAAAD1FYEnAsMqs42XbDbnZZuNzrYAAABAA0DgicA4uqOti7WWJ4EnAAAAUF8ReCIwju5o60JnWwAAAKDeI/BEYOSXZjwdR2U8WcsTAAAAqPcIPBEYlZXaMscTAAAAqPcIPBEYlZXaWnM86WoLAAAA1FcEnggMq6ttZXM8cwM7HgAAAAABQ+CJwKi01LY08GQdTwAAAKDeIvBEYNDVFgAAAGiwCDwRGJWV2rKOJwAAAFDvEXgiMOhqCwAAADRYBJ4IjEpLbV3reDLHEwAAAKivCDwRGFapbSXNhch4AgAAAPUWgScCo7JS20gCTwAAAKC+I/CE/5WUSPkHnJfpagsAAAA0OASe8L+CA5KM8/LRXW3tdLUFAAAA6jsCT/ifq8w23CFFRrn/zNXVtpDAEwAAAKivCDzhf5V1tJVYxxMAAABoAAg84X9WR9sKAk9rjifLqQAAAAD1FYEn/K+yjrbSkcCz8KCzCREAAACAeofAE/5XVamtK/CUpKLDgRkPAAAAgIAi8IT/VVVqGxF95DLzPAEAAIB6icAT/pe33/m9olLbsDApkrU8AQAAgPqMwBP+Z5XaVhB4SqzlCQAAANRzBJ7wv6pKbaUyDYbobAsAAADURwSe8L+qutpKZUptcwMzHgAAAAABReAJ/6uqq63EWp4AAABAPUfgCf+rttSWOZ4AAABAfUbgCf+rrtTWHuf8XkjgCQAAANRHBJ7wv+pKbSPJeAIAAAD1GYEn/M/TrrbM8QQAAADqJQJP+Fdx4ZFlUiottaWrLQAAAFCfEXjCv1xlthLreAIAAAANFIEn/Cu/tLFQZKwUHlHxPlbGkzmeAAAAQH1E4An/qq6jrURzIQAAAKCeI/CEf1XX0VY6spwKgScAAABQLxF4wr9cHW2rynjaSzOezPEEAAAA6iUCT/iXq9S2ssZCEl1tAQAAgHqOwBP+5UmpbSTreAIAAAD1GYEn/MujUlu62gIAAAD1GYEn/MubUlvmeAIAAAD1EoEn/MujrrZl5nga4/8xAQAAAAgoAk/4V74X63iaEqko3/9jAgAAABBQBJ7wL6vU1oM5nhLzPAEAAIB6iMAT/uVJqW1YuBQR5bxcSOAJAAAA1DcEnvCvPA9KbSU62wIAAAD1GIEn/Mu1nEpVXW0l1vIEAAAA6jECT/iPMZ6V2krunW0BAAAA1CsEnvCfwsNSSaHzcrWltqWdbVnLEwAAAKh3CDzhP64yW1uYZI+rel/meAIAAAD1FoEn/MdVZuuIl2y2qveNJPAEAAAA6isCT/iPpx1tJTKeAAAAQD1G4An/yS8NPB2eBJ6uOZ4EngAAAEB9Q+AJ//G0o610ZA4oGU8AAACg3iHwhP94U2obWZrxZB1PAAAAoN4h8IT/uLraOjzJeDLHEwAAAKivCDzhP16V2pYGnszxBAAAAOodAk/4D11tAQAAAIjAE/7kTaktczwBAACAeovAE/5To662uf4bDwAAAICgIPCE/3hVautax5OMJwAAAFDfEHjCf+hqCwAAAEAEnvAnq9TWk3U8CTwBAACA+orAE/5DV1sAAAAAIvCEv5SUeFlqWzrHs6RQKirw37gAAAAABByBJ/yjIFeScV72pKutq9RWkgrJegIAAAD1CYEn/MNVZhtulyKiqt8/wi6FRTovs5YnAAAAUK8QeMI/ypbZ2mye3YZ5ngAAAEC9ROAJ/7A62npQZuviCjwptQUAAADqFQJP+Ic3HW1dyHgCAAAA9RKBJ/zDm462LpGlnW2Z4wkAAADUKwSe8A8r4+lNqW2c83tBru/HAwAAACBoCDzhHzUqtS3NeBaS8QQAAADqEwJP+IdVasscTwAAAKChI/CEf9Skq20kgScAAABQHxF4wj/oagsAAACgFIEn/KMmXW2Z4wkAAADUSwSe8I+alNpaGU+62gIAAAD1CYEn/KMmpbbWHE8yngAAAEB9QuAJ/6hRqS1zPAEAAID6iMAT/lGbUttCAk8AAACgPiHwhO8VFx4JHqMSPb8dGU8AAACgXiLwhO/lHzhy2RHv+e0iS7vaMscTAAAAqFcIPOF7rsZCkTFSeKTnt7PHOb+T8QQAAADqFQJP+F5NOtpKZdbxJPAEAAAA6hMCT/heTTraSszxBAAAAOopAk/4Xk062kpH1vEsypNKin07JgAAAABBEzKB5+TJk2Wz2TRq1KhgDwW1VeNS29gjl8l6AgAAAPVGSASeS5cu1fPPP68uXboEeyjwhZqW2kY4JFvpU7KQzrYAAABAfRH0wDM3N1fDhg3TrFmzlJSUFOzhwBdqWmprs9W9zrYH90jbVwV7FAAAAEBIC3rgOWLECF144YXq169ftfvm5+crJyfH7QshqKaltlKZtTzrSOD51rXSc2dIe7KDPRIAAAAgZAU18Jw3b55++uknPfroox7t/+ijj6pRo0bWV1pamp9HiBrJLw08vS21lepeZ9s9G5zfd/0W3HEAAAAAISxogefvv/+ukSNH6vXXX1dUVJRHtxk7dqz++usv6+v333/38yhRI1apbQ0ynnVtLU/Xfc3dGdxxAAAAACEsIlgnXrZsmXbu3KkePXpY24qLi7Vo0SI9/fTTys/PV3h4uNttHA6HHA5HoIcKb9Wm1LYuzfEsKpCKDjsvH9wV3LEAAAAAISxogec555yjVavcm7LceOONysjI0L/+9a9yQSfqkJp2tZXKzPGsA11t88vMMSbjCQAAAFQqaIFnfHy8TjjhBLdtsbGxatKkSbntqGNq2tVWKjPHM9d34/EXV2ZXkg4SeAIAAACVCXpXW9RDtSq1LQ0868I6nm4ZT0ptAQAAgMoELeNZkczMzGAPAb5Qm1LbutTVlownAAAA4BEynvCtwjypuMB5uSaltnVpHc88Mp4AAACAJwg84VtWFtAm2eO9v31d6mpbttQ2/y9n0A0AAACgHAJP+FbZMtuwGjy9rHU868Acz7KlthJLqgAAAACVIPCEb9Wmo61Ux+Z45rhfZ54nAAAAUCECT/hW3n7n95p0tJWkyDoUeOYfFXgyzxMAAACoEIEnfKs2HW2lOpbxPLrUlownAAAAUBECT/hWrUtt6+IcT5vzWy6BJwAAAFARAk/4lisYq2mprdXVNtc34/EnV3a3UZrzO82FAAAAgAoReMK3altqa63jWYcynk3aOL+T8QQAAAAqROAJ32qIXW2btHV+J+MJAAAAVIjAE75V61Lb0sCz8JBUUuKbMfmLK7vbtJ3zOxlPAAAAoEIEnvAtX3W1lZGKDvtkSH5hTPlSW7raAgAAABUi8IRv1bbUNiL6yOVQnudZeFgqKXJedpXaHt4nFRcGb0wAAABAiCLwhG/VttQ2LEyKdM3zDOHOtq7Mri3M2dXWFu68zjxPAAAAoBwCT/hWfmng6ahh4CnVjbU8XQG2I14KC5dimzmvM88TAAAAKIfAE75V21JbqW50trXuZ2mAHVcaeJLxBAAAAMoh8ITvGHOkBLWmpbZSmVLbEA48j87sxjZ3fifjCQAAAJRD4AnfKciVTOkSKDXtaivVkYynay5r6f2MKw086WwLAAAAlEPgCd9xBWNhEVJkdNX7VqVOzPE8KrNrzfGk1BYAAAA4GoEnfKdsMGaz1fw49jjn97rQ1dZBxhMAAACoDoEnfOfoYKymIksznqG8jufRpbbM8QQAAAAqReAJ3zk6GKupOjHHk662AAAAgKcIPOE7RwdjNeUKPAtDOPA8OrtLxhMAAACoFIEnfMdaYqQhZDwr6Wp7aI9UXBScMQEAAAAhisATvmMFY7XMeNaJOZ5HZXdjmki2MEnGGXwCAAAAsBB4wnd8XWpbl7rahoU7g0+JzrYAAADAUQg84Tu+6mprzfEM5YxnBdld5nkCAAAAFSLwhO805K62Ep1tAQAAgEoQeMJ3fFVqGxnigWdJScXZXTKeAAAAQIUIPOE7vi61DdXAs+CAJOO8XDa76+psyxxPAAAAwA2BJ3zHZ6W2pV1tQ3WOpyuzG26XIqKObI8tLbXNpdQWAAAAKIvAE77js662cc7voZrxLJvZtdmObCfjCQAAAFSIwBO+46tSW2sdz4OSMbU7lj9Ultm15niS8QQAAADKIvCEbxQXHVl301freJpiqSi/dsfyh8oyu1ZXWzKeAAAAQFkEnvANV7ZT8l1zISk053lWltl1ZTwP7nZ2vgUAAAAgicATvuIKxiKipQh77Y4VFn6kaY8rixpKKi21ber8boqlw3sDOyYAAAAghBF4wjd81dHWpew8z1Bj3dejSm3DI6Xoxs7LrOUJAAAAWAg84Ru+6mjrYnW2DcFSW1fg6ajgvtLZFgAAACiHwBO+4auOti6utTxDsdTWdV8ryu6ylicAAABQDoEnfMPXpbauBkOh2FyoquwuGU8AAACgHAJP+IavS23rwhzPirK71lqeBJ4AAACAC4EnfMPnpbauOZ4hGHhWVWprreVJqS0AAADgQuAJ3/B5qW0oZzyryO6S8QQAAADKIfCEb1S2xEhNWXM8QzHwrKLUljmeAAAAQDkEnvANq9TWV3M8SwPPUMx40tUWAAAA8AqBJ3zDX11tQ20dz+LCI512oxLL/9zKeO6SjAnYsAAAAIBQRuAJ3/B1V9tQnePpup+S5Igv/3NXxrOkUDq8LzBjAgAAAEIcgSd8w19dbUNtjmd+aWY3MkYKjyz/8wjHkeCbzrYAAACAJAJP+IqvS21DdR1PTzK7dLYFAAAA3BB4wjd8XmobonM8q+po60JnWwAAAMANgSdqrzBPKs53XvZZqa0r8Mz1zfF8paqOti50tgUAAADcEHii9vKrabhTE9Y6nqGW8fQgs0vGEwAAAHBD4InayyvTWCgs3DfHDNk5nh6U2jLHEwAAAHBD4Inay/cgGPOWq6ttqAWenpTaxpWW2tLVFgAAAJBE4AlfsDra+qixkBT663jS1RYAAADwGIEnai/Pgyygt1xzPEsKpaIC3x23trzqakvGEwAAAJAIPOEL+WXmePpKZOyRy4UhlPXM9yC7a3W13SkZ4/8xAQAAACGOwBO1549S2wi7FBbpvBxKa3l609W2ON+94y8AAADQQBF4ovb8UWorheY8T09KbSOjJXvpsjKs5QkAAAAQeMIH/FFqKx3pbBtSpbYeBtlWZ1saDAEAAAAEnqg9f5TaSqG5lqcnpbYSnW0BAACAMgg8UXt+K7UtbTAUKnM8jfGs1FZiLU8AAACgDAJP1J7fSm1dgWeub49bU0V5zuVdpOqDbDKeAAAAgIXAE7WXt9/5PSrRt8d1BZ6FIZLxdGV2ZTvSPKgy1lqeBJ4AAAAAgSdqz1+ltqE2x7NsmW1YNS8day1PSm0BAAAAAk/Unr+72oZK4OlpR1uJjCcAAABQBoEnascYzzu9eivU1vH0pnsvczwBAAAAC4EnaqfgoGSKnZf91dU2ZOZ4etjRVqKrLQAAAFAGgSdqx1V+ags/MifTVyJDrKutN6W2roxn4SEpP0TGDwAAAAQJgSdqp2z5qc3m22OH2jqe3pQUO+KOBOLM8wQAAEADR+CJ2vFXR1spdOd4etpEic62AAAAgCQCT9SWvzraSke62haGSOCZ72UTJTrbAgAAAJIIPFFb3nR69VbIrePpZXaXzrYAAACAJAJP1JY/A8+Qm+PpZaktnW0BAAAASQSeqC2/ltq6As8QyXh6W2pLxhMAAACQROCJ2gpExjNU5nh6W2rLHE8AAABAEoEnasufXW1Dbo6nq9TW04wnXW0BAAAAicATtRWIrrZFeVJJse+P7618L7O7ZDwBAAAASQSeqC2/ltrGHLkc7KxnSYmUf8B52euutmQ8AQAA0LAReKJ2/FlqGxEl2UqfooVB7mxbkCuZEudlb7vaFhyQCg/7Z1wAAABAHUDgidrxZ6mtzSZFhkhnW9f9DIuUIqM9u40jQQp3OC/T2RYAAAANWK0Dz+LiYq1YsUL79u3zxXhQ1/iz1FYKnSVVymZ2bTbPbmOzlZnnSbktAAAAGi6vA89Ro0bppZdekuQMOvv06aMePXooLS1NmZmZvh4fQl2el2tbesseIp1trY62XmZ2rc62ZDwBAADQcHkdeP7f//2funbtKkn68MMPtXHjRv3222+6++67df/99/t8gAhhJcXO+YuSf0ptpdBZyzO/hgE2nW0BAAAA7wPP3bt3Kzk5WZL0ySefaPDgwUpPT9ff/vY3rVq1yucDRAhzBWOSf5oLSaEzx7OmTZRYyxMAAADwPvBs0aKFVq9ereLiYn322Wc699xzJUmHDh1SeHi4zweIEOYKxiKipAiHf85hzfEMclfbvP3O795mdsl4AgAAAIrw9gY33nijrrzySqWkpMhms6lfv36SpCVLligjI8PnA0QIq+m8R29Yczxz/XcOT1iltone3c5ay5PAEwAAAA2X14Hn+PHjdcIJJ+j333/X4MGD5XA4M13h4eG69957fT5AhLCaznv0hj3O+T3Y63jWtNQ2juZCAAAAgNeB53//+19dddVVVsDpcvXVV2vevHk+GxjqgJoGY96IrOtdbSm1BQAAALye43njjTfqr7/+Krf9wIEDuvHGG30yKNQRASm1DZHmQrXtaktzIQAAADRgXgeexhjZbLZy2//44w81auTHkkuEnoCU2oZI4Fnbrrb5f0mFeb4dEwAAAFBHeFxq2717d9lsNtlsNp1zzjmKiDhy0+LiYm3cuFEDBgzwyyARogJRamut4xnsOZ41zO5GJ0lhkVJJoXRwl5SY5vuxAQAAACHO48Bz0KBBkqQVK1aof//+iouLs35mt9vVqlUrXX755T4fIEJYTZcY8UaozPGsaXbXZnNmPQ9sdc7zJPAEAABAA+Rx4Dlu3DhJUqtWrTRkyJByzYXQANV0iRFvuLraBjvwrE12N6408GSeJwAAABoor+d4nn322dq168gb6B9++EGjRo3SCy+84NOBoQ4ISKltiGQ8a9NIic62AAAAaOC8DjyHDh2qhQsXSpK2b9+ufv366YcfftD999+viRMn+nyACGGB7GobzDmexUVSYWngW5PsrtXZlsATAAAADZPXgecvv/yiU045RZL01ltvqXPnzvruu+/0+uuva86cOb4eH0JZILraRrq62ub67xzVcd1PqWbZXVdn24OU2gIAAKBh8jrwLCwstOZ3fvHFF7r44oslSRkZGdq2bZtvR4fQFsiutgVBzHi6MrsR0VJ4pPe3J+MJAACABs7rwLNTp0567rnn9M0332jBggXWEipbt25VkyZNfD5AhLCAlNqGwBzP2mZ2rTmeZDwBAADQMHkdeE6ZMkXPP/+8+vbtq6uvvlpdu3aVJH3wwQdWCS4aiECU2rq62hYekkpK/HeeqtQ2sxtXWmpLxhMAAAANlMfLqbj07dtXu3fvVk5OjpKSkqztN998s2JiYnw6OISwonypKM952Z+ltq51PGWkosNHSm8DqbaZXbraAgAAoIHzOuMpScYYLVu2TM8//7wOHDggSbLb7QSeDUlemYY7/iy1jSzznArWPM/aZnZdczwP75OKC30zJgAAAKAO8TrjuXnzZg0YMEBbtmxRfn6+zj33XMXHx2vKlCnKz8/Xc889549xItS4gjF7vBQW7r/zhIU5g8/CQ6WdbZv571yVqW2pbXRjyRYumWLnPM+EVN+NDQAAAKgDvM54jhw5UieddJL27dun6Ohoa/ull16qL7/80qeDQwhzlZ/6s8zWJdhreda21DYsTIpt6rzMPE8AAAA0QF5nPL/55ht99913stvtbttbtWqlP//802cDQ4gLREdbl8ggd7b1RROl2OZS7g462wIAAKBB8jrjWVJSouLi4nLb//jjD8XHx/tkUKgDAtHR1sXV2TZYgacvsrt0tgUAAEAD5nXged555+mJJ56wrttsNuXm5mrcuHG64IILfDk2hLLaznv0RrDX8rSyu7XMeEp0tgUAAECD5HWp7fTp09W/f3917NhReXl5Gjp0qNavX6+mTZtq7ty5/hgjQlEgS22DPcfTF9ldK+NJqS0AAAAaHq8Dz2OPPVYrV67UvHnz9PPPPys3N1fDhw/XsGHD3JoNoZ4LZKltZGngWZDr/3NVxBfZXTKeAAAAaMC8DjwlKSIiQtdcc42vx4K6JKCltq7As452tZWOrOXJHE8AAAA0QF4Hnv/973+r/Pl1111X48GgDgloqW196GpbWmpLV1sAAAA0QF4HniNHjnS7XlhYqEOHDslutysmJobAs6EIRlfbwmA1F/JBdpeMJwAAABowr7va7tu3z+0rNzdXa9eu1RlnnEFzoYbEWmIkEHM8g5jxLMyTivOdl2uT3XXN8Ty0Ryouqv24AAAAgDrE68CzIu3atdPkyZPLZUNRjwWjq20w5ni6Mruy1e6+xjRxHkPGGXwCAAAADYhPAk/J2XBo69atvjocQl1AS22D2NXWVWbriJfCavFyCY8oDT5FZ1sAAAA0OF7P8fzggw/crhtjtG3bNj399NM6/fTTfTYwhLhgdLUNxjqevszsxjWXDu1mnicAAAAaHK8Dz0GDBrldt9lsatasmc4++2xNnz7dV+NCKDMmsKW2wZzjme/Duax0tgUAAEAD5XXgWVJS4o9xoC4pPCSZYuflQHa1DUbg6cvMLp1tAQAA0ED5bI4nGhBXMGYLP1IG60/BXMfTl5ldV2db5ngCAACggfE64/mPf/zD430ff/xxbw+PusAKxuIlm83/5wvmHE9fNlGKKy21zaXUFgAAAA2L14Hn8uXLtXz5chUWFqp9+/aSpHXr1ik8PFw9evSw9rMFIiBBcASyo60kRbq62tbxUlsyngAAAGigvA48Bw4cqPj4eL3yyitKSkqSJO3bt0833nijzjzzTI0ePdrng0SICWRHW6nMcioHnY2NAvmhhq+72kpkPAEAANDgeD3Hc/r06Xr00UetoFOSkpKS9O9//5uutg1F3n7nd0eAMp6uOZ6mWCrKD8w5XXyZ3bW62pLxBAAAQMPideCZk5OjXbvKZ2x27dqlAwcO+GRQCHHBKrWVAj/P0x9dbQ/ulugODQAAgAbE68Dz0ksv1Y033qh3331Xf/zxh/744w+98847Gj58uC677DJ/jBGhJtCltuERUrjDebkgNzDndPFpV9vSjKcplg7vrf3xAAAAgDrC6zmezz33nO655x4NHTpUhYWFzoNERGj48OGaNm2azweIEOTLYMxT9ljpcL5UEOCMZ37pfY1KrP2xwiOl6CTp8D7nWp6xTWt/TAAAAKAO8DrwjImJ0bPPPqtp06YpOztbktSmTRvFxgZgPUeEhkCX2kqlgefewHe29XV2N7a5M/A8uFNSR98cEwAAAAhxXpfaumzbtk3btm1Tu3btFBsbK2OML8eFUBboUlupzFqegQ48fZzdpbMtAAAAGiCvA889e/bonHPOUXp6ui644AJt27ZNkjR8+HCWUmkoglFqG1na2TaQGU9jpPzShlm+yu7S2RYAAAANkNeB5913363IyEht2bJFMTEx1varrrpKn332mVfHmjlzprp06aKEhAQlJCSoV69e+vTTT70dEgItWKW2UmADz4KDzkZAku+yu1bGk8ATAAAADYfXczw///xzzZ8/X8cee6zb9nbt2mnz5s1eHevYY4/V5MmT1a5dOxlj9Morr+iSSy7R8uXL1alTJ2+HhkAJZqltIANPV2bXFn4k41pbVsaTUlsAAAA0HF5nPA8ePOiW6XTZu3evHA6HV8caOHCgLrjgArVr107p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YKV6jB588EGcffbZKC0tRWlpKbZu3YqDBw/GPeeqq66a93oXXHBBNn6cgpTqMXrkkUfmPddsNsc9h84jZaV6jM4999yEz7/ooovk59B5pKxIJIJbbrkFLS0tsFgsaGtrw+23346legQeOHAAGzduhMlkQnt7Ox555JF5z7n//vvR3NwMs9mMTZs2zbsmkuSkc4yeeuopnH/++aisrERJSQk2b96MF198Me45P/3pT+edS6tXr1b7xyk46RyfAwcOJLzWDQ8Pxz2PziFlpHOMEn3WcByHU089VX4OnUN5gpFFjY6OsqGhIfm/v/zlLwwA279/f8Lnv/7660yn07F77rmHffTRR+zmm29mBoOBvf/++/Jz7r77bma329kzzzzD3n33XfbP//zPrKWlhfl8viz9VIUl1WP0pS99id1///3snXfeYYcPH2ZXXXUVs9vtrL+/X37Otm3b2AUXXBD3upOTk1n6iQpPqsdo9+7drKSkJO57hoeH455D55GyUj1GExMTcc//4IMPmE6nY7t375afQ+eRsu644w5WXl7O/vjHP7Ljx4+zffv2seLiYvbrX/96we85duwYKyoqYjfccAP76KOP2G9+8xum0+nYCy+8ID9n7969zGg0socffph9+OGH7JprrmEOh4ONjIxk48cqKOkco+uvv579/Oc/ZwcPHmRdXV3spptuYgaDgb399tvyc3bu3MlOPfXUuHNpbGwsGz9SQUnn+Ozfv58BYJ2dnXH//pFIRH4OnUPKSecYOZ3OuGPT19fHysrK2M6dO+Xn0DmUHyjwTNH111/P2tramCAICb/+hS98gV100UVxj23atIl985vfZIwxJggCq6mpYb/4xS/krzudTmYymdhjjz2m3sCXkaWO0VzhcJjZbDb26KOPyo9t27aNXXLJJSqNkCx1jHbv3s3sdvuC30/nkfpSPY/uvfdeZrPZmMfjkR+j80hZF110Efva174W99jnPvc5dsUVVyz4PT/84Q/ZqaeeGvfY5Zdfzj796U/Lfz/zzDPZ9u3b5b9HIhFWV1fH7rrrLoVGvnykc4wSOeWUU9htt90m/33nzp3stNNOU2KIy1o6x0cKPKemphZ8Dp1DylHiHHr66acZx3HsxIkT8mN0DuUHKrVNQTAYxH//93/ja1/7GjiOS/icN954A1u3bo177NOf/jTeeOMNAMDx48cxPDwc9xy73Y5NmzbJzyHpS+YYzTUzM4NQKISysrK4xw8cOICqqiqsWrUK1157LSYmJtQY8rKT7DHyeDxoampCY2MjLrnkEnz44Yfy1+g8Ulc659FDDz2EL37xi7BarXGP03mknC1btuDll19GV1cXAODdd9/Fa6+9hgsvvHDB71nqMykYDOKtt96Kew7P89i6dSudS2lI5xjNJQgC3G73vM+ko0ePoq6uDq2trbjiiivQ29ur6NiXg0yOz/r161FbW4vzzz8fr7/+uvw4nUPKUuIceuihh7B161Y0NTXFPU7nUO7pcz0ALXnmmWfgdDpx1VVXLfic4eFhVFdXxz1WXV0trwWQ/r/Yc0j6kjlGc/3oRz9CXV1d3IfGBRdcgM997nNoaWlBT08PfvzjH+PCCy/EG2+8AZ1Op8LIl49kjtGqVavw8MMPY926dZiensauXbuwZcsWfPjhh2hoaKDzSGWpnkcHDx7EBx98gIceeijucTqPlHXjjTfC5XJh9erV0Ol0iEQiuOOOO3DFFVcs+D0LfSa5XC74fD5MTU0hEokkfM6RI0dU+TkKWTrHaK5du3bB4/HgC1/4gvzYpk2b8Mgjj2DVqlUYGhrCbbfdhrPPPhsffPABbDabGj9KQUrn+NTW1uKBBx7AGWecgUAggP/8z//Eueeei3/84x/YuHEjxsfH6RxSUKbn0ODgIP70pz9hz549cY/TOZQfKPBMwUMPPYQLL7wQdXV1uR4KWUCqx+juu+/G3r17ceDAgbjmNV/84hflP69duxbr1q1DW1sbDhw4gE9+8pOKj3s5SeYYbd68GZs3b5b/vmXLFqxZswa/+93vcPvtt2djmMtaqufRQw89hLVr1+LMM8+Me5zOI2U98cQT+MMf/oA9e/bg1FNPxaFDh7Bjxw7U1dVh27ZtuR4eQebHaM+ePbjtttvw7LPPoqqqSn48Ntuzbt06bNq0CU1NTXjiiSdw9dVXq/KzFKJ0js+qVauwatUq+e9btmxBT08P7r33XvzXf/1Xtoa+bGR6Dj366KNwOBy49NJL4x6ncyg/UOCZpJMnT+Kll17CU089tejzampqMDIyEvfYyMgIampq5K9Lj9XW1sY9Z/369coOeplJ9hhJdu3ahbvvvhsvvfQS1q1bt+hzW1tbUVFRge7ubrphzkCqx0hiMBiwYcMGdHd3A6DzSE2pHiOv14u9e/fiZz/72ZLPpfMoMz/4wQ9w4403ygH92rVrcfLkSdx1110L3pAt9JlUUlICi8UCnU4HnU636OcWSV46x0iyd+9efP3rX8e+ffvmlUfP5XA40NHRIV8TSXIyOT6xzjzzTLz22msAgIqKCjqHFJTJMWKM4eGHH8aVV14Jo9G46HPpHMoNWuOZpN27d6Oqqipuq4BENm/ejJdffjnusb/85S9y9qalpQU1NTVxz3G5XPjHP/4Rl+EhqUv2GAHAPffcg9tvvx0vvPACzjjjjCWf39/fj4mJibggh6QulWMUKxKJ4P3335f//ek8Uk+qx2jfvn0IBAL48pe/vORz6TzKzMzMDHg+/mNbp9NBEIQFv2epzySj0YjTTz897jmCIODll1+mcykN6RwjAHjsscfw1a9+FY899lhS557H40FPTw+dSylK9/jMdejQIfnfns4hZWVyjF555RV0d3cnlcGkcyhHct3dSAsikQhbsWIF+9GPfjTva1deeSW78cYb5b+//vrrTK/Xs127drHDhw+znTt3JtxOxeFwsGeffZa999577JJLLqFtIDKUyjG6++67mdFoZE8++WRcW223280YY8ztdrPvf//77I033mDHjx9nL730Etu4cSNbuXIl8/v9WfuZCk0qx+i2225jL774Iuvp6WFvvfUW++IXv8jMZjP78MMP5efQeaS8VI6R5KyzzmKXX375vMfpPFLetm3bWH19vbzNwFNPPcUqKirYD3/4Q/k5N954I7vyyivlv0vbqfzgBz9ghw8fZvfff3/C7VRMJhN75JFH2EcffcS+8Y1vMIfDMW8LI7K0dI7RH/7wB6bX69n9998f95nkdDrl53zve99jBw4cYMePH2evv/4627p1K6uoqGCjo6NZ/fm0Lp3jc++997JnnnmGHT16lL3//vvs+uuvZzzPs5deekl+Dp1DyknnGEm+/OUvs02bNiV8XTqH8gMFnkl48cUX5T2c5jrnnHPYtm3b4h574oknWEdHBzMajezUU09lzz33XNzXBUFgt9xyC6uurmYmk4l98pOfTPjaJHmpHKOmpiYGYN5/0n5PMzMz7FOf+hSrrKxkBoOBNTU1sWuuuYY+QDKUyjHasWMHW7FiBTMajay6upp95jOfidvTjjE6j9SQ6rXuyJEjDAD785//PO/5dB4pz+Vyseuvv56tWLGCmc1m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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig,axs_cnt=plot.subplots()\n", + "\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[post200_interval_1 & pop_5_10]['time_unix_nano'],\n", + " new_frontend_duration_df[post200_interval_1 & pop_5_10]['value'] - \n", + " new_frontend_duration_df[post200_interval_1 & pop_5_10]['value'].shift(1, fill_value=0.0),\n", + " label='Number of POST-200 HTTP requests between 5 and 10 ms'\n", + ")\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[post200_interval_1 & pop_10_25]['time_unix_nano'],\n", + " new_frontend_duration_df[post200_interval_1 & pop_10_25]['value'] - \n", + " new_frontend_duration_df[post200_interval_1 & pop_10_25]['value'].shift(1, fill_value=0.0),\n", + " label='Number of POST-200 HTTP requests between 10 and 25 ms'\n", + ")\n", + "axs_cnt.plot(\n", + " new_frontend_duration_df[post200_interval_1 & pop_25_50]['time_unix_nano'],\n", + " new_frontend_duration_df[post200_interval_1 & pop_25_50]['value'] - \n", + " new_frontend_duration_df[post200_interval_1 & pop_25_50]['value'].shift(1, fill_value=0.0),\n", + " label='Number of POST-200 HTTP requests between 25 and 50 ms'\n", + ")\n", + "\n", + "axs_cnt.set_xlabel('Time')\n", + "axs_cnt.set_ylabel('Number of incoming HTTP requests')\n", + "fig.legend()\n", + "fig.set_figwidth(10)\n", + "fig.set_figheight(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "id": "1e1dfe7f-f1bc-4714-8522-05f097aefa48", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "# Considerations when developing your own metrics\n", + "\n", + "If you're new to implementing telemetry into your own apps you might be wondering how to decide which metric type to use and when. So, here are a few \n", + "questions you may ask yourself when facing such choices.\n", + "\n", + "- ***Is my metric observable in its entirety?***\n", + " \n", + " Think about the CPU usage metric above - it changes so often, that whatever code tries to collect it will certainly miss some values.\n", + " In such cases - use a `GAUGE`. A `SUM`, for example, relies a lot on absorbing all changes to provide correct and useful results.\n", + " If you know some changes will be missed - `SUMs` (and `HISTOGRAMs`) will probably mislead your analytics when not observed in entirety.\n", + " \n", + " `GAUGES`, on the other hand, are reported only at the end of an observational interval and miss all values during that interval anyway. If \n", + " that's a worry - you can tweak the reporting interval to match a desired frequency.\n", + "\n", + " A counter-example is, perhaps, when measuring how many requests has your app handled. In this case, your code ***DOES*** see all incoming requests \n", + " and can surely count each one of them. So, a `SUM` (or a `HISTOGRAM`) will be more useful. You can also do some computations over it and other \n", + " metrics safely.\n", + "\n", + "- ***Is my metric additive?***\n", + "\n", + " Some measurements, like counts or durations, can be added together and are thus good candidates for `SUM` or `HISTOGRAM` metrics.\n", + " For others - it doesn't really make sense.\n", + " \n", + " Consider a queue that you have implemented in your app and want to observe its size, as it changes over time. If, at one point your queue\n", + " has 5 elements, then your code adds some new elements and removes a few, leading to a total queue size of 7 - it doesn't really make sense to\n", + " report 12 for your *queue size* metric. Which is exactly what would happen if your metric is a `SUM` metric. A `GAUGE` will correctly report \n", + " the value of 7 in this case.\n", + "\n", + " On the other hand, as your code knows about all additions and removals it does on the queue - it might be a better idea to report **two SUM** \n", + " metrics instead - one for additions to the queue and another for removals. While `SUM` metrics can go down (like with an `UpDownCounter`) you \n", + " might be better off by tracking both processes separately. You will get details for both - how items get into the queue and \n", + " how they leave it, and also, by doing a simple subtraction you can get the end queue size as well.\n", + "\n", + "- ***Does the magnitude of my metric have an effect on performance?***\n", + "\n", + " In the **queue size** example above we made the assumption that all queue items are 'equal', that is - that queuing or processing an item takes \n", + " about the same time and resources as any other item that may end up there.\n", + "\n", + " This is not always the case though. Consider a queue that contains buffers of various sizes, and the bigger the buffer is - the slower it is to \n", + " process it; the more memory is used, etc. In such cases a `SUM` metric might not be sufficient to get a good view over your running application.\n", + " For example - a queue of 5 ten-megabyte buffers might be harder to process than a queue of 50 one-megabyte buffers. A `SUM` metric will \n", + " report '50 megabytes' in both cases, but if your code performance is disproportionate - you better use a `HISTOGRAM` and track '1-to-10 MB items',\n", + " '10-20 MB items' and so on.\n", + "\n", + "- ***I'm measuring the quality of service delivered to my users?***\n", + "\n", + " In the `HISTOGRAM` data points example above we used a metric of how long it takes to handle an incoming HTTP request. For a web app (such as \n", + " the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) used to capture this metrics data set) this is an important metric that directly observes the quality users get. Or in other \n", + " words, it's a metric that captures an aspect of the final **output** if your app, an aspect of what it **delivers.**\n", + "\n", + " In these situations you might want to use a `HISTOGRAM`, because of the greater detail that it offers. It is a safer choice - in your initial \n", + " implementations you might have missed measuring an important **internal** process, but its effect will still be observable at the final **output** - \n", + " where your app delivers.\n", + "\n", + " Seing that, for example, request handling times increase (getting higher counts in the 'higher' buckets) is a sure indication of a pile up somewhere \n", + " within your app. Initially, you might not have the right internal metric to figure out where that pile up is happening exactly, but you won't miss the degradation, \n", + " and investigating 'why' will surely give you ideas on what other metrics you want to add to your code!\n", + "\n", + "- ***Do I actually want to measure or do I prefer to trace?***\n", + "\n", + " OpenTelemetry has another signal - `trace` that wraps around blocks of your code (not necessarily countinuous blocks). Every time your code enters such \n", + " a wrapped code a new `trace` will be recorded, and it will contain start and end timestamps (useful to compute a duration), parameters, you can \n", + " record custom events happening inside, or correlate other signals (such as `logs` or even `metrics`!). Moreover, `traces` are broken into `spans`,\n", + " and `spans` can be nested, giving you the finest level of detail you might need.\n", + "\n", + " With some more (and heavier) data processing, you can 'convert' these `spans` and `traces` into a variety of metrics, without actually implementing \n", + " metrics in your code.\n", + "\n", + " To find out more about the `traces` signal - go to our [basics notebook.](basics.ipynb) For now, we're just mentioning `traces` here as another \n", + " option OpenTelemetry gives you. Deciding if you would like to implement a `trace` or a `metric` in your code is a delicate balance between level \n", + " of detail needed and how much data processing you're prepared to do. Metrics are lighter (compared to traces) and typically provide enough detail,\n", + " but we would recommend to consider both!\n", + "\n", + "- ***Does OpenTelemetry already have the metric I want?***\n", + "\n", + " Before jumping to implementing your own metric, take a look at the [OpenTelemetry Docs for your programming language](https://opentelemetry.io/docs/languages/)\n", + " and see if there's already an **out-of-the-box** plugin that can provide similar information. At the beginning of this notebook we showed a quick list of `metric`\n", + " names - our demo data set contains more than 200 of them! The vast majority come from `auto-instrumentation plugins`, meaining, no extra code was needed to get them! \n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "\n", + "# Considerations when developing your own metrics\n", + "\n", + "If you're new to implementing telemetry into your own apps you might be wondering how to decide which metric type to use and when. So, here are a few \n", + "questions you may ask yourself when facing such choices.\n", + "\n", + "- ***Is my metric observable in its entirety?***\n", + " \n", + " Think about the CPU usage metric above - it changes so often, that whatever code tries to collect it will certainly miss some values.\n", + " In such cases - use a `GAUGE`. A `SUM`, for example, relies a lot on absorbing all changes to provide correct and useful results.\n", + " If you know some changes will be missed - `SUMs` (and `HISTOGRAMs`) will probably mislead your analytics when not observed in entirety.\n", + " \n", + " `GAUGES`, on the other hand, are reported only at the end of an observational interval and miss all values during that interval anyway. If \n", + " that's a worry - you can tweak the reporting interval to match a desired frequency.\n", + "\n", + " A counter-example is, perhaps, when measuring how many requests has your app handled. In this case, your code ***DOES*** see all incoming requests \n", + " and can surely count each one of them. So, a `SUM` (or a `HISTOGRAM`) will be more useful. You can also do some computations over it and other \n", + " metrics safely.\n", + "\n", + "- ***Is my metric additive?***\n", + "\n", + " Some measurements, like counts or durations, can be added together and are thus good candidates for `SUM` or `HISTOGRAM` metrics.\n", + " For others - it doesn't really make sense.\n", + " \n", + " Consider a queue that you have implemented in your app and want to observe its size, as it changes over time. If, at one point your queue\n", + " has 5 elements, then your code adds some new elements and removes a few, leading to a total queue size of 7 - it doesn't really make sense to\n", + " report 12 for your *queue size* metric. Which is exactly what would happen if your metric is a `SUM` metric. A `GAUGE` will correctly report \n", + " the value of 7 in this case.\n", + "\n", + " On the other hand, as your code knows about all additions and removals it does on the queue - it might be a better idea to report **two SUM** \n", + " metrics instead - one for additions to the queue and another for removals. While `SUM` metrics can go down (like with an `UpDownCounter`) you \n", + " might be better off by tracking both processes separately. You will get details for both - how items get into the queue and \n", + " how they leave it, and also, by doing a simple subtraction you can get the end queue size as well.\n", + "\n", + "- ***Does the magnitude of my metric have an effect on performance?***\n", + "\n", + " In the **queue size** example above we made the assumption that all queue items are 'equal', that is - that queuing or processing an item takes \n", + " about the same time and resources as any other item that may end up there.\n", + "\n", + " This is not always the case though. Consider a queue that contains buffers of various sizes, and the bigger the buffer is - the slower it is to \n", + " process it; the more memory is used, etc. In such cases a `SUM` metric might not be sufficient to get a good view over your running application.\n", + " For example - a queue of 5 ten-megabyte buffers might be harder to process than a queue of 50 one-megabyte buffers. A `SUM` metric will \n", + " report '50 megabytes' in both cases, but if your code performance is disproportionate - you better use a `HISTOGRAM` and track '1-to-10 MB items',\n", + " '10-20 MB items' and so on.\n", + "\n", + "- ***I'm measuring the quality of service delivered to my users?***\n", + "\n", + " In the `HISTOGRAM` data points example above we used a metric of how long it takes to handle an incoming HTTP request. For a web app (such as \n", + " the [demo Astronomy webshop](https://github.com/mishmash-io/opentelemetry-demo-to-parquet) used to capture this metrics data set) this is an important metric that directly observes the quality users get. Or in other \n", + " words, it's a metric that captures an aspect of the final **output** if your app, an aspect of what it **delivers.**\n", + "\n", + " In these situations you might want to use a `HISTOGRAM`, because of the greater detail that it offers. It is a safer choice - in your initial \n", + " implementations you might have missed measuring an important **internal** process, but its effect will still be observable at the final **output** - \n", + " where your app delivers.\n", + "\n", + " Seing that, for example, request handling times increase (getting higher counts in the 'higher' buckets) is a sure indication of a pile up somewhere \n", + " within your app. Initially, you might not have the right internal metric to figure out where that pile up is happening exactly, but you won't miss the degradation, \n", + " and investigating 'why' will surely give you ideas on what other metrics you want to add to your code!\n", + "\n", + "- ***Do I actually want to measure or do I prefer to trace?***\n", + "\n", + " OpenTelemetry has another signal - `trace` that wraps around blocks of your code (not necessarily countinuous blocks). Every time your code enters such \n", + " a wrapped code a new `trace` will be recorded, and it will contain start and end timestamps (useful to compute a duration), parameters, you can \n", + " record custom events happening inside, or correlate other signals (such as `logs` or even `metrics`!). Moreover, `traces` are broken into `spans`,\n", + " and `spans` can be nested, giving you the finest level of detail you might need.\n", + "\n", + " With some more (and heavier) data processing, you can 'convert' these `spans` and `traces` into a variety of metrics, without actually implementing \n", + " metrics in your code.\n", + "\n", + " To find out more about the `traces` signal - go to our [basics notebook.](basics.ipynb) For now, we're just mentioning `traces` here as another \n", + " option OpenTelemetry gives you. Deciding if you would like to implement a `trace` or a `metric` in your code is a delicate balance between level \n", + " of detail needed and how much data processing you're prepared to do. Metrics are lighter (compared to traces) and typically provide enough detail,\n", + " but we would recommend to consider both!\n", + "\n", + "- ***Does OpenTelemetry already have the metric I want?***\n", + "\n", + " Before jumping to implementing your own metric, take a look at the [OpenTelemetry Docs for your programming language](https://opentelemetry.io/docs/languages/)\n", + " and see if there's already an **out-of-the-box** plugin that can provide similar information. At the beginning of this notebook we showed a quick list of `metric`\n", + " names - our demo data set contains more than 200 of them! The vast majority come from `auto-instrumentation plugins`, meaining, no extra code was needed to get them! " + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "c9a821e6-6f05-4313-9cd0-e9430b85e53b", + "metadata": { + "jupyter": { + "source_hidden": true + } + }, + "outputs": [ + { + "data": { + "text/markdown": [ + "# Combine values and base metric attributes\n", + "\n", + "In the examples above we created some simpler DataFrames to avoid repetitive logic (like selecting the correct value and 'exploding' histogram values).\n", + "\n", + "In the following code we'll combine them into one DataFrame and save it for later use.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "%%markdown\n", + "# Combine values and base metric attributes\n", + "\n", + "In the examples above we created some simpler DataFrames to avoid repetitive logic (like selecting the correct value and 'exploding' histogram values).\n", + "\n", + "In the following code we'll combine them into one DataFrame and save it for later use." + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "06eee08f", + "metadata": {}, + "outputs": [], + "source": [ + "values_df=pd.concat([gauges_values_df, sums_values_df, histograms_values_df])" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "id": "248fed2c", + "metadata": {}, + "outputs": [], + "source": [ + "base_df=metrics_df.drop([\n", + " 'gauge_type',\n", + " 'gauge_int',\n", + " 'gauge_double',\n", + " 'sum_type',\n", + " 'sum_int',\n", + " 'sum_double',\n", + " 'histogram_count',\n", + " 'histogram_sum',\n", + " 'histogram_min',\n", + " 'histogram_max',\n", + " 'histogram_bucket_counts',\n", + " 'histogram_explicit_bounds'\n", + "], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "id": "b1015f5e", + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df=base_df.join(values_df)\n", + "# here - indexes (especially on histogram values, as they were expanded to rows) will be duplicated" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "id": "82d96b7e-1271-46a3-bd69-97b628c37bab", + "metadata": {}, + "outputs": [], + "source": [ + "# drop the index with 'repeated' values for histograms, get a new index with unique values\n", + "transformed_df = transformed_df.reset_index()" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "fdd5604b", + "metadata": {}, + "outputs": [], + "source": [ + "def otel_value_delta(ndarray):\n", + " return ndarray[0] if ndarray.size == 1 else ndarray[1] - ndarray[0]\n", + "\n", + "def otel_time_delta(ndarray):\n", + " return 0 if ndarray.size == 1 else ndarray[0]\n", + "\n", + "cols=list(transformed_df.columns)\n", + "cols.remove('time_unix_nano')\n", + "cols.remove('value')\n", + "\n", + "window=transformed_df.groupby(by=cols, dropna=False).rolling(window=2, min_periods=1)\n", + "\n", + "value_deltas=window[['value']].apply(otel_value_delta, raw=True).reset_index(level=cols, drop=True).rename(columns={'value': 'value_delta'})\n", + "time_deltas=window[['time_unix_nano']].apply(otel_time_delta, raw=True).reset_index(level=cols, drop=True).rename(columns={'time_unix_nano': 'prev_time_unix_nano'})\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "id": "0886eaa3-fa07-44bd-b158-b6c16b03fcfe", + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df['value_delta']=value_deltas['value_delta']\n", + "transformed_df['prev_time_unix_nano']=time_deltas['prev_time_unix_nano']" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "id": "d67ac497-4778-4c29-b787-d80afe65efeb", + "metadata": {}, + "outputs": [], + "source": [ + "transformed_df.convert_dtypes().to_parquet('otel-demo-app/metrics_exploded.parquet', engine='pyarrow')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7cd9648d-9464-46b9-9673-27965fcaeddf", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}