### Install Dependencies for Development
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/dotnet-instrumentation-watcher/README.md
Install project dependencies using uv sync.
```bash
uv sync
```
--------------------------------
### Install Dependencies
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/README.md
Installs project dependencies using Bun. Run this command after cloning the repository.
```bash
bun install
```
--------------------------------
### Install KtorServerTelemetry Feature
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/ktor-1.0-95edd47db391.md
Initialize Ktor server instrumentation by installing the KtorServerTelemetry feature and configuring it with an OpenTelemetry instance.
```kotlin
OpenTelemetry openTelemetry = ...
embeddedServer(Netty, 8080) {
install(KtorServerTelemetry) {
setOpenTelemetry(openTelemetry)
}
}
```
--------------------------------
### Install Project Dependencies
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Install all project dependencies, including Python packages using uv and JavaScript packages using Bun.
```bash
# Install Python dependencies using uv
uv sync --all-groups
# Install JavaScript dependencies for markdown linting (from repo root)
bun install
# Install ecosystem-explorer dependencies
cd ecosystem-explorer && bun install && cd ..
# Set up pre-commit hooks (recommended)
uv run pre-commit install
```
--------------------------------
### Versions Index Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/docs/content-addressed-storage.md
Lists all available versions of the ecosystem explorer data. This file should be served with a short TTL.
```json
{
"versions": [
{
"version": "2.24.0",
"is_latest": true
},
{
"version": "2.23.0",
"is_latest": false
}
]
}
```
--------------------------------
### Clone and Run Locally
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Clone the repository, install dependencies, and run the local development server to browse instrumentations and components.
```bash
git clone https://github.com/YOUR_USERNAME/opentelemetry-ecosystem-explorer.git
cd opentelemetry-ecosystem-explorer
uv sync --all-groups && bun install
cd ecosystem-explorer && bun install && bun run serve
# Visit http://localhost:5173
```
--------------------------------
### Programmatic Installation of OpenTelemetryAppender
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/log4j-appender-2.17-06d7815676a1.md
Install the OpenTelemetryAppender programmatically by providing an initialized OpenTelemetrySdk instance. This step is crucial for the appender to function correctly.
```java
import io.opentelemetry.instrumentation.log4j.appender.v2_17.OpenTelemetryAppender;
import io.opentelemetry.sdk.OpenTelemetrySdk;
public class Application {
public static void main(String[] args) {
OpenTelemetrySdk openTelemetrySdk = // Configure OpenTelemetrySdk
// Find OpenTelemetryAppender in log4j configuration and install openTelemetrySdk
OpenTelemetryAppender.install(openTelemetrySdk);
// ... proceed with application
}
}
```
--------------------------------
### Run All Tests
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/README.md
Execute all tests within the ecosystem-automation directory. Ensure you are in the repository root and have `uv` installed.
```bash
uv run pytest ecosystem-automation/
```
--------------------------------
### Programmatic OpenTelemetrySdk Installation
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md
Install the OpenTelemetrySdk instance programmatically during application startup to enable the OpenTelemetryAppender. This ensures the appender has access to the configured OpenTelemetry instance.
```java
import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender;
import io.opentelemetry.sdk.OpenTelemetrySdk;
public class Application {
public static void main(String[] args) {
OpenTelemetrySdk openTelemetrySdk = // Configure OpenTelemetrySdk
// Find OpenTelemetryAppender in logback configuration and install openTelemetrySdk
OpenTelemetryAppender.install(openTelemetrySdk);
// ... proceed with application
}
}
```
--------------------------------
### Run Development Server
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/README.md
Starts the development server for local development. This command is used for active development and hot-reloading.
```bash
bun run serve
```
--------------------------------
### Example: V1 Registry Check and YAML Output
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/v1-registry-sync/README.md
Run the V1 registry sync tool with specific options to check against the V1 registry, output in YAML format, and save to a file.
```bash
uv run v1-registry-sync \
--v1-registry-dir ../opentelemetry.io/data/registry \
--format yaml \
--output sync-report.yaml
```
--------------------------------
### Install uv Package Manager
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Install the uv Python package installer and resolver. This is a required tool for managing Python dependencies.
```bash
pip install uv
```
--------------------------------
### Version Manifest Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/docs/content-addressed-storage.md
Maps component IDs to their content hashes for a specific version. This file has a long TTL as it doesn't change after a version release.
```json
{
"version": "2.24.0",
"instrumentations": {
"aws-sdk-2.2": "cc07cd659de1",
"spring-boot-3.0": "8f9a2b3c4d5e",
"http-url-connection": "bc83dcd98c80"
}
}
```
--------------------------------
### Run Java Instrumentation Watcher
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/AGENTS.md
Starts the Java instrumentation watcher process.
```bash
uv run java-instrumentation-watcher
```
--------------------------------
### Configure Java HTTP Server with OpenTelemetry
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/java-http-server-1fbd5c1c2bbc.md
This example shows how to create an HTTP server and configure it with OpenTelemetry telemetry using the JavaHttpServerTelemetry.create().configure() method. Ensure OpenTelemetry is properly initialized.
```java
import java.io.IOException;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpServer;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.sdk.OpenTelemetrySdk;
public class Application {
static void main(String args) throws IOException {
final HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
final HttpContext context =
server.createContext(
"/",
ctx -> {
// http logic
});
OpenTelemetry openTelemetry = //...;
JavaHttpServerTelemetry.create(openTelemetry).configure(context);
}
}
```
--------------------------------
### Check Bun Version
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Verify your installed Bun version. Bun is used for the ecosystem-explorer frontend and markdown linting.
```bash
bun --version
```
--------------------------------
### YAML Frontmatter Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/projects/_index.md
Provides an example of the YAML frontmatter required for markdown files within initiative folders, including fields for title, issue, type, phase, status, and last updated date.
```yaml
---
title: "Phase 1 — Foundation" # human-readable; mirrors the H1
issue: 84 # GitHub issue number; matches parent folder
type: plan # plan | audit | brief | roadmap | index
phase: 1 # 1-N or "meta" for cross-phase docs
status: planning # planning | in-progress | complete | archived
last_updated: "2026-05-06" # ISO date as quoted string (bare YAML dates fail validation)
---
```
--------------------------------
### Setup WebClient and Webflux Server Instrumentation
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/spring-webflux-5.3-2c795bbfeac7.md
Configure Spring Webflux client and server instrumentation by creating beans for SpringWebfluxClientTelemetry and SpringWebfluxServerTelemetry.
```java
import io.opentelemetry.instrumentation.spring.webflux.v5_3.SpringWebfluxClientTelemetry;
import io.opentelemetry.instrumentation.spring.webflux.v5_3.SpringWebfluxServerTelemetry;
@Configuration
public class WebClientConfig {
private final SpringWebfluxClientTelemetry webfluxClientTelemetry;
private final SpringWebfluxServerTelemetry webfluxServerTelemetry;
public WebClientConfig(OpenTelemetry openTelemetry) {
this.webfluxClientTelemetry = SpringWebfluxClientTelemetry.builder(openTelemetry).build();
}
// Adds instrumentation to WebClients
@Bean
public WebClient.Builder webClient() {
WebClient webClient = WebClient.create();
return webClient.mutate().filters(webfluxClientTelemetry::addFilter);
}
// Adds instrumentation to Webflux server
@Bean
public WebFilter webFilter() {
return webfluxServerTelemetry.createWebFilterAndRegisterReactorHook();
}
}
```
--------------------------------
### Initialize Ktor Client Instrumentation
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/ktor-2.0-08a3644d1ffc.md
Initialize client-side instrumentation by installing the KtorClientTelemetry feature and setting the OpenTelemetry instance. This is done within the HttpClient configuration block.
```kotlin
val openTelemetry: OpenTelemetry = ...
val client = HttpClient {
install(KtorClientTelemetry) {
setOpenTelemetry(openTelemetry)
}
}
```
--------------------------------
### Check Python Version
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Verify your installed Python version. The project requires Python 3.11 or higher.
```bash
python --version
```
```bash
python3 --version
```
--------------------------------
### Configure Logback Appender Settings
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md
Example of how to configure the OpenTelemetry appender in logback.xml, including capturing experimental attributes and MDC attributes.
```xml
true
*
```
--------------------------------
### Component Data File Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/docs/content-addressed-storage.md
Contains the full metadata for a single component, identified by its content hash. This file is immutable and can be cached indefinitely.
```json
{
"name": "aws-sdk-2.2",
"display_name": "AWS SDK 2.2",
"description": "Instrumentation for AWS SDK 2.2+ client library",
"scope": {
"name": "io.opentelemetry.aws-sdk-2.2"
},
"telemetry": [
{
"when": "default",
"spans": [
{
"span_kind": "CLIENT",
"attributes": [
{
"name": "aws.request_id",
"type": "STRING"
}
]
}
]
}
]
}
```
--------------------------------
### Usage Example: Tracing Elasticsearch REST Client
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/elasticsearch-rest-7.0-12c05129aaf3.md
This Java code demonstrates how to instrument the Elasticsearch REST client. It shows obtaining an OpenTelemetry instance, creating an ElasticsearchRest7Telemetry instance, building a RestClient, and then wrapping the client with the telemetry.
```java
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.elasticsearch.rest.v7_0.ElasticsearchRest7Telemetry;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
// ...
// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;
// Create an ElasticsearchRest7Telemetry instance
ElasticsearchRest7Telemetry telemetry = ElasticsearchRest7Telemetry.create(openTelemetry);
// Create a RestClient
RestClient restClient = RestClient.builder(new HttpHost("localhost", 9200, "http")).build();
// Wrap the client
RestClient tracedClient = telemetry.wrap(restClient);
// ... use the tracedClient to make requests
```
--------------------------------
### DetailCard Usage Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/DESIGN_V1.md
Example of how to use the DetailCard component with a type stripe, grid pattern, and hover effect.
```tsx
{children}
```
--------------------------------
### Restlet 2.0+ Usage Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/restlet-2.0-3589102b837d.md
This Java example shows how to create and apply the RestletTelemetry filter to an Application. Ensure you have an OpenTelemetry instance available.
```java
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.restlet.v2_0.RestletTelemetry;
import org.restlet.Application;
import org.restlet.Restlet;
import org.restlet.routing.Filter;
public class RestletExample {
public static void main(String[] args) throws Exception {
// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;
RestletTelemetry restletTelemetry = RestletTelemetry.create(openTelemetry);
Filter tracingFilter = restletTelemetry.createFilter("/api");
Application application = new Application() {
@Override
public Restlet createInboundRoot() {
return tracingFilter;
}
};
}
}
```
--------------------------------
### Build Explorer Database Incrementally
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/explorer-db-builder/README.md
Use this command to build the database, reusing existing content-addressed files for efficiency. Run from the repository root.
```bash
uv run explorer-db-builder
```
--------------------------------
### Complete Striped Table Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/DESIGN.md
A full example of a striped table with a header and alternating row backgrounds. Includes overflow handling and border styling.
```tsx
|
Column
|
{items.map((item, index) => (
| {item.content} |
))}
```
--------------------------------
### Run Configuration Watcher in Backfill Mode (Specific Versions)
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/configuration-watcher/README.md
Enable backfill mode to regenerate specific versions in the inventory. Provide a comma-separated list of versions to target.
```bash
uv run configuration-watcher --backfill --versions "1.0.0,0.4.0"
```
--------------------------------
### Preview Production Build
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/README.md
Previews the production build locally. Use this to test the production version before deploying.
```bash
bun run preview
```
--------------------------------
### Project Directory Structure
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/projects/_index.md
Illustrates the expected file and directory structure within the `projects/` directory.
```text
projects/
├── _index.md ← this file
├── frontmatter.schema.json ← validates per-initiative doc frontmatter
└── -/ ← one folder per initiative (see "Current initiatives" below)
```
--------------------------------
### Run V1 Registry Sync Tool
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/v1-registry-sync/README.md
Execute the V1 registry sync tool from the repository root. This command reads from the default directory and outputs JSON to standard output.
```bash
uv run v1-registry-sync
```
--------------------------------
### Run Configuration Watcher in Backfill Mode (All Versions)
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/configuration-watcher/README.md
Enable backfill mode to regenerate all existing versions in the inventory. This is useful for ensuring all historical schema versions are up-to-date.
```bash
uv run configuration-watcher --backfill
```
--------------------------------
### Run Collector Watcher in Backfill Mode (Versions for All Distributions)
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/collector-watcher/README.md
Apply a comma-separated list of specific versions (e.g., '0.144.0,0.145.0') to all distributions using backfill mode. This allows for broad regeneration of historical data across distributions.
```bash
uv run collector-watcher --backfill --versions "0.144.0,0.145.0"
```
--------------------------------
### Check Git Version
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Verify your installed Git version. Git is a version control system used in some automation scripts.
```bash
git --version
```
--------------------------------
### Initialize Lettuce Telemetry in Java
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/lettuce-5.1-b91d9f93a269.md
This Java code demonstrates how to create and use LettuceTelemetry with RedisClient. Ensure you have an OpenTelemetry instance and configure client resources with the created tracing.
```java
import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.resource.ClientResources;
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.lettuce.v5_1.LettuceTelemetry;
// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;
LettuceTelemetry lettuceTelemetry = LettuceTelemetry.create(openTelemetry);
ClientResources clientResources = ClientResources.builder()
.tracing(lettuceTelemetry.createTracing())
.build();
RedisClient redisClient = RedisClient.create(clientResources, "redis://localhost:6379");
StatefulRedisConnection connection = redisClient.connect();
```
--------------------------------
### Register and Unregister C3P0 Metrics with OpenTelemetry
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/c3p0-0.9-25446e5eec4e.md
Example of how to create a C3p0Telemetry instance, register a PooledDataSource for metrics collection, and later unregister it.
```java
C3p0Telemetry c3p0Telemetry;
void configure(OpenTelemetry openTelemetry, PooledDataSource dataSource) {
c3p0Telemetry = C3p0Telemetry.create(openTelemetry);
c3p0Telemetry.registerMetrics(dataSource);
}
void destroy(PooledDataSource dataSource) {
c3p0Telemetry.unregisterMetrics(dataSource);
}
```
--------------------------------
### Build for Production
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/README.md
Builds the application for production deployment. This command optimizes the code for performance.
```bash
bun run build
```
--------------------------------
### Run All Formatting Checks
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Execute all formatting tools, including Prettier and Ruff.
```bash
# Run all formatting (Prettier, Ruff)
bun run format
uv run ruff format .
```
--------------------------------
### Initialize and Close RuntimeMetrics
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java17-a670bf039fd5.md
Initialize `RuntimeMetrics` to start collecting runtime metrics and call `close()` to stop listening for JFR events.
```java
RuntimeMetrics runtimeMetrics = RuntimeMetrics.create(openTelemetry);
runtimeMetrics.close();
```
--------------------------------
### Generate Local Screenshots
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Generate screenshots of key pages in the ecosystem explorer locally. Ensure you have installed dependencies and the Chromium browser for Playwright.
```bash
cd ecosystem-explorer
bun install
bun run build
bunx playwright install --with-deps chromium
node scripts/take-screenshots.mjs
```
--------------------------------
### V1 Registry Sync Tool Options
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/v1-registry-sync/README.md
Lists available options for the V1 registry sync tool, including inventory directory, distribution type, V1 registry directory path, output file path, and output format.
```text
--inventory-dir PATH Path to ecosystem-registry/collector (default: ecosystem-registry/collector)
--distribution core or contrib (default: contrib)
--v1-registry-dir PATH Path to opentelemetry.io data/registry/ -- enables v1_entry_exists checks
--output PATH Output file path, or - for stdout (default: -)
--format json or yaml (default: json)
```
--------------------------------
### Configure Metric Views to Keep jvm.memory.used
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-registry/java/javaagent/v2.28.2-SNAPSHOT/library_readmes/runtime-telemetry-69f1ccf3457f.md
Configure metric views to selectively keep metrics. This example keeps the 'jvm.memory.used' metric after dropping all others.
```yaml
meter_provider:
views:
# Keep jvm.memory.used (views are additive, this creates a second stream)
- selector:
meter_name: io.opentelemetry.runtime-telemetry
instrument_name: jvm.memory.used
stream: {}
```
--------------------------------
### Run .NET Instrumentation Watcher
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/dotnet-instrumentation-watcher/README.md
Execute the .NET Instrumentation Watcher from the repository root.
```bash
uv run dotnet-instrumentation-watcher
```
--------------------------------
### Register JVM Runtime Metrics
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-69f1ccf3457f.md
Instantiate and register RuntimeTelemetry with your OpenTelemetry instance to start collecting JVM metrics. Remember to close the instance when done.
```java
OpenTelemetry openTelemetry = // OpenTelemetry instance configured elsewhere
RuntimeTelemetry runtimeTelemetry = RuntimeTelemetry.create(openTelemetry);
// When done, close to stop metric collection
runtimeTelemetry.close();
```
--------------------------------
### Configure Quartz Scheduler with OpenTelemetry
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/quartz-2.0-4b4e201cb808.md
This Java code demonstrates how to initialize and configure Quartz Scheduler with OpenTelemetry instrumentation. Ensure you have an OpenTelemetry instance and have added the necessary dependencies.
```java
import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.quartz.v2_0.QuartzTelemetry;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory;
// Get an OpenTelemetry instance
OpenTelemetry openTelemetry = ...;
QuartzTelemetry quartzTelemetry = QuartzTelemetry.create(openTelemetry);
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
quartzTelemetry.configure(scheduler);
scheduler.start();
// Schedule your jobs - they will now be traced with OpenTelemetry
```
--------------------------------
### Logback XML Configuration
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md
Configure logback.xml to use the OpenTelemetryAppender alongside other appenders like the console appender. This setup forwards log events to both destinations.
```xml
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
```
--------------------------------
### Run Explorer Database Builder Tests
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/explorer-db-builder/README.md
This command executes the tests for the explorer-db-builder package, including coverage reporting. Run from the repository root.
```bash
uv run pytest ecosystem-automation/explorer-db-builder/tests --cov=explorer_db_builder
```
--------------------------------
### Responsive Spacing Example
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/DESIGN.md
Demonstrates how to apply responsive spacing using Tailwind CSS classes. Use this for elements that should adjust their spacing based on viewport size.
```tsx
/* Grows with viewport */
/* More vertical space on larger screens */
```
--------------------------------
### Run Tests for a Specific Component
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Navigate to a component's directory and run its tests.
```bash
# Run tests for a specific component
cd ecosystem-automation/collector-watcher
uv run pytest tests/ -v
```
--------------------------------
### Data Fetching with Hooks
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-explorer/README.md
Example of using custom React hooks to fetch version and instrumentation data. These hooks abstract data fetching logic and caching.
```tsx
const versions = useVersions();
const instrumentations = useInstrumentations(version);
```
--------------------------------
### Check Copyright Headers
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/CONTRIBUTING.md
Verify that all files have the correct copyright headers.
```bash
# Check copyright headers
uv run python scripts/check_copyright.py
```
--------------------------------
### Java Agent Instrumentation YAML File Format
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/docs/registry-structure.md
Example of the YAML file format used for Java agent instrumentation, detailing metadata for a specific library.
```yaml
file_format: 0.1
libraries:
- name: activej-http-6.0
display_name: ActiveJ
description: This instrumentation enables HTTP server spans and metrics...
semantic_conventions:
* HTTP_SERVER_SPANS
* HTTP_SERVER_METRICS
library_link: https://activej.io/
source_path: instrumentation/activej-http-6.0
minimum_java_version: 17
scope:
name: io.opentelemetry.activej-http-6.0
schema_url: https://opentelemetry.io/schemas/1.37.0
target_versions:
javaagent:
* "io.activej:activej-http:[6.0,)"
configurations:
* name: otel.instrumentation.http.known-methods
description: Configures the instrumentation to recognize...
type: list
default: CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE
telemetry:
* when: default
metrics:
* name: http.server.request.duration
description: Duration of HTTP server requests
type: HISTOGRAM
unit: s
attributes:
* name: http.request.method
type: STRING
* name: http.response.status_code
type: LONG
spans:
* span_kind: SERVER
attributes:
* name: http.request.method
type: STRING
* name: http.response.status_code
type: LONG
* name: aws-sdk-2.2
display_name: AWS SDK 2.2
# ... (next instrumentation)
# ... (continues for all ~232 instrumentations)
```
--------------------------------
### Clean and Rebuild Explorer Database
Source: https://github.com/open-telemetry/opentelemetry-ecosystem-explorer/blob/main/ecosystem-automation/explorer-db-builder/README.md
Execute this command to perform a full rebuild of the database from scratch, discarding any existing content-addressed files. Run from the repository root.
```bash
uv run explorer-db-builder --clean
```