diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index d480475e..7f8be19a 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -5,6 +5,7 @@ ignores: - "**/AGENTS.md" - "ecosystem-explorer/DESIGN.md" - "ecosystem-registry/**" + - "ecosystem-explorer/public/data/**" - "**/tmp_repos/**" - "**/node_modules/**" - ".claude/**" diff --git a/.prettierignore b/.prettierignore index 6cebb951..3a1a97c1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -30,6 +30,7 @@ coverage # Data (avoid formatting large generated files) ecosystem-explorer/public/data +public/data # Registry (written by automation watchers - do not reformat) ecosystem-registry diff --git a/ecosystem-automation/collector-watcher/src/collector_watcher/__init__.py b/ecosystem-automation/collector-watcher/src/collector_watcher/__init__.py index d248de14..023cc46b 100644 --- a/ecosystem-automation/collector-watcher/src/collector_watcher/__init__.py +++ b/ecosystem-automation/collector-watcher/src/collector_watcher/__init__.py @@ -16,4 +16,7 @@ import importlib.metadata -__version__ = importlib.metadata.version("collector-watcher") +try: + __version__ = importlib.metadata.version("collector-watcher") +except importlib.metadata.PackageNotFoundError: + __version__ = "0.0.0-dev" diff --git a/ecosystem-automation/configuration-watcher/src/configuration_watcher/__init__.py b/ecosystem-automation/configuration-watcher/src/configuration_watcher/__init__.py index 66d223af..2edb5be3 100644 --- a/ecosystem-automation/configuration-watcher/src/configuration_watcher/__init__.py +++ b/ecosystem-automation/configuration-watcher/src/configuration_watcher/__init__.py @@ -16,4 +16,7 @@ import importlib.metadata -__version__ = importlib.metadata.version("configuration-watcher") +try: + __version__ = importlib.metadata.version("configuration-watcher") +except importlib.metadata.PackageNotFoundError: + __version__ = "0.0.0-dev" diff --git a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/__init__.py b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/__init__.py index ecc22fab..052d3b02 100644 --- a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/__init__.py +++ b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/__init__.py @@ -16,4 +16,7 @@ import importlib.metadata -__version__ = importlib.metadata.version("explorer-db-builder") +try: + __version__ = importlib.metadata.version("explorer-db-builder") +except importlib.metadata.PackageNotFoundError: + __version__ = "0.0.0-dev" diff --git a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/database_writer.py b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/database_writer.py index ed58cfe6..740bf68e 100644 --- a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/database_writer.py +++ b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/database_writer.py @@ -16,6 +16,7 @@ import json import logging +import re import shutil from pathlib import Path from typing import Any @@ -46,6 +47,10 @@ def __init__(self, database_dir: str = "ecosystem-explorer/public/data/javaagent self.files_written = 0 self.total_bytes = 0 + def _sanitize_name(self, name: str) -> str: + """Sanitizes a name for use as a filename to prevent path traversal.""" + return re.sub(r"[^a-zA-Z0-9._\-]", "_", name) + def _get_file_path(self, library_name: str, library_hash: str) -> Path: """Get the file path for a library with the given name and hash. @@ -58,9 +63,10 @@ def _get_file_path(self, library_name: str, library_hash: str) -> Path: Returns: Path to the library JSON file """ - instrumentations_dir = self.database_dir / "instrumentations" / library_name + safe_name = self._sanitize_name(library_name) + instrumentations_dir = self.database_dir / "instrumentations" / safe_name instrumentations_dir.mkdir(parents=True, exist_ok=True) - return instrumentations_dir / f"{library_name}-{library_hash}.json" + return instrumentations_dir / f"{safe_name}-{library_hash}.json" def write_libraries(self, libraries: list[dict[str, Any]]) -> dict[str, str]: """Write library data to content-addressed files. @@ -203,6 +209,35 @@ def write_version_list(self, versions: list[Version]) -> None: logger.error(f"Failed to write version list: {e}") raise + def write_markdown(self, library_name: str, markdown_hash: str, content: str) -> None: + """Write markdown file to the database. + + Args: + library_name: Name of the library + markdown_hash: Hash of the markdown content + content: Markdown content string + """ + markdown_dir = self.database_dir / "markdown" + markdown_dir.mkdir(parents=True, exist_ok=True) + + safe_name = self._sanitize_name(library_name) + file_path = markdown_dir / f"{safe_name}-{markdown_hash}.md" + + if file_path.exists(): + logger.debug(f"Markdown for '{safe_name}' with hash {markdown_hash} already exists, skipping write") + return + + try: + with open(file_path, "w", encoding="utf-8") as f: + f.write(content) + file_size = len(content.encode("utf-8")) + self.files_written += 1 + self.total_bytes += file_size + logger.debug(f"Wrote markdown for '{safe_name}' with hash {markdown_hash}") + except OSError as e: + logger.error(f"Failed to write markdown for '{safe_name}': {e}") + # README publishing failures must never fail DB generation as per requirements + def get_stats(self) -> dict[str, Any]: """Get statistics about files written during this session. diff --git a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/main.py b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/main.py index c092b314..f8aba690 100644 --- a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/main.py +++ b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/main.py @@ -139,9 +139,33 @@ def run_javaagent_builder( versions = get_release_versions(inventory_manager) logger.info(f"Processing {len(versions)} release versions") + # Pre-load README maps for all versions to enable augmentation and backfilling + readme_maps = {v: inventory_manager.load_library_readme_map(v) for v in versions} + + # Publish all READMEs to the database + for version, readme_map in readme_maps.items(): + for library_name, markdown_hash in readme_map.items(): + content = inventory_manager.load_library_readme_content(version, library_name, markdown_hash) + if content is not None: + db_writer.write_markdown(library_name, markdown_hash, content) + + def load_and_augment_inventory(version: Version) -> dict: + inventory = inventory_manager.load_versioned_inventory(version) + readme_map = readme_maps.get(version, {}) + + # Augment libraries and custom instrumentations with markdown_hash + for key in ["libraries", "custom"]: + if key in inventory: + for item in inventory[key]: + name = item.get("name") + if name and name in readme_map: + item["markdown_hash"] = readme_map[name] + + return inventory + backfilled_libraries = backfill_metadata( versions, - inventory_manager.load_versioned_inventory, + load_and_augment_inventory, item_key="libraries", ) backfilled_inventories = backfill_metadata( diff --git a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/metadata_backfiller.py b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/metadata_backfiller.py index 5dba637f..51027b1f 100644 --- a/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/metadata_backfiller.py +++ b/ecosystem-automation/explorer-db-builder/src/explorer_db_builder/metadata_backfiller.py @@ -22,7 +22,7 @@ logger = logging.getLogger(__name__) -BACKFILLABLE_FIELDS = ["display_name", "description", "library_link", "has_javaagent"] +BACKFILLABLE_FIELDS = ["display_name", "description", "library_link", "has_javaagent", "markdown_hash"] NESTED_BACKFILLABLE_FIELDS: dict[str, list[str]] = { "configurations": ["declarative_name", "examples"], } diff --git a/ecosystem-automation/explorer-db-builder/tests/test_database_writer.py b/ecosystem-automation/explorer-db-builder/tests/test_database_writer.py index fa879541..4c61ef56 100644 --- a/ecosystem-automation/explorer-db-builder/tests/test_database_writer.py +++ b/ecosystem-automation/explorer-db-builder/tests/test_database_writer.py @@ -440,3 +440,55 @@ def test_multiple_versions_workflow(self, db_writer, temp_db_dir): # Verify structure assert (temp_db_dir / "versions" / "1.0.0-index.json").exists() assert (temp_db_dir / "versions" / "2.0.0-index.json").exists() + + +class TestWriteMarkdown: + """Tests for markdown file writing.""" + + def test_write_markdown_success(self, db_writer, temp_db_dir): + library_name = "test-lib" + markdown_hash = "abc123def456" + content = "# Test README" + + db_writer.write_markdown(library_name, markdown_hash, content) + + # Verify file creation + markdown_file = temp_db_dir / "markdown" / f"{library_name}-{markdown_hash}.md" + assert markdown_file.exists() + assert markdown_file.read_text(encoding="utf-8") == content + + # Verify stats + assert db_writer.files_written == 1 + assert db_writer.total_bytes == len(content.encode("utf-8")) + + def test_write_markdown_deduplication(self, db_writer, temp_db_dir, caplog): + import logging + + caplog.set_level(logging.DEBUG) + + library_name = "test-lib" + markdown_hash = "abc123def456" + content = "# Test README" + + # Write first time + db_writer.write_markdown(library_name, markdown_hash, content) + assert db_writer.files_written == 1 + + # Write second time (same content) + db_writer.write_markdown(library_name, markdown_hash, content) + + # Stats should not increase + assert db_writer.files_written == 1 + assert "already exists, skipping write" in caplog.text + + def test_write_markdown_error_handling(self, db_writer): + from unittest.mock import patch + + with patch("builtins.open", side_effect=OSError("Disk full")): + with patch("explorer_db_builder.database_writer.logger") as mock_logger: + db_writer.write_markdown("error-lib", "hash", "content") + + # Verify error was logged + mock_logger.error.assert_called() + args, _ = mock_logger.error.call_args + assert "Failed to write markdown" in args[0] diff --git a/ecosystem-automation/explorer-db-builder/tests/test_main.py b/ecosystem-automation/explorer-db-builder/tests/test_main.py index 8bc8794c..4e8877d9 100644 --- a/ecosystem-automation/explorer-db-builder/tests/test_main.py +++ b/ecosystem-automation/explorer-db-builder/tests/test_main.py @@ -209,6 +209,41 @@ def test_run_builder_processes_all_versions(self, mock_inventory_manager, mock_d assert mock_db_writer.write_libraries.call_count == 3 assert mock_db_writer.write_version_index.call_count == 3 + def test_run_builder_processes_readmes(self, mock_inventory_manager, mock_db_writer): + """Verifies READMEs are discovered, published, and hashes injected.""" + versions = [Version("1.0.0")] + inventory_data = {"file_format": 0.2, "libraries": [{"name": "lib1"}], "custom": [{"name": "custom1"}]} + readme_map = {"lib1": "abc123def456", "custom1": "fed4321cba98"} + readme_content = "# README content" + + mock_inventory_manager.list_versions.return_value = versions + mock_inventory_manager.load_versioned_inventory.return_value = inventory_data + mock_inventory_manager.load_library_readme_map.return_value = readme_map + mock_inventory_manager.load_library_readme_content.return_value = readme_content + mock_db_writer.write_libraries.return_value = {"lib1": "hash1"} + + exit_code = run_javaagent_builder(mock_inventory_manager, mock_db_writer) + + assert exit_code == 0 + + # Verify READMEs were loaded and written + assert mock_inventory_manager.load_library_readme_map.call_count == 1 + assert mock_inventory_manager.load_library_readme_content.call_count == 2 + assert mock_db_writer.write_markdown.call_count == 2 + mock_db_writer.write_markdown.assert_any_call("lib1", "abc123def456", readme_content) + mock_db_writer.write_markdown.assert_any_call("custom1", "fed4321cba98", readme_content) + + # Verify hashes were injected before writing libraries + write_calls = mock_db_writer.write_libraries.call_args_list + # libraries call + libs = write_calls[0][0][0] + assert libs[0]["name"] == "lib1" + assert libs[0]["markdown_hash"] == "abc123def456" + # custom call + custom = write_calls[1][0][0] + assert custom[0]["name"] == "custom1" + assert custom[0]["markdown_hash"] == "fed4321cba98" + def test_run_builder_uses_backfilled_inventories(self, mock_inventory_manager, mock_db_writer): versions = [Version("1.0.0"), Version("2.0.0")] inventory_1_0 = { @@ -235,17 +270,17 @@ def test_run_builder_uses_backfilled_inventories(self, mock_inventory_manager, m # Verify backfilled data is written: version 1.0.0 should have display_name backfilled write_calls = mock_db_writer.write_libraries.call_args_list + # We expect 2 calls: one for version 1.0.0 libraries, one for version 2.0.0 libraries + # (Custom instrumentations are empty, so they aren't called) assert len(write_calls) == 2 - # First call is for version 1.0.0 - should have backfilled display_name + # First call is for version 1.0.0 libraries - should have backfilled display_name libraries_v1 = write_calls[0][0][0] - assert len(libraries_v1) == 1 assert libraries_v1[0]["name"] == "lib1" assert libraries_v1[0]["display_name"] == "Library 1" - # Second call is for version 2.0.0 - should have original display_name + # Second call is for version 2.0.0 libraries - should have original display_name libraries_v2 = write_calls[1][0][0] - assert len(libraries_v2) == 1 assert libraries_v2[0]["name"] == "lib1" assert libraries_v2[0]["display_name"] == "Library 1" diff --git a/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/__init__.py b/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/__init__.py index 07daaff6..381a903a 100644 --- a/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/__init__.py +++ b/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/__init__.py @@ -16,4 +16,7 @@ import importlib.metadata -__version__ = importlib.metadata.version("java-instrumentation-watcher") +try: + __version__ = importlib.metadata.version("java-instrumentation-watcher") +except importlib.metadata.PackageNotFoundError: + __version__ = "0.0.0-dev" diff --git a/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/inventory_manager.py b/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/inventory_manager.py index 06d110f0..bdfaab75 100644 --- a/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/inventory_manager.py +++ b/ecosystem-automation/java-instrumentation-watcher/src/java_instrumentation_watcher/inventory_manager.py @@ -14,6 +14,8 @@ # """Inventory management for Java instrumentation tracking.""" +import logging +import re from collections.abc import Iterable from typing import Any @@ -22,6 +24,8 @@ from watcher_common.content_hashing import compute_content_hash from watcher_common.inventory_manager import BaseInventoryManager +logger = logging.getLogger(__name__) + class InventoryManager(BaseInventoryManager): """Manages Java instrumentation inventory storage and retrieval.""" @@ -96,6 +100,10 @@ def readme_dir_exists(self, version: Version) -> bool: """Return True if the library_readmes directory exists for this version.""" return (self.get_version_dir(version) / self.README_DIR).exists() + def _sanitize_name(self, name: str) -> str: + """Sanitizes a name for use as a filename to prevent path traversal.""" + return re.sub(r"[^a-zA-Z0-9._\-]", "_", name) + def save_library_readmes( self, version: Version, @@ -107,9 +115,98 @@ def save_library_readmes( written = 0 for name, content in readmes: digest = compute_content_hash(content) - file_path = target_dir / f"{name}-{digest}.md" + safe_name = self._sanitize_name(name) + file_path = target_dir / f"{safe_name}-{digest}.md" if file_path.exists(): continue file_path.write_text(content, encoding="utf-8") written += 1 return written + + def load_library_readme_map(self, version: Version) -> dict[str, str]: + """ + Scan library_readmes/ and build a map of library_name -> markdown_hash. + + Args: + version: Version to scan + + Returns: + Dictionary mapping library names to their markdown content hashes + """ + readme_dir = self.get_version_dir(version) / self.README_DIR + if not readme_dir.exists(): + return {} + + # Tracking for deterministic selection: library_name -> (hash, mtime_ns, filename) + selected_readmes: dict[str, tuple[str, int, str]] = {} + seen_hashes: dict[str, set[str]] = {} + + for item in sorted(readme_dir.iterdir(), key=lambda p: p.name): + if item.is_file() and item.suffix == ".md": + parsed = self._parse_readme_filename(item.name) + if parsed: + library_name, markdown_hash = parsed + seen_hashes.setdefault(library_name, set()).add(markdown_hash) + + try: + mtime_ns = item.stat().st_mtime_ns + except OSError: + logger.warning(f"Failed to stat README file in {version}: {item.name}") + continue + + current = selected_readmes.get(library_name) + if current is None: + selected_readmes[library_name] = (markdown_hash, mtime_ns, item.name) + else: + _, current_mtime_ns, current_name = current + # Pick newest by mtime, fallback to lexicographical name for total determinism + if mtime_ns > current_mtime_ns or (mtime_ns == current_mtime_ns and item.name > current_name): + selected_readmes[library_name] = (markdown_hash, mtime_ns, item.name) + else: + logger.warning(f"Malformed README filename in {version}: {item.name}") + + readme_map = {} + for library_name, (markdown_hash, _, selected_name) in selected_readmes.items(): + readme_map[library_name] = markdown_hash + hashes = seen_hashes.get(library_name, set()) + if len(hashes) > 1: + logger.warning( + f"Multiple README files found for library '{library_name}' in {version}; " + f"selected '{selected_name}' with hash '{markdown_hash}'. " + f"Available hashes: {sorted(hashes)}" + ) + + return readme_map + + def load_library_readme_content(self, version: Version, library_name: str, markdown_hash: str) -> str | None: + """ + Load the content of a specific library README. + + Args: + version: Version to load from + library_name: Name of the library + markdown_hash: Content hash of the markdown + + Returns: + The markdown content, or None if it doesn't exist or cannot be read + """ + safe_name = self._sanitize_name(library_name) + file_path = self.get_version_dir(version) / self.README_DIR / f"{safe_name}-{markdown_hash}.md" + if not file_path.exists(): + return None + + try: + return file_path.read_text(encoding="utf-8") + except OSError as e: + logger.error(f"Failed to read README file '{file_path}': {e}") + return None + + def _parse_readme_filename(self, filename: str) -> tuple[str, str] | None: + """ + Parse a README filename into (library_name, markdown_hash). + Format: {library-name}-{hash}.md + """ + match = re.match(r"^(.+)-([a-f0-9]{12})\.md$", filename) + if match: + return match.group(1), match.group(2) + return None diff --git a/ecosystem-automation/java-instrumentation-watcher/tests/test_inventory_manager.py b/ecosystem-automation/java-instrumentation-watcher/tests/test_inventory_manager.py index 5ae8395c..18540c75 100644 --- a/ecosystem-automation/java-instrumentation-watcher/tests/test_inventory_manager.py +++ b/ecosystem-automation/java-instrumentation-watcher/tests/test_inventory_manager.py @@ -23,16 +23,18 @@ from semantic_version import Version -class TestInventoryManager: - @pytest.fixture - def temp_inventory_dir(self): - with tempfile.TemporaryDirectory() as tmpdir: - yield tmpdir +@pytest.fixture +def temp_inventory_dir(): + with tempfile.TemporaryDirectory() as tmpdir: + yield tmpdir + - @pytest.fixture - def inventory_manager(self, temp_inventory_dir): - return InventoryManager(inventory_dir=temp_inventory_dir) +@pytest.fixture +def inventory_manager(temp_inventory_dir): + return InventoryManager(inventory_dir=temp_inventory_dir) + +class TestInventoryManager: def test_get_version_dir(self, inventory_manager, temp_inventory_dir): version = Version("2.10.0") version_dir = inventory_manager.get_version_dir(version) @@ -315,3 +317,93 @@ def test_cleanup_snapshots_removes_library_readmes(self, inventory_manager): inventory_manager.cleanup_snapshots() assert not snapshot_dir.exists() + + +class TestLibraryReadme: + """Tests for library README discovery and loading.""" + + def test_parse_readme_filename(self, inventory_manager): + # Valid cases (12 char hash) + assert inventory_manager._parse_readme_filename("mylib-abc123def456.md") == ("mylib", "abc123def456") + assert inventory_manager._parse_readme_filename("my-lib-1.0-abc123def456.md") == ("my-lib-1.0", "abc123def456") + + # Invalid cases + assert inventory_manager._parse_readme_filename("mylib-abc123.md") is None # Too short + assert inventory_manager._parse_readme_filename("mylib-abc123def4567.md") is None # Too long + assert inventory_manager._parse_readme_filename("-abc123def456.md") is None # Empty name + assert inventory_manager._parse_readme_filename("mylib.md") is None # No hash + + def test_load_library_readme_map_deterministic_selection(self, inventory_manager, tmp_path): + import time + + version = Version("1.0.0") + readme_dir = inventory_manager.get_version_dir(version) / "library_readmes" + readme_dir.mkdir(parents=True) + + # Create three files for the same library with different mtimes + # We need to sleep slightly to ensure different mtimes if the OS resolution is low, + # but for unit tests we can also mock or just hope the filesystem is fast enough to show diffs + # actually stat.st_mtime_ns is very precise. + + p1 = readme_dir / "mylib-abc123def456.md" + p1.write_text("old content") + # Ensure p1 is definitely older + + p2 = readme_dir / "mylib-fed4321cba98.md" + p2.write_text("new content") + + p3 = readme_dir / "mylib-ffffff000000.md" + p3.write_text("newest content") + + # Manually set mtimes to be sure + import os + + now = time.time_ns() + os.utime(p1, ns=(now - 1000000, now - 1000000)) + os.utime(p2, ns=(now, now)) + os.utime(p3, ns=(now + 1000000, now + 1000000)) + + readme_map = inventory_manager.load_library_readme_map(version) + + # Should pick p3 (ffffff...) because it has the newest mtime + assert len(readme_map) == 1 + assert readme_map["mylib"] == "ffffff000000" + + def test_load_library_readme_map_lexicographical_fallback(self, inventory_manager): + version = Version("1.0.0") + readme_dir = inventory_manager.get_version_dir(version) / "library_readmes" + readme_dir.mkdir(parents=True) + + p1 = readme_dir / "mylib-aaaaaa111111.md" + p1.write_text("content a") + + p2 = readme_dir / "mylib-bbbbbb222222.md" + p2.write_text("content b") + + # Set same mtime + import os + import time + + now = time.time_ns() + os.utime(p1, ns=(now, now)) + os.utime(p2, ns=(now, now)) + + readme_map = inventory_manager.load_library_readme_map(version) + + # Should pick p2 (bbbbbb...) because b > a lexicographically + assert readme_map["mylib"] == "bbbbbb222222" + + def test_load_library_readme_content_sanitization(self, inventory_manager, tmp_path): + version = Version("1.0.0") + readme_dir = inventory_manager.get_version_dir(version) / "library_readmes" + readme_dir.mkdir(parents=True) + + # Save a file with a potentially dangerous name that gets sanitized + library_name = "../dangerous" + sanitized_name = ".._dangerous" + markdown_hash = "abc123def456" + (readme_dir / f"{sanitized_name}-{markdown_hash}.md").write_text("safe content") + + # Should be able to load it using the original (unsanitized) name + content = inventory_manager.load_library_readme_content(version, library_name, markdown_hash) + assert content == "safe content" diff --git a/ecosystem-explorer/.prettierignore b/ecosystem-explorer/.prettierignore new file mode 100644 index 00000000..112b0f3b --- /dev/null +++ b/ecosystem-explorer/.prettierignore @@ -0,0 +1,2 @@ +# Data (avoid formatting large generated files) +public/data diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-5eb687da7be5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-5eb687da7be5.json new file mode 100644 index 00000000..b7941a73 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-5eb687da7be5.json @@ -0,0 +1,173 @@ +{ + "configurations": [ + { + "default": "", + "description": "Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.", + "name": "otel.semconv-stability.opt-in", + "type": "list" + } + ], + "description": "The Alibaba Druid instrumentation generates database connection pool metrics for druid data sources.", + "display_name": "Alibaba Druid", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.alibaba:druid:(,)"], + "library_link": "https://github.com/alibaba/druid", + "markdown_hash": "6c55bb962678", + "name": "alibaba-druid-1.0", + "scope": { + "name": "io.opentelemetry.alibaba-druid-1.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/alibaba-druid-1.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-d2cbd166fa8c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-d2cbd166fa8c.json new file mode 100644 index 00000000..4a6dd16d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/alibaba-druid-1.0/alibaba-druid-1.0-d2cbd166fa8c.json @@ -0,0 +1,174 @@ +{ + "configurations": [ + { + "default": "", + "description": "Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.", + "name": "otel.semconv-stability.opt-in", + "type": "list" + } + ], + "description": "The Alibaba Druid instrumentation generates database connection pool metrics for druid data sources.", + "display_name": "Alibaba Druid", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.alibaba:druid:(,)"], + "library_link": "https://github.com/alibaba/druid", + "markdown_hash": "6c55bb962678", + "name": "alibaba-druid-1.0", + "scope": { + "name": "io.opentelemetry.alibaba-druid-1.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/alibaba-druid-1.0", + "tags": ["alibaba"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-911cddf13728.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-911cddf13728.json new file mode 100644 index 00000000..a49ab442 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-911cddf13728.json @@ -0,0 +1,148 @@ +{ + "configurations": [ + { + "default": "", + "description": "Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.", + "name": "otel.semconv-stability.opt-in", + "type": "list" + } + ], + "description": "This instrumentation enables database connection pools metrics for Apache DBCP.\nThe instrumentation uses `MBeanRegistration` methods for lifecycle detection, therefore it only activates if the `BasicDataSource` is registered to an `MBeanServer`. If using Spring Boot, this happens automatically as all Spring beans that support JMX registration are automatically registered by default.", + "display_name": "Apache DBCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.commons:commons-dbcp2:[2,)"], + "library_link": "https://commons.apache.org/proper/commons-dbcp/", + "markdown_hash": "e74b2ed35478", + "name": "apache-dbcp-2.0", + "scope": { + "name": "io.opentelemetry.apache-dbcp-2.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/apache-dbcp-2.0", + "tags": ["apache"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-f203715ffa4b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-f203715ffa4b.json new file mode 100644 index 00000000..50624305 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-dbcp-2.0/apache-dbcp-2.0-f203715ffa4b.json @@ -0,0 +1,147 @@ +{ + "configurations": [ + { + "default": "", + "description": "Opt-in to emit stable semantic conventions instead of the old experimental semantic conventions. Accepts a comma-separated list of semantic convention groups (e.g., `database`, `http`, `messaging`). Use `/dup` to emit both old and new conventions simultaneously. Stable semantic conventions will become the default in version 3.0 of the agent.", + "name": "otel.semconv-stability.opt-in", + "type": "list" + } + ], + "description": "This instrumentation enables database connection pools metrics for Apache DBCP.\nThe instrumentation uses `MBeanRegistration` methods for lifecycle detection, therefore it only activates if the `BasicDataSource` is registered to an `MBeanServer`. If using Spring Boot, this happens automatically as all Spring beans that support JMX registration are automatically registered by default.", + "display_name": "Apache DBCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.commons:commons-dbcp2:[2,)"], + "library_link": "https://commons.apache.org/proper/commons-dbcp/", + "markdown_hash": "e74b2ed35478", + "name": "apache-dbcp-2.0", + "scope": { + "name": "io.opentelemetry.apache-dbcp-2.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/apache-dbcp-2.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-3dcc5a41d127.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-3dcc5a41d127.json new file mode 100644 index 00000000..f2a39eff --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-3dcc5a41d127.json @@ -0,0 +1,93 @@ +{ + "description": "This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.", + "display_name": "Apache HttpClient", + "has_standalone_library": true, + "library_link": "https://hc.apache.org/index.html", + "markdown_hash": "a3bae406cfcf", + "name": "apache-httpclient-4.3", + "scope": { + "name": "io.opentelemetry.apache-httpclient-4.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/apache-httpclient/apache-httpclient-4.3", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-c02765c852c7.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-c02765c852c7.json new file mode 100644 index 00000000..efb0b5b8 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-4.3/apache-httpclient-4.3-c02765c852c7.json @@ -0,0 +1,94 @@ +{ + "description": "This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.", + "display_name": "Apache HttpClient", + "has_standalone_library": true, + "library_link": "https://hc.apache.org/index.html", + "markdown_hash": "a3bae406cfcf", + "name": "apache-httpclient-4.3", + "scope": { + "name": "io.opentelemetry.apache-httpclient-4.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/apache-httpclient/apache-httpclient-4.3", + "tags": ["apache"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-65bc213a7c74.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-65bc213a7c74.json new file mode 100644 index 00000000..30f08cd5 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-65bc213a7c74.json @@ -0,0 +1,94 @@ +{ + "description": "This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.", + "display_name": "Apache HttpClient", + "has_standalone_library": true, + "library_link": "https://hc.apache.org/index.html", + "markdown_hash": "8fd473357d34", + "name": "apache-httpclient-5.2", + "scope": { + "name": "io.opentelemetry.apache-httpclient-5.2", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/apache-httpclient/apache-httpclient-5.2", + "tags": ["apache"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-7d3f1cfe56a1.json b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-7d3f1cfe56a1.json new file mode 100644 index 00000000..f8b52d6b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/apache-httpclient-5.2/apache-httpclient-5.2-7d3f1cfe56a1.json @@ -0,0 +1,93 @@ +{ + "description": "This instrumentation provides a library integration that enables HTTP client spans and HTTP client metrics for the Apache HttpClient.", + "display_name": "Apache HttpClient", + "has_standalone_library": true, + "library_link": "https://hc.apache.org/index.html", + "markdown_hash": "8fd473357d34", + "name": "apache-httpclient-5.2", + "scope": { + "name": "io.opentelemetry.apache-httpclient-5.2", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/apache-httpclient/apache-httpclient-5.2", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-0757e5407a71.json b/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-0757e5407a71.json new file mode 100644 index 00000000..1e6b9db7 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-0757e5407a71.json @@ -0,0 +1,430 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and metrics for the Armeria HTTP client, and HTTP server spans and metrics for the Armeria HTTP server.", + "display_name": "Armeria", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.linecorp.armeria:armeria:[1.3.0,)"], + "library_link": "https://armeria.dev/", + "markdown_hash": "977075160b7e", + "name": "armeria-1.3", + "scope": { + "name": "io.opentelemetry.armeria-1.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/armeria/armeria-1.3", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-861e34a554df.json b/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-861e34a554df.json new file mode 100644 index 00000000..df96ed6d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/armeria-1.3/armeria-1.3-861e34a554df.json @@ -0,0 +1,431 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and metrics for the Armeria HTTP client, and HTTP server spans and metrics for the Armeria HTTP server.", + "display_name": "Armeria", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.linecorp.armeria:armeria:[1.3.0,)"], + "library_link": "https://armeria.dev/", + "markdown_hash": "977075160b7e", + "name": "armeria-1.3", + "scope": { + "name": "io.opentelemetry.armeria-1.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/armeria/armeria-1.3", + "tags": ["armeria"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-874371a8443a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-874371a8443a.json new file mode 100644 index 00000000..48c9e57b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-874371a8443a.json @@ -0,0 +1,39 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + } + ], + "description": "Provides lightweight instrumentation of the Lambda core library, supporting all versions. It generates FaaS server spans with the `faas.invocation_id` attribute. Use this package if you only use `RequestStreamHandler` or know you don't use any event classes from `aws-lambda-java-events`. This also includes when you are using `aws-serverless-java-container` to run e.g., a Spring Boot application on Lambda.\nFor custom wrappers when using library instrumentation, you can configure the `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` environment variable to contain your lambda handler method (in the format `package.ClassName::methodName`) and use one of wrappers as your lambda `Handler`.", + "display_name": "AWS Lambda Core", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.amazonaws:aws-lambda-java-core:[1.0.0,)"], + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "9298135a5f9c", + "name": "aws-lambda-core-1.0", + "scope": { + "name": "io.opentelemetry.aws-lambda-core-1.0" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-core-1.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "faas.invocation_id", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-e501c94430e8.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-e501c94430e8.json new file mode 100644 index 00000000..2a02d2aa --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-core-1.0/aws-lambda-core-1.0-e501c94430e8.json @@ -0,0 +1,40 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + } + ], + "description": "Provides lightweight instrumentation of the Lambda core library, supporting all versions. It generates FaaS server spans with the `faas.invocation_id` attribute. Use this package if you only use `RequestStreamHandler` or know you don't use any event classes from `aws-lambda-java-events`. This also includes when you are using `aws-serverless-java-container` to run e.g., a Spring Boot application on Lambda.\nFor custom wrappers when using library instrumentation, you can configure the `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` environment variable to contain your lambda handler method (in the format `package.ClassName::methodName`) and use one of wrappers as your lambda `Handler`.", + "display_name": "AWS Lambda Core", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.amazonaws:aws-lambda-java-core:[1.0.0,)"], + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "9298135a5f9c", + "name": "aws-lambda-core-1.0", + "scope": { + "name": "io.opentelemetry.aws-lambda-core-1.0" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-core-1.0", + "tags": ["aws"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "faas.invocation_id", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-756e7df7d575.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-756e7df7d575.json new file mode 100644 index 00000000..a983dae0 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-756e7df7d575.json @@ -0,0 +1,78 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This version of the library instrumentation is deprecated, please use `aws-lambda-events-3.11` instead. This instrumentation enables FaaS spans and messaging spans for AWS Lambda functions handling event types.", + "display_name": "AWS Lambda Events", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.amazonaws:aws-lambda-java-core:[1.0.0,)"], + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "b184b3934c94", + "name": "aws-lambda-events-2.2", + "scope": { + "name": "io.opentelemetry.aws-lambda-events-2.2" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS", "MESSAGING_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-events-2.2", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "faas.invocation_id", + "type": "STRING" + }, + { + "name": "faas.trigger", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-c17954572224.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-c17954572224.json new file mode 100644 index 00000000..6cad6b98 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-2.2/aws-lambda-events-2.2-c17954572224.json @@ -0,0 +1,79 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This version of the library instrumentation is deprecated, please use `aws-lambda-events-3.11` instead. This instrumentation enables FaaS spans and messaging spans for AWS Lambda functions handling event types.", + "display_name": "AWS Lambda Events", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.amazonaws:aws-lambda-java-core:[1.0.0,)"], + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "b184b3934c94", + "name": "aws-lambda-events-2.2", + "scope": { + "name": "io.opentelemetry.aws-lambda-events-2.2" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS", "MESSAGING_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-events-2.2", + "tags": ["aws"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "faas.invocation_id", + "type": "STRING" + }, + { + "name": "faas.trigger", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-0835df39653f.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-0835df39653f.json new file mode 100644 index 00000000..ac6e2b8c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-0835df39653f.json @@ -0,0 +1,87 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + } + ], + "description": "This library instrumentation provides FaaS spans and messaging spans for AWS Lambda functions handling event types.", + "display_name": "AWS Lambda Events", + "has_standalone_library": true, + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "6d2c8fd10301", + "name": "aws-lambda-events-3.11", + "scope": { + "name": "io.opentelemetry.aws-lambda-events-3.11" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS", "MESSAGING_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-events-3.11", + "tags": ["aws"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "cloud.account.id", + "type": "STRING" + }, + { + "name": "cloud.resource_id", + "type": "STRING" + }, + { + "name": "faas.invocation_id", + "type": "STRING" + }, + { + "name": "faas.trigger", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-8d9563c117d5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-8d9563c117d5.json new file mode 100644 index 00000000..430902c0 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-lambda-events-3.11/aws-lambda-events-3.11-8d9563c117d5.json @@ -0,0 +1,86 @@ +{ + "configurations": [ + { + "default": 10000, + "description": "Flush timeout in milliseconds.", + "name": "otel.instrumentation.aws-lambda.flush-timeout", + "type": "int" + } + ], + "description": "This library instrumentation provides FaaS spans and messaging spans for AWS Lambda functions handling event types.", + "display_name": "AWS Lambda Events", + "has_standalone_library": true, + "library_link": "https://docs.aws.amazon.com/lambda/latest/dg/java-handler.html", + "markdown_hash": "6d2c8fd10301", + "name": "aws-lambda-events-3.11", + "scope": { + "name": "io.opentelemetry.aws-lambda-events-3.11" + }, + "semantic_conventions": ["FAAS_SERVER_SPANS", "MESSAGING_SPANS"], + "source_path": "instrumentation/aws-lambda/aws-lambda-events-3.11", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "cloud.account.id", + "type": "STRING" + }, + { + "name": "cloud.resource_id", + "type": "STRING" + }, + { + "name": "faas.invocation_id", + "type": "STRING" + }, + { + "name": "faas.trigger", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-819cf3f58a5e.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-819cf3f58a5e.json new file mode 100644 index 00000000..c9f3dc71 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-819cf3f58a5e.json @@ -0,0 +1,444 @@ +{ + "configurations": [ + { + "declarative_name": "java.aws_sdk.experimental_span_attributes/development", + "default": false, + "description": "Enables the experimental span attributes `aws.agent`, `aws.queue.name`, `aws.lambda.function.arn` and `aws.lambda.function.name` for AWS SDK instrumentation.", + "name": "otel.instrumentation.aws-sdk.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.receive_telemetry/development.enabled", + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.capture_headers/development", + "default": "", + "description": "Allows configuring headers to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation covers the AWS SDK 1.11+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, secrets manager, SNS/SQS and step functions.", + "display_name": "AWS SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "com.amazonaws:aws-java-sdk-sqs:[1.10.33,)", + "com.amazonaws:aws-java-sdk-core:[1.10.33,)" + ], + "library_link": "https://aws.amazon.com/sdk-for-java/", + "markdown_hash": "58b918ec054f", + "name": "aws-sdk-1.11", + "scope": { + "name": "io.opentelemetry.aws-sdk-1.11" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "DATABASE_CLIENT_SPANS", + "DATABASE_CLIENT_METRICS", + "MESSAGING_SPANS", + "GENAI_CLIENT_SPANS", + "GENAI_CLIENT_METRICS" + ], + "source_path": "instrumentation/aws-sdk/aws-sdk-1.11", + "tags": ["aws"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-b26e5431884c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-b26e5431884c.json new file mode 100644 index 00000000..35b587a9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-1.11/aws-sdk-1.11-b26e5431884c.json @@ -0,0 +1,443 @@ +{ + "configurations": [ + { + "declarative_name": "java.aws_sdk.experimental_span_attributes/development", + "default": false, + "description": "Enables the experimental span attributes `aws.agent`, `aws.queue.name`, `aws.lambda.function.arn` and `aws.lambda.function.name` for AWS SDK instrumentation.", + "name": "otel.instrumentation.aws-sdk.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.receive_telemetry/development.enabled", + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.capture_headers/development", + "default": "", + "description": "Allows configuring headers to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation covers the AWS SDK 1.11+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, secrets manager, SNS/SQS and step functions.", + "display_name": "AWS SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "com.amazonaws:aws-java-sdk-sqs:[1.10.33,)", + "com.amazonaws:aws-java-sdk-core:[1.10.33,)" + ], + "library_link": "https://aws.amazon.com/sdk-for-java/", + "markdown_hash": "58b918ec054f", + "name": "aws-sdk-1.11", + "scope": { + "name": "io.opentelemetry.aws-sdk-1.11" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "DATABASE_CLIENT_SPANS", + "DATABASE_CLIENT_METRICS", + "MESSAGING_SPANS", + "GENAI_CLIENT_SPANS", + "GENAI_CLIENT_METRICS" + ], + "source_path": "instrumentation/aws-sdk/aws-sdk-1.11", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-12ed10332200.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-12ed10332200.json new file mode 100644 index 00000000..842f8e27 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-12ed10332200.json @@ -0,0 +1,733 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.messaging.receive_telemetry/development.enabled", + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.capture_headers/development", + "default": "", + "description": "Allows configuring headers to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "declarative_name": "java.aws_sdk.experimental_span_attributes/development", + "default": false, + "description": "Enables experimental span attributes `aws.agent`, `aws.lambda.function.arn` and `aws.lambda.function.name` for AWS SDK instrumentation.", + "name": "otel.instrumentation.aws-sdk.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.aws_sdk.use_propagator_for_messaging/development", + "default": false, + "description": "Determines whether the configured TextMapPropagator should be used to inject into supported messaging attributes (for SQS).", + "name": "otel.instrumentation.aws-sdk.experimental-use-propagator-for-messaging", + "type": "boolean" + }, + { + "declarative_name": "java.common.gen_ai.capture_message_content", + "default": false, + "description": "Determines whether Generative AI events include full content of user and assistant messages. Note that full content can have data privacy and size concerns and care should be taken when enabling this", + "name": "otel.instrumentation.genai.capture-message-content", + "type": "boolean" + }, + { + "declarative_name": "java.aws_sdk.record_individual_http_error/development", + "default": false, + "description": "Determines whether errors returned by each individual HTTP request should be recorded as events for the SDK span.", + "name": "otel.instrumentation.aws-sdk.experimental-record-individual-http-error", + "type": "boolean" + } + ], + "description": "This instrumentation covers the AWS SDK 2.2+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, SNS/SQS and Bedrock.", + "display_name": "AWS SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "software.amazon.awssdk:sns:[2.2.0,)", + "software.amazon.awssdk:lambda:[2.17.0,)", + "software.amazon.awssdk:bedrock-runtime:[2.25.63,)", + "software.amazon.awssdk:aws-core:[2.2.0,)", + "software.amazon.awssdk:sqs:[2.2.0,)" + ], + "library_link": "https://aws.amazon.com/sdk-for-java/", + "markdown_hash": "7b219edeedd5", + "name": "aws-sdk-2.2", + "scope": { + "name": "io.opentelemetry.aws-sdk-2.2" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "DATABASE_CLIENT_SPANS", + "DATABASE_CLIENT_METRICS", + "MESSAGING_SPANS", + "GENAI_CLIENT_SPANS", + "GENAI_CLIENT_METRICS" + ], + "source_path": "instrumentation/aws-sdk/aws-sdk-2.2", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "GenAI operation duration.", + "instrument": "histogram", + "name": "gen_ai.client.operation.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.token.type", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures number of input and output tokens used.", + "instrument": "histogram", + "name": "gen_ai.client.token.usage", + "unit": "{token}" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.consumed_capacity", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.global_secondary_indexes", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.item_collection_metrics", + "type": "STRING" + }, + { + "name": "aws.dynamodb.limit", + "type": "LONG" + }, + { + "name": "aws.dynamodb.provisioned_read_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.provisioned_write_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.scanned_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.select", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.secretsmanager.secret.arn", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.max_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.request.stop_sequences", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.temperature", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.top_p", + "type": "DOUBLE" + }, + { + "name": "gen_ai.response.finish_reasons", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.usage.output_tokens", + "type": "LONG" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.consumed_capacity", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.global_secondary_indexes", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.item_collection_metrics", + "type": "STRING" + }, + { + "name": "aws.dynamodb.limit", + "type": "LONG" + }, + { + "name": "aws.dynamodb.provisioned_read_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.provisioned_write_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.scanned_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.select", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.secretsmanager.secret.arn", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-434b3a678499.json b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-434b3a678499.json new file mode 100644 index 00000000..5fbcd745 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/aws-sdk-2.2/aws-sdk-2.2-434b3a678499.json @@ -0,0 +1,734 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.messaging.receive_telemetry/development.enabled", + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.common.messaging.capture_headers/development", + "default": "", + "description": "Allows configuring headers to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "declarative_name": "java.aws_sdk.experimental_span_attributes/development", + "default": false, + "description": "Enables experimental span attributes `aws.agent`, `aws.lambda.function.arn` and `aws.lambda.function.name` for AWS SDK instrumentation.", + "name": "otel.instrumentation.aws-sdk.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.aws_sdk.use_propagator_for_messaging/development", + "default": false, + "description": "Determines whether the configured TextMapPropagator should be used to inject into supported messaging attributes (for SQS).", + "name": "otel.instrumentation.aws-sdk.experimental-use-propagator-for-messaging", + "type": "boolean" + }, + { + "declarative_name": "java.common.gen_ai.capture_message_content", + "default": false, + "description": "Determines whether Generative AI events include full content of user and assistant messages. Note that full content can have data privacy and size concerns and care should be taken when enabling this", + "name": "otel.instrumentation.genai.capture-message-content", + "type": "boolean" + }, + { + "declarative_name": "java.aws_sdk.record_individual_http_error/development", + "default": false, + "description": "Determines whether errors returned by each individual HTTP request should be recorded as events for the SDK span.", + "name": "otel.instrumentation.aws-sdk.experimental-record-individual-http-error", + "type": "boolean" + } + ], + "description": "This instrumentation covers the AWS SDK 2.2+ client library, enabling messaging and client spans and metrics for calls to AWS services including DynamoDB, EC2, Kinesis, Lambda, RDS, S3, SNS/SQS and Bedrock.", + "display_name": "AWS SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "software.amazon.awssdk:sns:[2.2.0,)", + "software.amazon.awssdk:lambda:[2.17.0,)", + "software.amazon.awssdk:bedrock-runtime:[2.25.63,)", + "software.amazon.awssdk:aws-core:[2.2.0,)", + "software.amazon.awssdk:sqs:[2.2.0,)" + ], + "library_link": "https://aws.amazon.com/sdk-for-java/", + "markdown_hash": "7b219edeedd5", + "name": "aws-sdk-2.2", + "scope": { + "name": "io.opentelemetry.aws-sdk-2.2" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "DATABASE_CLIENT_SPANS", + "DATABASE_CLIENT_METRICS", + "MESSAGING_SPANS", + "GENAI_CLIENT_SPANS", + "GENAI_CLIENT_METRICS" + ], + "source_path": "instrumentation/aws-sdk/aws-sdk-2.2", + "tags": ["aws"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "GenAI operation duration.", + "instrument": "histogram", + "name": "gen_ai.client.operation.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.token.type", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures number of input and output tokens used.", + "instrument": "histogram", + "name": "gen_ai.client.token.usage", + "unit": "{token}" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.consumed_capacity", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.global_secondary_indexes", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.item_collection_metrics", + "type": "STRING" + }, + { + "name": "aws.dynamodb.limit", + "type": "LONG" + }, + { + "name": "aws.dynamodb.provisioned_read_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.provisioned_write_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.scanned_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.select", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.secretsmanager.secret.arn", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.max_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.request.stop_sequences", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.temperature", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.top_p", + "type": "DOUBLE" + }, + { + "name": "gen_ai.response.finish_reasons", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.usage.output_tokens", + "type": "LONG" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.dynamodb.consumed_capacity", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.global_secondary_indexes", + "type": "STRING_ARRAY" + }, + { + "name": "aws.dynamodb.item_collection_metrics", + "type": "STRING" + }, + { + "name": "aws.dynamodb.limit", + "type": "LONG" + }, + { + "name": "aws.dynamodb.provisioned_read_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.provisioned_write_capacity", + "type": "DOUBLE" + }, + { + "name": "aws.dynamodb.scanned_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.select", + "type": "STRING" + }, + { + "name": "aws.dynamodb.table_count", + "type": "LONG" + }, + { + "name": "aws.dynamodb.table_names", + "type": "STRING_ARRAY" + }, + { + "name": "aws.kinesis.stream_name", + "type": "STRING" + }, + { + "name": "aws.lambda.function.arn", + "type": "STRING" + }, + { + "name": "aws.lambda.function.name", + "type": "STRING" + }, + { + "name": "aws.lambda.resource_mapping.id", + "type": "STRING" + }, + { + "name": "aws.queue.name", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.s3.bucket", + "type": "STRING" + }, + { + "name": "aws.secretsmanager.secret.arn", + "type": "STRING" + }, + { + "name": "aws.sns.topic.arn", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "aws.step_functions.activity.arn", + "type": "STRING" + }, + { + "name": "aws.step_functions.state_machine.arn", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "aws.agent", + "type": "STRING" + }, + { + "name": "aws.request_id", + "type": "STRING" + }, + { + "name": "aws.sqs.queue.url", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-608db5a48c71.json b/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-608db5a48c71.json new file mode 100644 index 00000000..96877400 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-608db5a48c71.json @@ -0,0 +1,87 @@ +{ + "description": "The c3p0 instrumentation provides connection pool metrics for c3p0 data sources.", + "display_name": "c3p0", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.mchange:c3p0:(,)"], + "library_link": "https://github.com/swaldman/c3p0", + "markdown_hash": "95477f6f2430", + "name": "c3p0-0.9", + "scope": { + "name": "io.opentelemetry.c3p0-0.9" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/c3p0-0.9", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-af39c6cac9d0.json b/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-af39c6cac9d0.json new file mode 100644 index 00000000..412e8392 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/c3p0-0.9/c3p0-0.9-af39c6cac9d0.json @@ -0,0 +1,88 @@ +{ + "description": "The c3p0 instrumentation provides connection pool metrics for c3p0 data sources.", + "display_name": "c3p0", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.mchange:c3p0:(,)"], + "library_link": "https://github.com/swaldman/c3p0", + "markdown_hash": "95477f6f2430", + "name": "c3p0-0.9", + "scope": { + "name": "io.opentelemetry.c3p0-0.9" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/c3p0-0.9", + "tags": ["c3p0"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-5224c57c1b17.json b/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-5224c57c1b17.json new file mode 100644 index 00000000..699791d1 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-5224c57c1b17.json @@ -0,0 +1,208 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables statement sanitization for database queries.", + "name": "otel.instrumentation.common.db-statement-sanitizer.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the DataStax Cassandra Driver.", + "display_name": "Cassandra Driver", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "org.apache.cassandra:java-driver-core:(,)", + "com.datastax.oss:java-driver-core:[4.4,]" + ], + "library_link": "https://github.com/apache/cassandra-java-driver", + "markdown_hash": "9c8181910d68", + "name": "cassandra-4.4", + "scope": { + "name": "io.opentelemetry.cassandra-4.4" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/cassandra/cassandra-4.4", + "tags": ["cassandra"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.cassandra.consistency_level", + "type": "STRING" + }, + { + "name": "db.cassandra.coordinator.dc", + "type": "STRING" + }, + { + "name": "db.cassandra.coordinator.id", + "type": "STRING" + }, + { + "name": "db.cassandra.idempotence", + "type": "BOOLEAN" + }, + { + "name": "db.cassandra.page_size", + "type": "LONG" + }, + { + "name": "db.cassandra.speculative_execution_count", + "type": "LONG" + }, + { + "name": "db.cassandra.table", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "cassandra.consistency.level", + "type": "STRING" + }, + { + "name": "cassandra.coordinator.dc", + "type": "STRING" + }, + { + "name": "cassandra.coordinator.id", + "type": "STRING" + }, + { + "name": "cassandra.page.size", + "type": "LONG" + }, + { + "name": "cassandra.query.idempotent", + "type": "BOOLEAN" + }, + { + "name": "cassandra.speculative_execution.count", + "type": "LONG" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-c15370da7f3b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-c15370da7f3b.json new file mode 100644 index 00000000..d79e22f2 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/cassandra-4.4/cassandra-4.4-c15370da7f3b.json @@ -0,0 +1,208 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.db.query_sanitization.enabled", + "default": true, + "description": "Enables query sanitization for database queries.", + "name": "otel.instrumentation.common.db.query-sanitization.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the DataStax Cassandra Driver.", + "display_name": "Cassandra Driver", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "org.apache.cassandra:java-driver-core:(,)", + "com.datastax.oss:java-driver-core:[4.4,]" + ], + "library_link": "https://github.com/apache/cassandra-java-driver", + "markdown_hash": "9c8181910d68", + "name": "cassandra-4.4", + "scope": { + "name": "io.opentelemetry.cassandra-4.4" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/cassandra/cassandra-4.4", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.cassandra.consistency_level", + "type": "STRING" + }, + { + "name": "db.cassandra.coordinator.dc", + "type": "STRING" + }, + { + "name": "db.cassandra.coordinator.id", + "type": "STRING" + }, + { + "name": "db.cassandra.idempotence", + "type": "BOOLEAN" + }, + { + "name": "db.cassandra.page_size", + "type": "LONG" + }, + { + "name": "db.cassandra.speculative_execution_count", + "type": "LONG" + }, + { + "name": "db.cassandra.table", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "cassandra.consistency.level", + "type": "STRING" + }, + { + "name": "cassandra.coordinator.dc", + "type": "STRING" + }, + { + "name": "cassandra.coordinator.id", + "type": "STRING" + }, + { + "name": "cassandra.page.size", + "type": "LONG" + }, + { + "name": "cassandra.query.idempotent", + "type": "BOOLEAN" + }, + { + "name": "cassandra.speculative_execution.count", + "type": "LONG" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-11a46b090fac.json b/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-11a46b090fac.json new file mode 100644 index 00000000..52264baf --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-11a46b090fac.json @@ -0,0 +1,116 @@ +{ + "configurations": [ + { + "declarative_name": "java.elasticsearch.capture_search_query", + "default": false, + "description": "Enable the capture of search query bodies. It is important to note that Elasticsearch queries may contain personal or sensitive information.", + "name": "otel.instrumentation.elasticsearch.capture-search-query", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for Elasticsearch REST clients.", + "display_name": "Elasticsearch REST Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.elasticsearch.client:elasticsearch-rest-client:[7.0,)"], + "library_link": "https://www.elastic.co/guide/en/elasticsearch/client/java-rest", + "markdown_hash": "12c05129aaf3", + "name": "elasticsearch-rest-7.0", + "scope": { + "name": "io.opentelemetry.elasticsearch-rest-7.0" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/elasticsearch/elasticsearch-rest-7.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-b9e57968cae5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-b9e57968cae5.json new file mode 100644 index 00000000..bb30ecfd --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/elasticsearch-rest-7.0/elasticsearch-rest-7.0-b9e57968cae5.json @@ -0,0 +1,117 @@ +{ + "configurations": [ + { + "declarative_name": "java.elasticsearch.capture_search_query", + "default": false, + "description": "Enable the capture of search query bodies. It is important to note that Elasticsearch queries may contain personal or sensitive information.", + "name": "otel.instrumentation.elasticsearch.capture-search-query", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for Elasticsearch REST clients.", + "display_name": "Elasticsearch REST Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.elasticsearch.client:elasticsearch-rest-client:[7.0,)"], + "library_link": "https://www.elastic.co/guide/en/elasticsearch/client/java-rest", + "markdown_hash": "12c05129aaf3", + "name": "elasticsearch-rest-7.0", + "scope": { + "name": "io.opentelemetry.elasticsearch-rest-7.0" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/elasticsearch/elasticsearch-rest-7.0", + "tags": ["elasticsearch"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-4491f80486fd.json b/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-4491f80486fd.json new file mode 100644 index 00000000..38ab74e8 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-4491f80486fd.json @@ -0,0 +1,31 @@ +{ + "configurations": [ + { + "declarative_name": "java.executors.include", + "default": "", + "description": "List of Executor subclasses to be instrumented.", + "examples": ["com.example.CustomExecutor", "com.example.ExecutorOne,com.example.ExecutorTwo"], + "name": "otel.instrumentation.executors.include", + "type": "list" + }, + { + "declarative_name": "java.executors.include_all", + "default": false, + "description": "Whether to instrument all classes that implement the Executor interface.", + "name": "otel.instrumentation.executors.include-all", + "type": "boolean" + } + ], + "description": "The executor instrumentation ensures that context is automatically propagated when using common Java executors (e.g., ThreadPoolExecutor, ScheduledThreadPoolExecutor, ForkJoinPool). When a task is submitted, the current context is captured and bound to the task. Then, when the task eventually runs, even if it\u00e2\u20ac\u2122s on a different thread, the instrumentation reactivates that context, enabling consistent correlation across concurrent and asynchronous workflows.", + "display_name": "Java Executors", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html", + "name": "executors", + "scope": { + "name": "io.opentelemetry.executors" + }, + "source_path": "instrumentation/executors", + "tags": ["executors"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-ed1f29530912.json b/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-ed1f29530912.json new file mode 100644 index 00000000..eedbc812 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/executors/executors-ed1f29530912.json @@ -0,0 +1,30 @@ +{ + "configurations": [ + { + "declarative_name": "java.executors.include", + "default": "", + "description": "List of Executor subclasses to be instrumented.", + "examples": ["com.example.CustomExecutor", "com.example.ExecutorOne,com.example.ExecutorTwo"], + "name": "otel.instrumentation.executors.include", + "type": "list" + }, + { + "declarative_name": "java.executors.include_all", + "default": false, + "description": "Whether to instrument all classes that implement the Executor interface.", + "name": "otel.instrumentation.executors.include-all", + "type": "boolean" + } + ], + "description": "The executor instrumentation ensures that context is automatically propagated when using common Java executors (e.g., ThreadPoolExecutor, ScheduledThreadPoolExecutor, ForkJoinPool). When a task is submitted, the current context is captured and bound to the task. Then, when the task eventually runs, even if it\u00e2\u20ac\u2122s on a different thread, the instrumentation reactivates that context, enabling consistent correlation across concurrent and asynchronous workflows.", + "display_name": "Java Executors", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html", + "name": "executors", + "scope": { + "name": "io.opentelemetry.executors" + }, + "source_path": "instrumentation/executors" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-8ac98a43259d.json b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-8ac98a43259d.json new file mode 100644 index 00000000..9dbdb00b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-8ac98a43259d.json @@ -0,0 +1,62 @@ +{ + "configurations": [ + { + "declarative_name": "java.graphql.capture_query", + "default": true, + "description": "Whether to capture the query in `graphql.document` span attribute.", + "name": "otel.instrumentation.graphql.capture-query", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.query_sanitization.enabled", + "default": true, + "description": "Enables sanitization of sensitive information from queries so they aren't added as span attributes.", + "name": "otel.instrumentation.graphql.query-sanitization.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.operation_name_in_span_name.enabled", + "default": false, + "description": "Whether GraphQL operation name is added to the span name. WARNING: The GraphQL operation name is provided by the client and can have high cardinality. Use only when the server is not exposed to malicious clients.", + "name": "otel.instrumentation.graphql.operation-name-in-span-name.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for GraphQL operations.", + "display_name": "GraphQL Java", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.graphql-java:graphql-java:[12,20)"], + "library_link": "https://www.graphql-java.com/", + "markdown_hash": "6241bd12bac9", + "name": "graphql-java-12.0", + "scope": { + "name": "io.opentelemetry.graphql-java-12.0" + }, + "semantic_conventions": ["GRAPHQL_SERVER_SPANS"], + "source_path": "instrumentation/graphql-java/graphql-java-12.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-9ef76814aa52.json b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-9ef76814aa52.json new file mode 100644 index 00000000..53cbe82f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-12.0/graphql-java-12.0-9ef76814aa52.json @@ -0,0 +1,54 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables sanitization of sensitive information from queries so they aren't added as span attributes.", + "name": "otel.instrumentation.graphql.query-sanitizer.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Whether GraphQL operation name is added to the span name. WARNING: The GraphQL operation name is provided by the client and can have high cardinality. Use only when the server is not exposed to malicious clients.", + "name": "otel.instrumentation.graphql.add-operation-name-to-span-name.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for GraphQL operations.", + "display_name": "GraphQL Java", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.graphql-java:graphql-java:[12,20)"], + "library_link": "https://www.graphql-java.com/", + "markdown_hash": "6241bd12bac9", + "name": "graphql-java-12.0", + "scope": { + "name": "io.opentelemetry.graphql-java-12.0" + }, + "semantic_conventions": ["GRAPHQL_SERVER_SPANS"], + "source_path": "instrumentation/graphql-java/graphql-java-12.0", + "tags": ["graphql"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-33c274c99396.json b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-33c274c99396.json new file mode 100644 index 00000000..ea0d6abb --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-33c274c99396.json @@ -0,0 +1,106 @@ +{ + "configurations": [ + { + "declarative_name": "java.graphql.capture_query", + "default": true, + "description": "Whether to capture the query in `graphql.document` span attribute.", + "name": "otel.instrumentation.graphql.capture-query", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.query_sanitization.enabled", + "default": true, + "description": "Enables sanitization of sensitive information from queries so they aren't added as span attributes.", + "name": "otel.instrumentation.graphql.query-sanitization.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.operation_name_in_span_name.enabled", + "default": false, + "description": "Whether GraphQL operation name is added to the span name. WARNING: The GraphQL operation name is provided by the client and can have high cardinality. Use only when the server is not exposed to malicious clients.", + "name": "otel.instrumentation.graphql.operation-name-in-span-name.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.data_fetcher.enabled", + "default": false, + "description": "Enables span generation for data fetchers.", + "name": "otel.instrumentation.graphql.data-fetcher.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.trivial_data_fetcher.enabled", + "default": false, + "description": "Whether to create spans for trivial data fetchers. A trivial data fetcher is one that simply maps data from an object to a field.", + "name": "otel.instrumentation.graphql.trivial-data-fetcher.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for GraphQL operations.", + "display_name": "GraphQL Java", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.graphql-java:graphql-java:[20,)"], + "library_link": "https://www.graphql-java.com/", + "markdown_hash": "908e34878485", + "name": "graphql-java-20.0", + "scope": { + "name": "io.opentelemetry.graphql-java-20.0" + }, + "semantic_conventions": ["GRAPHQL_SERVER_SPANS"], + "source_path": "instrumentation/graphql-java/graphql-java-20.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.field.name", + "type": "STRING" + }, + { + "name": "graphql.field.path", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.graphql.data-fetcher.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-fbb9c1a5bd50.json b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-fbb9c1a5bd50.json new file mode 100644 index 00000000..7b23cb1c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/graphql-java-20.0/graphql-java-20.0-fbb9c1a5bd50.json @@ -0,0 +1,99 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables sanitization of sensitive information from queries so they aren't added as span attributes.", + "name": "otel.instrumentation.graphql.query-sanitizer.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Whether GraphQL operation name is added to the span name. WARNING: The GraphQL operation name is provided by the client and can have high cardinality. Use only when the server is not exposed to malicious clients.", + "name": "otel.instrumentation.graphql.add-operation-name-to-span-name.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.data_fetcher.enabled", + "default": false, + "description": "Enables span generation for data fetchers.", + "name": "otel.instrumentation.graphql.data-fetcher.enabled", + "type": "boolean" + }, + { + "declarative_name": "java.graphql.trivial_data_fetcher.enabled", + "default": false, + "description": "Whether to create spans for trivial data fetchers. A trivial data fetcher is one that simply maps data from an object to a field.", + "name": "otel.instrumentation.graphql.trivial-data-fetcher.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for GraphQL operations.", + "display_name": "GraphQL Java", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.graphql-java:graphql-java:[20,)"], + "library_link": "https://www.graphql-java.com/", + "markdown_hash": "908e34878485", + "minimum_java_version": 11, + "name": "graphql-java-20.0", + "scope": { + "name": "io.opentelemetry.graphql-java-20.0" + }, + "semantic_conventions": ["GRAPHQL_SERVER_SPANS"], + "source_path": "instrumentation/graphql-java/graphql-java-20.0", + "tags": ["graphql"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "graphql.document", + "type": "STRING" + }, + { + "name": "graphql.field.name", + "type": "STRING" + }, + { + "name": "graphql.field.path", + "type": "STRING" + }, + { + "name": "graphql.operation.name", + "type": "STRING" + }, + { + "name": "graphql.operation.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.graphql.data-fetcher.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-1ddfabe04e01.json b/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-1ddfabe04e01.json new file mode 100644 index 00000000..a138a9a2 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-1ddfabe04e01.json @@ -0,0 +1,779 @@ +{ + "configurations": [ + { + "declarative_name": "java.grpc.emit_message_events", + "default": true, + "description": "Determines whether to emit a span event for each individual message received and sent.", + "name": "otel.instrumentation.grpc.emit-message-events", + "type": "boolean" + }, + { + "declarative_name": "java.grpc.experimental_span_attributes/development", + "default": false, + "description": "Enable the capture of experimental span attributes `grpc.received.message_count`, `grpc.sent.message_count` and `grpc.canceled`.", + "name": "otel.instrumentation.grpc.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.grpc.capture_metadata.client.request", + "default": "", + "description": "A comma-separated list of request metadata keys. gRPC client instrumentation will capture metadata values corresponding to configured keys as span attributes.", + "examples": ["custom-request-header", "my-metadata-key,another-metadata-key"], + "name": "otel.instrumentation.grpc.capture-metadata.client.request", + "type": "list" + }, + { + "declarative_name": "java.grpc.capture_metadata.server.request", + "default": "", + "description": "A comma-separated list of request metadata keys. gRPC server instrumentation will capture metadata values corresponding to configured keys as span attributes.", + "name": "otel.instrumentation.grpc.capture-metadata.server.request", + "type": "list" + } + ], + "description": "This instrumentation enables RPC client and RPC server spans and metrics for gRPC.", + "display_name": "gRPC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.grpc:grpc-core:[1.6.0,)"], + "library_link": "https://github.com/grpc/grpc-java", + "markdown_hash": "5268d03f7b80", + "name": "grpc-1.6", + "scope": { + "name": "io.opentelemetry.grpc-1.6" + }, + "semantic_conventions": [ + "RPC_CLIENT_SPANS", + "RPC_CLIENT_METRICS", + "RPC_SERVER_SPANS", + "RPC_SERVER_METRICS" + ], + "source_path": "instrumentation/grpc-1.6", + "tags": ["grpc"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an outbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.client.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.response.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an inbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.server.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.response.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an outbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.client.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.response.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an inbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.server.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.response.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "grpc.received.message_count", + "type": "LONG" + }, + { + "name": "grpc.sent.message_count", + "type": "LONG" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "grpc.received.message_count", + "type": "LONG" + }, + { + "name": "grpc.sent.message_count", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.instrumentation.grpc.experimental-span-attributes=true" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the duration of outbound remote procedure calls (RPC).", + "instrument": "histogram", + "name": "rpc.client.call.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the duration of inbound remote procedure calls (RPC).", + "instrument": "histogram", + "name": "rpc.server.call.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.semconv-stability.opt-in=rpc" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-7ac64415cf1b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-7ac64415cf1b.json new file mode 100644 index 00000000..0e222a00 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/grpc-1.6/grpc-1.6-7ac64415cf1b.json @@ -0,0 +1,778 @@ +{ + "configurations": [ + { + "declarative_name": "java.grpc.emit_message_events", + "default": true, + "description": "Determines whether to emit a span event for each individual message received and sent.", + "name": "otel.instrumentation.grpc.emit-message-events", + "type": "boolean" + }, + { + "declarative_name": "java.grpc.experimental_span_attributes/development", + "default": false, + "description": "Enable the capture of experimental span attributes `grpc.received.message_count`, `grpc.sent.message_count` and `grpc.canceled`.", + "name": "otel.instrumentation.grpc.experimental-span-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.grpc.capture_metadata.client.request", + "default": "", + "description": "A comma-separated list of request metadata keys. gRPC client instrumentation will capture metadata values corresponding to configured keys as span attributes.", + "examples": ["custom-request-header", "my-metadata-key,another-metadata-key"], + "name": "otel.instrumentation.grpc.capture-metadata.client.request", + "type": "list" + }, + { + "declarative_name": "java.grpc.capture_metadata.server.request", + "default": "", + "description": "A comma-separated list of request metadata keys. gRPC server instrumentation will capture metadata values corresponding to configured keys as span attributes.", + "name": "otel.instrumentation.grpc.capture-metadata.server.request", + "type": "list" + } + ], + "description": "This instrumentation enables RPC client and RPC server spans and metrics for gRPC.", + "display_name": "gRPC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.grpc:grpc-core:[1.6.0,)"], + "library_link": "https://github.com/grpc/grpc-java", + "markdown_hash": "5268d03f7b80", + "name": "grpc-1.6", + "scope": { + "name": "io.opentelemetry.grpc-1.6" + }, + "semantic_conventions": [ + "RPC_CLIENT_SPANS", + "RPC_CLIENT_METRICS", + "RPC_SERVER_SPANS", + "RPC_SERVER_METRICS" + ], + "source_path": "instrumentation/grpc-1.6", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an outbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.client.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.response.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an inbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.server.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.response.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an outbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.client.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.client.response.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "The duration of an inbound RPC invocation.", + "instrument": "histogram", + "name": "rpc.server.duration", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC request messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.request.size", + "unit": "By" + }, + { + "attributes": [ + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the size of RPC response messages (uncompressed).", + "instrument": "histogram", + "name": "rpc.server.response.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "grpc.received.message_count", + "type": "LONG" + }, + { + "name": "grpc.sent.message_count", + "type": "LONG" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "grpc.received.message_count", + "type": "LONG" + }, + { + "name": "grpc.sent.message_count", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.grpc.status_code", + "type": "LONG" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.service", + "type": "STRING" + }, + { + "name": "rpc.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.instrumentation.grpc.experimental-span-attributes=true" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the duration of outbound remote procedure calls (RPC).", + "instrument": "histogram", + "name": "rpc.client.call.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures the duration of inbound remote procedure calls (RPC).", + "instrument": "histogram", + "name": "rpc.server.call.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "rpc.method", + "type": "STRING" + }, + { + "name": "rpc.response.status_code", + "type": "STRING" + }, + { + "name": "rpc.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.semconv-stability.opt-in=rpc" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-244c2914e349.json b/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-244c2914e349.json new file mode 100644 index 00000000..2429694a --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-244c2914e349.json @@ -0,0 +1,147 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for the Helidon HTTP server.", + "display_name": "Helidon", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.helidon.webserver:helidon-webserver:[4.3.0,)"], + "library_link": "https://helidon.io/", + "markdown_hash": "05f7907c327b", + "minimum_java_version": 21, + "name": "helidon-4.3", + "scope": { + "name": "io.opentelemetry.helidon-4.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/helidon-4.3", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-3f72b57b3d6c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-3f72b57b3d6c.json new file mode 100644 index 00000000..b7edc3e2 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/helidon-4.3/helidon-4.3-3f72b57b3d6c.json @@ -0,0 +1,148 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for the Helidon HTTP server.", + "display_name": "Helidon", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.helidon.webserver:helidon-webserver:[4.3.0,)"], + "library_link": "https://helidon.io/", + "markdown_hash": "05f7907c327b", + "minimum_java_version": 21, + "name": "helidon-4.3", + "scope": { + "name": "io.opentelemetry.helidon-4.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/helidon-4.3", + "tags": ["helidon"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-7a500bbf7ff0.json b/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-7a500bbf7ff0.json new file mode 100644 index 00000000..6fb808f2 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-7a500bbf7ff0.json @@ -0,0 +1,243 @@ +{ + "description": "This instrumentation enables database connection pool metrics for HikariCP.", + "display_name": "HikariCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.zaxxer:HikariCP:[3.0.0,)"], + "library_link": "https://github.com/brettwooldridge/HikariCP", + "markdown_hash": "34a91077c477", + "name": "hikaricp-3.0", + "scope": { + "name": "io.opentelemetry.hikaricp-3.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/hikaricp-3.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to create a new connection.", + "instrument": "histogram", + "name": "db.client.connections.create_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connection timeouts that have occurred trying to obtain a connection from the pool.", + "instrument": "counter", + "name": "db.client.connections.timeouts", + "unit": "{timeouts}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time between borrowing a connection and returning it to the pool.", + "instrument": "histogram", + "name": "db.client.connections.use_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to obtain an open connection from the pool.", + "instrument": "histogram", + "name": "db.client.connections.wait_time", + "unit": "ms" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to create a new connection.", + "instrument": "histogram", + "name": "db.client.connection.create_time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connection timeouts that have occurred trying to obtain a connection from the pool.", + "instrument": "counter", + "name": "db.client.connection.timeouts", + "unit": "{timeout}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time between borrowing a connection and returning it to the pool.", + "instrument": "histogram", + "name": "db.client.connection.use_time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to obtain an open connection from the pool.", + "instrument": "histogram", + "name": "db.client.connection.wait_time", + "unit": "s" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-daa668f6d831.json b/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-daa668f6d831.json new file mode 100644 index 00000000..ade4ef56 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/hikaricp-3.0/hikaricp-3.0-daa668f6d831.json @@ -0,0 +1,244 @@ +{ + "description": "This instrumentation enables database connection pool metrics for HikariCP.", + "display_name": "HikariCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.zaxxer:HikariCP:[3.0.0,)"], + "library_link": "https://github.com/brettwooldridge/HikariCP", + "markdown_hash": "34a91077c477", + "name": "hikaricp-3.0", + "scope": { + "name": "io.opentelemetry.hikaricp-3.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/hikaricp-3.0", + "tags": ["hikaricp"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to create a new connection.", + "instrument": "histogram", + "name": "db.client.connections.create_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.idle.min", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connection timeouts that have occurred trying to obtain a connection from the pool.", + "instrument": "counter", + "name": "db.client.connections.timeouts", + "unit": "{timeouts}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time between borrowing a connection and returning it to the pool.", + "instrument": "histogram", + "name": "db.client.connections.use_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to obtain an open connection from the pool.", + "instrument": "histogram", + "name": "db.client.connections.wait_time", + "unit": "ms" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to create a new connection.", + "instrument": "histogram", + "name": "db.client.connection.create_time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The minimum number of idle open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.idle.min", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connection timeouts that have occurred trying to obtain a connection from the pool.", + "instrument": "counter", + "name": "db.client.connection.timeouts", + "unit": "{timeout}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time between borrowing a connection and returning it to the pool.", + "instrument": "histogram", + "name": "db.client.connection.use_time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "The time it took to obtain an open connection from the pool.", + "instrument": "histogram", + "name": "db.client.connection.wait_time", + "unit": "s" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-7649f283640b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-7649f283640b.json new file mode 100644 index 00000000..d5616808 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-7649f283640b.json @@ -0,0 +1,140 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for requests made using the Java HTTP client.", + "display_name": "Java HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 11+"], + "library_link": "https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/package-summary.html", + "markdown_hash": "28bb07012f8d", + "minimum_java_version": 11, + "name": "java-http-client", + "scope": { + "name": "io.opentelemetry.java-http-client", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/java-http-client", + "tags": ["java"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-ec1d7650fbb3.json b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-ec1d7650fbb3.json new file mode 100644 index 00000000..33ef41bd --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-client/java-http-client-ec1d7650fbb3.json @@ -0,0 +1,139 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for requests made using the Java HTTP client.", + "display_name": "Java HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 11+"], + "library_link": "https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/package-summary.html", + "markdown_hash": "28bb07012f8d", + "minimum_java_version": 11, + "name": "java-http-client", + "scope": { + "name": "io.opentelemetry.java-http-client", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/java-http-client", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-470f6d2f8e6b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-470f6d2f8e6b.json new file mode 100644 index 00000000..8228917a --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-470f6d2f8e6b.json @@ -0,0 +1,151 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.body.size` and `http.server.response.body.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for the Java HTTP server.", + "display_name": "Java HTTP Server", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/module-summary.html", + "markdown_hash": "c7f7d4e03152", + "name": "java-http-server", + "scope": { + "name": "io.opentelemetry.java-http-server", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/java-http-server", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-8972de86533d.json b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-8972de86533d.json new file mode 100644 index 00000000..2ac181e3 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/java-http-server/java-http-server-8972de86533d.json @@ -0,0 +1,152 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.server.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.server.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.server.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.body.size` and `http.server.response.body.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for the Java HTTP server.", + "display_name": "Java HTTP Server", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/module-summary.html", + "markdown_hash": "c7f7d4e03152", + "name": "java-http-server", + "scope": { + "name": "io.opentelemetry.java-http-server", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/java-http-server", + "tags": ["java"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-0fc65581368d.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-0fc65581368d.json new file mode 100644 index 00000000..f85be527 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-0fc65581368d.json @@ -0,0 +1,226 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables query sanitization for database queries. Takes precedence over otel.instrumentation.common.db.query-sanitization.enabled.", + "name": "otel.instrumentation.jdbc.query-sanitization.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables query sanitization for database queries.", + "name": "otel.instrumentation.common.db.query-sanitization.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables experimental instrumentation to create spans for COMMIT and ROLLBACK operations.", + "name": "otel.instrumentation.jdbc.experimental.transaction.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables augmenting queries with a comment containing the tracing information. See [sqlcommenter](https://google.github.io/sqlcommenter/) for more info. WARNING: augmenting queries with tracing context will make query texts unique, which may have adverse impact on database performance. Consult with database experts before enabling.", + "name": "otel.instrumentation.jdbc.experimental.sqlcommenter.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Sets whether the query parameters should be captured as span attributes named db.query.parameter.<key>. Enabling this option disables the statement sanitization.

WARNING: captured query parameters may contain sensitive information such as passwords, personally identifiable information or protected health info.", + "name": "otel.instrumentation.jdbc.experimental.capture-query-parameters", + "type": "boolean" + }, + { + "default": false, + "description": "Enables instrumentation of JDBC datasource connections.", + "name": "otel.instrumentation.jdbc-datasource.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for JDBC operations. There is also a datasource instrumentation that creates spans for datasource connections (disabled by default). Note: The instrumentation unwraps pooled connections to cache metadata against the underlying physical connection; without proper unwrapping, repeated metadata extraction can cause performance degradation.", + "display_name": "JDBC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html", + "markdown_hash": "fd494a6eba9a", + "name": "jdbc", + "scope": { + "name": "io.opentelemetry.jdbc" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/jdbc", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.sql.table", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.batch.size", + "type": "LONG" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.stored_procedure.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "service.peer.name", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.semconv-stability.opt-in=database,service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-2d4cf74518b8.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-2d4cf74518b8.json new file mode 100644 index 00000000..8dbea420 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jdbc/jdbc-2d4cf74518b8.json @@ -0,0 +1,227 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables statement sanitization for database queries. Takes precedent to otel.instrumentation.common.db-statement-sanitizer.enabled.", + "name": "otel.instrumentation.jdbc.statement-sanitizer.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables statement sanitization for database queries.", + "name": "otel.instrumentation.common.db-statement-sanitizer.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables experimental instrumentation to create spans for COMMIT and ROLLBACK operations.", + "name": "otel.instrumentation.jdbc.experimental.transaction.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables augmenting queries with a comment containing the tracing information. See [sqlcommenter](https://google.github.io/sqlcommenter/) for more info. WARNING: augmenting queries with tracing context will make query texts unique, which may have adverse impact on database performance. Consult with database experts before enabling.", + "name": "otel.instrumentation.jdbc.experimental.sqlcommenter.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Sets whether the query parameters should be captured as span attributes named db.query.parameter.<key>. Enabling this option disables the statement sanitization.

WARNING: captured query parameters may contain sensitive information such as passwords, personally identifiable information or protected health info.", + "name": "otel.instrumentation.jdbc.experimental.capture-query-parameters", + "type": "boolean" + }, + { + "default": false, + "description": "Enables instrumentation of JDBC datasource connections.", + "name": "otel.instrumentation.jdbc-datasource.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for JDBC operations. There is also a datasource instrumentation that creates spans for datasource connections (disabled by default). Note: The instrumentation unwraps pooled connections to cache metadata against the underlying physical connection; without proper unwrapping, repeated metadata extraction can cause performance degradation.", + "display_name": "JDBC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["Java 8+"], + "library_link": "https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html", + "markdown_hash": "fd494a6eba9a", + "name": "jdbc", + "scope": { + "name": "io.opentelemetry.jdbc" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/jdbc", + "tags": ["jdbc"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.sql.table", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.batch.size", + "type": "LONG" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.stored_procedure.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "service.peer.name", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.semconv-stability.opt-in=database,service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-5f271123614a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-5f271123614a.json new file mode 100644 index 00000000..5241dcda --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-5f271123614a.json @@ -0,0 +1,140 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for Jetty HTTP Client.", + "display_name": "Eclipse Jetty HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.eclipse.jetty:jetty-client:[12,)"], + "library_link": "https://eclipse.dev/jetty/", + "markdown_hash": "f1c4f6282b92", + "minimum_java_version": 17, + "name": "jetty-httpclient-12.0", + "scope": { + "name": "io.opentelemetry.jetty-httpclient-12.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/jetty-httpclient/jetty-httpclient-12.0", + "tags": ["jetty"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-7401b024ad06.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-7401b024ad06.json new file mode 100644 index 00000000..57491158 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-12.0/jetty-httpclient-12.0-7401b024ad06.json @@ -0,0 +1,216 @@ +{ + "configurations": [ + { + "declarative_name": "java.common.http.known_methods", + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "declarative_name": "general.http.client.request_captured_headers", + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "declarative_name": "general.http.client.response_captured_headers", + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "declarative_name": "java.common.http.client.emit_experimental_telemetry/development", + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "declarative_name": "java.common.http.client.redact_query_parameters/development", + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for Jetty HTTP Client.", + "display_name": "Eclipse Jetty HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.eclipse.jetty:jetty-client:[12,)"], + "library_link": "https://eclipse.dev/jetty/", + "markdown_hash": "f1c4f6282b92", + "minimum_java_version": 17, + "name": "jetty-httpclient-12.0", + "scope": { + "name": "io.opentelemetry.jetty-httpclient-12.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/jetty-httpclient/jetty-httpclient-12.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-b79fe24580e3.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-b79fe24580e3.json new file mode 100644 index 00000000..b27aff0f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-b79fe24580e3.json @@ -0,0 +1,210 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for Jetty HTTP Client.", + "display_name": "Eclipse Jetty HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.eclipse.jetty:jetty-client:[9.2,10)"], + "library_link": "https://eclipse.dev/jetty/", + "markdown_hash": "bc893ec6a7c1", + "name": "jetty-httpclient-9.2", + "scope": { + "name": "io.opentelemetry.jetty-httpclient-9.2", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/jetty-httpclient/jetty-httpclient-9.2", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-f8bdc1f8d2c9.json b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-f8bdc1f8d2c9.json new file mode 100644 index 00000000..5d396591 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/jetty-httpclient-9.2/jetty-httpclient-9.2-f8bdc1f8d2c9.json @@ -0,0 +1,134 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for Jetty HTTP Client.", + "display_name": "Eclipse Jetty HTTP Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.eclipse.jetty:jetty-client:[9.2,10)"], + "library_link": "https://eclipse.dev/jetty/", + "markdown_hash": "bc893ec6a7c1", + "name": "jetty-httpclient-9.2", + "scope": { + "name": "io.opentelemetry.jetty-httpclient-9.2", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/jetty-httpclient/jetty-httpclient-9.2", + "tags": ["jetty"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-087f640a1eb5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-087f640a1eb5.json new file mode 100644 index 00000000..5e90775a --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-087f640a1eb5.json @@ -0,0 +1,102 @@ +{ + "description": "This standalone instrumentation enables messaging spans for Kafka producers and consumers, and collects internal Kafka client metrics.", + "display_name": "Apache Kafka Client", + "has_standalone_library": true, + "library_link": "https://kafka.apache.org/", + "markdown_hash": "cc1ea581ddca", + "name": "kafka-clients-2.6", + "scope": { + "name": "io.opentelemetry.kafka-clients-2.6" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/kafka/kafka-clients/kafka-clients-2.6", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "kafka.record.queue_time_ms", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.bootstrap.servers", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.key", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-193bf93bd630.json b/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-193bf93bd630.json new file mode 100644 index 00000000..1d072f1c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/kafka-clients-2.6/kafka-clients-2.6-193bf93bd630.json @@ -0,0 +1,95 @@ +{ + "description": "This standalone instrumentation enables messaging spans for Kafka producers and consumers, and collects internal Kafka client metrics.", + "display_name": "Apache Kafka Client", + "has_standalone_library": true, + "library_link": "https://kafka.apache.org/", + "markdown_hash": "cc1ea581ddca", + "name": "kafka-clients-2.6", + "scope": { + "name": "io.opentelemetry.kafka-clients-2.6" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/kafka/kafka-clients/kafka-clients-2.6", + "tags": ["kafka"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "kafka.record.queue_time_ms", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-00cc68787011.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-00cc68787011.json new file mode 100644 index 00000000..73c6ce46 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-00cc68787011.json @@ -0,0 +1,155 @@ +{ + "description": "This standalone instrumentation enables HTTP server spans and HTTP server metrics for the Ktor server.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_standalone_library": true, + "library_link": "https://ktor.io/", + "markdown_hash": "95edd47db391", + "name": "ktor-1.0", + "scope": { + "name": "io.opentelemetry.ktor-1.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/ktor/ktor-1.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-a05a16e0f40a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-a05a16e0f40a.json new file mode 100644 index 00000000..880a15ae --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-1.0/ktor-1.0-a05a16e0f40a.json @@ -0,0 +1,156 @@ +{ + "description": "This standalone instrumentation enables HTTP server spans and HTTP server metrics for the Ktor server.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_standalone_library": true, + "library_link": "https://ktor.io/", + "markdown_hash": "95edd47db391", + "name": "ktor-1.0", + "scope": { + "name": "io.opentelemetry.ktor-1.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/ktor/ktor-1.0", + "tags": ["ktor"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-d2ce614df0a6.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-d2ce614df0a6.json new file mode 100644 index 00000000..e5a83548 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-d2ce614df0a6.json @@ -0,0 +1,292 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation provides HTTP server spans and HTTP server metrics for the Ktor server, and HTTP client spans and HTTP client metrics for the Ktor HTTP client.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.ktor:ktor-client-core:[2.0.0,3.0.0)", + "io.ktor:ktor-server-core:[2.0.0,3.0.0)" + ], + "library_link": "https://ktor.io/", + "markdown_hash": "3a03def1e8f2", + "name": "ktor-2.0", + "scope": { + "name": "io.opentelemetry.ktor-2.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ktor/ktor-2.0", + "tags": ["ktor"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-feb532cb30ca.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-feb532cb30ca.json new file mode 100644 index 00000000..69b99d25 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-2.0/ktor-2.0-feb532cb30ca.json @@ -0,0 +1,291 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation provides HTTP server spans and HTTP server metrics for the Ktor server, and HTTP client spans and HTTP client metrics for the Ktor HTTP client.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.ktor:ktor-client-core:[2.0.0,3.0.0)", + "io.ktor:ktor-server-core:[2.0.0,3.0.0)" + ], + "library_link": "https://ktor.io/", + "markdown_hash": "3a03def1e8f2", + "name": "ktor-2.0", + "scope": { + "name": "io.opentelemetry.ktor-2.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ktor/ktor-2.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-52db59f2ef2e.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-52db59f2ef2e.json new file mode 100644 index 00000000..1726f37c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-52db59f2ef2e.json @@ -0,0 +1,463 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation provides HTTP server spans and HTTP server metrics for the Ktor server, and HTTP client spans and HTTP client metrics for the Ktor HTTP client.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.ktor:ktor-server-core:[3.0.0,)", + "io.ktor:ktor-client-core:[3.0.0,)" + ], + "library_link": "https://ktor.io/", + "markdown_hash": "fc45e27bcdd6", + "name": "ktor-3.0", + "scope": { + "name": "io.opentelemetry.ktor-3.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ktor/ktor-3.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of active HTTP server requests.", + "instrument": "updowncounter", + "name": "http.server.active_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Size of HTTP server response bodies.", + "instrument": "histogram", + "name": "http.server.response.body.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.instrumentation.http.server.emit-experimental-telemetry=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-ebcb9dfa5c67.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-ebcb9dfa5c67.json new file mode 100644 index 00000000..a5cac8b1 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ktor-3.0/ktor-3.0-ebcb9dfa5c67.json @@ -0,0 +1,464 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation provides HTTP server spans and HTTP server metrics for the Ktor server, and HTTP client spans and HTTP client metrics for the Ktor HTTP client.", + "display_name": "Ktor", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.ktor:ktor-server-core:[3.0.0,)", + "io.ktor:ktor-client-core:[3.0.0,)" + ], + "library_link": "https://ktor.io/", + "markdown_hash": "fc45e27bcdd6", + "name": "ktor-3.0", + "scope": { + "name": "io.opentelemetry.ktor-3.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ktor/ktor-3.0", + "tags": ["ktor"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of active HTTP server requests.", + "instrument": "updowncounter", + "name": "http.server.active_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Size of HTTP server response bodies.", + "instrument": "histogram", + "name": "http.server.response.body.size", + "unit": "By" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.instrumentation.http.server.emit-experimental-telemetry=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-4dd3fffe5bfa.json b/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-4dd3fffe5bfa.json new file mode 100644 index 00000000..dff8d1d3 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-4dd3fffe5bfa.json @@ -0,0 +1,154 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing `redis.encode.start` and `redis.encode.end` span events.", + "name": "otel.instrumentation.lettuce.experimental.command-encoding-events.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables query sanitization for database queries.", + "name": "otel.instrumentation.common.db.query-sanitization.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the Lettuce Redis client.", + "display_name": "Lettuce", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.lettuce:lettuce-core:[5.1.0.RELEASE,)"], + "library_link": "https://github.com/redis/lettuce", + "markdown_hash": "b91d9f93a269", + "name": "lettuce-5.1", + "scope": { + "name": "io.opentelemetry.lettuce-5.1" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/lettuce/lettuce-5.1", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "error", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-6b79f3c92afd.json b/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-6b79f3c92afd.json new file mode 100644 index 00000000..ea62e83b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/lettuce-5.1/lettuce-5.1-6b79f3c92afd.json @@ -0,0 +1,155 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing `redis.encode.start` and `redis.encode.end` span events.", + "name": "otel.instrumentation.lettuce.experimental.command-encoding-events.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables statement sanitization for database queries.", + "name": "otel.instrumentation.common.db-statement-sanitizer.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the Lettuce Redis client.", + "display_name": "Lettuce", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.lettuce:lettuce-core:[5.1.0.RELEASE,)"], + "library_link": "https://github.com/redis/lettuce", + "markdown_hash": "b91d9f93a269", + "name": "lettuce-5.1", + "scope": { + "name": "io.opentelemetry.lettuce-5.1" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/lettuce/lettuce-5.1", + "tags": ["lettuce"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "error", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.type", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-6f76c2efeb51.json b/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-6f76c2efeb51.json new file mode 100644 index 00000000..1fa3b868 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-6f76c2efeb51.json @@ -0,0 +1,54 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental log attributes, including thread name and thread ID.", + "name": "otel.instrumentation.log4j-appender.experimental-log-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of code location attributes, including file path, class name, method name, and line number.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-code-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of attributes from Log4j MapMessage instances.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-map-message-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of the Log4j marker attribute.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-marker-attribute", + "type": "boolean" + }, + { + "default": "", + "description": "Controls which MDC attributes to capture. Use \"*\" to capture all MDC attributes or provide a comma-separated list of specific keys.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-mdc-attributes", + "type": "list" + }, + { + "default": false, + "description": "Enables the capture of the event name from the MDC attribute \"event.name\" and sets it as the log record's event name.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-event-name", + "type": "boolean" + } + ], + "description": "This instrumentation bridges Log4j log events to OpenTelemetry logs.", + "display_name": "Log4j", + "features": ["LOGGING_BRIDGE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.logging.log4j:log4j-core:[2.0,)"], + "library_link": "https://logging.apache.org/log4j/2.x/", + "markdown_hash": "a83757819971", + "name": "log4j-appender-2.17", + "scope": { + "name": "io.opentelemetry.log4j-appender-2.17" + }, + "source_path": "instrumentation/log4j/log4j-appender-2.17", + "tags": ["log4j"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-c1d5c24e7a7a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-c1d5c24e7a7a.json new file mode 100644 index 00000000..0941a724 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/log4j-appender-2.17/log4j-appender-2.17-c1d5c24e7a7a.json @@ -0,0 +1,53 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental log attributes, including thread name and thread ID.", + "name": "otel.instrumentation.log4j-appender.experimental-log-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of code location attributes, including file path, class name, method name, and line number.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-code-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of attributes from Log4j MapMessage instances.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-map-message-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the capture of the Log4j marker attribute.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-marker-attribute", + "type": "boolean" + }, + { + "default": "", + "description": "Controls which MDC attributes to capture. Use \"*\" to capture all MDC attributes or provide a comma-separated list of specific keys.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-mdc-attributes", + "type": "list" + }, + { + "default": false, + "description": "Enables the capture of the event name from the MDC attribute \"event.name\" and sets it as the log record's event name.", + "name": "otel.instrumentation.log4j-appender.experimental.capture-event-name", + "type": "boolean" + } + ], + "description": "This instrumentation bridges Log4j log events to OpenTelemetry logs.", + "display_name": "Log4j", + "features": ["LOGGING_BRIDGE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.logging.log4j:log4j-core:[2.0,)"], + "library_link": "https://logging.apache.org/log4j/2.x/", + "markdown_hash": "a83757819971", + "name": "log4j-appender-2.17", + "scope": { + "name": "io.opentelemetry.log4j-appender-2.17" + }, + "source_path": "instrumentation/log4j/log4j-appender-2.17" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6bf8d4b2a0e5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6bf8d4b2a0e5.json new file mode 100644 index 00000000..64f0c33d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6bf8d4b2a0e5.json @@ -0,0 +1,95 @@ +{ + "configurations": [ + { + "declarative_name": "java.logback_appender.experimental_log_attributes/development", + "default": false, + "description": "Enables the capture of experimental log attributes, including thread name and thread ID.", + "name": "otel.instrumentation.logback-appender.experimental-log-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_code_attributes/development", + "default": false, + "description": "Enables the capture of code location attributes, including file path, class name, method name, and line number.", + "name": "otel.instrumentation.logback-appender.experimental.capture-code-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_marker_attribute/development", + "default": false, + "description": "Enables the capture of the Logback marker attribute.", + "name": "otel.instrumentation.logback-appender.experimental.capture-marker-attribute", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_key_value_pair_attributes/development", + "default": false, + "description": "Enables the capture of attributes from Logback key-value pairs.", + "name": "otel.instrumentation.logback-appender.experimental.capture-key-value-pair-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logger_context_attributes/development", + "default": false, + "description": "Enables the capture of attributes from the Logback logger context.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logger-context-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_template/development", + "default": false, + "description": "Enables the capture of the log message template before parameter substitution.", + "name": "otel.instrumentation.logback-appender.experimental.capture-template", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_arguments/development", + "default": false, + "description": "Enables the capture of log message arguments as separate attributes.", + "name": "otel.instrumentation.logback-appender.experimental.capture-arguments", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logstash_marker_attributes/development", + "default": false, + "description": "Enables the capture of attributes from Logstash markers.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logstash_structured_arguments/development", + "default": false, + "description": "Enables the capture of attributes from Logstash structured arguments.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logstash-structured-arguments", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_mdc_attributes/development", + "default": "", + "description": "Controls which MDC attributes to capture. Use \"*\" to capture all MDC attributes or provide a comma-separated list of specific keys.", + "name": "otel.instrumentation.logback-appender.experimental.capture-mdc-attributes", + "type": "list" + }, + { + "declarative_name": "java.logback_appender.capture_event_name/development", + "default": false, + "description": "Enables the capture of the event name from the MDC attribute \"event.name\" and sets it as the log record's event name.", + "name": "otel.instrumentation.logback-appender.experimental.capture-event-name", + "type": "boolean" + } + ], + "description": "This instrumentation bridges Logback log events to OpenTelemetry logs.", + "display_name": "Logback", + "features": ["LOGGING_BRIDGE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["ch.qos.logback:logback-classic:[0.9.16,)"], + "library_link": "https://logback.qos.ch/", + "markdown_hash": "875acf087a04", + "name": "logback-appender-1.0", + "scope": { + "name": "io.opentelemetry.logback-appender-1.0" + }, + "source_path": "instrumentation/logback/logback-appender-1.0", + "tags": ["logback"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6ce29a15c67a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6ce29a15c67a.json new file mode 100644 index 00000000..d9aafbed --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-appender-1.0/logback-appender-1.0-6ce29a15c67a.json @@ -0,0 +1,94 @@ +{ + "configurations": [ + { + "declarative_name": "java.logback_appender.experimental_log_attributes/development", + "default": false, + "description": "Enables the capture of experimental log attributes, including thread name and thread ID.", + "name": "otel.instrumentation.logback-appender.experimental-log-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_code_attributes/development", + "default": false, + "description": "Enables the capture of code location attributes, including file path, class name, method name, and line number.", + "name": "otel.instrumentation.logback-appender.experimental.capture-code-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_marker_attribute/development", + "default": false, + "description": "Enables the capture of the Logback marker attribute.", + "name": "otel.instrumentation.logback-appender.experimental.capture-marker-attribute", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_key_value_pair_attributes/development", + "default": false, + "description": "Enables the capture of attributes from Logback key-value pairs.", + "name": "otel.instrumentation.logback-appender.experimental.capture-key-value-pair-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logger_context_attributes/development", + "default": false, + "description": "Enables the capture of attributes from the Logback logger context.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logger-context-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_template/development", + "default": false, + "description": "Enables the capture of the log message template before parameter substitution.", + "name": "otel.instrumentation.logback-appender.experimental.capture-template", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_arguments/development", + "default": false, + "description": "Enables the capture of log message arguments as separate attributes.", + "name": "otel.instrumentation.logback-appender.experimental.capture-arguments", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logstash_marker_attributes/development", + "default": false, + "description": "Enables the capture of attributes from Logstash markers.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_logstash_structured_arguments/development", + "default": false, + "description": "Enables the capture of attributes from Logstash structured arguments.", + "name": "otel.instrumentation.logback-appender.experimental.capture-logstash-structured-arguments", + "type": "boolean" + }, + { + "declarative_name": "java.logback_appender.capture_mdc_attributes/development", + "default": "", + "description": "Controls which MDC attributes to capture. Use \"*\" to capture all MDC attributes or provide a comma-separated list of specific keys.", + "name": "otel.instrumentation.logback-appender.experimental.capture-mdc-attributes", + "type": "list" + }, + { + "declarative_name": "java.logback_appender.capture_event_name/development", + "default": false, + "description": "Enables the capture of the event name from the MDC attribute \"event.name\" and sets it as the log record's event name.", + "name": "otel.instrumentation.logback-appender.experimental.capture-event-name", + "type": "boolean" + } + ], + "description": "This instrumentation bridges Logback log events to OpenTelemetry logs.", + "display_name": "Logback", + "features": ["LOGGING_BRIDGE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["ch.qos.logback:logback-classic:[0.9.16,)"], + "library_link": "https://logback.qos.ch/", + "markdown_hash": "875acf087a04", + "name": "logback-appender-1.0", + "scope": { + "name": "io.opentelemetry.logback-appender-1.0" + }, + "source_path": "instrumentation/logback/logback-appender-1.0" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a07297bc6420.json b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a07297bc6420.json new file mode 100644 index 00000000..b3e3d580 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a07297bc6420.json @@ -0,0 +1,46 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables adding baggage entries to the Logback MDC, prefixed with \"baggage.\".", + "name": "otel.instrumentation.logback-mdc.add-baggage", + "type": "boolean" + }, + { + "default": "trace_id", + "description": "Specifies the key name used to store the trace ID in the logging context.", + "name": "otel.instrumentation.common.logging.trace-id", + "type": "string" + }, + { + "default": "span_id", + "description": "Specifies the key name used to store the span ID in the logging context.", + "name": "otel.instrumentation.common.logging.span-id", + "type": "string" + }, + { + "default": "trace_flags", + "description": "Specifies the key name used to store the trace flags in the logging context.", + "name": "otel.instrumentation.common.logging.trace-flags", + "type": "string" + }, + { + "default": "", + "description": "Specifies which resource attributes to add to the logging context as a comma-separated list of attribute keys.", + "name": "otel.instrumentation.common.mdc.resource-attributes", + "type": "list" + } + ], + "description": "This instrumentation adds trace context (trace ID, span ID, and trace flags) to the Logback MDC, it does not emit any telemetry on its own.", + "display_name": "Logback", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["ch.qos.logback:logback-classic:[1.0.0,1.2.3]"], + "library_link": "https://logback.qos.ch/", + "markdown_hash": "05abcc1b7639", + "name": "logback-mdc-1.0", + "scope": { + "name": "io.opentelemetry.logback-mdc-1.0" + }, + "source_path": "instrumentation/logback/logback-mdc-1.0" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a36abd0d014b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a36abd0d014b.json new file mode 100644 index 00000000..1b05a288 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/logback-mdc-1.0/logback-mdc-1.0-a36abd0d014b.json @@ -0,0 +1,47 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables adding baggage entries to the Logback MDC, prefixed with \"baggage.\".", + "name": "otel.instrumentation.logback-mdc.add-baggage", + "type": "boolean" + }, + { + "default": "trace_id", + "description": "Specifies the key name used to store the trace ID in the logging context.", + "name": "otel.instrumentation.common.logging.trace-id", + "type": "string" + }, + { + "default": "span_id", + "description": "Specifies the key name used to store the span ID in the logging context.", + "name": "otel.instrumentation.common.logging.span-id", + "type": "string" + }, + { + "default": "trace_flags", + "description": "Specifies the key name used to store the trace flags in the logging context.", + "name": "otel.instrumentation.common.logging.trace-flags", + "type": "string" + }, + { + "default": "", + "description": "Specifies which resource attributes to add to the logging context as a comma-separated list of attribute keys.", + "name": "otel.instrumentation.common.mdc.resource-attributes", + "type": "list" + } + ], + "description": "This instrumentation adds trace context (trace ID, span ID, and trace flags) to the Logback MDC, it does not emit any telemetry on its own.", + "display_name": "Logback", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["ch.qos.logback:logback-classic:[1.0.0,1.2.3]"], + "library_link": "https://logback.qos.ch/", + "markdown_hash": "05abcc1b7639", + "name": "logback-mdc-1.0", + "scope": { + "name": "io.opentelemetry.logback-mdc-1.0" + }, + "source_path": "instrumentation/logback/logback-mdc-1.0", + "tags": ["logback"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-0b13cd2e1684.json b/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-0b13cd2e1684.json new file mode 100644 index 00000000..ff8b0b1d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-0b13cd2e1684.json @@ -0,0 +1,16 @@ +{ + "description": "This instrumentation enables a Micrometer MeterRegistry that bridges Micrometer metrics to the OpenTelemetry Metrics SDK. It is disabled by default because it may produce metrics that overlap with metrics already captured by other instrumentations.", + "disabled_by_default": true, + "display_name": "Micrometer", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.micrometer:micrometer-core:[1.5.0,)"], + "library_link": "https://micrometer.io/", + "markdown_hash": "5e13dd45f19d", + "name": "micrometer-1.5", + "scope": { + "name": "io.opentelemetry.micrometer-1.5" + }, + "source_path": "instrumentation/micrometer/micrometer-1.5", + "tags": ["micrometer"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-346e68bd7b36.json b/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-346e68bd7b36.json new file mode 100644 index 00000000..e13b834e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/micrometer-1.5/micrometer-1.5-346e68bd7b36.json @@ -0,0 +1,35 @@ +{ + "configurations": [ + { + "default": false, + "description": "Simulates the behavior of Micrometer's PrometheusMeterRegistry. The instruments will be renamed to match Micrometer instrument naming, and the base time unit will be set to seconds.", + "name": "otel.instrumentation.micrometer.prometheus-mode.enabled", + "type": "boolean" + }, + { + "default": "s", + "description": "Sets the base time unit for the OpenTelemetry MeterRegistry. Supported values: ns, us, ms, s, min, h, d.", + "name": "otel.instrumentation.micrometer.base-time-unit", + "type": "string" + }, + { + "default": false, + "description": "Enables gauge-based Micrometer histograms for DistributionSummary and Timer instruments.", + "name": "otel.instrumentation.micrometer.histogram-gauges.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables a Micrometer MeterRegistry that bridges Micrometer metrics to the OpenTelemetry Metrics SDK. It is disabled by default because it may produce metrics that overlap with metrics already captured by other instrumentations.", + "disabled_by_default": true, + "display_name": "Micrometer", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.micrometer:micrometer-core:[1.5.0,)"], + "library_link": "https://micrometer.io/", + "markdown_hash": "5e13dd45f19d", + "name": "micrometer-1.5", + "scope": { + "name": "io.opentelemetry.micrometer-1.5" + }, + "source_path": "instrumentation/micrometer/micrometer-1.5" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-604f1e7db725.json b/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-604f1e7db725.json new file mode 100644 index 00000000..341d3d24 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-604f1e7db725.json @@ -0,0 +1,146 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables query sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db.query-sanitization.enabled.", + "name": "otel.instrumentation.mongo.query-sanitization.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables query sanitization for database queries.", + "name": "otel.instrumentation.common.db.query-sanitization.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the MongoDB Java driver.", + "display_name": "MongoDB Driver", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.mongodb:mongo-java-driver:[3.1,)"], + "library_link": "https://www.mongodb.com/docs/drivers/java-drivers/", + "markdown_hash": "6eb398ef5e54", + "name": "mongo-3.1", + "scope": { + "name": "io.opentelemetry.mongo-3.1" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/mongo/mongo-3.1", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.mongodb.collection", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.collection.name", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.collection.name", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-a9e00f7c9781.json b/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-a9e00f7c9781.json new file mode 100644 index 00000000..33368efb --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/mongo-3.1/mongo-3.1-a9e00f7c9781.json @@ -0,0 +1,147 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables statement sanitization for MongoDB queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled.", + "name": "otel.instrumentation.mongo.statement-sanitizer.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables statement sanitization for database queries.", + "name": "otel.instrumentation.common.db-statement-sanitizer.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for the MongoDB Java driver.", + "display_name": "MongoDB Driver", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.mongodb:mongo-java-driver:[3.1,)"], + "library_link": "https://www.mongodb.com/docs/drivers/java-drivers/", + "markdown_hash": "6eb398ef5e54", + "name": "mongo-3.1", + "scope": { + "name": "io.opentelemetry.mongo-3.1" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/mongo/mongo-3.1", + "tags": ["mongo"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.mongodb.collection", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.collection.name", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.collection.name", + "type": "STRING" + }, + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.operation.name", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-4f38e99060e8.json b/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-4f38e99060e8.json new file mode 100644 index 00000000..c117d37d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-4f38e99060e8.json @@ -0,0 +1,96 @@ +{ + "configurations": [ + { + "default": "", + "description": "Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation enables messaging spans for NATS message producers and consumers.", + "display_name": "NATS Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.nats:jnats:[2.17.2,)"], + "library_link": "https://nats.io/", + "markdown_hash": "b5f153b0ee5c", + "name": "nats-2.17", + "scope": { + "name": "io.opentelemetry.nats-2.17" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/nats/nats-2.17", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.temporary", + "type": "BOOLEAN" + }, + { + "name": "messaging.header.captured_header", + "type": "STRING_ARRAY" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.temporary", + "type": "BOOLEAN" + }, + { + "name": "messaging.header.captured_header", + "type": "STRING_ARRAY" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-c348fc28f06b.json b/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-c348fc28f06b.json new file mode 100644 index 00000000..2e79c54f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/nats-2.17/nats-2.17-c348fc28f06b.json @@ -0,0 +1,97 @@ +{ + "configurations": [ + { + "default": "", + "description": "Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation enables messaging spans for NATS message producers and consumers.", + "display_name": "NATS Client", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.nats:jnats:[2.17.2,)"], + "library_link": "https://nats.io/", + "markdown_hash": "b5f153b0ee5c", + "name": "nats-2.17", + "scope": { + "name": "io.opentelemetry.nats-2.17" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/nats/nats-2.17", + "tags": ["nats"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.temporary", + "type": "BOOLEAN" + }, + { + "name": "messaging.header.captured_header", + "type": "STRING_ARRAY" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.temporary", + "type": "BOOLEAN" + }, + { + "name": "messaging.header.captured_header", + "type": "STRING_ARRAY" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-3b2065f481ff.json b/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-3b2065f481ff.json new file mode 100644 index 00000000..d37210cf --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-3b2065f481ff.json @@ -0,0 +1,265 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": false, + "description": "Enable the creation of Connect and DNS spans.", + "name": "otel.instrumentation.netty.connection-telemetry.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enable SSL telemetry.", + "name": "otel.instrumentation.netty.ssl-telemetry.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans, HTTP client metrics, HTTP server spans, and HTTP server metrics for the Netty framework. Does not currently support capturing HTTP/2 traffic.", + "display_name": "Netty HTTP codec", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.netty:netty-codec-http:[4.1.0.Final,5.0.0)", + "io.netty:netty-all:[4.1.0.Final,5.0.0)" + ], + "library_link": "https://netty.io/", + "markdown_hash": "1aee978bf28a", + "name": "netty-4.1", + "scope": { + "name": "io.opentelemetry.netty-4.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/netty/netty-4.1", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-7be356c86617.json b/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-7be356c86617.json new file mode 100644 index 00000000..4e318150 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/netty-4.1/netty-4.1-7be356c86617.json @@ -0,0 +1,266 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": false, + "description": "Enable the creation of Connect and DNS spans.", + "name": "otel.instrumentation.netty.connection-telemetry.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enable SSL telemetry.", + "name": "otel.instrumentation.netty.ssl-telemetry.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans, HTTP client metrics, HTTP server spans, and HTTP server metrics for the Netty framework. Does not currently support capturing HTTP/2 traffic.", + "display_name": "Netty HTTP codec", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "io.netty:netty-codec-http:[4.1.0.Final,5.0.0)", + "io.netty:netty-all:[4.1.0.Final,5.0.0)" + ], + "library_link": "https://netty.io/", + "markdown_hash": "1aee978bf28a", + "name": "netty-4.1", + "scope": { + "name": "io.opentelemetry.netty-4.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/netty/netty-4.1", + "tags": ["netty"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-151876643d0d.json b/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-151876643d0d.json new file mode 100644 index 00000000..d3baf77b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-151876643d0d.json @@ -0,0 +1,146 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for OkHttp.", + "display_name": "OkHttp", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.squareup.okhttp3:okhttp:[3.0,)"], + "library_link": "https://square.github.io/okhttp/", + "markdown_hash": "96a060265ec1", + "name": "okhttp-3.0", + "scope": { + "name": "io.opentelemetry.okhttp-3.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/okhttp/okhttp-3.0", + "tags": ["okhttp"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-6595263ceff1.json b/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-6595263ceff1.json new file mode 100644 index 00000000..e1dd9131 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/okhttp-3.0/okhttp-3.0-6595263ceff1.json @@ -0,0 +1,234 @@ +{ + "configurations": [ + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP client spans and HTTP client metrics for OkHttp.", + "display_name": "OkHttp", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.squareup.okhttp3:okhttp:[3.0,)"], + "library_link": "https://square.github.io/okhttp/", + "markdown_hash": "96a060265ec1", + "name": "okhttp-3.0", + "scope": { + "name": "io.opentelemetry.okhttp-3.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/okhttp/okhttp-3.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.request.resend_count", + "type": "LONG" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-308dc30f3232.json b/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-308dc30f3232.json new file mode 100644 index 00000000..3331a0d5 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-308dc30f3232.json @@ -0,0 +1,180 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables including the full content of user and assistant messages in emitted log events. Note that full content can have data privacy and size concerns, and care should be taken when enabling this.", + "name": "otel.instrumentation.genai.capture-message-content", + "type": "boolean" + } + ], + "description": "This instrumentation enables Gen AI client spans and metrics for the OpenAI Java SDK.", + "display_name": "OpenAI Java SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.openai:openai-java:[1.1.0,3)"], + "library_link": "https://github.com/openai/openai-java", + "markdown_hash": "866aa0171449", + "name": "openai-java-1.1", + "scope": { + "name": "io.opentelemetry.openai-java-1.1" + }, + "semantic_conventions": ["GENAI_CLIENT_SPANS", "GENAI_CLIENT_METRICS"], + "source_path": "instrumentation/openai/openai-java-1.1", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "GenAI operation duration.", + "instrument": "histogram", + "name": "gen_ai.client.operation.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.token.type", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures number of input and output tokens used.", + "instrument": "histogram", + "name": "gen_ai.client.token.usage", + "unit": "{token}" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.encoding_formats", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.frequency_penalty", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.max_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.request.presence_penalty", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.seed", + "type": "LONG" + }, + { + "name": "gen_ai.request.stop_sequences", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.temperature", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.top_p", + "type": "DOUBLE" + }, + { + "name": "gen_ai.response.finish_reasons", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.response.id", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.usage.output_tokens", + "type": "LONG" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-826b0b842f76.json b/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-826b0b842f76.json new file mode 100644 index 00000000..3dc21744 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/openai-java-1.1/openai-java-1.1-826b0b842f76.json @@ -0,0 +1,181 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables including the full content of user and assistant messages in emitted log events. Note that full content can have data privacy and size concerns, and care should be taken when enabling this.", + "name": "otel.instrumentation.genai.capture-message-content", + "type": "boolean" + } + ], + "description": "This instrumentation enables Gen AI client spans and metrics for the OpenAI Java SDK.", + "display_name": "OpenAI Java SDK", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.openai:openai-java:[1.1.0,3)"], + "library_link": "https://github.com/openai/openai-java", + "markdown_hash": "866aa0171449", + "name": "openai-java-1.1", + "scope": { + "name": "io.opentelemetry.openai-java-1.1" + }, + "semantic_conventions": ["GENAI_CLIENT_SPANS", "GENAI_CLIENT_METRICS"], + "source_path": "instrumentation/openai/openai-java-1.1", + "tags": ["openai"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "GenAI operation duration.", + "instrument": "histogram", + "name": "gen_ai.client.operation.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.token.type", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Measures number of input and output tokens used.", + "instrument": "histogram", + "name": "gen_ai.client.token.usage", + "unit": "{token}" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.encoding_formats", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "gen_ai.operation.name", + "type": "STRING" + }, + { + "name": "gen_ai.provider.name", + "type": "STRING" + }, + { + "name": "gen_ai.request.frequency_penalty", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.max_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.request.model", + "type": "STRING" + }, + { + "name": "gen_ai.request.presence_penalty", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.seed", + "type": "LONG" + }, + { + "name": "gen_ai.request.stop_sequences", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.request.temperature", + "type": "DOUBLE" + }, + { + "name": "gen_ai.request.top_p", + "type": "DOUBLE" + }, + { + "name": "gen_ai.response.finish_reasons", + "type": "STRING_ARRAY" + }, + { + "name": "gen_ai.response.id", + "type": "STRING" + }, + { + "name": "gen_ai.response.model", + "type": "STRING" + }, + { + "name": "gen_ai.usage.input_tokens", + "type": "LONG" + }, + { + "name": "gen_ai.usage.output_tokens", + "type": "LONG" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-2f00d6eec644.json b/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-2f00d6eec644.json new file mode 100644 index 00000000..a7715d48 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-2f00d6eec644.json @@ -0,0 +1,113 @@ +{ + "description": "The Oracle Universal Connection Pool (UCP) instrumentation enables database connection pool metrics for Oracle UCP data sources.", + "display_name": "Oracle UCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.oracle.database.jdbc:ucp:[,)"], + "library_link": "https://docs.oracle.com/database/121/JJUCP/", + "markdown_hash": "b697caa991ff", + "name": "oracle-ucp-11.2", + "scope": { + "name": "io.opentelemetry.oracle-ucp-11.2" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/oracle-ucp-11.2", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-eb2b1c3cc50f.json b/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-eb2b1c3cc50f.json new file mode 100644 index 00000000..0c659bfe --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/oracle-ucp-11.2/oracle-ucp-11.2-eb2b1c3cc50f.json @@ -0,0 +1,114 @@ +{ + "description": "The Oracle Universal Connection Pool (UCP) instrumentation enables database connection pool metrics for Oracle UCP data sources.", + "display_name": "Oracle UCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.oracle.database.jdbc:ucp:[,)"], + "library_link": "https://docs.oracle.com/database/121/JJUCP/", + "markdown_hash": "b697caa991ff", + "name": "oracle-ucp-11.2", + "scope": { + "name": "io.opentelemetry.oracle-ucp-11.2" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/oracle-ucp-11.2", + "tags": ["oracle"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of pending requests for an open connection, cumulative for the entire pool.", + "instrument": "updowncounter", + "name": "db.client.connections.pending_requests", + "unit": "{requests}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of current pending requests for an open connection.", + "instrument": "updowncounter", + "name": "db.client.connection.pending_requests", + "unit": "{request}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-0744722d5c7a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-0744722d5c7a.json new file mode 100644 index 00000000..5e987b53 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-0744722d5c7a.json @@ -0,0 +1,284 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enable the experimental `runtime.java.memory` and `runtime.java.cpu_time` metrics.", + "name": "otel.instrumentation.oshi.experimental-metrics.enabled", + "type": "boolean" + } + ], + "description": "When the OSHI library is detected on the classpath, this instrumentation enables system metrics for memory, disk, and network operations.", + "display_name": "OSHI", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.github.oshi:oshi-core:[5.3.1,)"], + "library_link": "https://github.com/oshi/oshi/", + "markdown_hash": "f367344eec3e", + "name": "oshi", + "scope": { + "name": "io.opentelemetry.oshi" + }, + "semantic_conventions": ["SYSTEM_METRICS"], + "source_path": "instrumentation/oshi", + "tags": ["oshi"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk IO", + "instrument": "counter", + "name": "system.disk.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk operations", + "instrument": "counter", + "name": "system.disk.operations", + "unit": "{operations}" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System memory usage", + "instrument": "updowncounter", + "name": "system.memory.usage", + "unit": "By" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "DOUBLE_GAUGE", + "description": "System memory utilization", + "instrument": "gauge", + "name": "system.memory.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network errors", + "instrument": "counter", + "name": "system.network.errors", + "unit": "{errors}" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network IO", + "instrument": "counter", + "name": "system.network.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network packets", + "instrument": "counter", + "name": "system.network.packets", + "unit": "{packets}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "type", + "type": "STRING" + } + ], + "data_type": "LONG_GAUGE", + "description": "Runtime Java CPU time", + "instrument": "gauge", + "name": "runtime.java.cpu_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Runtime Java memory", + "instrument": "updowncounter", + "name": "runtime.java.memory", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk IO", + "instrument": "counter", + "name": "system.disk.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk operations", + "instrument": "counter", + "name": "system.disk.operations", + "unit": "{operations}" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System memory usage", + "instrument": "updowncounter", + "name": "system.memory.usage", + "unit": "By" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "DOUBLE_GAUGE", + "description": "System memory utilization", + "instrument": "gauge", + "name": "system.memory.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network errors", + "instrument": "counter", + "name": "system.network.errors", + "unit": "{errors}" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network IO", + "instrument": "counter", + "name": "system.network.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network packets", + "instrument": "counter", + "name": "system.network.packets", + "unit": "{packets}" + } + ], + "when": "otel.instrumentation.oshi.experimental-metrics.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-d13bcf035a23.json b/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-d13bcf035a23.json new file mode 100644 index 00000000..85bc2f4d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/oshi/oshi-d13bcf035a23.json @@ -0,0 +1,283 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enable the experimental `runtime.java.memory` and `runtime.java.cpu_time` metrics.", + "name": "otel.instrumentation.oshi.experimental-metrics.enabled", + "type": "boolean" + } + ], + "description": "When the OSHI library is detected on the classpath, this instrumentation enables system metrics for memory, disk, and network operations.", + "display_name": "OSHI", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["com.github.oshi:oshi-core:[5.0.0,)"], + "library_link": "https://github.com/oshi/oshi/", + "markdown_hash": "f367344eec3e", + "name": "oshi", + "scope": { + "name": "io.opentelemetry.oshi" + }, + "semantic_conventions": ["SYSTEM_METRICS"], + "source_path": "instrumentation/oshi", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk IO", + "instrument": "counter", + "name": "system.disk.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk operations", + "instrument": "counter", + "name": "system.disk.operations", + "unit": "{operations}" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System memory usage", + "instrument": "updowncounter", + "name": "system.memory.usage", + "unit": "By" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "DOUBLE_GAUGE", + "description": "System memory utilization", + "instrument": "gauge", + "name": "system.memory.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network errors", + "instrument": "counter", + "name": "system.network.errors", + "unit": "{errors}" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network IO", + "instrument": "counter", + "name": "system.network.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network packets", + "instrument": "counter", + "name": "system.network.packets", + "unit": "{packets}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "type", + "type": "STRING" + } + ], + "data_type": "LONG_GAUGE", + "description": "Runtime Java CPU time", + "instrument": "gauge", + "name": "runtime.java.cpu_time", + "unit": "ms" + }, + { + "attributes": [ + { + "name": "type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Runtime Java memory", + "instrument": "updowncounter", + "name": "runtime.java.memory", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk IO", + "instrument": "counter", + "name": "system.disk.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System disk operations", + "instrument": "counter", + "name": "system.disk.operations", + "unit": "{operations}" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System memory usage", + "instrument": "updowncounter", + "name": "system.memory.usage", + "unit": "By" + }, + { + "attributes": [ + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "DOUBLE_GAUGE", + "description": "System memory utilization", + "instrument": "gauge", + "name": "system.memory.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network errors", + "instrument": "counter", + "name": "system.network.errors", + "unit": "{errors}" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network IO", + "instrument": "counter", + "name": "system.network.io", + "unit": "By" + }, + { + "attributes": [ + { + "name": "device", + "type": "STRING" + }, + { + "name": "direction", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "System network packets", + "instrument": "counter", + "name": "system.network.packets", + "unit": "{packets}" + } + ], + "when": "otel.instrumentation.oshi.experimental-metrics.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-964821168897.json b/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-964821168897.json new file mode 100644 index 00000000..4a62f5cc --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-964821168897.json @@ -0,0 +1,64 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental `job.system` span attribute.", + "name": "otel.instrumentation.quartz.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for Quartz job execution.", + "display_name": "Quartz", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.quartz-scheduler:quartz:[2.0.0,)"], + "library_link": "https://www.quartz-scheduler.org/", + "markdown_hash": "4b4e201cb808", + "name": "quartz-2.0", + "scope": { + "name": "io.opentelemetry.quartz-2.0" + }, + "source_path": "instrumentation/quartz-2.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "job.system", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.quartz.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-c9929b9bd2b5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-c9929b9bd2b5.json new file mode 100644 index 00000000..6ea6d322 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/quartz-2.0/quartz-2.0-c9929b9bd2b5.json @@ -0,0 +1,65 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental `job.system` span attribute.", + "name": "otel.instrumentation.quartz.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables spans for Quartz job execution.", + "display_name": "Quartz", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.quartz-scheduler:quartz:[2.0.0,)"], + "library_link": "https://www.quartz-scheduler.org/", + "markdown_hash": "4b4e201cb808", + "name": "quartz-2.0", + "scope": { + "name": "io.opentelemetry.quartz-2.0" + }, + "source_path": "instrumentation/quartz-2.0", + "tags": ["quartz"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "job.system", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.quartz.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-1ff03ccdc0f6.json b/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-1ff03ccdc0f6.json new file mode 100644 index 00000000..6758e4d9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-1ff03ccdc0f6.json @@ -0,0 +1,162 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables query sanitization for database queries. Takes precedence over otel.instrumentation.common.db.query-sanitization.enabled.", + "name": "otel.instrumentation.r2dbc.query-sanitization.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables query sanitization for database queries.", + "name": "otel.instrumentation.common.db.query-sanitization.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables augmenting queries with a comment containing the tracing information. See [sqlcommenter](https://google.github.io/sqlcommenter/) for more info. WARNING: augmenting queries with tracing context will make query texts unique, which may have adverse impact on database performance.", + "name": "otel.instrumentation.r2dbc.experimental.sqlcommenter.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for R2DBC (Reactive Relational Database Connectivity).", + "display_name": "R2DBC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.r2dbc:r2dbc-spi:[0.9.0.RELEASE,)"], + "library_link": "https://r2dbc.io/", + "markdown_hash": "011569447ac1", + "name": "r2dbc-1.0", + "scope": { + "name": "io.opentelemetry.r2dbc-1.0" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/r2dbc-1.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.sql.table", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database,service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-30bd46456afa.json b/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-30bd46456afa.json new file mode 100644 index 00000000..4ddc236d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/r2dbc-1.0/r2dbc-1.0-30bd46456afa.json @@ -0,0 +1,163 @@ +{ + "configurations": [ + { + "default": true, + "description": "Enables statement sanitization for database queries. Takes precedence over otel.instrumentation.common.db-statement-sanitizer.enabled.", + "name": "otel.instrumentation.r2dbc.statement-sanitizer.enabled", + "type": "boolean" + }, + { + "default": true, + "description": "Enables statement sanitization for database queries.", + "name": "otel.instrumentation.common.db-statement-sanitizer.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables augmenting queries with a comment containing the tracing information. See [sqlcommenter](https://google.github.io/sqlcommenter/) for more info. WARNING: augmenting queries with tracing context will make query texts unique, which may have adverse impact on database performance.", + "name": "otel.instrumentation.r2dbc.experimental.sqlcommenter.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + } + ], + "description": "This instrumentation enables database client spans and database client metrics for R2DBC (Reactive Relational Database Connectivity).", + "display_name": "R2DBC", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.r2dbc:r2dbc-spi:[1.0.0.RELEASE,)"], + "library_link": "https://r2dbc.io/", + "markdown_hash": "011569447ac1", + "name": "r2dbc-1.0", + "scope": { + "name": "io.opentelemetry.r2dbc-1.0" + }, + "semantic_conventions": ["DATABASE_CLIENT_SPANS", "DATABASE_CLIENT_METRICS"], + "source_path": "instrumentation/r2dbc-1.0", + "tags": ["r2dbc"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "db.connection_string", + "type": "STRING" + }, + { + "name": "db.name", + "type": "STRING" + }, + { + "name": "db.operation", + "type": "STRING" + }, + { + "name": "db.sql.table", + "type": "STRING" + }, + { + "name": "db.statement", + "type": "STRING" + }, + { + "name": "db.system", + "type": "STRING" + }, + { + "name": "db.user", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of database client operations.", + "instrument": "histogram", + "name": "db.client.operation.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "db.namespace", + "type": "STRING" + }, + { + "name": "db.query.summary", + "type": "STRING" + }, + { + "name": "db.query.text", + "type": "STRING" + }, + { + "name": "db.system.name", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "service.peer.name", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=database,service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-3cb8799482a5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-3cb8799482a5.json new file mode 100644 index 00000000..1253daf9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-3cb8799482a5.json @@ -0,0 +1,245 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the creation of experimental controller spans.", + "name": "otel.instrumentation.common.experimental.controller-telemetry.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Ratpack servers, HTTP client spans and HTTP client metrics for Ratpack HTTP clients, and enables controller spans for Ratpack handlers (controller spans are disabled by default).", + "display_name": "Ratpack", + "features": ["HTTP_ROUTE", "CONTROLLER_SPANS"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.ratpack:ratpack-core:[1.7.0,)"], + "library_link": "https://ratpack.io/", + "markdown_hash": "844428a9adca", + "name": "ratpack-1.7", + "scope": { + "name": "io.opentelemetry.ratpack-1.7", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ratpack/ratpack-1.7", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-fe99187455f3.json b/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-fe99187455f3.json new file mode 100644 index 00000000..cd743ade --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/ratpack-1.7/ratpack-1.7-fe99187455f3.json @@ -0,0 +1,246 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the creation of experimental controller spans.", + "name": "otel.instrumentation.common.experimental.controller-telemetry.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP client telemetry.", + "name": "otel.instrumentation.http.client.capture-response-headers", + "type": "list" + }, + { + "default": "", + "description": "Used to specify a mapping from host names or IP addresses to peer services.", + "name": "otel.instrumentation.common.peer-service-mapping", + "type": "map" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP client telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.client.request.size` and `http.client.response.size` metrics.", + "name": "otel.instrumentation.http.client.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": true, + "description": "Redact sensitive URL parameters. See https://opentelemetry.io/docs/specs/semconv/http/http-spans.", + "name": "otel.instrumentation.http.client.experimental.redact-query-parameters", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Ratpack servers, HTTP client spans and HTTP client metrics for Ratpack HTTP clients, and enables controller spans for Ratpack handlers (controller spans are disabled by default).", + "display_name": "Ratpack", + "features": ["HTTP_ROUTE", "CONTROLLER_SPANS"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.ratpack:ratpack-core:[1.7.0,)"], + "library_link": "https://ratpack.io/", + "markdown_hash": "844428a9adca", + "name": "ratpack-1.7", + "scope": { + "name": "io.opentelemetry.ratpack-1.7", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS", + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS" + ], + "source_path": "instrumentation/ratpack/ratpack-1.7", + "tags": ["ratpack"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "peer.service", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-2478957b9d6a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-2478957b9d6a.json new file mode 100644 index 00000000..f4a45919 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-2478957b9d6a.json @@ -0,0 +1,24 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of the experimental `reactor.canceled` attribute on spans when reactive streams are cancelled.", + "name": "otel.instrumentation.reactor.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for Project Reactor reactive streams, it does not emit any telemetry on its own.", + "display_name": "Reactor", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.projectreactor:reactor-core:[3.1.0.RELEASE,)"], + "library_link": "https://projectreactor.io/", + "markdown_hash": "1517dbdc2da4", + "name": "reactor-3.1", + "scope": { + "name": "io.opentelemetry.reactor-3.1" + }, + "source_path": "instrumentation/reactor/reactor-3.1", + "tags": ["reactor"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-d2f7a82233c5.json b/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-d2f7a82233c5.json new file mode 100644 index 00000000..01e95c0e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/reactor-3.1/reactor-3.1-d2f7a82233c5.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of the experimental `reactor.canceled` attribute on spans when reactive streams are cancelled.", + "name": "otel.instrumentation.reactor.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for Project Reactor reactive streams, it does not emit any telemetry on its own.", + "display_name": "Reactor", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.projectreactor:reactor-core:[3.1.0.RELEASE,)"], + "library_link": "https://projectreactor.io/", + "markdown_hash": "1517dbdc2da4", + "name": "reactor-3.1", + "scope": { + "name": "io.opentelemetry.reactor-3.1" + }, + "source_path": "instrumentation/reactor/reactor-3.1" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-3c5c10a7d693.json b/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-3c5c10a7d693.json new file mode 100644 index 00000000..87314b21 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-3c5c10a7d693.json @@ -0,0 +1,12 @@ +{ + "description": "This instrumentation automatically detects and populates OpenTelemetry resource attributes for the host, OS, process, and container environment. It does not emit any telemetry on its own.", + "display_name": "Resource Detectors", + "features": ["RESOURCE_DETECTOR"], + "has_standalone_library": true, + "markdown_hash": "f63864e1e404", + "name": "resources", + "scope": { + "name": "io.opentelemetry.resources" + }, + "source_path": "instrumentation/resources" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-86c98231b382.json b/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-86c98231b382.json new file mode 100644 index 00000000..72b40e55 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/resources/resources-86c98231b382.json @@ -0,0 +1,12 @@ +{ + "description": "This instrumentation automatically detects and populates OpenTelemetry resource attributes for the host, OS, process, and container environment. It does not emit any telemetry on its own.", + "display_name": "Resource Detectors", + "has_standalone_library": true, + "markdown_hash": "f63864e1e404", + "name": "resources", + "scope": { + "name": "io.opentelemetry.resources" + }, + "source_path": "instrumentation/resources", + "tags": ["resources"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-02593c172a27.json b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-02593c172a27.json new file mode 100644 index 00000000..4b19118c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-02593c172a27.json @@ -0,0 +1,147 @@ +{ + "configurations": [ + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Restlet servers.", + "display_name": "Restlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.restlet:org.restlet:[1.1.0, 1.2-M1)"], + "library_link": "https://restlet.github.io/", + "markdown_hash": "9507744a789d", + "name": "restlet-1.1", + "scope": { + "name": "io.opentelemetry.restlet-1.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/restlet/restlet-1.1", + "tags": ["restlet"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-1de5ea7867c2.json b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-1de5ea7867c2.json new file mode 100644 index 00000000..955217b0 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-1.1/restlet-1.1-1de5ea7867c2.json @@ -0,0 +1,146 @@ +{ + "configurations": [ + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Restlet servers.", + "display_name": "Restlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.restlet:org.restlet:[1.1.0, 1.2-M1)"], + "library_link": "https://restlet.github.io/", + "markdown_hash": "9507744a789d", + "name": "restlet-1.1", + "scope": { + "name": "io.opentelemetry.restlet-1.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/restlet/restlet-1.1", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-a09737c69318.json b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-a09737c69318.json new file mode 100644 index 00000000..c952ca23 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-a09737c69318.json @@ -0,0 +1,147 @@ +{ + "configurations": [ + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Restlet servers.", + "display_name": "Restlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.restlet.jse:org.restlet:[2.0.0,)"], + "library_link": "https://restlet.github.io/", + "markdown_hash": "3589102b837d", + "name": "restlet-2.0", + "scope": { + "name": "io.opentelemetry.restlet-2.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/restlet/restlet-2.0", + "tags": ["restlet"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-d49366ba4233.json b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-d49366ba4233.json new file mode 100644 index 00000000..8f8df651 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/restlet-2.0/restlet-2.0-d49366ba4233.json @@ -0,0 +1,146 @@ +{ + "configurations": [ + { + "default": "", + "description": "List of HTTP request headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-request-headers", + "type": "list" + }, + { + "default": "", + "description": "List of HTTP response headers to capture in HTTP server telemetry.", + "name": "otel.instrumentation.http.server.capture-response-headers", + "type": "list" + }, + { + "default": false, + "description": "Enable the capture of experimental HTTP server telemetry. Adds the `http.request.body.size` and `http.response.body.size` attributes to spans, and records `http.server.request.size` and `http.server.response.size` metrics.", + "name": "otel.instrumentation.http.server.emit-experimental-telemetry", + "type": "boolean" + }, + { + "default": "CONNECT,DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT,TRACE", + "description": "Configures the instrumentation to recognize an alternative set of HTTP request methods. All other methods will be treated as `_OTHER`.", + "name": "otel.instrumentation.http.known-methods", + "type": "list" + } + ], + "description": "This instrumentation enables HTTP server spans and HTTP server metrics for Restlet servers.", + "display_name": "Restlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.restlet.jse:org.restlet:[2.0.0,)"], + "library_link": "https://restlet.github.io/", + "markdown_hash": "3589102b837d", + "name": "restlet-2.0", + "scope": { + "name": "io.opentelemetry.restlet-2.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/restlet/restlet-2.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-2fb45185eafc.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-2fb45185eafc.json new file mode 100644 index 00000000..c4d64b96 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-2fb45185eafc.json @@ -0,0 +1,162 @@ +{ + "configurations": [ + { + "default": "", + "description": "Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "default": false, + "description": "Enables capturing experimental span attributes `messaging.rocketmq.message.tag`, `messaging.rocketmq.broker_address`, `messaging.rocketmq.send_result`, `messaging.rocketmq.queue_id`, and `messaging.rocketmq.queue_offset`.", + "name": "otel.instrumentation.rocketmq-client.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables messaging spans for Apache RocketMQ message producers and consumers using the Remoting Protocol.", + "display_name": "Apache RocketMQ Client - Remoting Protocol", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.rocketmq:rocketmq-client:[4.0.0,)"], + "library_link": "https://rocketmq.apache.org/", + "markdown_hash": "2393e406f4b2", + "name": "rocketmq-client-4.8", + "scope": { + "name": "io.opentelemetry.rocketmq-client-4.8" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/rocketmq/rocketmq-client-4.8", + "tags": ["rocketmq"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.broker_address", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.message.tag", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.queue_id", + "type": "LONG" + }, + { + "name": "messaging.rocketmq.queue_offset", + "type": "LONG" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.broker_address", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.message.tag", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.send_result", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.instrumentation.rocketmq-client.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-3c5561918e67.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-3c5561918e67.json new file mode 100644 index 00000000..ffb85e80 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rocketmq-client-4.8/rocketmq-client-4.8-3c5561918e67.json @@ -0,0 +1,161 @@ +{ + "configurations": [ + { + "default": "", + "description": "Enables capturing messaging headers as span attributes. Provide a comma-separated list of header names to capture.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "default": false, + "description": "Enables capturing experimental span attributes `messaging.rocketmq.message.tag`, `messaging.rocketmq.broker_address`, `messaging.rocketmq.send_result`, `messaging.rocketmq.queue_id`, and `messaging.rocketmq.queue_offset`.", + "name": "otel.instrumentation.rocketmq-client.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables messaging spans for Apache RocketMQ message producers and consumers using the Remoting Protocol.", + "display_name": "Apache RocketMQ Client - Remoting Protocol", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.apache.rocketmq:rocketmq-client:[4.0.0,)"], + "library_link": "https://rocketmq.apache.org/", + "markdown_hash": "2393e406f4b2", + "name": "rocketmq-client-4.8", + "scope": { + "name": "io.opentelemetry.rocketmq-client-4.8" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/rocketmq/rocketmq-client-4.8", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.broker_address", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.message.tag", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.queue_id", + "type": "LONG" + }, + { + "name": "messaging.rocketmq.queue_offset", + "type": "LONG" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.message.id", + "type": "STRING" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.broker_address", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.message.tag", + "type": "STRING" + }, + { + "name": "messaging.rocketmq.send_result", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.instrumentation.rocketmq-client.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-28b3f8f989c7.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-28b3f8f989c7.json new file mode 100644 index 00000000..6b75820c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-28b3f8f989c7.json @@ -0,0 +1,15 @@ +{ + "description": "DEPRECATED: This instrumentation enables JVM runtime metrics using JFR (Java 17+). Use the unified runtime-telemetry module instead, which provides both JMX and JFR support.", + "display_name": "JVM Runtime Telemetry (JFR)", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry/runtime-telemetry-java17", + "markdown_hash": "a670bf039fd5", + "minimum_java_version": 17, + "name": "runtime-telemetry-java17", + "scope": { + "name": "io.opentelemetry.runtime-telemetry-java17" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry/runtime-telemetry-java17" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-62efa4a0799c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-62efa4a0799c.json new file mode 100644 index 00000000..73c43636 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java17/runtime-telemetry-java17-62efa4a0799c.json @@ -0,0 +1,16 @@ +{ + "description": "DEPRECATED: This instrumentation enables JVM runtime metrics using JFR (Java 17+). Use the unified runtime-telemetry module instead, which provides both JMX and JFR support.", + "display_name": "JVM Runtime Telemetry (JFR)", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry/runtime-telemetry-java17", + "markdown_hash": "a670bf039fd5", + "minimum_java_version": 17, + "name": "runtime-telemetry-java17", + "scope": { + "name": "io.opentelemetry.runtime-telemetry-java17" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry/runtime-telemetry-java17", + "tags": ["runtime"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-601468632d5c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-601468632d5c.json new file mode 100644 index 00000000..044c7474 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-601468632d5c.json @@ -0,0 +1,15 @@ +{ + "description": "DEPRECATED: This instrumentation enables JVM runtime metrics using JMX (Java 8+). Use the unified runtime-telemetry module instead, which provides both JMX and JFR support.", + "display_name": "JVM Runtime Telemetry (JMX)", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry/runtime-telemetry-java8", + "markdown_hash": "703ee82d1896", + "name": "runtime-telemetry-java8", + "scope": { + "name": "io.opentelemetry.runtime-telemetry-java8" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry/runtime-telemetry-java8", + "tags": ["runtime"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-61fa21e77c5c.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-61fa21e77c5c.json new file mode 100644 index 00000000..19b7f089 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry-java8/runtime-telemetry-java8-61fa21e77c5c.json @@ -0,0 +1,14 @@ +{ + "description": "DEPRECATED: This instrumentation enables JVM runtime metrics using JMX (Java 8+). Use the unified runtime-telemetry module instead, which provides both JMX and JFR support.", + "display_name": "JVM Runtime Telemetry (JMX)", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry/runtime-telemetry-java8", + "markdown_hash": "703ee82d1896", + "name": "runtime-telemetry-java8", + "scope": { + "name": "io.opentelemetry.runtime-telemetry-java8" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry/runtime-telemetry-java8" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-1b7f1f953ae4.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-1b7f1f953ae4.json new file mode 100644 index 00000000..f43196e1 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-1b7f1f953ae4.json @@ -0,0 +1,516 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental JVM runtime metrics.", + "name": "otel.instrumentation.runtime-telemetry.emit-experimental-metrics", + "type": "boolean" + }, + { + "default": false, + "description": "Prefers JFR over JMX for metrics where both collection methods are available (Java 17+).", + "name": "otel.instrumentation.runtime-telemetry.experimental.prefer-jfr", + "type": "boolean" + }, + { + "default": false, + "description": "Enables creating events for JAR libraries used by the application.", + "name": "otel.instrumentation.runtime-telemetry.experimental.package-emitter.enabled", + "type": "boolean" + }, + { + "default": 10, + "description": "The number of JAR files processed per second by the package emitter.", + "name": "otel.instrumentation.runtime-telemetry.experimental.package-emitter.jars-per-second", + "type": "int" + } + ], + "description": "This instrumentation enables JVM runtime metrics using JMX (Java 8+) and JFR (Java 17+) to monitor CPU, memory, garbage collection, threads, classes, buffer pools, and file descriptors.", + "display_name": "JVM Runtime Telemetry", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry", + "markdown_hash": "69f1ccf3457f", + "name": "runtime-telemetry", + "scope": { + "name": "io.opentelemetry.runtime-telemetry" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of buffers in the pool.", + "instrument": "updowncounter", + "name": "jvm.buffer.count", + "unit": "{buffer}" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of total memory capacity of buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used by buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.used", + "unit": "By" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes currently loaded.", + "instrument": "updowncounter", + "name": "jvm.class.count", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes loaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.loaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes unloaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.unloaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of processors available to the Java virtual machine.", + "instrument": "updowncounter", + "name": "jvm.cpu.count", + "unit": "{cpu}" + }, + { + "attributes": [], + "data_type": "HISTOGRAM", + "description": "Long lock times", + "instrument": "histogram", + "name": "jvm.cpu.longlock", + "unit": "s" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the process as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.cpu.recent_utilization", + "unit": "1" + }, + { + "attributes": [], + "data_type": "DOUBLE_SUM", + "description": "CPU time used by the process as reported by the JVM.", + "instrument": "counter", + "name": "jvm.cpu.time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.gc.action", + "type": "STRING" + }, + { + "name": "jvm.gc.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of JVM garbage collection actions.", + "instrument": "histogram", + "name": "jvm.gc.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory committed.", + "instrument": "updowncounter", + "name": "jvm.memory.committed", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of initial memory requested.", + "instrument": "updowncounter", + "name": "jvm.memory.init", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of max obtainable memory.", + "instrument": "updowncounter", + "name": "jvm.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used.", + "instrument": "updowncounter", + "name": "jvm.memory.used", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used, as measured after the most recent garbage collection event on this pool.", + "instrument": "updowncounter", + "name": "jvm.memory.used_after_last_gc", + "unit": "By" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the whole system as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "jvm.thread.daemon", + "type": "BOOLEAN" + }, + { + "name": "jvm.thread.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of executing platform threads.", + "instrument": "updowncounter", + "name": "jvm.thread.count", + "unit": "{thread}" + } + ], + "when": "Java17" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of buffers in the pool.", + "instrument": "updowncounter", + "name": "jvm.buffer.count", + "unit": "{buffer}" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of total memory capacity of buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used by buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.used", + "unit": "By" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes currently loaded.", + "instrument": "updowncounter", + "name": "jvm.class.count", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes loaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.loaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes unloaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.unloaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of processors available to the Java virtual machine.", + "instrument": "updowncounter", + "name": "jvm.cpu.count", + "unit": "{cpu}" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the process as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.cpu.recent_utilization", + "unit": "1" + }, + { + "attributes": [], + "data_type": "DOUBLE_SUM", + "description": "CPU time used by the process as reported by the JVM.", + "instrument": "counter", + "name": "jvm.cpu.time", + "unit": "s" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of open file descriptors as reported by the JVM.", + "instrument": "updowncounter", + "name": "jvm.file_descriptor.count", + "unit": "{file_descriptor}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Measure of max open file descriptors as reported by the JVM.", + "instrument": "updowncounter", + "name": "jvm.file_descriptor.limit", + "unit": "{file_descriptor}" + }, + { + "attributes": [ + { + "name": "jvm.gc.action", + "type": "STRING" + }, + { + "name": "jvm.gc.cause", + "type": "STRING" + }, + { + "name": "jvm.gc.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of JVM garbage collection actions.", + "instrument": "histogram", + "name": "jvm.gc.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory committed.", + "instrument": "updowncounter", + "name": "jvm.memory.committed", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of initial memory requested.", + "instrument": "updowncounter", + "name": "jvm.memory.init", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of max obtainable memory.", + "instrument": "updowncounter", + "name": "jvm.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used.", + "instrument": "updowncounter", + "name": "jvm.memory.used", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used, as measured after the most recent garbage collection event on this pool.", + "instrument": "updowncounter", + "name": "jvm.memory.used_after_last_gc", + "unit": "By" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Average CPU load of the whole system for the last minute as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.load_1m", + "unit": "{run_queue_item}" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the whole system as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "jvm.thread.daemon", + "type": "BOOLEAN" + }, + { + "name": "jvm.thread.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of executing platform threads.", + "instrument": "updowncounter", + "name": "jvm.thread.count", + "unit": "{thread}" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-7c8269fecee1.json b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-7c8269fecee1.json new file mode 100644 index 00000000..499b6eb6 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/runtime-telemetry/runtime-telemetry-7c8269fecee1.json @@ -0,0 +1,517 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental JVM runtime metrics.", + "name": "otel.instrumentation.runtime-telemetry.emit-experimental-metrics", + "type": "boolean" + }, + { + "default": false, + "description": "Prefers JFR over JMX for metrics where both collection methods are available (Java 17+).", + "name": "otel.instrumentation.runtime-telemetry.experimental.prefer-jfr", + "type": "boolean" + }, + { + "default": false, + "description": "Enables creating events for JAR libraries used by the application.", + "name": "otel.instrumentation.runtime-telemetry.experimental.package-emitter.enabled", + "type": "boolean" + }, + { + "default": 10, + "description": "The number of JAR files processed per second by the package emitter.", + "name": "otel.instrumentation.runtime-telemetry.experimental.package-emitter.jars-per-second", + "type": "int" + } + ], + "description": "This instrumentation enables JVM runtime metrics using JMX (Java 8+) and JFR (Java 17+) to monitor CPU, memory, garbage collection, threads, classes, buffer pools, and file descriptors.", + "display_name": "JVM Runtime Telemetry", + "has_javaagent": true, + "has_standalone_library": true, + "library_link": "https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry", + "markdown_hash": "69f1ccf3457f", + "name": "runtime-telemetry", + "scope": { + "name": "io.opentelemetry.runtime-telemetry" + }, + "semantic_conventions": ["JVM_RUNTIME_METRICS"], + "source_path": "instrumentation/runtime-telemetry", + "tags": ["runtime"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of buffers in the pool.", + "instrument": "updowncounter", + "name": "jvm.buffer.count", + "unit": "{buffer}" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of total memory capacity of buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used by buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.used", + "unit": "By" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes currently loaded.", + "instrument": "updowncounter", + "name": "jvm.class.count", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes loaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.loaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes unloaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.unloaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of processors available to the Java virtual machine.", + "instrument": "updowncounter", + "name": "jvm.cpu.count", + "unit": "{cpu}" + }, + { + "attributes": [], + "data_type": "HISTOGRAM", + "description": "Long lock times", + "instrument": "histogram", + "name": "jvm.cpu.longlock", + "unit": "s" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the process as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.cpu.recent_utilization", + "unit": "1" + }, + { + "attributes": [], + "data_type": "DOUBLE_SUM", + "description": "CPU time used by the process as reported by the JVM.", + "instrument": "counter", + "name": "jvm.cpu.time", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.gc.action", + "type": "STRING" + }, + { + "name": "jvm.gc.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of JVM garbage collection actions.", + "instrument": "histogram", + "name": "jvm.gc.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory committed.", + "instrument": "updowncounter", + "name": "jvm.memory.committed", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of initial memory requested.", + "instrument": "updowncounter", + "name": "jvm.memory.init", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of max obtainable memory.", + "instrument": "updowncounter", + "name": "jvm.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used.", + "instrument": "updowncounter", + "name": "jvm.memory.used", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used, as measured after the most recent garbage collection event on this pool.", + "instrument": "updowncounter", + "name": "jvm.memory.used_after_last_gc", + "unit": "By" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the whole system as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "jvm.thread.daemon", + "type": "BOOLEAN" + }, + { + "name": "jvm.thread.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of executing platform threads.", + "instrument": "updowncounter", + "name": "jvm.thread.count", + "unit": "{thread}" + } + ], + "when": "Java17" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of buffers in the pool.", + "instrument": "updowncounter", + "name": "jvm.buffer.count", + "unit": "{buffer}" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of total memory capacity of buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.buffer.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used by buffers.", + "instrument": "updowncounter", + "name": "jvm.buffer.memory.used", + "unit": "By" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes currently loaded.", + "instrument": "updowncounter", + "name": "jvm.class.count", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes loaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.loaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of classes unloaded since JVM start.", + "instrument": "counter", + "name": "jvm.class.unloaded", + "unit": "{class}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of processors available to the Java virtual machine.", + "instrument": "updowncounter", + "name": "jvm.cpu.count", + "unit": "{cpu}" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the process as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.cpu.recent_utilization", + "unit": "1" + }, + { + "attributes": [], + "data_type": "DOUBLE_SUM", + "description": "CPU time used by the process as reported by the JVM.", + "instrument": "counter", + "name": "jvm.cpu.time", + "unit": "s" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Number of open file descriptors as reported by the JVM.", + "instrument": "updowncounter", + "name": "jvm.file_descriptor.count", + "unit": "{file_descriptor}" + }, + { + "attributes": [], + "data_type": "LONG_SUM", + "description": "Measure of max open file descriptors as reported by the JVM.", + "instrument": "updowncounter", + "name": "jvm.file_descriptor.limit", + "unit": "{file_descriptor}" + }, + { + "attributes": [ + { + "name": "jvm.gc.action", + "type": "STRING" + }, + { + "name": "jvm.gc.cause", + "type": "STRING" + }, + { + "name": "jvm.gc.name", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of JVM garbage collection actions.", + "instrument": "histogram", + "name": "jvm.gc.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory committed.", + "instrument": "updowncounter", + "name": "jvm.memory.committed", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of initial memory requested.", + "instrument": "updowncounter", + "name": "jvm.memory.init", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of max obtainable memory.", + "instrument": "updowncounter", + "name": "jvm.memory.limit", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used.", + "instrument": "updowncounter", + "name": "jvm.memory.used", + "unit": "By" + }, + { + "attributes": [ + { + "name": "jvm.memory.pool.name", + "type": "STRING" + }, + { + "name": "jvm.memory.type", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Measure of memory used, as measured after the most recent garbage collection event on this pool.", + "instrument": "updowncounter", + "name": "jvm.memory.used_after_last_gc", + "unit": "By" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Average CPU load of the whole system for the last minute as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.load_1m", + "unit": "{run_queue_item}" + }, + { + "attributes": [], + "data_type": "DOUBLE_GAUGE", + "description": "Recent CPU utilization for the whole system as reported by the JVM.", + "instrument": "gauge", + "name": "jvm.system.cpu.utilization", + "unit": "1" + }, + { + "attributes": [ + { + "name": "jvm.thread.daemon", + "type": "BOOLEAN" + }, + { + "name": "jvm.thread.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "Number of executing platform threads.", + "instrument": "updowncounter", + "name": "jvm.thread.count", + "unit": "{thread}" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-5cf83ece7eb6.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-5cf83ece7eb6.json new file mode 100644 index 00000000..21ef5d2c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-5cf83ece7eb6.json @@ -0,0 +1,24 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental span attribute `rxjava.canceled`.", + "name": "otel.instrumentation.rxjava.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for RxJava 2 reactive streams and adds support for @WithSpan annotations on methods that return RxJava 2 types. It does not emit any telemetry on its own.", + "display_name": "RxJava", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.reactivex.rxjava2:rxjava:[2.0.6,)"], + "library_link": "https://github.com/ReactiveX/RxJava/tree/2.x", + "markdown_hash": "74c683fe6342", + "name": "rxjava-2.0", + "scope": { + "name": "io.opentelemetry.rxjava-2.0" + }, + "source_path": "instrumentation/rxjava/rxjava-2.0", + "tags": ["rxjava"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-6fdcc5825b23.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-6fdcc5825b23.json new file mode 100644 index 00000000..924877ef --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-2.0/rxjava-2.0-6fdcc5825b23.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental span attribute `rxjava.canceled`.", + "name": "otel.instrumentation.rxjava.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for RxJava 2 reactive streams and adds support for @WithSpan annotations on methods that return RxJava 2 types. It does not emit any telemetry on its own.", + "display_name": "RxJava", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.reactivex.rxjava2:rxjava:[2.0.6,)"], + "library_link": "https://github.com/ReactiveX/RxJava/tree/2.x", + "markdown_hash": "74c683fe6342", + "name": "rxjava-2.0", + "scope": { + "name": "io.opentelemetry.rxjava-2.0" + }, + "source_path": "instrumentation/rxjava/rxjava-2.0" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-744bc3a4cbaf.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-744bc3a4cbaf.json new file mode 100644 index 00000000..9fc51df7 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-744bc3a4cbaf.json @@ -0,0 +1,24 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental span attribute `rxjava.canceled`.", + "name": "otel.instrumentation.rxjava.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for RxJava 3 reactive streams and adds support for @WithSpan annotations on methods that return RxJava 3 types. It does not emit any telemetry on its own.", + "display_name": "RxJava", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.reactivex.rxjava3:rxjava:[3.1.1,)"], + "library_link": "https://github.com/ReactiveX/RxJava/tree/3.x", + "markdown_hash": "3fe2760c29d5", + "name": "rxjava-3.1.1", + "scope": { + "name": "io.opentelemetry.rxjava-3.1.1" + }, + "source_path": "instrumentation/rxjava/rxjava-3.1.1", + "tags": ["rxjava"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-bfa789904cc7.json b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-bfa789904cc7.json new file mode 100644 index 00000000..982ffd8d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/rxjava-3.1.1/rxjava-3.1.1-bfa789904cc7.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the experimental span attribute `rxjava.canceled`.", + "name": "otel.instrumentation.rxjava.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables context propagation for RxJava 3 reactive streams and adds support for @WithSpan annotations on methods that return RxJava 3 types. It does not emit any telemetry on its own.", + "display_name": "RxJava", + "features": ["CONTEXT_PROPAGATION"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["io.reactivex.rxjava3:rxjava:[3.1.1,)"], + "library_link": "https://github.com/ReactiveX/RxJava/tree/3.x", + "markdown_hash": "3fe2760c29d5", + "name": "rxjava-3.1.1", + "scope": { + "name": "io.opentelemetry.rxjava-3.1.1" + }, + "source_path": "instrumentation/rxjava/rxjava-3.1.1" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-af7d29322ce0.json b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-af7d29322ce0.json new file mode 100644 index 00000000..1a56b337 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-af7d29322ce0.json @@ -0,0 +1,153 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the experimental `servlet.timeout` span attribute.", + "name": "otel.instrumentation.servlet.experimental-span-attributes", + "type": "boolean" + }, + { + "default": "", + "description": "List of request parameter names to capture as span attributes.", + "name": "otel.instrumentation.servlet.experimental.capture-request-parameters", + "type": "list" + }, + { + "default": true, + "description": "Enables adding the trace ID and span ID as request attributes for downstream servlet access.", + "name": "otel.instrumentation.servlet.experimental.trace-id-request-attribute.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and metrics for Java Servlet API.", + "display_name": "Servlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["javax.servlet:javax.servlet-api:[3.0,)"], + "library_link": "https://javaee.github.io/servlet-spec/", + "markdown_hash": "cfdc0ab7b319", + "name": "servlet-3.0", + "scope": { + "name": "io.opentelemetry.servlet-3.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/servlet/servlet-3.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-df6f98e8a306.json b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-df6f98e8a306.json new file mode 100644 index 00000000..611f8d79 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-3.0/servlet-3.0-df6f98e8a306.json @@ -0,0 +1,153 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the experimental `servlet.timeout` span attribute.", + "name": "otel.instrumentation.servlet.experimental-span-attributes", + "type": "boolean" + }, + { + "default": "", + "description": "List of request parameter names to capture as span attributes.", + "name": "otel.instrumentation.servlet.capture-request-parameters", + "type": "list" + }, + { + "default": true, + "description": "Adds the trace ID and span ID as a request attributes for downstream servlet access.", + "name": "otel.instrumentation.servlet.add-trace-id-request-attribute", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and metrics for Java Servlet API.", + "display_name": "Servlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["javax.servlet:javax.servlet-api:[3.0,)"], + "library_link": "https://javaee.github.io/servlet-spec/", + "markdown_hash": "cfdc0ab7b319", + "name": "servlet-3.0", + "scope": { + "name": "io.opentelemetry.servlet-3.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/servlet/servlet-3.0", + "tags": ["servlet"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-4dc2215d9fbd.json b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-4dc2215d9fbd.json new file mode 100644 index 00000000..44ad2f58 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-4dc2215d9fbd.json @@ -0,0 +1,153 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the experimental `servlet.timeout` span attribute.", + "name": "otel.instrumentation.servlet.experimental-span-attributes", + "type": "boolean" + }, + { + "default": "", + "description": "List of request parameter names to capture as span attributes.", + "name": "otel.instrumentation.servlet.experimental.capture-request-parameters", + "type": "list" + }, + { + "default": true, + "description": "Enables adding the trace ID and span ID as request attributes for downstream servlet access.", + "name": "otel.instrumentation.servlet.experimental.trace-id-request-attribute.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and metrics for Jakarta Servlet API.", + "display_name": "Servlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["jakarta.servlet:jakarta.servlet-api:[5.0.0,)"], + "library_link": "https://jakarta.ee/specifications/servlet/", + "markdown_hash": "2eb4af67ce09", + "name": "servlet-5.0", + "scope": { + "name": "io.opentelemetry.servlet-5.0", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/servlet/servlet-5.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-e21258c90657.json b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-e21258c90657.json new file mode 100644 index 00000000..c6edef0a --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/servlet-5.0/servlet-5.0-e21258c90657.json @@ -0,0 +1,153 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the experimental `servlet.timeout` span attribute.", + "name": "otel.instrumentation.servlet.experimental-span-attributes", + "type": "boolean" + }, + { + "default": "", + "description": "List of request parameter names to capture as span attributes.", + "name": "otel.instrumentation.servlet.capture-request-parameters", + "type": "list" + }, + { + "default": true, + "description": "Adds the trace ID and span ID as a request attributes for downstream servlet access.", + "name": "otel.instrumentation.servlet.add-trace-id-request-attribute", + "type": "boolean" + } + ], + "description": "This instrumentation enables HTTP server spans and metrics for Jakarta Servlet API.", + "display_name": "Servlet", + "features": ["HTTP_ROUTE"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["jakarta.servlet:jakarta.servlet-api:[5.0.0,)"], + "library_link": "https://jakarta.ee/specifications/servlet/", + "markdown_hash": "2eb4af67ce09", + "name": "servlet-5.0", + "scope": { + "name": "io.opentelemetry.servlet-5.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/servlet/servlet-5.0", + "tags": ["servlet"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-346c9ed8748f.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-346c9ed8748f.json new file mode 100644 index 00000000..1a103554 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-346c9ed8748f.json @@ -0,0 +1,75 @@ +{ + "configurations": [ + { + "default": false, + "description": "Create producer spans when messages are sent to an output channel. Enable when you're using a messaging library that doesn't have its own instrumentation for generating producer spans. Note that the detection of output channels only works for Spring Cloud Stream `DirectWithAttributesChannel`.", + "name": "otel.instrumentation.spring-integration.producer.enabled", + "type": "boolean" + }, + { + "default": "*", + "description": "A list of Spring channel name patterns that will be intercepted.", + "name": "otel.instrumentation.spring-integration.global-channel-interceptor-patterns", + "type": "list" + }, + { + "default": "", + "description": "A comma-separated list of header names to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation enables producer and consumer messaging spans for Spring Integration.", + "display_name": "Spring Integration", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "org.springframework.integration:spring-integration-core:[4.1.0.RELEASE,)" + ], + "library_link": "https://spring.io/projects/spring-integration", + "markdown_hash": "1e7a5f390454", + "name": "spring-integration-4.1", + "scope": { + "name": "io.opentelemetry.spring-integration-4.1" + }, + "source_path": "instrumentation/spring/spring-integration-4.1", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.instrumentation.spring-integration.producer.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-6730eb4ef3df.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-6730eb4ef3df.json new file mode 100644 index 00000000..1aa0f0cf --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-integration-4.1/spring-integration-4.1-6730eb4ef3df.json @@ -0,0 +1,76 @@ +{ + "configurations": [ + { + "default": false, + "description": "Create producer spans when messages are sent to an output channel. Enable when you're using a messaging library that doesn't have its own instrumentation for generating producer spans. Note that the detection of output channels only works for Spring Cloud Stream `DirectWithAttributesChannel`.", + "name": "otel.instrumentation.spring-integration.producer.enabled", + "type": "boolean" + }, + { + "default": "*", + "description": "A list of Spring channel name patterns that will be intercepted.", + "name": "otel.instrumentation.spring-integration.global-channel-interceptor-patterns", + "type": "list" + }, + { + "default": "", + "description": "A comma-separated list of header names to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + } + ], + "description": "This instrumentation enables producer and consumer messaging spans for Spring Integration.", + "display_name": "Spring Integration", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": [ + "org.springframework.integration:spring-integration-core:[4.1.0.RELEASE,)" + ], + "library_link": "https://spring.io/projects/spring-integration", + "markdown_hash": "1e7a5f390454", + "name": "spring-integration-4.1", + "scope": { + "name": "io.opentelemetry.spring-integration-4.1" + }, + "source_path": "instrumentation/spring/spring-integration-4.1", + "tags": ["spring"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + }, + { + "attributes": [ + { + "name": "messaging.operation", + "type": "STRING" + } + ], + "span_kind": "PRODUCER" + } + ], + "when": "otel.instrumentation.spring-integration.producer.enabled=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-4e03c4c542b2.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-4e03c4c542b2.json new file mode 100644 index 00000000..736968d9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-4e03c4c542b2.json @@ -0,0 +1,142 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "A comma-separated list of header names to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "default": false, + "description": "Enables the capture of the experimental consumer attribute `kafka.record.queue_time_ms`.", + "name": "otel.instrumentation.kafka.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables consumer messaging spans for Spring Kafka listeners.", + "display_name": "Spring Kafka", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework.kafka:spring-kafka:[2.7.0,)"], + "library_link": "https://spring.io/projects/spring-kafka", + "markdown_hash": "21188e4ea0dc", + "name": "spring-kafka-2.7", + "scope": { + "name": "io.opentelemetry.spring-kafka-2.7" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/spring/spring-kafka-2.7", + "tags": ["spring"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.key", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "kafka.record.queue_time_ms", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.key", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "otel.instrumentation.kafka.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-fd2a2fd6d75e.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-fd2a2fd6d75e.json new file mode 100644 index 00000000..909e53af --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-kafka-2.7/spring-kafka-2.7-fd2a2fd6d75e.json @@ -0,0 +1,141 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables experimental receive telemetry, which will cause consumers to start a new trace, with only a span link connecting it to the producer trace.", + "name": "otel.instrumentation.messaging.experimental.receive-telemetry.enabled", + "type": "boolean" + }, + { + "default": "", + "description": "A comma-separated list of header names to capture as span attributes.", + "name": "otel.instrumentation.messaging.experimental.capture-headers", + "type": "list" + }, + { + "default": false, + "description": "Enables the capture of the experimental consumer attribute `kafka.record.queue_time_ms` and `messaging.kafka.bootstrap.servers`.", + "name": "otel.instrumentation.kafka.experimental-span-attributes", + "type": "boolean" + } + ], + "description": "This instrumentation enables consumer messaging spans for Spring Kafka listeners.", + "display_name": "Spring Kafka", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework.kafka:spring-kafka:[2.7.0,)"], + "library_link": "https://spring.io/projects/spring-kafka", + "markdown_hash": "21188e4ea0dc", + "name": "spring-kafka-2.7", + "scope": { + "name": "io.opentelemetry.spring-kafka-2.7" + }, + "semantic_conventions": ["MESSAGING_SPANS"], + "source_path": "instrumentation/spring/spring-kafka-2.7", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.key", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "kafka.record.queue_time_ms", + "type": "LONG" + }, + { + "name": "messaging.batch.message_count", + "type": "LONG" + }, + { + "name": "messaging.client_id", + "type": "STRING" + }, + { + "name": "messaging.destination.name", + "type": "STRING" + }, + { + "name": "messaging.destination.partition.id", + "type": "STRING" + }, + { + "name": "messaging.kafka.consumer.group", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.key", + "type": "STRING" + }, + { + "name": "messaging.kafka.message.offset", + "type": "LONG" + }, + { + "name": "messaging.message.body.size", + "type": "LONG" + }, + { + "name": "messaging.operation", + "type": "STRING" + }, + { + "name": "messaging.system", + "type": "STRING" + } + ], + "span_kind": "CONSUMER" + } + ], + "when": "otel.instrumentation.kafka.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-a6aa50f67082.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-a6aa50f67082.json new file mode 100644 index 00000000..08523921 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-a6aa50f67082.json @@ -0,0 +1,48 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the enduser.id attribute.", + "name": "otel.instrumentation.common.enduser.id.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables capturing the enduser.role attribute.", + "name": "otel.instrumentation.common.enduser.role.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables capturing the enduser.scope attribute.", + "name": "otel.instrumentation.common.enduser.scope.enabled", + "type": "boolean" + }, + { + "default": "ROLE_", + "description": "Prefix of granted authorities identifying roles to capture in the `enduser.role` semantic attribute.", + "name": "otel.instrumentation.spring-security.enduser.role.granted-authority-prefix", + "type": "string" + }, + { + "default": "SCOPE_", + "description": "Prefix of granted authorities identifying scopes to capture in the `enduser.scopes` semantic attribute.", + "name": "otel.instrumentation.spring-security.scope.role.granted-authority-prefix", + "type": "string" + } + ], + "description": "This instrumentation does not emit any telemetry on its own. Instead, it captures enduser attributes, and is only enabled when at least one of the `enduser` configurations is enabled.\nNOTE: The `enduser` attributes have been deprecated and will be removed in 3.0+ of the java agent.", + "display_name": "Spring Security", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework.security:spring-security-config:[6.0.0,]"], + "library_link": "https://spring.io/projects/spring-security", + "markdown_hash": "f77c2211d1c5", + "minimum_java_version": 17, + "name": "spring-security-config-6.0", + "scope": { + "name": "io.opentelemetry.spring-security-config-6.0" + }, + "source_path": "instrumentation/spring/spring-security-config-6.0", + "tags": ["spring"] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-b525739fea1a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-b525739fea1a.json new file mode 100644 index 00000000..1819a576 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-security-config-6.0/spring-security-config-6.0-b525739fea1a.json @@ -0,0 +1,47 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables capturing the enduser.id attribute.", + "name": "otel.instrumentation.common.enduser.id.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables capturing the enduser.role attribute.", + "name": "otel.instrumentation.common.enduser.role.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables capturing the enduser.scope attribute.", + "name": "otel.instrumentation.common.enduser.scope.enabled", + "type": "boolean" + }, + { + "default": "ROLE_", + "description": "Prefix of granted authorities identifying roles to capture in the `enduser.role` semantic attribute.", + "name": "otel.instrumentation.spring-security.enduser.role.granted-authority-prefix", + "type": "string" + }, + { + "default": "SCOPE_", + "description": "Prefix of granted authorities identifying scopes to capture in the `enduser.scopes` semantic attribute.", + "name": "otel.instrumentation.spring-security.scope.role.granted-authority-prefix", + "type": "string" + } + ], + "description": "This instrumentation does not emit any telemetry on its own. Instead, it captures enduser attributes, and is only enabled when at least one of the `enduser` configurations is enabled.\nNOTE: The `enduser` attributes have been deprecated and will be removed in 3.0+ of the java agent.", + "display_name": "Spring Security", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework.security:spring-security-config:[6.0.0,]"], + "library_link": "https://spring.io/projects/spring-security", + "markdown_hash": "f77c2211d1c5", + "minimum_java_version": 17, + "name": "spring-security-config-6.0", + "scope": { + "name": "io.opentelemetry.spring-security-config-6.0" + }, + "source_path": "instrumentation/spring/spring-security-config-6.0" +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-1ef4ea6f4639.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-1ef4ea6f4639.json new file mode 100644 index 00000000..71768ab4 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-1ef4ea6f4639.json @@ -0,0 +1,138 @@ +{ + "description": "This instrumentation provides a library integration that enables capturing HTTP client spans and metrics for Spring's RestTemplate.", + "display_name": "Spring Web", + "has_standalone_library": true, + "library_link": "https://github.com/spring-projects/spring-framework", + "markdown_hash": "bea40946cd7d", + "name": "spring-web-3.1", + "scope": { + "name": "io.opentelemetry.spring-web-3.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/spring/spring-web/spring-web-3.1", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-43ca7eef1ce6.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-43ca7eef1ce6.json new file mode 100644 index 00000000..093f5a7c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-web-3.1/spring-web-3.1-43ca7eef1ce6.json @@ -0,0 +1,79 @@ +{ + "description": "This instrumentation provides a library integration that enables capturing HTTP client spans and metrics for Spring's RestTemplate.", + "display_name": "Spring Web", + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework:spring-web:[3.1.0.RELEASE,6)"], + "library_link": "https://github.com/spring-projects/spring-framework", + "markdown_hash": "bea40946cd7d", + "name": "spring-web-3.1", + "scope": { + "name": "io.opentelemetry.spring-web-3.1", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_CLIENT_SPANS", "HTTP_CLIENT_METRICS"], + "source_path": "instrumentation/spring/spring-web/spring-web-3.1", + "tags": ["spring"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-b92aa479e62a.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-b92aa479e62a.json new file mode 100644 index 00000000..b227904d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-b92aa479e62a.json @@ -0,0 +1,307 @@ +{ + "description": "This instrumentation provides a library integration for the Spring WebFlux WebClient and Webflux server versions 5.3+ that enables HTTP client and server spans and metrics.", + "display_name": "Spring WebFlux", + "has_standalone_library": true, + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/reactive/package-summary.html", + "markdown_hash": "2c795bbfeac7", + "name": "spring-webflux-5.3", + "scope": { + "name": "io.opentelemetry.spring-webflux-5.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/spring/spring-webflux/spring-webflux-5.3", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "otel.semconv-stability.opt-in=service.peer" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-c135050b6560.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-c135050b6560.json new file mode 100644 index 00000000..13180373 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webflux-5.3/spring-webflux-5.3-c135050b6560.json @@ -0,0 +1,165 @@ +{ + "description": "This instrumentation provides a library integration for the Spring WebFlux WebClient and Webflux server versions 5.3+ that enables HTTP client and server spans and metrics.", + "display_name": "Spring WebFlux", + "has_standalone_library": true, + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/reactive/package-summary.html", + "markdown_hash": "2c795bbfeac7", + "name": "spring-webflux-5.3", + "scope": { + "name": "io.opentelemetry.spring-webflux-5.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": [ + "HTTP_CLIENT_SPANS", + "HTTP_CLIENT_METRICS", + "HTTP_SERVER_SPANS", + "HTTP_SERVER_METRICS" + ], + "source_path": "instrumentation/spring/spring-webflux/spring-webflux-5.3", + "tags": ["spring"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP client requests.", + "instrument": "histogram", + "name": "http.client.request.duration", + "unit": "s" + }, + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.full", + "type": "STRING" + } + ], + "span_kind": "CLIENT" + }, + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-67f5b646ffce.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-67f5b646ffce.json new file mode 100644 index 00000000..293ce8bb --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-67f5b646ffce.json @@ -0,0 +1,118 @@ +{ + "description": "This instrumentation provides a library integration for Spring WebMVC controllers, that enables the creation of HTTP server spans and metrics for requests processed by the Spring servlet container.", + "display_name": "Spring WebMVC", + "features": ["HTTP_ROUTE"], + "has_standalone_library": true, + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/package-summary.html", + "markdown_hash": "5770cc89638c", + "name": "spring-webmvc-5.3", + "scope": { + "name": "io.opentelemetry.spring-webmvc-5.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/spring/spring-webmvc/spring-webmvc-5.3", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-8bf5b1858342.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-8bf5b1858342.json new file mode 100644 index 00000000..fbd03ee6 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-5.3/spring-webmvc-5.3-8bf5b1858342.json @@ -0,0 +1,119 @@ +{ + "description": "This instrumentation provides a library integration for Spring WebMVC controllers, that enables the creation of HTTP server spans and metrics for requests processed by the Spring servlet container.", + "display_name": "Spring WebMVC", + "features": ["HTTP_ROUTE"], + "has_standalone_library": true, + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/package-summary.html", + "markdown_hash": "5770cc89638c", + "name": "spring-webmvc-5.3", + "scope": { + "name": "io.opentelemetry.spring-webmvc-5.3", + "schema_url": "https://opentelemetry.io/schemas/1.37.0" + }, + "semantic_conventions": ["HTTP_SERVER_SPANS", "HTTP_SERVER_METRICS"], + "source_path": "instrumentation/spring/spring-webmvc/spring-webmvc-5.3", + "tags": ["spring"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + } + ], + "data_type": "HISTOGRAM", + "description": "Duration of HTTP server requests.", + "instrument": "histogram", + "name": "http.server.request.duration", + "unit": "s" + } + ], + "spans": [ + { + "attributes": [ + { + "name": "client.address", + "type": "STRING" + }, + { + "name": "error.type", + "type": "STRING" + }, + { + "name": "http.request.method", + "type": "STRING" + }, + { + "name": "http.request.method_original", + "type": "STRING" + }, + { + "name": "http.response.status_code", + "type": "LONG" + }, + { + "name": "http.route", + "type": "STRING" + }, + { + "name": "network.peer.address", + "type": "STRING" + }, + { + "name": "network.peer.port", + "type": "LONG" + }, + { + "name": "network.protocol.version", + "type": "STRING" + }, + { + "name": "server.address", + "type": "STRING" + }, + { + "name": "server.port", + "type": "LONG" + }, + { + "name": "url.path", + "type": "STRING" + }, + { + "name": "url.query", + "type": "STRING" + }, + { + "name": "url.scheme", + "type": "STRING" + }, + { + "name": "user_agent.original", + "type": "STRING" + } + ], + "span_kind": "SERVER" + } + ], + "when": "default" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-1666f7f15d29.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-1666f7f15d29.json new file mode 100644 index 00000000..9b786c63 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-1666f7f15d29.json @@ -0,0 +1,79 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental span attributes `spring-webmvc.view.name` and `spring-webmvc.view.type`.", + "name": "otel.instrumentation.spring-webmvc.experimental-span-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the creation of experimental controller spans.", + "name": "otel.instrumentation.common.experimental.controller-telemetry.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the creation of experimental view spans.", + "name": "otel.instrumentation.common.experimental.view-telemetry.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enriches HTTP server spans with route information for Spring WebMVC 6.0+. It also enables controller spans (controller spans are disabled by default) and view spans (view spans are disabled by default).", + "display_name": "Spring WebMVC", + "features": ["HTTP_ROUTE", "CONTROLLER_SPANS", "VIEW_SPANS"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework:spring-webmvc:[6.0.0,)"], + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/package-summary.html", + "markdown_hash": "0e0850ffa500", + "minimum_java_version": 17, + "name": "spring-webmvc-6.0", + "scope": { + "name": "io.opentelemetry.spring-webmvc-6.0" + }, + "source_path": "instrumentation/spring/spring-webmvc/spring-webmvc-6.0", + "tags": ["spring"], + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "spring-webmvc.view.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.spring-webmvc.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-51cb444081ae.json b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-51cb444081ae.json new file mode 100644 index 00000000..4e6849bb --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/spring-webmvc-6.0/spring-webmvc-6.0-51cb444081ae.json @@ -0,0 +1,78 @@ +{ + "configurations": [ + { + "default": false, + "description": "Enables the capture of experimental span attributes `spring-webmvc.view.name` and `spring-webmvc.view.type`.", + "name": "otel.instrumentation.spring-webmvc.experimental-span-attributes", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the creation of experimental controller spans.", + "name": "otel.instrumentation.common.experimental.controller-telemetry.enabled", + "type": "boolean" + }, + { + "default": false, + "description": "Enables the creation of experimental view spans.", + "name": "otel.instrumentation.common.experimental.view-telemetry.enabled", + "type": "boolean" + } + ], + "description": "This instrumentation enriches HTTP server spans with route information for Spring WebMVC 6.0+. It also enables controller spans (controller spans are disabled by default) and view spans (view spans are disabled by default).", + "display_name": "Spring WebMVC", + "features": ["HTTP_ROUTE", "CONTROLLER_SPANS", "VIEW_SPANS"], + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.springframework:spring-webmvc:[6.0.0,)"], + "library_link": "https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/mvc/package-summary.html", + "markdown_hash": "0e0850ffa500", + "minimum_java_version": 17, + "name": "spring-webmvc-6.0", + "scope": { + "name": "io.opentelemetry.spring-webmvc-6.0" + }, + "source_path": "instrumentation/spring/spring-webmvc/spring-webmvc-6.0", + "telemetry": [ + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "default" + }, + { + "spans": [ + { + "attributes": [ + { + "name": "code.function", + "type": "STRING" + }, + { + "name": "code.namespace", + "type": "STRING" + }, + { + "name": "spring-webmvc.view.type", + "type": "STRING" + } + ], + "span_kind": "INTERNAL" + } + ], + "when": "otel.instrumentation.spring-webmvc.experimental-span-attributes=true" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-d346e0270694.json b/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-d346e0270694.json new file mode 100644 index 00000000..f18fc6bc --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-d346e0270694.json @@ -0,0 +1,87 @@ +{ + "description": "Instrumentation for the vibur-dbcp library, which provides connection pool metrics.", + "display_name": "Vibur DBCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.vibur:vibur-dbcp:[11.0,)"], + "library_link": "https://www.vibur.org/", + "markdown_hash": "263ed08611be", + "name": "vibur-dbcp-11.0", + "scope": { + "name": "io.opentelemetry.vibur-dbcp-11.0" + }, + "source_path": "instrumentation/vibur-dbcp-11.0", + "tags": ["vibur"], + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-f8644db56a84.json b/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-f8644db56a84.json new file mode 100644 index 00000000..50266014 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/instrumentations/vibur-dbcp-11.0/vibur-dbcp-11.0-f8644db56a84.json @@ -0,0 +1,87 @@ +{ + "description": "This instrumentation enables database connection pool metrics for Vibur DBCP data sources.", + "display_name": "Vibur DBCP", + "has_javaagent": true, + "has_standalone_library": true, + "javaagent_target_versions": ["org.vibur:vibur-dbcp:[11.0,)"], + "library_link": "https://www.vibur.org/", + "markdown_hash": "263ed08611be", + "name": "vibur-dbcp-11.0", + "scope": { + "name": "io.opentelemetry.vibur-dbcp-11.0" + }, + "semantic_conventions": ["DATABASE_POOL_METRICS"], + "source_path": "instrumentation/vibur-dbcp-11.0", + "telemetry": [ + { + "metrics": [ + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connections.max", + "unit": "{connections}" + }, + { + "attributes": [ + { + "name": "pool.name", + "type": "STRING" + }, + { + "name": "state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connections.usage", + "unit": "{connections}" + } + ], + "when": "default" + }, + { + "metrics": [ + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + }, + { + "name": "db.client.connection.state", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The number of connections that are currently in state described by the state attribute.", + "instrument": "updowncounter", + "name": "db.client.connection.count", + "unit": "{connection}" + }, + { + "attributes": [ + { + "name": "db.client.connection.pool.name", + "type": "STRING" + } + ], + "data_type": "LONG_SUM", + "description": "The maximum number of open connections allowed.", + "instrument": "updowncounter", + "name": "db.client.connection.max", + "unit": "{connection}" + } + ], + "when": "otel.semconv-stability.opt-in=database" + } + ] +} diff --git a/ecosystem-explorer/public/data/javaagent/markdown/alibaba-druid-1.0-6c55bb962678.md b/ecosystem-explorer/public/data/javaagent/markdown/alibaba-druid-1.0-6c55bb962678.md new file mode 100644 index 00000000..41ea6c79 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/alibaba-druid-1.0-6c55bb962678.md @@ -0,0 +1,55 @@ +# Library Instrumentation for Alibaba Druid version 1.0 and higher + +Provides OpenTelemetry instrumentation for [Alibaba Druid](https://github.com/alibaba/druid), +enabling database connection pool metrics for druid data sources. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-alibaba-druid-1.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-alibaba-druid-1.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-alibaba-druid-1.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import com.alibaba.druid.pool.DruidDataSource; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.alibabadruid.v1_0.DruidTelemetry; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a DruidTelemetry instance +DruidTelemetry druidTelemetry = DruidTelemetry.create(openTelemetry); + +// Create a DruidDataSource +DruidDataSource dataSource = new DruidDataSource(); +// ... configure the dataSource + +// Register the dataSource for metrics +druidTelemetry.registerMetrics(dataSource, "my-druid-pool"); + +// Unregister the dataSource when it's no longer needed +druidTelemetry.unregisterMetrics(dataSource); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/apache-dbcp-2.0-e74b2ed35478.md b/ecosystem-explorer/public/data/javaagent/markdown/apache-dbcp-2.0-e74b2ed35478.md new file mode 100644 index 00000000..308a1c47 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/apache-dbcp-2.0-e74b2ed35478.md @@ -0,0 +1,47 @@ +# Library Instrumentation for Apache DBCP version 2.0 and higher + +Provides OpenTelemetry instrumentation for +[Apache DBCP](https://commons.apache.org/proper/commons-dbcp/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-apache-dbcp-2.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-apache-dbcp-2.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-apache-dbcp-2.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library allows registering `BasicDataSourceMXBean` instances for collecting +OpenTelemetry-based metrics. A non-null name of the data source must be explicitly provided. + +```java +ApacheDbcpTelemetry apacheDbcpTelemetry; + +void configure(OpenTelemetry openTelemetry, BasicDataSourceMXBean dataSource, String dataSourceName) { + apacheDbcpTelemetry = ApacheDbcpTelemetry.create(openTelemetry); + apacheDbcpTelemetry.registerMetrics(dataSource, dataSourceName); +} + +void destroy(BasicDataSourceMXBean dataSource) { + apacheDbcpTelemetry.unregisterMetrics(dataSource); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-4.3-a3bae406cfcf.md b/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-4.3-a3bae406cfcf.md new file mode 100644 index 00000000..cda754ec --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-4.3-a3bae406cfcf.md @@ -0,0 +1,51 @@ +# Library Instrumentation for Apache HttpClient version 4.3 and higher + +Provides OpenTelemetry instrumentation for the +[Apache HttpClient](https://hc.apache.org/httpcomponents-client-ga/), enabling HTTP client spans and +metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-apache-httpclient-4.3). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-apache-httpclient-4.3 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-apache-httpclient-4.3:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.apachehttpclient.v4_3.ApacheHttpClientTelemetry; +import org.apache.http.impl.client.CloseableHttpClient; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create an ApacheHttpClientTelemetry instance +ApacheHttpClientTelemetry telemetry = ApacheHttpClientTelemetry.create(openTelemetry); + +// Get a traced HttpClient +CloseableHttpClient httpClient = telemetry.createHttpClient(); + +// ... use the httpClient to make requests +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-5.2-8fd473357d34.md b/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-5.2-8fd473357d34.md new file mode 100644 index 00000000..9b52e0da --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/apache-httpclient-5.2-8fd473357d34.md @@ -0,0 +1,61 @@ +# Library Instrumentation for Apache Http client version 5.2 + +Provides OpenTelemetry instrumentation for +[Apache Http Client 5.2](https://hc.apache.org/httpcomponents-client-5.2.x/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-apache-httpclient-5.2). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-apache-httpclient-5.2 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-apache-httpclient-5.2:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides the class `ApacheHttpClientTelemetry` that has a builder method +and allows the creation of an instance of the `HttpClientBuilder` to provide OpenTelemetry-based +spans and context propagation: + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.apachehttpclient.v5_2.ApacheHttpClientTelemetry; +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; + +public class ApacheHttpClientConfiguration { + + private OpenTelemetry openTelemetry; + + public ApacheHttpClientConfiguration(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + // creates a new http client builder for constructing http clients with opentelemetry instrumentation + public HttpClientBuilder createBuilder() { + return ApacheHttpClientTelemetry.builder(openTelemetry).build().createHttpClientBuilder(); + } + + // creates a new http client with opentelemetry instrumentation + public HttpClient newHttpClient() { + return ApacheHttpClientTelemetry.builder(openTelemetry).build().createHttpClient(); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/armeria-1.3-977075160b7e.md b/ecosystem-explorer/public/data/javaagent/markdown/armeria-1.3-977075160b7e.md new file mode 100644 index 00000000..35e74388 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/armeria-1.3-977075160b7e.md @@ -0,0 +1,77 @@ +# Library Instrumentation for Armeria version 1.3 and higher + +Provides OpenTelemetry instrumentation for [Armeria](https://armeria.dev/), enabling HTTP client +spans and metrics, and HTTP server spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-armeria-1.3). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-armeria-1.3 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-armeria-1.3:OPENTELEMETRY_VERSION") +``` + +### Usage + +#### Server + +```java +import com.linecorp.armeria.server.Server; +import com.linecorp.armeria.server.ServerBuilder; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaServerTelemetry; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create an ArmeriaServerTelemetry instance +ArmeriaServerTelemetry telemetry = ArmeriaServerTelemetry.create(openTelemetry); + +// Add the decorator to your server builder +Server server = Server.builder() + .decorator(telemetry.createDecorator()) + // ... other server configuration + .build(); +``` + +#### Client + +```java +import com.linecorp.armeria.client.ClientBuilder; +import com.linecorp.armeria.client.WebClient; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.armeria.v1_3.ArmeriaClientTelemetry; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create an ArmeriaClientTelemetry instance +ArmeriaClientTelemetry telemetry = ArmeriaClientTelemetry.create(openTelemetry); + +// Add the decorator to your client builder +WebClient client = new ClientBuilder("http://my-service.com") + .decorator(telemetry.createDecorator()) + // ... other client configuration + .build(WebClient.class); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-core-1.0-9298135a5f9c.md b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-core-1.0-9298135a5f9c.md new file mode 100644 index 00000000..5aaf28ec --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-core-1.0-9298135a5f9c.md @@ -0,0 +1,115 @@ +# AWS Lambda Instrumentation + +This package contains libraries to help instrument AWS lambda functions in your code. + +## Using wrappers + +To use the instrumentation, configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` env property to your +lambda handler method in following format `package.ClassName::methodName` and use one of wrappers as +your lambda `Handler`. + +In order to configure a span flush timeout (default is set to 10 seconds), please configure +`OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in milliseconds. + +Available wrappers: + +- `io.opentelemetry.instrumentation.awslambdacore.v1_0.TracingRequestStreamWrapper` - for wrapping + streaming handlers (implementing `RequestStreamHandler`), enabling HTTP context propagation for + HTTP requests + +When using known Lambda event types as parameters, use +[aws-lambda-events-2.2](../../aws-lambda-events-2.2/library). + +## Using handlers + +To use the instrumentation, replace your function classes that implement `RequestHandler` (or +`RequestStreamHandler`) with those that extend `TracingRequestHandler` (or +`TracingRequestStreamHandler`). You will need to change the method name to `doHandleRequest` and +pass an initialized `OpenTelemetrySdk` to the base class. + +```java +public class MyRequestHandler extends TracingRequestHandler { + + private static final OpenTelemetrySdk SDK = OpenTelemetrySdk.builder() + .addSpanProcessor(spanProcessor) + .buildAndRegisterGlobal(); + + public MyRequestHandler() { + super(SDK); + } + + // Note the method is named doHandleRequest instead of handleRequest. + @Override + protected String doHandleRequest(String input, Context context) { + if (input.equals("hello")) { + return "world"; + } + return "goodbye"; + } +} +``` + +A `SERVER` span will be created with the name you specify for the function when deploying it. + +In addition, it is recommended to set up X-Ray trace propagation to be able to link to tracing +information provided by Lambda itself. To do so, add a dependency on +`io.opentelemetry.contrib:opentelemetry-aws-xray-propagator`. + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.contrib/opentelemetry-aws-xray-propagator). + +Gradle: + +```kotlin +dependencies { + implementation("io.opentelemetry.contrib:opentelemetry-aws-xray-propagator:OPENTELEMETRY_VERSION") +} +``` + +Maven: + +```xml + + + io.opentelemetry.contrib + opentelemetry-aws-xray-propagator + OPENTELEMETRY_VERSION + + +``` + +## Trace propagation + +Context propagation for this instrumentation can be done either with X-Ray propagation or regular +HTTP propagation. If X-Ray is enabled for instrumented lambda, it will be preferred. If X-Ray is +disabled, HTTP propagation will be tried (that is HTTP headers will be read to check for a valid +trace context). + +### X-Ray propagation + +This instrumentation supports propagating traces using the `X-Amzn-Trace-Id` format for both normal +requests and SQS requests. X-Ray propagation is always enabled, there is no need to configure it +explicitly. + +### HTTP headers based propagation + +For API Gateway (HTTP) requests instrumented by using one of following methods: + +- extending `TracingRequestStreamHandler` or `TracingRequestHandler` +- wrapping with `TracingRequestStreamWrapper` or `TracingRequestApiGatewayWrapper` traces can be + propagated with supported HTTP headers (see + ). + +In order to enable requested propagation for a handler, configure it on the SDK you build. + +```java + static { + OpenTelemetrySdk.builder() + ... + .setPropagators(ContextPropagators.create(B3Propagator.injectingSingleHeader())) + .buildAndRegisterGlobal(); + } +``` + +If using the wrappers, set the `OTEL_PROPAGATORS` environment variable as described +[here](https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_propagators). diff --git a/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-2.2-b184b3934c94.md b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-2.2-b184b3934c94.md new file mode 100644 index 00000000..4a68938e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-2.2-b184b3934c94.md @@ -0,0 +1,149 @@ +# AWS Lambda Instrumentation + +This package contains libraries to help instrument AWS lambda functions in your code. + +## Using wrappers + +To use the instrumentation, configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` env property to your +lambda handler method in following format `package.ClassName::methodName` and use one of wrappers as +your lambda `Handler`. + +In order to configure a span flush timeout (default is set to 10 seconds), please configure +`OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in milliseconds. + +Available wrappers: + +- `io.opentelemetry.instrumentation.awslambdaevents.v2_2.TracingRequestWrapper` - for wrapping + regular handlers (implementing `RequestHandler`) +- `io.opentelemetry.instrumentation.awslambdaevents.v2_2.TracingRequestApiGatewayWrapper` - for + wrapping regular handlers (implementing `RequestHandler`) proxied through API Gateway, enabling + HTTP context propagation +- `io.opentelemetry.instrumentation.awslambdacore.v1_0.TracingRequestStreamWrapper` - for wrapping + streaming handlers (implementing `RequestStreamHandler`), enabling HTTP context propagation for + HTTP requests + +If you are only using `TracingRequestStreamWrapper`, consider using +[aws-lambda-core-1.0](../../aws-lambda-core-1.0/library) instead to reduce the size of your compiled +function. + +## Using handlers + +To use the instrumentation, replace your function classes that implement `RequestHandler` (or +`RequestStreamHandler`) with those that extend `TracingRequestHandler` (or +`TracingRequestStreamHandler`). You will need to change the method name to `doHandleRequest` and +pass an initialized `OpenTelemetrySdk` to the base class. + +```java +public class MyRequestHandler extends TracingRequestHandler { + + private static final OpenTelemetrySdk SDK = OpenTelemetrySdk.builder() + .addSpanProcessor(spanProcessor) + .buildAndRegisterGlobal(); + + public MyRequestHandler() { + super(SDK); + } + + // Note the method is named doHandleRequest instead of handleRequest. + @Override + protected String doHandleRequest(String input, Context context) { + if (input.equals("hello")) { + return "world"; + } + return "goodbye"; + } +} +``` + +A `SERVER` span will be created with the name you specify for the function when deploying it. + +In addition, it is recommended to set up X-Ray trace propagation to be able to link to tracing +information provided by Lambda itself. To do so, add a dependency on +`opentelemetry-extension-tracepropagators`. Make sure the version matches the version of the SDK you +use. + +Gradle: + +```kotlin +dependencies { + implementation("io.opentelemetry:opentelemetry-extension-trace-propagators:0.8.0") +} +``` + +Maven: + +```xml + + + io.opentelemetry + opentelemetry-extension-trace-propagators + 0.8.0 + + +``` + +## SQS Handler + +This package provides a special handler for SQS-triggered functions to include messaging data. If +using SQS, it is recommended to use them instead of `TracingRequestHandler`. + +If your application processes one message at a time, each independently, it is recommended to extend +`TracingSQSMessageHandler`. This will create a single span corresponding to a received batch of +messages along with one span for each of the messages as you process them. + +```java +public class MyMessageHandler extends TracingSQSMessageHandler { + @Override + protected void handleMessage(SQSMessage message, Context context) { + System.out.println(message.getBody()); + } +} +``` + +If you handle a batch of messages together, for example by aggregating them into a single unit, +extend `TracingSQSEventHandler` to process a batch at a time. + +```java +public class MyBatchHandler extends TracingSQSEventHandler { + @Override + protected void handleEvent(SQSEvent event, Context context) { + System.out.println(event.getRecords().size()); + } +} +``` + +## Trace propagation + +Context propagation for this instrumentation can be done either with X-Ray propagation or regular +HTTP propagation. If X-Ray is enabled for instrumented lambda, it will be preferred. If X-Ray is +disabled, HTTP propagation will be tried (that is HTTP headers will be read to check for a valid +trace context). + +### X-Ray propagation + +This instrumentation supports propagating traces using the `X-Amzn-Trace-Id` format for both normal +requests and SQS requests. X-Ray propagation is always enabled, there is no need to configure it +explicitly. + +### HTTP headers based propagation + +For API Gateway (HTTP) requests instrumented by using one of following methods: + +- extending `TracingRequestStreamHandler` or `TracingRequestHandler` +- wrapping with `TracingRequestStreamWrapper` or `TracingRequestApiGatewayWrapper` traces can be + propagated with supported HTTP headers (see + ). + +In order to enable requested propagation for a handler, configure it on the SDK you build. + +```java + static { + OpenTelemetrySdk.builder() + ... + .setPropagators(ContextPropagators.create(B3Propagator.injectingSingleHeader())) + .buildAndRegisterGlobal(); + } +``` + +If using the wrappers, set the `OTEL_PROPAGATORS` environment variable as described +[here](https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_propagators). diff --git a/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-3.11-6d2c8fd10301.md b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-3.11-6d2c8fd10301.md new file mode 100644 index 00000000..12ee9081 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/aws-lambda-events-3.11-6d2c8fd10301.md @@ -0,0 +1,151 @@ +# AWS Lambda Instrumentation + +This package contains libraries to help instrument AWS lambda functions in your code. + +## Using wrappers + +To use the instrumentation, configure `OTEL_INSTRUMENTATION_AWS_LAMBDA_HANDLER` env property to your +lambda handler method in following format `package.ClassName::methodName` and use one of wrappers as +your lambda `Handler`. + +In order to configure a span flush timeout (default is set to 10 seconds), please configure +`OTEL_INSTRUMENTATION_AWS_LAMBDA_FLUSH_TIMEOUT` env property. The value is in milliseconds. + +Available wrappers: + +- `io.opentelemetry.instrumentation.awslambdaevents.v3_11.TracingRequestWrapper` - for wrapping + regular handlers (implementing `RequestHandler`) +- `io.opentelemetry.instrumentation.awslambdaevents.v3_11.TracingRequestApiGatewayWrapper` - for + wrapping regular handlers (implementing `RequestHandler`) proxied through API Gateway, enabling + HTTP context propagation +- `io.opentelemetry.instrumentation.awslambdacore.v1_0.TracingRequestStreamWrapper` - for wrapping + streaming handlers (implementing `RequestStreamHandler`), enabling HTTP context propagation for + HTTP requests + +If you are only using `TracingRequestStreamWrapper`, consider using +[aws-lambda-core-1.0](../../aws-lambda-core-1.0/library) instead to reduce the size of your compiled +function. + +## Using handlers + +To use the instrumentation, replace your function classes that implement `RequestHandler` (or +`RequestStreamHandler`) with those that extend `TracingRequestHandler` (or +`TracingRequestStreamHandler`). You will need to change the method name to `doHandleRequest` and +pass an initialized `OpenTelemetrySdk` to the base class. + +```java +public class MyRequestHandler extends TracingRequestHandler { + + private static final OpenTelemetrySdk SDK = OpenTelemetrySdk.builder() + .addSpanProcessor(spanProcessor) + .buildAndRegisterGlobal(); + + public MyRequestHandler() { + super(SDK); + } + + // Note the method is named doHandleRequest instead of handleRequest. + @Override + protected String doHandleRequest(String input, Context context) { + if (input.equals("hello")) { + return "world"; + } + return "goodbye"; + } +} +``` + +A `SERVER` span will be created with the name you specify for the function when deploying it. + +In addition, it is recommended to set up X-Ray trace propagation to be able to link to tracing +information provided by Lambda itself. To do so, add a dependency on +`opentelemetry-extension-tracepropagators`. Make sure the version matches the version of the SDK you +use. + +Gradle: + +```kotlin +dependencies { + implementation("io.opentelemetry:opentelemetry-extension-trace-propagators:0.8.0") +} +``` + +Maven: + +```xml + + + io.opentelemetry + opentelemetry-extension-trace-propagators + 0.8.0 + + +``` + +## SQS Handler + +This package provides a special handler for SQS-triggered functions to include messaging data. If +using SQS, it is recommended to use them instead of `TracingRequestHandler`. + +If your application processes one message at a time, each independently, it is recommended to extend +`TracingSQSMessageHandler`. This will create a single span corresponding to a received batch of +messages along with one span for each of the messages as you process them. + +```java +public class MyMessageHandler extends TracingSQSMessageHandler { + @Override + protected boolean handleMessage(SQSMessage message, Context context) { + System.out.println(message.getBody()); + return true; + } +} +``` + +If you handle a batch of messages together, for example by aggregating them into a single unit, +extend `TracingSQSEventHandler` to process a batch at a time. + +```java +public class MyBatchHandler extends TracingSQSEventHandler { + @Override + protected SQSBatchResponse handleEvent(SQSEvent event, Context context) { + System.out.println(event.getRecords().size()); + return null; + } +} +``` + +## Trace propagation + +Context propagation for this instrumentation can be done either with X-Ray propagation or regular +HTTP propagation. If X-Ray is enabled for instrumented lambda, it will be preferred. If X-Ray is +disabled, HTTP propagation will be tried (that is HTTP headers will be read to check for a valid +trace context). + +### X-Ray propagation + +This instrumentation supports propagating traces using the `X-Amzn-Trace-Id` format for both normal +requests and SQS requests. X-Ray propagation is always enabled, there is no need to configure it +explicitly. + +### HTTP headers based propagation + +For API Gateway (HTTP) requests instrumented by using one of following methods: + +- extending `TracingRequestStreamHandler` or `TracingRequestHandler` +- wrapping with `TracingRequestStreamWrapper` or `TracingRequestApiGatewayWrapper` traces can be + propagated with supported HTTP headers (see + ). + +In order to enable requested propagation for a handler, configure it on the SDK you build. + +```java + static { + OpenTelemetrySdk.builder() + ... + .setPropagators(ContextPropagators.create(B3Propagator.injectingSingleHeader())) + .buildAndRegisterGlobal(); + } +``` + +If using the wrappers, set the `OTEL_PROPAGATORS` environment variable as described +[here](https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_propagators). diff --git a/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-1.11-58b918ec054f.md b/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-1.11-58b918ec054f.md new file mode 100644 index 00000000..1b2416c6 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-1.11-58b918ec054f.md @@ -0,0 +1,56 @@ +# Library Instrumentation for AWS SDK for Java version 1.11 and higher + +Provides OpenTelemetry instrumentation for the +[AWS SDK for Java](https://aws.amazon.com/sdk-for-java/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-aws-sdk-1.11). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-aws-sdk-1.11 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-aws-sdk-1.11:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a `RequestHandler2` that can be added to any AWS SDK v1 client +builder to provide spans and context propagation. + +```java +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.awssdk.v1_11.AwsSdkTelemetry; + +public class AwsSdkConfiguration { + + // Use this to create instrumented AWS SDK clients. + public AmazonS3 createS3Client(OpenTelemetry openTelemetry) { + return AmazonS3ClientBuilder.standard() + .withRequestHandlers( + AwsSdkTelemetry.builder(openTelemetry) + .build() + .createRequestHandler()) + .build(); + } + + // This pattern works for all AWS SDK v1 client builders (S3, SQS, DynamoDB, etc.). +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-2.2-7b219edeedd5.md b/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-2.2-7b219edeedd5.md new file mode 100644 index 00000000..ffe4c787 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/aws-sdk-2.2-7b219edeedd5.md @@ -0,0 +1,65 @@ +# AWS Java SDK v2 Instrumentation + +Instrumentation for [AWS Java SDK v2](https://github.com/aws/aws-sdk-java-v2). + +## Usage + +To instrument all AWS SDK clients include the `opentelemetry-aws-sdk-2.2-autoconfigure` submodule in +your classpath. + +To register instrumentation only on a specific SDK client, register the interceptor when creating +it. + +```java +AwsSdkTelemetry telemetry = AwsSdkTelemetry.create(openTelemetry).build(); +DynamoDbClient client = DynamoDbClient.builder() + .overrideConfiguration(ClientOverrideConfiguration.builder() + .addExecutionInterceptor(telemetry.createExecutionInterceptor())) + .build()) + .build(); +``` + +For SQS an additional step is needed + +```java +SqsClientBuilder sqsClientBuilder = SqsClient.builder(); +... +SqsClient sqsClient = telemetry.wrap(sqsClientBuilder.build()); +``` + +```java +SqsAsyncClientBuilder sqsAsyncClientBuilder = SqsAsyncClient.builder(); +... +SqsAsyncClient sqsAsyncClient = telemetry.wrap(sqsAsyncClientBuilder.build()); +``` + +## Trace propagation + +The AWS SDK instrumentation always injects the trace header into the request using the +[AWS Trace Header](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader) +format. This format is the only format recognized by AWS managed services, and populating will allow +propagating the trace through them. + +Additionally, you can enable an experimental option to use the configured propagator to inject into +message attributes (see [parent README](../../README.md)). This currently supports the following AWS +APIs: + +- SQS.SendMessage +- SQS.SendMessageBatch +- SNS.Publish (SNS.PublishBatch is not supported at the moment because it is not available in the + minimum SDK version targeted by the instrumentation) + +Note that injection will only happen if, after injection, a maximum of 10 attributes is used to not +run over API limitations set by AWS. + +If this does not fulfill your use case, perhaps because you are using the same SDK with a different +non-AWS managed service, let us know so we can provide configuration for this behavior. + +## Development + +### Testing + +Some tests use recorded API responses to run through instrumentation. By default, recordings are +used, but if needing to add new tests/recordings or update existing ones, run the tests with the +`RECORD_WITH_REAL_API` environment variable set. AWS credentials will need to be correctly +configured to work. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/c3p0-0.9-95477f6f2430.md b/ecosystem-explorer/public/data/javaagent/markdown/c3p0-0.9-95477f6f2430.md new file mode 100644 index 00000000..f0884564 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/c3p0-0.9-95477f6f2430.md @@ -0,0 +1,46 @@ +# Library Instrumentation for C3P0 version 0.9 and higher + +Provides OpenTelemetry instrumentation for [C3P0](https://www.mchange.com/projects/c3p0/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-c3p0-0.9). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-c3p0-0.9 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-c3p0-0.9:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library allows registering `PooledDataSource` instances for collecting +OpenTelemetry-based metrics. + +```java +C3p0Telemetry c3p0Telemetry; + +void configure(OpenTelemetry openTelemetry, PooledDataSource dataSource) { + c3p0Telemetry = C3p0Telemetry.create(openTelemetry); + c3p0Telemetry.registerMetrics(dataSource); +} + +void destroy(PooledDataSource dataSource) { + c3p0Telemetry.unregisterMetrics(dataSource); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/cassandra-4.4-9c8181910d68.md b/ecosystem-explorer/public/data/javaagent/markdown/cassandra-4.4-9c8181910d68.md new file mode 100644 index 00000000..a61063c1 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/cassandra-4.4-9c8181910d68.md @@ -0,0 +1,54 @@ +# Library Instrumentation for Cassandra version 4.4 and higher + +Provides OpenTelemetry instrumentation for the +[DataStax Java Driver for Apache Cassandra](https://docs.datastax.com/en/developer/java-driver/latest/), +enabling database client spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-cassandra-4.4). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-cassandra-4.4 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-cassandra-4.4:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import com.datastax.oss.driver.api.core.CqlSession; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.cassandra.v4_4.CassandraTelemetry; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a CassandraTelemetry instance +CassandraTelemetry telemetry = CassandraTelemetry.create(openTelemetry); + +// Create a CqlSession +CqlSession session = CqlSession.builder().build(); + +// Wrap the session +CqlSession tracedSession = telemetry.wrap(session); + +// ... use the tracedSession to make requests +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/elasticsearch-rest-7.0-12c05129aaf3.md b/ecosystem-explorer/public/data/javaagent/markdown/elasticsearch-rest-7.0-12c05129aaf3.md new file mode 100644 index 00000000..2da4822c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/elasticsearch-rest-7.0-12c05129aaf3.md @@ -0,0 +1,55 @@ +# Library Instrumentation for Elasticsearch REST Client version 7.0 and higher + +Provides OpenTelemetry instrumentation for the +[Elasticsearch REST Client](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html), +enabling database client spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-elasticsearch-rest-7.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-elasticsearch-rest-7.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-elasticsearch-rest-7.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +```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 +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-12.0-6241bd12bac9.md b/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-12.0-6241bd12bac9.md new file mode 100644 index 00000000..c8c3d9e9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-12.0-6241bd12bac9.md @@ -0,0 +1,40 @@ +# Library Instrumentation for GraphQL Java version 12.0 to 20.0 + +Provides OpenTelemetry instrumentation for [GraphQL Java](https://www.graphql-java.com/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-graphql-java-12.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-graphql-java-12.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a GraphQL Java `Instrumentation` implementation that can be +added to an instance of the `GraphQL` to provide OpenTelemetry-based spans. + +```java +void configure(OpenTelemetry openTelemetry, GraphQL.Builder builder) { + GraphQLTelemetry telemetry = GraphQLTelemetry.builder(openTelemetry).build(); + builder.instrumentation(telemetry.createInstrumentation()); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-20.0-908e34878485.md b/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-20.0-908e34878485.md new file mode 100644 index 00000000..fbfec55e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/graphql-java-20.0-908e34878485.md @@ -0,0 +1,40 @@ +# Library Instrumentation for GraphQL Java version 20.0 and higher + +Provides OpenTelemetry instrumentation for [GraphQL Java](https://www.graphql-java.com/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-graphql-java-12.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-graphql-java-20.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-graphql-java-20.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a GraphQL Java `Instrumentation` implementation that can be +added to an instance of the `GraphQL` to provide OpenTelemetry-based spans. + +```java +void configure(OpenTelemetry openTelemetry, GraphQL.Builder builder) { + GraphQLTelemetry telemetry = GraphQLTelemetry.builder(openTelemetry).build(); + builder.instrumentation(telemetry.createInstrumentation()); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/grpc-1.6-5268d03f7b80.md b/ecosystem-explorer/public/data/javaagent/markdown/grpc-1.6-5268d03f7b80.md new file mode 100644 index 00000000..4534039f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/grpc-1.6-5268d03f7b80.md @@ -0,0 +1,47 @@ +# Library Instrumentation for gRPC 1.6.0+ + +Provides OpenTelemetry instrumentation for [gRPC](https://grpc.io/). + +## Quickstart + +### Add the following dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-grpc-1.6). + +For Maven, add the following to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-grpc-1.6 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add the following to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-grpc-1.6:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides the implementation of `ClientInterceptor` and +`ServerInterceptor` to provide OpenTelemetry-based spans and context propagation. + +```java +// For client-side, attach the interceptor to your channel builder. +void configureClientInterceptor(OpenTelemetry openTelemetry, NettyChannelBuilder nettyChannelBuilder) { + GrpcTelemetry grpcTelemetry = GrpcTelemetry.create(openTelemetry); + nettyChannelBuilder.intercept(grpcTelemetry.createClientInterceptor()); +} + +// For server-side, attatch the interceptor to your service. +ServerServiceDefinition configureServerInterceptor(OpenTelemetry openTelemetry, ServerServiceDefinition serviceDefinition) { + GrpcTelemetry grpcTelemetry = GrpcTelemetry.create(openTelemetry); + return ServerInterceptors.intercept(serviceDefinition, grpcTelemetry.createServerInterceptor()); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/helidon-4.3-05f7907c327b.md b/ecosystem-explorer/public/data/javaagent/markdown/helidon-4.3-05f7907c327b.md new file mode 100644 index 00000000..d0fcaaba --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/helidon-4.3-05f7907c327b.md @@ -0,0 +1,56 @@ +# Library Instrumentation for Helidon + +Provides OpenTelemetry instrumentation for [Helidon](https://helidon.io/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-helidon-4.3). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-helidon-4.3 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-helidon-4.3:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library contains an `HttpFeature` that provides OpenTelemetry-based spans and +context propagation. + +```java +import java.io.IOException; + +import io.helidon.webserver.WebServer; +import io.helidon.webserver.http.HttpRouting; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.helidon.v4_3.HelidonTelemetry; + +public class Application { + + static void main(String args) throws IOException { + + OpenTelemetry openTelemetry = // ... + WebServer.builder() + .addRouting( + HttpRouting.builder() + .addFeature(HelidonTelemetry.create(openTelemetry)) + .get("/greet", (req, res) -> res.send("Hello World!"))) + .build(); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/hikaricp-3.0-34a91077c477.md b/ecosystem-explorer/public/data/javaagent/markdown/hikaricp-3.0-34a91077c477.md new file mode 100644 index 00000000..bba7d500 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/hikaricp-3.0-34a91077c477.md @@ -0,0 +1,40 @@ +# Library Instrumentation for HikariCP version 3.0 and higher + +Provides OpenTelemetry instrumentation for [HikariCP](https://github.com/brettwooldridge/HikariCP). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-hikaricp-3.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-hikaricp-3.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-hikaricp-3.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a `MetricsTrackerFactory` implementation that can be added to +an instance of the `HikariConfig` (or `HikariDataSource`) to provide OpenTelemetry-based metrics. + +```java +void configure(OpenTelemetry openTelemetry, HikariConfig connectionPoolConfig) { + HikariTelemetry telemetry = HikariTelemetry.create(openTelemetry); + connectionPoolConfig.setMetricsTrackerFactory(telemetry.createMetricsTrackerFactory()); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/java-http-client-28bb07012f8d.md b/ecosystem-explorer/public/data/javaagent/markdown/java-http-client-28bb07012f8d.md new file mode 100644 index 00000000..9854fd95 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/java-http-client-28bb07012f8d.md @@ -0,0 +1,55 @@ +# Library Instrumentation for Java HTTP Client + +Provides OpenTelemetry instrumentation for +[Java HTTP Client](https://openjdk.org/groups/net/httpclient/intro.html). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-client). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-java-http-client + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-java-http-client:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library contains an `HttpClient` wrapper that provides OpenTelemetry-based spans +and context propagation. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.httpclient.JavaHttpClientTelemetry; +import java.net.http.HttpClient; + +import java.util.concurrent.ExecutorService; + +public class JavaHttpClientConfiguration { + + //Use this HttpClient implementation for making standard http client calls. + public HttpClient createTracedClient(OpenTelemetry openTelemetry) { + return JavaHttpClientTelemetry.builder(openTelemetry).build().wrap(createClient()); + } + + //your configuration of the Java HTTP Client goes here: + private HttpClient createClient() { + return HttpClient.newBuilder().build(); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/java-http-server-c7f7d4e03152.md b/ecosystem-explorer/public/data/javaagent/markdown/java-http-server-c7f7d4e03152.md new file mode 100644 index 00000000..461b69c9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/java-http-server-c7f7d4e03152.md @@ -0,0 +1,64 @@ +# Library Instrumentation for Java HTTP Server + +Provides OpenTelemetry instrumentation for +[Java HTTP Server](https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/module-summary.html). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-java-http-server). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-java-http-server + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-java-http-server:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library contains a `Filter` wrapper that provides OpenTelemetry-based spans and +context propagation. + +```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); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/jdbc-fd494a6eba9a.md b/ecosystem-explorer/public/data/javaagent/markdown/jdbc-fd494a6eba9a.md new file mode 100644 index 00000000..2d68edcc --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/jdbc-fd494a6eba9a.md @@ -0,0 +1,79 @@ +# Library Instrumentation for JDBC + +Provides OpenTelemetry instrumentation for +[Java JDBC API](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-jdbc). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-jdbc + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-jdbc:OPENTELEMETRY_VERSION") +``` + +### Usage + +There are two possible ways to activate the OpenTelemetry JDBC instrumentation. The first way is +more preferable for DI frameworks which uses connection pools, as it wraps a `DataSource` with a +special OpenTelemetry wrapper. The second one requires to change the connection URL and switch to +use a special OpenTelemetry driver. + +#### Datasource way + +If your application uses a DataSource, simply wrap your current DataSource object with +`OpenTelemetryDataSource`. `OpenTelemetryDataSource` has a constructor method that accepts the +`DataSource` to wrap. This is by far the simplest method especially if you use a dependency +injection (DI) frameworks such as [Spring Framework](https://spring.io/projects/spring-framework), +[Micronaut](https://micronaut.io), [Quarkus](https://quarkus.io), or +[Guice](https://github.com/google/guice). + +```java +import org.apache.commons.dbcp2.BasicDataSource; +import org.springframework.context.annotation.Configuration; +import io.opentelemetry.instrumentation.jdbc.datasource.OpenTelemetryDataSource; + +@Configuration +public class DataSourceConfig { + + @Bean + public DataSource dataSource() { + BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName("org.postgresql.Driver"); + dataSource.setUrl("jdbc:postgresql://127.0.0.1:5432/example"); + dataSource.setUsername("postgres"); + dataSource.setPassword("root"); + return JdbcTelemetry.create(openTelemetry).wrap(dataSource); + } + +} +``` + +#### Driver way + +1. Activate tracing for JDBC connections by setting `jdbc:otel:` prefix to the JDBC URL, e.g. + `jdbc:otel:h2:mem:test`. + +2. Set the driver class to `io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver`. + +3. Inject `OpenTelemetry` into `io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver` _before + the initialization of the database connection pool_. You can do this with the + `void setOpenTelemetry(OpenTelemetry openTelemetry)` method of + `io.opentelemetry.instrumentation.jdbc.OpenTelemetryDriver`. Another way is to use + `OpenTelemetryDriver.install(OpenTelemetry openTelemetry)`. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-12.0-f1c4f6282b92.md b/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-12.0-f1c4f6282b92.md new file mode 100644 index 00000000..0c02bc57 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-12.0-f1c4f6282b92.md @@ -0,0 +1,51 @@ +# Library Instrumentation for Jetty HttpClient version 12.0 and higher + +Provides OpenTelemetry instrumentation for the +[Jetty HttpClient](https://jetty.org/docs/jetty/12/programming-guide/client/http.html), enabling +database client spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-jetty-httpclient-12.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-jetty-httpclient-12.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-jetty-httpclient-12.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.jetty.httpclient.v12_0.JettyClientTelemetry; +import org.eclipse.jetty.client.HttpClient; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a JettyClientTelemetry instance +JettyClientTelemetry telemetry = JettyClientTelemetry.create(openTelemetry); + +// Get a traced HttpClient +HttpClient httpClient = telemetry.createHttpClient(); + +// ... use the httpClient to make requests +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-9.2-bc893ec6a7c1.md b/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-9.2-bc893ec6a7c1.md new file mode 100644 index 00000000..2690150d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/jetty-httpclient-9.2-bc893ec6a7c1.md @@ -0,0 +1,51 @@ +# Library Instrumentation for Jetty HttpClient version 9.2 and higher + +Provides OpenTelemetry instrumentation for the +[Jetty HttpClient](https://github.com/jetty/jetty.project/tree/jetty-9.4.x), enabling http client +spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-jetty-httpclient-9.2). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-jetty-httpclient-9.2 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-jetty-httpclient-9.2:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.jetty.httpclient.v9_2.JettyClientTelemetry; +import org.eclipse.jetty.client.HttpClient; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a JettyClientTelemetry instance +JettyClientTelemetry telemetry = JettyClientTelemetry.create(openTelemetry); + +// Get a traced HttpClient +HttpClient httpClient = telemetry.createHttpClient(); + +// ... use the httpClient to make requests +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/kafka-clients-2.6-cc1ea581ddca.md b/ecosystem-explorer/public/data/javaagent/markdown/kafka-clients-2.6-cc1ea581ddca.md new file mode 100644 index 00000000..5a3be227 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/kafka-clients-2.6-cc1ea581ddca.md @@ -0,0 +1,281 @@ +# Library instrumentation for Kafka Clients version 2.6 and higher + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-kafka-clients-2.6). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-kafka-clients-2.6 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-kafka-clients-2.6:OPENTELEMETRY_VERSION") +``` + +### Usage (Tracing) + +There are two options for capturing traces, either using interceptors or wrapping clients, both +described below. + +#### Using interceptors + +The Kafka clients API provides a way to intercept messages before they are sent to the brokers as +well as messages received from the broker before being passed to the application. + +To intercept messages and emit telemetry for a `KafkaProducer`: + +```java +KafkaTelemetry telemetry = KafkaTelemetry.create(openTelemetry); + +Map props = new HashMap<>(); +props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); +props.putAll(telemetry.producerInterceptorConfigProperties()); + +Producer producer = new KafkaProducer<>(props); +``` + +To intercept messages and emit telemetry for a `KafkaConsumer`: + +```java +KafkaTelemetry telemetry = KafkaTelemetry.create(openTelemetry); + +Map props = new HashMap<>(); +props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); +props.put(ConsumerConfig.GROUP_ID_CONFIG, "my-group"); +props.putAll(telemetry.consumerInterceptorConfigProperties()); + +Consumer consumer = new KafkaConsumer<>(props); +``` + +#### Wrapping clients + +The other way is by wrapping the Kafka client with a tracing enabled Kafka client. + +Assuming you have a `Producer producer` instance, you can wrap it in the following way. + +```java +KafkaTelemetry telemetry = KafkaTelemetry.create(GlobalOpenTelemetry.get()); +Producer tracingProducer = telemetry.wrap(producer); +``` + +Then use the `tracingProducer` as usual for sending messages to the Kafka cluster. + +Assuming you have a `Consumer consumer` instance, you can wrap it in the following way. + +```java +KafkaTelemetry telemetry = KafkaTelemetry.create(GlobalOpenTelemetry.get()); +Consumer tracingConsumer = telemetry.wrap(this.consumer); +``` + +Then use the `tracingConsumer` as usual for receiving messages from the Kafka cluster. + +### Usage (Metrics) + +The Kafka client exposes metrics via `org.apache.kafka.common.metrics.MetricsReporter` interface. +OpenTelemetry provides an implementation that bridges the metrics into OpenTelemetry. + +To use, merge the config properties from +`KafkaTelemetry.create(OpenTelemetry).metricConfigProperties()` with the configuration used when +creating your producer or consumer. + +Note: Kafka reports several metrics at multiple attribute granularities. For example, +`records-consumed-total` is reported with attribute key `[client-id]` and `[client-id, topic]`. If +you analyze the sum of records consumed, ignoring dimensions, backends are likely to double count. +The implementation detects this scenario and only records the most granular set of attributes +available. In the case of `records-consumed-total`, it reports `[client-id, topic]` and ignores +`[client-id]`. + +The following table shows the full set of metrics exposed by the kafka client, and the corresponding +OpenTelemetry metric each maps to (if available). Empty values in the Instrument Name, Instrument +Description, etc column indicates there is no registered mapping for the metric and data is NOT +collected. + +| Metric Group | Metric Name | Attribute Keys | Instrument Name | Instrument Description | Instrument Type | +| -------------------------------- | ------------------------------------------- | ------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- | +| `consumer-coordinator-metrics` | `assigned-partitions` | `client-id` | `kafka.consumer.assigned_partitions` | The number of partitions currently assigned to this consumer. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `commit-latency-avg` | `client-id` | `kafka.consumer.commit_latency_avg` | The average time taken for a commit request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `commit-latency-max` | `client-id` | `kafka.consumer.commit_latency_max` | The max time taken for a commit request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `commit-rate` | `client-id` | `kafka.consumer.commit_rate` | The number of commit calls per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `commit-total` | `client-id` | `kafka.consumer.commit_total` | The total number of commit calls. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `failed-rebalance-rate-per-hour` | `client-id` | `kafka.consumer.failed_rebalance_rate_per_hour` | The number of failed rebalance events per hour. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `failed-rebalance-total` | `client-id` | `kafka.consumer.failed_rebalance_total` | The total number of failed rebalance events. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `heartbeat-rate` | `client-id` | `kafka.consumer.heartbeat_rate` | The number of heartbeats per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `heartbeat-response-time-max` | `client-id` | `kafka.consumer.heartbeat_response_time_max` | The max time taken to receive a response to a heartbeat request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `heartbeat-total` | `client-id` | `kafka.consumer.heartbeat_total` | The total number of heartbeats. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `join-rate` | `client-id` | `kafka.consumer.join_rate` | The number of group joins per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `join-time-avg` | `client-id` | `kafka.consumer.join_time_avg` | The average time taken for a group rejoin. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `join-time-max` | `client-id` | `kafka.consumer.join_time_max` | The max time taken for a group rejoin. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `join-total` | `client-id` | `kafka.consumer.join_total` | The total number of group joins. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `last-heartbeat-seconds-ago` | `client-id` | `kafka.consumer.last_heartbeat_seconds_ago` | The number of seconds since the last coordinator heartbeat was sent. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `last-rebalance-seconds-ago` | `client-id` | `kafka.consumer.last_rebalance_seconds_ago` | The number of seconds since the last successful rebalance event. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-assigned-latency-avg` | `client-id` | `kafka.consumer.partition_assigned_latency_avg` | The average time taken for a partition-assigned rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-assigned-latency-max` | `client-id` | `kafka.consumer.partition_assigned_latency_max` | The max time taken for a partition-assigned rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-lost-latency-avg` | `client-id` | `kafka.consumer.partition_lost_latency_avg` | The average time taken for a partition-lost rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-lost-latency-max` | `client-id` | `kafka.consumer.partition_lost_latency_max` | The max time taken for a partition-lost rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-revoked-latency-avg` | `client-id` | `kafka.consumer.partition_revoked_latency_avg` | The average time taken for a partition-revoked rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `partition-revoked-latency-max` | `client-id` | `kafka.consumer.partition_revoked_latency_max` | The max time taken for a partition-revoked rebalance listener callback. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `rebalance-latency-avg` | `client-id` | `kafka.consumer.rebalance_latency_avg` | The average time taken for a group to complete a successful rebalance, which may be composed of several failed re-trials until it succeeded. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `rebalance-latency-max` | `client-id` | `kafka.consumer.rebalance_latency_max` | The max time taken for a group to complete a successful rebalance, which may be composed of several failed re-trials until it succeeded. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `rebalance-latency-total` | `client-id` | `kafka.consumer.rebalance_latency_total` | The total number of milliseconds this consumer has spent in successful rebalances since creation. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `rebalance-rate-per-hour` | `client-id` | `kafka.consumer.rebalance_rate_per_hour` | The number of successful rebalance events per hour, each event is composed of several failed re-trials until it succeeded. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `rebalance-total` | `client-id` | `kafka.consumer.rebalance_total` | The total number of successful rebalance events, each event is composed of several failed re-trials until it succeeded. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-coordinator-metrics` | `sync-rate` | `client-id` | `kafka.consumer.sync_rate` | The number of group syncs per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `sync-time-avg` | `client-id` | `kafka.consumer.sync_time_avg` | The average time taken for a group sync. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `sync-time-max` | `client-id` | `kafka.consumer.sync_time_max` | The max time taken for a group sync. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-coordinator-metrics` | `sync-total` | `client-id` | `kafka.consumer.sync_total` | The total number of group syncs. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-fetch-manager-metrics` | `bytes-consumed-rate` | `client-id`,`topic` | `kafka.consumer.bytes_consumed_rate` | The average number of bytes consumed per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `bytes-consumed-total` | `client-id`,`topic` | `kafka.consumer.bytes_consumed_total` | The total number of bytes consumed. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-fetch-manager-metrics` | `fetch-latency-avg` | `client-id` | `kafka.consumer.fetch_latency_avg` | The average time taken for a fetch request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-latency-max` | `client-id` | `kafka.consumer.fetch_latency_max` | The max time taken for any fetch request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-rate` | `client-id` | `kafka.consumer.fetch_rate` | The number of fetch requests per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-size-avg` | `client-id`,`topic` | `kafka.consumer.fetch_size_avg` | The average number of bytes fetched per request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-size-max` | `client-id`,`topic` | `kafka.consumer.fetch_size_max` | The maximum number of bytes fetched per request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-throttle-time-avg` | `client-id` | `kafka.consumer.fetch_throttle_time_avg` | The average throttle time in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-throttle-time-max` | `client-id` | `kafka.consumer.fetch_throttle_time_max` | The maximum throttle time in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `fetch-total` | `client-id` | `kafka.consumer.fetch_total` | The total number of fetch requests. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-fetch-manager-metrics` | `records-consumed-rate` | `client-id`,`topic` | `kafka.consumer.records_consumed_rate` | The average number of records consumed per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-consumed-total` | `client-id`,`topic` | `kafka.consumer.records_consumed_total` | The total number of records consumed. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-fetch-manager-metrics` | `records-lag` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lag` | The latest lag of the partition. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-lag-avg` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lag_avg` | The average lag of the partition. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-lag-max` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lag_max` | The maximum lag in terms of number of records for any partition in this window. NOTE: This is based on current offset and not committed offset. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-lead` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lead` | The latest lead of the partition. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-lead-avg` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lead_avg` | The average lead of the partition. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-lead-min` | `client-id`,`topic`,`partition` | `kafka.consumer.records_lead_min` | The minimum lead in terms of number of records for any partition in this window. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-fetch-manager-metrics` | `records-per-request-avg` | `client-id`,`topic` | `kafka.consumer.records_per_request_avg` | The average number of records in each request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `commit-sync-time-ns-total` | `client-id` | `kafka.consumer.commit_sync_time_ns_total` | The total time the consumer has spent in commitSync in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `committed-time-ns-total` | `client-id` | `kafka.consumer.committed_time_ns_total` | The total time the consumer has spent in committed in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `connection-close-rate` | `client-id` | `kafka.consumer.connection_close_rate` | The number of connections closed per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `connection-close-total` | `client-id` | `kafka.consumer.connection_close_total` | The total number of connections closed. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `connection-count` | `client-id` | `kafka.consumer.connection_count` | The current number of active connections. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `connection-creation-rate` | `client-id` | `kafka.consumer.connection_creation_rate` | The number of new connections established per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `connection-creation-total` | `client-id` | `kafka.consumer.connection_creation_total` | The total number of new connections established. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `failed-authentication-rate` | `client-id` | `kafka.consumer.failed_authentication_rate` | The number of connections with failed authentication per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `failed-authentication-total` | `client-id` | `kafka.consumer.failed_authentication_total` | The total number of connections with failed authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `failed-reauthentication-rate` | `client-id` | `kafka.consumer.failed_reauthentication_rate` | The number of failed re-authentication of connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `failed-reauthentication-total` | `client-id` | `kafka.consumer.failed_reauthentication_total` | The total number of failed re-authentication of connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `io-ratio` | `client-id` | `kafka.consumer.io_ratio` | _Deprecated_ The fraction of time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `io-time-ns-avg` | `client-id` | `kafka.consumer.io_time_ns_avg` | The average length of time for I/O per select call in nanoseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `io-time-ns-total` | `client-id` | `kafka.consumer.io_time_ns_total` | The total time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `io-wait-ratio` | `client-id` | `kafka.consumer.io_wait_ratio` | _Deprecated_ The fraction of time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `io-wait-time-ns-avg` | `client-id` | `kafka.consumer.io_wait_time_ns_avg` | The average length of time the I/O thread spent waiting for a socket ready for reads or writes in nanoseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `io-wait-time-ns-total` | `client-id` | `kafka.consumer.io_wait_time_ns_total` | The total time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `io-waittime-total` | `client-id` | `kafka.consumer.io_waittime_total` | _Deprecated_ The total time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `iotime-total` | `client-id` | `kafka.consumer.iotime_total` | _Deprecated_ The total time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `last-poll-seconds-ago` | `client-id` | `kafka.consumer.last_poll_seconds_ago` | The number of seconds since the last poll() invocation. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `network-io-rate` | `client-id` | `kafka.consumer.network_io_rate` | The number of network operations (reads or writes) on all connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `network-io-total` | `client-id` | `kafka.consumer.network_io_total` | The total number of network operations (reads or writes) on all connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `poll-idle-ratio-avg` | `client-id` | `kafka.consumer.poll_idle_ratio_avg` | The average fraction of time the consumer's poll() is idle as opposed to waiting for the user code to process records. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `reauthentication-latency-avg` | `client-id` | `kafka.consumer.reauthentication_latency_avg` | The average latency observed due to re-authentication. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `reauthentication-latency-max` | `client-id` | `kafka.consumer.reauthentication_latency_max` | The max latency observed due to re-authentication. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `select-rate` | `client-id` | `kafka.consumer.select_rate` | The number of times the I/O layer checked for new I/O to perform per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `select-total` | `client-id` | `kafka.consumer.select_total` | The total number of times the I/O layer checked for new I/O to perform. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `successful-authentication-no-reauth-total` | `client-id` | `kafka.consumer.successful_authentication_no_reauth_total` | The total number of connections with successful authentication where the client does not support re-authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `successful-authentication-rate` | `client-id` | `kafka.consumer.successful_authentication_rate` | The number of connections with successful authentication per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `successful-authentication-total` | `client-id` | `kafka.consumer.successful_authentication_total` | The total number of connections with successful authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `successful-reauthentication-rate` | `client-id` | `kafka.consumer.successful_reauthentication_rate` | The number of successful re-authentication of connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `successful-reauthentication-total` | `client-id` | `kafka.consumer.successful_reauthentication_total` | The total number of successful re-authentication of connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-metrics` | `time-between-poll-avg` | `client-id` | `kafka.consumer.time_between_poll_avg` | The average delay between invocations of poll() in milliseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-metrics` | `time-between-poll-max` | `client-id` | `kafka.consumer.time_between_poll_max` | The max delay between invocations of poll() in milliseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `incoming-byte-rate` | `client-id`,`node-id` | `kafka.consumer.incoming_byte_rate` | The number of bytes read off all sockets per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `incoming-byte-total` | `client-id`,`node-id` | `kafka.consumer.incoming_byte_total` | The total number of bytes read off all sockets. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-node-metrics` | `outgoing-byte-rate` | `client-id`,`node-id` | `kafka.consumer.outgoing_byte_rate` | The number of outgoing bytes sent to all servers per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `outgoing-byte-total` | `client-id`,`node-id` | `kafka.consumer.outgoing_byte_total` | The total number of outgoing bytes sent to all servers. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-node-metrics` | `request-latency-avg` | `client-id`,`node-id` | `kafka.consumer.request_latency_avg` | The average request latency in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `request-latency-max` | `client-id`,`node-id` | `kafka.consumer.request_latency_max` | The maximum request latency in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `request-rate` | `client-id`,`node-id` | `kafka.consumer.request_rate` | The number of requests sent per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `request-size-avg` | `client-id`,`node-id` | `kafka.consumer.request_size_avg` | The average size of requests sent. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `request-size-max` | `client-id`,`node-id` | `kafka.consumer.request_size_max` | The maximum size of any request sent. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `request-total` | `client-id`,`node-id` | `kafka.consumer.request_total` | The total number of requests sent. | `DOUBLE_OBSERVABLE_COUNTER` | +| `consumer-node-metrics` | `response-rate` | `client-id`,`node-id` | `kafka.consumer.response_rate` | The number of responses received per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `consumer-node-metrics` | `response-total` | `client-id`,`node-id` | `kafka.consumer.response_total` | The total number of responses received. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `batch-size-avg` | `client-id` | `kafka.producer.batch_size_avg` | The average number of bytes sent per partition per-request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `batch-size-max` | `client-id` | `kafka.producer.batch_size_max` | The max number of bytes sent per partition per-request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `batch-split-rate` | `client-id` | `kafka.producer.batch_split_rate` | The average number of batch splits per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `batch-split-total` | `client-id` | `kafka.producer.batch_split_total` | The total number of batch splits. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `buffer-available-bytes` | `client-id` | `kafka.producer.buffer_available_bytes` | The total amount of buffer memory that is not being used (either unallocated or in the free list). | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `buffer-exhausted-rate` | `client-id` | `kafka.producer.buffer_exhausted_rate` | The average per-second number of record sends that are dropped due to buffer exhaustion. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `buffer-exhausted-total` | `client-id` | `kafka.producer.buffer_exhausted_total` | The total number of record sends that are dropped due to buffer exhaustion. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `buffer-total-bytes` | `client-id` | `kafka.producer.buffer_total_bytes` | The maximum amount of buffer memory the client can use (whether or not it is currently used). | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `bufferpool-wait-ratio` | `client-id` | `kafka.producer.bufferpool_wait_ratio` | The fraction of time an appender waits for space allocation. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `bufferpool-wait-time-ns-total` | `client-id` | `kafka.producer.bufferpool_wait_time_ns_total` | The total time in nanoseconds an appender waits for space allocation. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `bufferpool-wait-time-total` | `client-id` | `kafka.producer.bufferpool_wait_time_total` | _Deprecated_ The total time an appender waits for space allocation. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `compression-rate-avg` | `client-id` | `kafka.producer.compression_rate_avg` | The average compression rate of record batches, defined as the average ratio of the compressed batch size over the uncompressed size. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `connection-close-rate` | `client-id` | `kafka.producer.connection_close_rate` | The number of connections closed per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `connection-close-total` | `client-id` | `kafka.producer.connection_close_total` | The total number of connections closed. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `connection-count` | `client-id` | `kafka.producer.connection_count` | The current number of active connections. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `connection-creation-rate` | `client-id` | `kafka.producer.connection_creation_rate` | The number of new connections established per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `connection-creation-total` | `client-id` | `kafka.producer.connection_creation_total` | The total number of new connections established. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `failed-authentication-rate` | `client-id` | `kafka.producer.failed_authentication_rate` | The number of connections with failed authentication per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `failed-authentication-total` | `client-id` | `kafka.producer.failed_authentication_total` | The total number of connections with failed authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `failed-reauthentication-rate` | `client-id` | `kafka.producer.failed_reauthentication_rate` | The number of failed re-authentication of connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `failed-reauthentication-total` | `client-id` | `kafka.producer.failed_reauthentication_total` | The total number of failed re-authentication of connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `flush-time-ns-total` | `client-id` | `kafka.producer.flush_time_ns_total` | Total time producer has spent in flush in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `io-ratio` | `client-id` | `kafka.producer.io_ratio` | _Deprecated_ The fraction of time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `io-time-ns-avg` | `client-id` | `kafka.producer.io_time_ns_avg` | The average length of time for I/O per select call in nanoseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `io-time-ns-total` | `client-id` | `kafka.producer.io_time_ns_total` | The total time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `io-wait-ratio` | `client-id` | `kafka.producer.io_wait_ratio` | _Deprecated_ The fraction of time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `io-wait-time-ns-avg` | `client-id` | `kafka.producer.io_wait_time_ns_avg` | The average length of time the I/O thread spent waiting for a socket ready for reads or writes in nanoseconds. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `io-wait-time-ns-total` | `client-id` | `kafka.producer.io_wait_time_ns_total` | The total time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `io-waittime-total` | `client-id` | `kafka.producer.io_waittime_total` | _Deprecated_ The total time the I/O thread spent waiting. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `iotime-total` | `client-id` | `kafka.producer.iotime_total` | _Deprecated_ The total time the I/O thread spent doing I/O. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `metadata-age` | `client-id` | `kafka.producer.metadata_age` | The age in seconds of the current producer metadata being used. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `metadata-wait-time-ns-total` | `client-id` | `kafka.producer.metadata_wait_time_ns_total` | Total time producer has spent waiting on topic metadata in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `network-io-rate` | `client-id` | `kafka.producer.network_io_rate` | The number of network operations (reads or writes) on all connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `network-io-total` | `client-id` | `kafka.producer.network_io_total` | The total number of network operations (reads or writes) on all connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `produce-throttle-time-avg` | `client-id` | `kafka.producer.produce_throttle_time_avg` | The average time in ms a request was throttled by a broker. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `produce-throttle-time-max` | `client-id` | `kafka.producer.produce_throttle_time_max` | The maximum time in ms a request was throttled by a broker. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `reauthentication-latency-avg` | `client-id` | `kafka.producer.reauthentication_latency_avg` | The average latency observed due to re-authentication. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `reauthentication-latency-max` | `client-id` | `kafka.producer.reauthentication_latency_max` | The max latency observed due to re-authentication. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `record-queue-time-avg` | `client-id` | `kafka.producer.record_queue_time_avg` | The average time in ms record batches spent in the send buffer. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `record-queue-time-max` | `client-id` | `kafka.producer.record_queue_time_max` | The maximum time in ms record batches spent in the send buffer. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `record-size-avg` | `client-id` | `kafka.producer.record_size_avg` | The average record size. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `record-size-max` | `client-id` | `kafka.producer.record_size_max` | The maximum record size. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `records-per-request-avg` | `client-id` | `kafka.producer.records_per_request_avg` | The average number of records per request. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `requests-in-flight` | `client-id` | `kafka.producer.requests_in_flight` | The current number of in-flight requests awaiting a response. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `select-rate` | `client-id` | `kafka.producer.select_rate` | The number of times the I/O layer checked for new I/O to perform per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `select-total` | `client-id` | `kafka.producer.select_total` | The total number of times the I/O layer checked for new I/O to perform. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `successful-authentication-no-reauth-total` | `client-id` | `kafka.producer.successful_authentication_no_reauth_total` | The total number of connections with successful authentication where the client does not support re-authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `successful-authentication-rate` | `client-id` | `kafka.producer.successful_authentication_rate` | The number of connections with successful authentication per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `successful-authentication-total` | `client-id` | `kafka.producer.successful_authentication_total` | The total number of connections with successful authentication. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `successful-reauthentication-rate` | `client-id` | `kafka.producer.successful_reauthentication_rate` | The number of successful re-authentication of connections per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-metrics` | `successful-reauthentication-total` | `client-id` | `kafka.producer.successful_reauthentication_total` | The total number of successful re-authentication of connections. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `txn-abort-time-ns-total` | `client-id` | `kafka.producer.txn_abort_time_ns_total` | Total time producer has spent in abortTransaction in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `txn-begin-time-ns-total` | `client-id` | `kafka.producer.txn_begin_time_ns_total` | Total time producer has spent in beginTransaction in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `txn-commit-time-ns-total` | `client-id` | `kafka.producer.txn_commit_time_ns_total` | Total time producer has spent in commitTransaction in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `txn-init-time-ns-total` | `client-id` | `kafka.producer.txn_init_time_ns_total` | Total time producer has spent in initTransactions in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `txn-send-offsets-time-ns-total` | `client-id` | `kafka.producer.txn_send_offsets_time_ns_total` | Total time producer has spent in sendOffsetsToTransaction in nanoseconds. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-metrics` | `waiting-threads` | `client-id` | `kafka.producer.waiting_threads` | The number of user threads blocked waiting for buffer memory to enqueue their records. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `incoming-byte-rate` | `client-id`,`node-id` | `kafka.producer.incoming_byte_rate` | The number of bytes read off all sockets per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `incoming-byte-total` | `client-id`,`node-id` | `kafka.producer.incoming_byte_total` | The total number of bytes read off all sockets. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-node-metrics` | `outgoing-byte-rate` | `client-id`,`node-id` | `kafka.producer.outgoing_byte_rate` | The number of outgoing bytes sent to all servers per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `outgoing-byte-total` | `client-id`,`node-id` | `kafka.producer.outgoing_byte_total` | The total number of outgoing bytes sent to all servers. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-node-metrics` | `request-latency-avg` | `client-id`,`node-id` | `kafka.producer.request_latency_avg` | The average request latency in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `request-latency-max` | `client-id`,`node-id` | `kafka.producer.request_latency_max` | The maximum request latency in ms. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `request-rate` | `client-id`,`node-id` | `kafka.producer.request_rate` | The number of requests sent per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `request-size-avg` | `client-id`,`node-id` | `kafka.producer.request_size_avg` | The average size of requests sent. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `request-size-max` | `client-id`,`node-id` | `kafka.producer.request_size_max` | The maximum size of any request sent. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `request-total` | `client-id`,`node-id` | `kafka.producer.request_total` | The total number of requests sent. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-node-metrics` | `response-rate` | `client-id`,`node-id` | `kafka.producer.response_rate` | The number of responses received per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-node-metrics` | `response-total` | `client-id`,`node-id` | `kafka.producer.response_total` | The total number of responses received. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-topic-metrics` | `byte-rate` | `client-id`,`topic` | `kafka.producer.byte_rate` | The average number of bytes sent per second for a topic. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-topic-metrics` | `byte-total` | `client-id`,`topic` | `kafka.producer.byte_total` | The total number of bytes sent for a topic. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-topic-metrics` | `compression-rate` | `client-id`,`topic` | `kafka.producer.compression_rate` | The average compression rate of record batches for a topic, defined as the average ratio of the compressed batch size over the uncompressed size. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-topic-metrics` | `record-error-rate` | `client-id`,`topic` | `kafka.producer.record_error_rate` | The average per-second number of record sends that resulted in errors. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-topic-metrics` | `record-error-total` | `client-id`,`topic` | `kafka.producer.record_error_total` | The total number of record sends that resulted in errors. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-topic-metrics` | `record-retry-rate` | `client-id`,`topic` | `kafka.producer.record_retry_rate` | The average per-second number of retried record sends. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-topic-metrics` | `record-retry-total` | `client-id`,`topic` | `kafka.producer.record_retry_total` | The total number of retried record sends. | `DOUBLE_OBSERVABLE_COUNTER` | +| `producer-topic-metrics` | `record-send-rate` | `client-id`,`topic` | `kafka.producer.record_send_rate` | The average number of records sent per second. | `DOUBLE_OBSERVABLE_GAUGE` | +| `producer-topic-metrics` | `record-send-total` | `client-id`,`topic` | `kafka.producer.record_send_total` | The total number of records sent. | `DOUBLE_OBSERVABLE_COUNTER` | diff --git a/ecosystem-explorer/public/data/javaagent/markdown/ktor-1.0-95edd47db391.md b/ecosystem-explorer/public/data/javaagent/markdown/ktor-1.0-95edd47db391.md new file mode 100644 index 00000000..f9dd12cc --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/ktor-1.0-95edd47db391.md @@ -0,0 +1,44 @@ +# Library Instrumentation for Ktor version 1.x + +This package contains libraries to help instrument Ktor. Currently, only server instrumentation is +supported. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-ktor-1.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-ktor-1.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-ktor-1.0:OPENTELEMETRY_VERSION") +``` + +## Usage + +Initialize instrumentation by installing the `KtorServerTelemetry` feature. You must set the +`OpenTelemetry` to use with the feature. + +```kotlin +OpenTelemetry openTelemetry = ... + +embeddedServer(Netty, 8080) { + install(KtorServerTelemetry) { + setOpenTelemetry(openTelemetry) + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/ktor-2.0-3a03def1e8f2.md b/ecosystem-explorer/public/data/javaagent/markdown/ktor-2.0-3a03def1e8f2.md new file mode 100644 index 00000000..c457ec0e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/ktor-2.0-3a03def1e8f2.md @@ -0,0 +1,61 @@ +# Library Instrumentation for Ktor version 2.x + +This package contains libraries to help instrument Ktor. Server and client instrumentations are +supported. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-ktor-2.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-ktor-2.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-ktor-2.0:OPENTELEMETRY_VERSION") +``` + +## Usage + +## Initializing server instrumentation + +Initialize instrumentation by installing the `KtorServerTelemetry` feature. You must set the +`OpenTelemetry` to use with the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +embeddedServer(Netty, 8080) { + install(KtorServerTelemetry) { + setOpenTelemetry(openTelemetry) + } +} +``` + +## Initializing client instrumentation + +Initialize instrumentation by installing the `KtorClientTelemetry` feature. You must set the +`OpenTelemetry` to use with the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +val client = HttpClient { + install(KtorClientTelemetry) { + setOpenTelemetry(openTelemetry) + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/ktor-3.0-fc45e27bcdd6.md b/ecosystem-explorer/public/data/javaagent/markdown/ktor-3.0-fc45e27bcdd6.md new file mode 100644 index 00000000..7f2de751 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/ktor-3.0-fc45e27bcdd6.md @@ -0,0 +1,61 @@ +# Library Instrumentation for Ktor version 3.0 and higher + +This package contains libraries to help instrument Ktor. Server and client instrumentations are +supported. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-ktor-3.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-ktor-3.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-ktor-3.0:OPENTELEMETRY_VERSION") +``` + +## Usage + +## Initializing server instrumentation + +Initialize instrumentation by installing the `KtorServerTelemetry` feature. Make sure that no other +logging plugin is installed before this. You must set the `OpenTelemetry` to use with the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +embeddedServer(Netty, 8080) { + install(KtorServerTelemetry) { + setOpenTelemetry(openTelemetry) + } +} +``` + +## Initializing client instrumentation + +Initialize instrumentation by installing the `KtorClientTelemetry` feature. You must set the +`OpenTelemetry` to use with the feature. + +```kotlin +val openTelemetry: OpenTelemetry = ... + +val client = HttpClient { + install(KtorClientTelemetry) { + setOpenTelemetry(openTelemetry) + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/lettuce-5.1-b91d9f93a269.md b/ecosystem-explorer/public/data/javaagent/markdown/lettuce-5.1-b91d9f93a269.md new file mode 100644 index 00000000..3b5c7d8a --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/lettuce-5.1-b91d9f93a269.md @@ -0,0 +1,51 @@ +# Library Instrumentation for Lettuce version 5.1 and higher + +Provides OpenTelemetry instrumentation for [Lettuce](https://lettuce.io/), enabling database client +spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-lettuce-5.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-lettuce-5.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-lettuce-5.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +```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(); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/log4j-appender-2.17-a83757819971.md b/ecosystem-explorer/public/data/javaagent/markdown/log4j-appender-2.17-a83757819971.md new file mode 100644 index 00000000..90cb9c42 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/log4j-appender-2.17-a83757819971.md @@ -0,0 +1,109 @@ +# Appender Instrumentation for Log4j2 version 2.17 and higher + +This module provides a Log4j2 [appender](https://logging.apache.org/log4j/2.x/manual/appenders.html) +which forwards Log4j2 log events to the +[OpenTelemetry Log SDK](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk/logs). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-log4j-appender-2.17). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-log4j-appender-2.17 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-log4j-appender-2.17:OPENTELEMETRY_VERSION") +``` + +### Usage + +The following demonstrates how you might configure the appender in your `log4j2.xml` configuration: + +```xml + + + + + + + + + + + + + + + +``` + +In this example Log4j2 log events will be sent to both the console appender and the +`OpenTelemetryAppender`. + +In order to function, `OpenTelemetryAppender` needs access to an `OpenTelemetry` instance. This must +be set programmatically during application startup as follows: + +```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 + } +} +``` + +#### Settings for the Log4j Appender + +Setting can be configured as XML attributes, for example: + +```xml + + + +``` + +The available settings are: + +| XML Attribute | Type | Default | Description | +| ---------------------------------- | ------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `captureExperimentalAttributes` | Boolean | `false` | Enable the capture of experimental log attributes `thread.name` and `thread.id`. | +| `captureCodeAttributes` | Boolean | `false` | Enable the capture of [source code attributes]. Note that capturing source code attributes at logging sites might add a performance overhead. | +| `captureMapMessageAttributes` | Boolean | `false` | Enable the capture of `MapMessage` attributes. | +| `captureMarkerAttribute` | Boolean | `false` | Enable the capture of Log4j markers as attributes. | +| `captureContextDataAttributes` | String | | Comma separated list of context data attributes to capture. Use the wildcard character `*` to capture all attributes. | +| `captureEventName` | Boolean | `false` | **Deprecated.** Enable moving the `event.name` attribute (captured by one of the other mechanisms of capturing attributes) to the log event name. | +| `numLogsCapturedBeforeOtelInstall` | Integer | 1000 | Log telemetry is emitted after the initialization of the OpenTelemetry Log4j appender with an OpenTelemetry object. This setting allows you to modify the size of the cache used to replay the first logs. | + +The `otel.event.name` key is supported in `MapMessage` entries and context data entries. When +present, its value is used as the log event name and is not emitted as an attribute. + +[source code attributes]: + https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#source-code-attributes diff --git a/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md b/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md new file mode 100644 index 00000000..5719531f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/logback-appender-1.0-875acf087a04.md @@ -0,0 +1,117 @@ +# Appender Instrumentation for Logback version 1.0 and higher + +This module provides a Logback [appender](https://logback.qos.ch/manual/appenders.html) which +forwards Logback log events to the +[OpenTelemetry Log SDK](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk/logs). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-logback-appender-1.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-logback-appender-1.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-logback-appender-1.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The following demonstrates how you might configure the appender in your `logback.xml` configuration: + +```xml + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + +``` + +In this example Logback log events will be sent to both the console appender and the +`OpenTelemetryAppender`. + +In order to function, `OpenTelemetryAppender` needs access to an `OpenTelemetry` instance. This must +be set programmatically during application startup as follows: + +```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 + } +} +``` + +#### Settings for the Logback Appender + +Settings can be configured in `logback.xml`, for example: + +```xml + + true + * + +``` + +The available settings are: + +| XML Element | Type | Default | Description | +| ------------------------------------ | ------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `captureExperimentalAttributes` | Boolean | `false` | Enable the capture of experimental log attributes `thread.name` and `thread.id`. | +| `captureCodeAttributes` | Boolean | `false` | Enable the capture of [source code attributes]. Note that capturing source code attributes at logging sites might add a performance overhead. | +| `captureMarkerAttribute` | Boolean | `false` | Enable the capture of Logback markers as attributes. | +| `captureKeyValuePairAttributes` | Boolean | `false` | Enable the capture of Logback key value pairs as attributes. | +| `captureLoggerContext` | Boolean | `false` | Enable the capture of Logback logger context properties as attributes. | +| `captureTemplate` | Boolean | `false` | Enable the capture of Logback log event message template (if arguments are provided). | +| `captureArguments` | Boolean | `false` | Enable the capture of Logback log event arguments. | +| `captureLogstashMarkerAttributes` | Boolean | `false` | Enable the capture of Logstash markers, supported are those added to logs via `Markers.append()`, `Markers.appendEntries()`, `Markers.appendArray()` and `Markers.appendRaw()` methods. | +| `captureLogstashStructuredArguments` | Boolean | `false` | Enable the capture of Logstash StructuredArguments as attributes (e.g., `StructuredArguments.v()` and `StructuredArguments.keyValue()`). | +| `captureMdcAttributes` | String | | Comma separated list of MDC attributes to capture. Use the wildcard character `*` to capture all attributes. | +| `captureEventName` | Boolean | `false` | **Deprecated.** Enable moving the `event.name` attribute (captured by one of the other mechanisms of capturing attributes) to the log event name. | +| `numLogsCapturedBeforeOtelInstall` | Integer | 1000 | Log telemetry is emitted after the initialization of the OpenTelemetry Logback appender with an OpenTelemetry object. This setting allows you to modify the size of the cache used to replay the first logs. thread.id attribute is not captured. | + +The `otel.event.name` key is supported in key-value pairs (SLF4J 2.x fluent API), MDC entries, +Logstash markers (e.g., `Markers.append("otel.event.name", ...)`), and Logstash structured arguments +(e.g., `StructuredArguments.keyValue("otel.event.name", ...)`). When present, its value is used as +the log event name and is not emitted as an attribute. + +[source code attributes]: + https://github.com/open-telemetry/semantic-conventions/blob/main/docs/general/attributes.md#source-code-attributes diff --git a/ecosystem-explorer/public/data/javaagent/markdown/logback-mdc-1.0-05abcc1b7639.md b/ecosystem-explorer/public/data/javaagent/markdown/logback-mdc-1.0-05abcc1b7639.md new file mode 100644 index 00000000..29c41737 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/logback-mdc-1.0-05abcc1b7639.md @@ -0,0 +1,84 @@ +# MDC Instrumentation for Logback version 1.0 and higher + +This module integrates instrumentation with Logback by injecting the trace ID and span ID from a +mounted span using a custom Logback appender. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-logback-mdc-1.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-logback-mdc-1.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +dependencies { + runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0:OPENTELEMETRY_VERSION") +} +``` + +### Usage + +The following demonstrates how you might configure the appender in your `logback.xml` configuration: + +```xml + + + + + %d{HH:mm:ss.SSS} trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %msg%n + + + + + + + + + + + + + + +``` + +> It's important to note you can also use other encoders in the `ConsoleAppender` like +> [logstash-logback-encoder](https://github.com/logfellow/logstash-logback-encoder). This can be +> helpful when the `Span` is invalid and the `trace_id`, `span_id`, and `trace_flags` are all `null` +> and are hidden entirely from the logs. + +Logging events will automatically have context information from the span context injected. The +following attributes are available for use: + +- `trace_id` +- `span_id` +- `trace_flags` + +These keys can be customized in your `logback.xml` configuration, for example: + +```xml + + example_trace_id + example_span_id + example_trace_flags + +``` + +If you set `true` in your `logback.xml` configuration, key/value pairs in +[baggage](https://opentelemetry.io/docs/concepts/signals/baggage/) will also be added to the MDC. + +- `baggage.` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/micrometer-1.5-5e13dd45f19d.md b/ecosystem-explorer/public/data/javaagent/markdown/micrometer-1.5-5e13dd45f19d.md new file mode 100644 index 00000000..fbdae4b4 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/micrometer-1.5-5e13dd45f19d.md @@ -0,0 +1,40 @@ +# Micrometer Instrumentation for Micrometer version 1.5 and higher + +This module provides a +[Micrometer registry](https://docs.micrometer.io/micrometer/reference/concepts/registry.html) which +sends Micrometer metrics to the +[OpenTelemetry Metrics SDK](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk/metrics). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-micrometer-1.5). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-micrometer-1.5 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-micrometer-1.5:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides an implementation of `MeterRegistry` to bridge Micrometer API +to OpenTelemetry Metrics. + +```java +MeterRegistry meterRegistry = OpenTelemetryMeterRegistry.builder(openTelemetry).build(); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/mongo-3.1-6eb398ef5e54.md b/ecosystem-explorer/public/data/javaagent/markdown/mongo-3.1-6eb398ef5e54.md new file mode 100644 index 00000000..d4992e9f --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/mongo-3.1-6eb398ef5e54.md @@ -0,0 +1,47 @@ +# MongoDB library instrumentation + +This package contains the library to help instrument MongoDB Client. + +## Quickstart + +### Dependencies + +Replace OPENTELEMETRY_VERSION with the +[latest release](https://central.sonatype.com/search?q=g%3Aio.opentelemetry.instrumentation+a%3Aopentelemetry-mongo-3.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-mongo-3.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```gradle +implementation("io.opentelemetry.instrumentation:instrumentation:opentelemetry-mongo-3.1:OPENTELEMETRY_VERSION") +``` + +## Usage + +The instrumentation is initialized by passing a `MongoTelemetry::createCommandListener()` to the +`MongoClientSettings` builder. You must set the `OpenTelemetry` to use with the feature. + +```java +OpenTelemetry openTelemetry = ...; + +MongoTelemetry mongoTelemetry = MongoTelemetry.builder(openTelemetry).build(); + +MongoClientSettings settings = MongoClientSettings.builder() + .applyConnectionString(ConnectionString("mongodb://localhost:27017")) + .addCommandListener(mongoTelemetry.createCommandListener()) + .build(); + +// With Reactive Streams +MongoClient client = MongoClients.create(settings); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/nats-2.17-b5f153b0ee5c.md b/ecosystem-explorer/public/data/javaagent/markdown/nats-2.17-b5f153b0ee5c.md new file mode 100644 index 00000000..83089298 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/nats-2.17-b5f153b0ee5c.md @@ -0,0 +1,62 @@ +# Library Instrumentation for NATS version 2.17 + +Provides OpenTelemetry instrumentation for [NATS Client](https://github.com/nats-io/nats.java). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-nats-2.17). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-nats-2.17 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-nats-2.17:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides the class `NatsTelemetry` that has a builder method and allows +the creation of an instance of the `Connection` to provide OpenTelemetry-based instrumentation: + +```java +import io.nats.client.Connection; +import io.nats.client.Nats; +import io.nats.client.Options; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.nats.v2_17.NatsTelemetry; +import java.io.IOException; + +public class OpenTelemetryNatsConnection { + + private OpenTelemetry openTelemetry; + private NatsTelemetry telemetry; + + public OpenTelemetryNatsConnection(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + this.telemetry = NatsTelemetry.create(openTelemetry); + } + + public Connection newConnection() throws IOException, InterruptedException { + return newConnection(Options.builder()); + } + + public Connection newConnection(Options.Builder options) throws IOException, InterruptedException { + return telemetry.createConnection(options.build(), Nats::connect); + } + +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/netty-4.1-1aee978bf28a.md b/ecosystem-explorer/public/data/javaagent/markdown/netty-4.1-1aee978bf28a.md new file mode 100644 index 00000000..541b69c3 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/netty-4.1-1aee978bf28a.md @@ -0,0 +1,106 @@ +# Library Instrumentation for Netty version 4.1 and higher + +Provides OpenTelemetry instrumentation for [Netty](https://netty.io/), enabling HTTP client and +server spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-netty-4.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-netty-4.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-netty-4.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +#### HTTP Client + +```java +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.http.HttpClientCodec; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.context.Context; +import io.opentelemetry.instrumentation.netty.v4_1.NettyClientTelemetry; + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +NettyClientTelemetry clientTelemetry = NettyClientTelemetry.create(openTelemetry); + +EventLoopGroup eventLoopGroup = ...; // Use appropriate EventLoopGroup for your platform +Class channelClass = ...; // Use appropriate Channel class for your platform + +Bootstrap bootstrap = new Bootstrap(); +bootstrap.group(eventLoopGroup) + .channel(channelClass) + .handler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + ch.pipeline() + .addLast(new HttpClientCodec()) + .addLast(clientTelemetry.createCombinedHandler()) + .addLast(new YourClientHandler()); // Your application handler + } + }); + +Channel channel = bootstrap.connect("localhost", 8080).sync().channel(); +NettyClientTelemetry.setParentContext(channel, Context.current()); +``` + +#### HTTP Server + +```java +import io.netty.bootstrap.ServerBootstrap; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.ServerChannel; +import io.netty.channel.socket.SocketChannel; +import io.netty.handler.codec.http.HttpServerCodec; +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.netty.v4_1.NettyServerTelemetry; + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +NettyServerTelemetry serverTelemetry = NettyServerTelemetry.create(openTelemetry); + +EventLoopGroup bossGroup = ...; // Use appropriate EventLoopGroup for your platform +EventLoopGroup workerGroup = ...; // Use appropriate EventLoopGroup for your platform +Class serverChannelClass = ...; // Use appropriate ServerChannel class for your platform + +ServerBootstrap bootstrap = new ServerBootstrap(); +bootstrap.group(bossGroup, workerGroup) + .channel(serverChannelClass) + .childHandler(new ChannelInitializer() { + @Override + protected void initChannel(SocketChannel ch) { + ch.pipeline() + .addLast(new HttpServerCodec()) + .addLast(serverTelemetry.createCombinedHandler()) + .addLast(new YourServerHandler()); // Your application handler + } + }); + +bootstrap.bind(8080).sync(); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/okhttp-3.0-96a060265ec1.md b/ecosystem-explorer/public/data/javaagent/markdown/okhttp-3.0-96a060265ec1.md new file mode 100644 index 00000000..06c1e386 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/okhttp-3.0-96a060265ec1.md @@ -0,0 +1,53 @@ +# Library Instrumentation for OkHttp version 3.0 and higher + +Provides OpenTelemetry instrumentation for [okhttp3](https://square.github.io/okhttp/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-okhttp-3.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-okhttp-3.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides an OkHttp `Call.Factory` implementation that wraps an instance +of the `OkHttpClient` to provide OpenTelemetry-based spans and context propagation. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.okhttp.v3_0.OkHttpTelemetry; +import okhttp3.Call; +import okhttp3.OkHttpClient; + +public class OkHttpConfiguration { + + //Use this Call.Factory implementation for making standard http client calls. + public Call.Factory createTracedClient(OpenTelemetry openTelemetry) { + return OkHttpTelemetry.builder(openTelemetry).build().createCallFactory(createClient()); + } + + //your configuration of the OkHttpClient goes here: + private OkHttpClient createClient() { + return new OkHttpClient.Builder().build(); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/openai-java-1.1-866aa0171449.md b/ecosystem-explorer/public/data/javaagent/markdown/openai-java-1.1-866aa0171449.md new file mode 100644 index 00000000..d626b95e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/openai-java-1.1-866aa0171449.md @@ -0,0 +1,52 @@ +# Library Instrumentation for OpenAI Java SDK version 1.1.0 and higher + +Provides OpenTelemetry instrumentation for [openai-java](https://github.com/openai/openai-java/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-openai-java-1.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-openai-java-1.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-openai-java-1.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a wrapper for `OpenAIClient` that provide OpenTelemetry-based +spans, metrics and logs. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.openai.v1_1.OpenAITelemetry; +import com.openai.client.OpenAIClient; + +public class OpenAIClientConfiguration { + + //Use this client to capture telemetry. + public OpenAIClient createOtelClient(OpenTelemetry openTelemetry) { + return OpenAITelemetry.builder(openTelemetry).build().wrap(createClient()); + } + + //your configuration of the OpenAIClient goes here: + private OpenAIClient createClient() { + return ...; + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/oracle-ucp-11.2-b697caa991ff.md b/ecosystem-explorer/public/data/javaagent/markdown/oracle-ucp-11.2-b697caa991ff.md new file mode 100644 index 00000000..510f66a9 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/oracle-ucp-11.2-b697caa991ff.md @@ -0,0 +1,47 @@ +# Library Instrumentation for Oracle UCP version 11.2 and higher + +Provides OpenTelemetry instrumentation for +[Oracle UCP](https://docs.oracle.com/database/121/JJUCP/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-oracle-ucp-11.2). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-oracle-ucp-11.2 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-oracle-ucp-11.2:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library allows registering `UniversalConnectionPool` instances for collecting +OpenTelemetry-based metrics. + +```java +OracleUcpTelemetry oracleUcpTelemetry; + +void configure(OpenTelemetry openTelemetry, UniversalConnectionPool universalConnectionPool) { + oracleUcpTelemetry = OracleUcpTelemetry.create(openTelemetry); + oracleUcpTelemetry.registerMetrics(universalConnectionPool); +} + +void destroy(UniversalConnectionPool universalConnectionPool) { + oracleUcpTelemetry.unregisterMetrics(universalConnectionPool); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/oshi-f367344eec3e.md b/ecosystem-explorer/public/data/javaagent/markdown/oshi-f367344eec3e.md new file mode 100644 index 00000000..a8416c00 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/oshi-f367344eec3e.md @@ -0,0 +1,53 @@ +# Library Instrumentation for OSHI version 5.3.1 and higher + +Provides OpenTelemetry instrumentation for [OSHI](https://github.com/oshi/oshi). + +This instrumentation collects system metrics such as memory usage, network I/O, and disk operations. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-oshi). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-oshi + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-oshi:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.oshi.SystemMetrics; +import java.util.List; + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +List observables = SystemMetrics.registerObservers(openTelemetry); + +// The observers will automatically collect and export system metrics +// Close the observables when shutting down your application +observables.forEach(observable -> { + try { + observable.close(); + } catch (Exception e) { + // Handle exception + } +}); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/quartz-2.0-4b4e201cb808.md b/ecosystem-explorer/public/data/javaagent/markdown/quartz-2.0-4b4e201cb808.md new file mode 100644 index 00000000..a1b7dcd5 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/quartz-2.0-4b4e201cb808.md @@ -0,0 +1,50 @@ +# Library Instrumentation for Quartz version 2.0 and higher + +Provides OpenTelemetry instrumentation for [Quartz Scheduler](https://www.quartz-scheduler.org/), +enabling job execution spans. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-quartz-2.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-quartz-2.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-quartz-2.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +```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 +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/r2dbc-1.0-011569447ac1.md b/ecosystem-explorer/public/data/javaagent/markdown/r2dbc-1.0-011569447ac1.md new file mode 100644 index 00000000..25670b3c --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/r2dbc-1.0-011569447ac1.md @@ -0,0 +1,87 @@ +# Library Instrumentation for R2dbc version 1.0 and higher + +Provides OpenTelemetry instrumentation for [R2dbc](https://r2dbc.io/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-r2dbc-1.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-r2dbc-1.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-r2dbc-1.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a R2dbc `ProxyConnectionFactory` that gets wrapped around the +original `ConnectionFactory`. + +```java +ConnectionFactory wrapWithProxyFactory(OpenTelemetry openTelemetry, ConnectionFactory originalFactory, ConnectionFactoryOptions factoryOptions) { + return R2dbcTelemetryBuilder + .create(openTelemetry) + .wrapConnectionFactory(originalFactory, factoryOptions); +} +``` + +If you use R2dbc in a Spring Boot application you can wrap the `ConnectionFactory` using a custom +`BeanPostProcessor` implementation: + +```java +@Configuration +class R2dbcConfiguration { + + @Bean + public R2dbcInstrumentingPostProcessor r2dbcInstrumentingPostProcessor( + OpenTelemetry openTelemetry) { + return new R2dbcInstrumentingPostProcessor(openTelemetry); + } +} + +class R2dbcInstrumentingPostProcessor implements BeanPostProcessor { + + private final OpenTelemetry openTelemetry; + + R2dbcInstrumentingPostProcessor(OpenTelemetry openTelemetry) { + this.openTelemetry = openTelemetry; + } + + @Override + public Object postProcessAfterInitialization(Object bean, String beanName) { + if (!(bean instanceof ConnectionFactory)) { + return bean; + } + ConnectionFactory connectionFactory = (ConnectionFactory) bean; + return R2dbcTelemetry.create(openTelemetry) + .wrapConnectionFactory(connectionFactory, getConnectionFactoryOptions(connectionFactory)); + } + + private static ConnectionFactoryOptions getConnectionFactoryOptions(ConnectionFactory connectionFactory) { + OptionsCapableConnectionFactory optionsCapableConnectionFactory = + OptionsCapableConnectionFactory.unwrapFrom(connectionFactory); + if (optionsCapableConnectionFactory != null) { + return optionsCapableConnectionFactory.getOptions(); + } else { + // in practice should never happen + // fall back to empty options; or reconstruct them from the R2dbcProperties + return ConnectionFactoryOptions.builder().build(); + } + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/ratpack-1.7-844428a9adca.md b/ecosystem-explorer/public/data/javaagent/markdown/ratpack-1.7-844428a9adca.md new file mode 100644 index 00000000..7a86d83b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/ratpack-1.7-844428a9adca.md @@ -0,0 +1,67 @@ +# Library Instrumentation for Ratpack version 1.7 and higher + +Provides OpenTelemetry instrumentation for [Ratpack](https://github.com/ratpack/ratpack), enabling +HTTP client and server spans and metrics. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-ratpack-1.7). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-ratpack-1.7 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-ratpack-1.7:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides implementations for both server and client instrumentation that +wrap Ratpack components. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackServerTelemetry; +import io.opentelemetry.instrumentation.ratpack.v1_7.RatpackClientTelemetry; +import ratpack.server.RatpackServer; +import ratpack.http.client.HttpClient; + +public class RatpackConfiguration { + + // Create a server with OpenTelemetry instrumentation + public RatpackServer createTracedServer(OpenTelemetry openTelemetry) throws Exception { + RatpackServerTelemetry serverTelemetry = RatpackServerTelemetry.create(openTelemetry); + return RatpackServer.start(server -> { + server.registryOf(serverTelemetry::configureRegistry); + server.handlers(chain -> + chain.get(ctx -> ctx.render("Hello, World!")) + ); + }); + } + + // Create an instrumented HttpClient + public HttpClient createTracedClient(OpenTelemetry openTelemetry) { + RatpackClientTelemetry clientTelemetry = RatpackClientTelemetry.create(openTelemetry); + return clientTelemetry.instrument(createClient()); + } + + // Configuration of the HttpClient goes here + private HttpClient createClient() { + return HttpClient.of(spec -> {}); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/reactor-3.1-1517dbdc2da4.md b/ecosystem-explorer/public/data/javaagent/markdown/reactor-3.1-1517dbdc2da4.md new file mode 100644 index 00000000..874eedf1 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/reactor-3.1-1517dbdc2da4.md @@ -0,0 +1,49 @@ +# Library Instrumentation for Project Reactor version 3.1 and higher + +Provides OpenTelemetry instrumentation for [Project Reactor](https://projectreactor.io/), enabling +context propagation through Reactor's execution model. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-reactor-3.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-reactor-3.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-reactor-3.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.reactor.v3_1.ContextPropagationOperator; +import reactor.core.publisher.Mono; +import reactor.core.publisher.Flux; + +public class ReactorExample { + public static void main(String[] args) { + ContextPropagationOperator contextPropagationOperator = ContextPropagationOperator.create(); + contextPropagationOperator.registerOnEachOperator(); + + Mono mono = Mono.just("Hello, World!"); + Flux flux = Flux.just("Hello", "World"); + ... + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/resources-f63864e1e404.md b/ecosystem-explorer/public/data/javaagent/markdown/resources-f63864e1e404.md new file mode 100644 index 00000000..cda450d5 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/resources-f63864e1e404.md @@ -0,0 +1,97 @@ +# OpenTelemetry Resource Providers + +This package includes some standard `ResourceProvider`s for filling in attributes related to common +environments. Currently, the resources provide the following semantic conventions: + +## Populated attributes + +### Container + +Provider: `io.opentelemetry.instrumentation.resources.ContainerResource` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `container.id` + +### Host + +Provider: `io.opentelemetry.instrumentation.resources.HostResource` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `host.name` +- `host.arch` + +Provider: `io.opentelemetry.instrumentation.resources.HostIdResourceProvider` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `host.id` + +### Operating System + +Provider: `io.opentelemetry.instrumentation.resources.OsResource` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `os.type` +- `os.description` + +### Process + +Implementation: `io.opentelemetry.instrumentation.resources.ProcessResource` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `process.pid` +- `process.executable.path` (note, we assume the `java` binary is located in the `bin` subfolder of + `JAVA_HOME`) +- `process.command_line` (note this includes all system properties and arguments when running) + +### Java Runtime + +Implementation: `io.opentelemetry.instrumentation.resources.ProcessRuntimeResource` + +Specification: + + +Included in [declarative config]. + +Implemented attributes: + +- `process.runtime.name` +- `process.runtime.version` +- `process.runtime.description` + +## Platforms + +This package currently does not run on Android. It has been verified on OpenJDK and should work on +other server JVM distributions but if you find any issues please let us know. + +[declarative config]: + https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/configuration/README.md#declarative-configuration diff --git a/ecosystem-explorer/public/data/javaagent/markdown/restlet-1.1-9507744a789d.md b/ecosystem-explorer/public/data/javaagent/markdown/restlet-1.1-9507744a789d.md new file mode 100644 index 00000000..ade2d3e6 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/restlet-1.1-9507744a789d.md @@ -0,0 +1,56 @@ +# Library Instrumentation for Restlet version 1.1 and higher + +Provides OpenTelemetry instrumentation for [Restlet](https://restlet.talend.com/), enabling HTTP +server spans. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-restlet-1.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-restlet-1.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-restlet-1.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.restlet.v1_1.RestletTelemetry; +import org.restlet.Filter; +import org.restlet.Application; +import org.restlet.Restlet; + +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; + } + }; + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/restlet-2.0-3589102b837d.md b/ecosystem-explorer/public/data/javaagent/markdown/restlet-2.0-3589102b837d.md new file mode 100644 index 00000000..a10e410b --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/restlet-2.0-3589102b837d.md @@ -0,0 +1,56 @@ +# Library Instrumentation for Restlet version 2.0 and higher + +Provides OpenTelemetry instrumentation for [Restlet](https://restlet.talend.com/), enabling HTTP +server spans. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-restlet-2.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-restlet-2.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-restlet-2.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +```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; + } + }; + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/rocketmq-client-4.8-2393e406f4b2.md b/ecosystem-explorer/public/data/javaagent/markdown/rocketmq-client-4.8-2393e406f4b2.md new file mode 100644 index 00000000..c92ceaec --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/rocketmq-client-4.8-2393e406f4b2.md @@ -0,0 +1,46 @@ +# Library Instrumentation for Apache RocketMQ remoting-based client 4.0.0+ + +Provides OpenTelemetry instrumentation for [Apache RocketMQ](https://rocketmq.apache.org/) +remoting-based client. + +## Quickstart + +### Add the following dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-rocketmq-client-4.8). + +For Maven, add the following to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-rocketmq-client-4.8 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add the following to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-rocketmq-client-4.8:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides the implementation of `SendMessageHook` and +`ConsumeMessageHook` to provide OpenTelemetry-based spans and context propagation. + +```java +RocketMqTelemetry rocketMqTelemetry; + +void configure(OpenTelemetry openTelemetry, DefaultMQProducerImpl producer, DefaultMQPushConsumerImpl pushConsumer) { + rocketMqTelemetry = RocketMqTelemetry.create(openTelemetry); + // For producer. + producer.registerSendMessageHook(rocketMqTelemetry.createSendMessageHook()); + // For push consumer. + pushConsumer.registerConsumeMessageHook(rocketMqTelemetry.createConsumeMessageHook()); +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-69f1ccf3457f.md b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-69f1ccf3457f.md new file mode 100644 index 00000000..f4d0eccc --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-69f1ccf3457f.md @@ -0,0 +1,296 @@ +# JVM Runtime Metrics + +This module provides JVM runtime metrics as documented in the +[semantic conventions](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/runtime/jvm-metrics.md). + +This is the unified runtime telemetry module that works on all Java versions. On Java 8-16, it uses +JMX for metrics collection. On Java 17+, it can additionally use JFR (Java Flight Recorder) for +metrics that are not available via JMX. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-runtime-telemetry). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-runtime-telemetry + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry:OPENTELEMETRY_VERSION") +``` + +### Usage + +Register JVM runtime metrics: + +```java +OpenTelemetry openTelemetry = // OpenTelemetry instance configured elsewhere + +RuntimeTelemetry runtimeTelemetry = RuntimeTelemetry.create(openTelemetry); + +// When done, close to stop metric collection +runtimeTelemetry.close(); +``` + +To select specific metrics, configure +[metric views](https://opentelemetry.io/docs/languages/java/sdk/#views) on the SDK to filter or +customize which metrics are exported. + +For example, using +[declarative configuration](https://github.com/open-telemetry/opentelemetry-java-examples/tree/main/declarative-configuration): + +```yaml +meter_provider: + views: + # Drop jvm.memory.committed metric + - selector: + instrument_name: jvm.memory.committed + stream: + aggregation: + drop: + # Only retain jvm.memory.type attribute on jvm.memory.used + - selector: + instrument_name: jvm.memory.used + stream: + attribute_keys: + included: + - jvm.memory.type +``` + +To retain only `jvm.memory.used` and drop all other JVM runtime metrics: + +```yaml +meter_provider: + views: + # Drop all metrics from this instrumentation scope + - selector: + meter_name: io.opentelemetry.runtime-telemetry + stream: + aggregation: + drop: + # 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: {} +``` + +## Metrics + +### Configuration + +The set of emitted metrics depends on three independent knobs. In autoconfigured environments, these +map to system properties; programmatically, use the corresponding builder methods. + +- `otel.instrumentation.runtime-telemetry.emit-experimental-metrics=true` + (`emitExperimentalMetrics()`): enables additional JMX-based metrics that are not yet stable in the + semantic conventions. +- `otel.instrumentation.runtime-telemetry.emit-experimental-jfr-metrics=true` (Java 17+): enables + additional JFR-based metrics that are not yet stable in the semantic conventions. +- `otel.instrumentation.runtime-telemetry.experimental.prefer-jfr=true` (Java 17+): sources metrics + from JFR instead of JMX wherever a JFR equivalent exists (see + [JFR-based (Overlap with JMX)](#jfr-based-overlap-with-jmx) below). The corresponding JMX metrics + are suppressed. + +> **Warning**: JFR events might not be available for all JVMs or with a GraalVM native image, +> therefore limiting the produced metrics. The original implementation was done for Hotspot. OpenJ9 +> currently (Nov. 2025) only has the VM-level JFR implementation. So events emitted at the Java +> level (ie. in jdk.jfr) will not be present. Meaning, jdk.SocketRead, jdk.SocketWrite won't work. + +### Stable Metrics (enabled by default) + +These metrics are collected via JMX on all Java versions: + +| Metric | Description | +| ------------------------------- | ----------------------------------------------------------------------------------------------- | +| `jvm.class.count` | Number of classes currently loaded | +| `jvm.class.loaded` | Number of classes loaded since JVM start | +| `jvm.class.unloaded` | Number of classes unloaded since JVM start | +| `jvm.cpu.recent_utilization` | Recent CPU utilization for the process | +| `jvm.cpu.time` | CPU time used by the process | +| `jvm.gc.duration` | Duration of JVM garbage collection actions | +| `jvm.memory.committed` | Measure of memory committed | +| `jvm.memory.limit` | Measure of max obtainable memory | +| `jvm.memory.used` | Measure of memory used | +| `jvm.memory.used_after_last_gc` | Measure of memory used, as measured after the most recent garbage collection event on this pool | +| `jvm.thread.count` | Number of executing platform threads | + +### Experimental Metrics + +#### JMX-based (all Java versions) + +| Metric | Description | +| ---------------------------- | ------------------------------------------- | +| `jvm.buffer.count` | Number of buffers in the pool | +| `jvm.buffer.memory.limit` | Measure of total memory capacity of buffers | +| `jvm.buffer.memory.used` | Measure of memory used by buffers | +| `jvm.memory.init` | Measure of initial memory requested | +| `jvm.system.cpu.utilization` | System-wide CPU utilization | + +#### JFR-based (Java 17+ only) + +| Metric | Description | +| ------------------------ | ---------------------- | +| `jvm.cpu.context_switch` | Context switch rate | +| `jvm.cpu.longlock` | Long lock contention | +| `jvm.memory.allocation` | Memory allocation rate | +| `jvm.network.io` | Network I/O bytes | +| `jvm.network.time` | Network I/O time | + +#### JFR-based (Overlap with JMX) + +When `experimental.prefer-jfr=true`, the following metrics are sourced from JFR instead of JMX (the +JMX-based registration is suppressed to avoid duplicates): + +| Metric | +| ------------------------------- | +| `jvm.buffer.count` | +| `jvm.buffer.memory.limit` | +| `jvm.buffer.memory.used` | +| `jvm.class.count` | +| `jvm.class.loaded` | +| `jvm.class.unloaded` | +| `jvm.cpu.count` | +| `jvm.cpu.recent_utilization` | +| `jvm.gc.duration` | +| `jvm.memory.committed` | +| `jvm.memory.init` | +| `jvm.memory.limit` | +| `jvm.memory.used` | +| `jvm.memory.used_after_last_gc` | +| `jvm.system.cpu.utilization` | +| `jvm.thread.count` | + +## Garbage Collector Dependent Metrics + +The attributes reported on the memory metrics (`jvm.memory.*`) and gc metrics (`jvm.gc.*`) are +dependent on the garbage collector used by the application, since each garbage collector organizes +memory pools differently and has different strategies for reclaiming memory during garbage +collection. + +The following lists attributes reported for a variety of garbage collectors. Notice that attributes +are not necessarily constant across `*.used`, `*.committed`, and `*.limit` since not all memory +pools report a limit. + +- CMS Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Par Eden Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Tenured + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Par Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Code Cache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Par Eden Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Tenured + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Par Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Code Cache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Par Eden Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Tenured + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Par Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Code Cache,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=Par Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Tenured Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Par Survivor + Space,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of minor GC,jvm.gc.name=ParNew}, {jvm.gc.action=end of + major GC,jvm.gc.name=MarkSweepCompact} +- G1 Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=G1 Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=G1 Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, {jvm.memory.pool.name=G1 Old + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap}, {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=G1 Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=G1 Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, {jvm.memory.pool.name=G1 Old + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap}, {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=G1 Old Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=G1 Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=G1 Eden Space,jvm.memory.type=heap}, {jvm.memory.pool.name=G1 Old + Gen,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of minor GC,jvm.gc.name=G1 Young Generation}, + {jvm.gc.action=end of major GC,jvm.gc.name=G1 Old Generation} +- Parallel Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=PS Survivor Space,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Old + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=PS Survivor Space,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Old + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=PS Survivor Space,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Old + Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Eden Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=PS Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=PS Old Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=PS Eden + Space,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of major GC,jvm.gc.name=PS MarkSweep}, {jvm.gc.action=end + of minor GC,jvm.gc.name=PS Scavenge} +- Serial Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Tenured Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Eden + Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Tenured Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Eden + Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Tenured Gen,jvm.memory.type=heap}, {jvm.memory.pool.name=Eden + Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Survivor Space,jvm.memory.type=heap}, + {jvm.memory.pool.name=Compressed Class Space,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=Tenured Gen,jvm.memory.type=heap}, + {jvm.memory.pool.name=Eden Space,jvm.memory.type=heap}, {jvm.memory.pool.name=Survivor + Space,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of minor GC,jvm.gc.name=Copy}, {jvm.gc.action=end of major + GC,jvm.gc.name=MarkSweepCompact} +- Shenandoah Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Shenandoah,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Shenandoah,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=Shenandoah,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=Shenandoah,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of GC cycle,jvm.gc.name=Shenandoah Cycles}, + {jvm.gc.action=end of GC pause,jvm.gc.name=Shenandoah Pauses} +- Z Garbage Collector + - `jvm.memory.used`: {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=ZHeap,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.committed`: {jvm.memory.pool.name=Metaspace,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=ZHeap,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.limit`: {jvm.memory.pool.name=CodeCache,jvm.memory.type=non_heap}, + {jvm.memory.pool.name=ZHeap,jvm.memory.type=heap}, {jvm.memory.pool.name=Compressed Class + Space,jvm.memory.type=non_heap} + - `jvm.memory.used_after_last_gc`: {jvm.memory.pool.name=ZHeap,jvm.memory.type=heap} + - `jvm.gc.duration`: {jvm.gc.action=end of GC cycle,jvm.gc.name=ZGC Cycles}, {jvm.gc.action=end of + GC pause,jvm.gc.name=ZGC Pauses} diff --git a/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java17-a670bf039fd5.md b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java17-a670bf039fd5.md new file mode 100644 index 00000000..79c96575 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java17-a670bf039fd5.md @@ -0,0 +1,75 @@ +# Runtime Telemetry Java 17 + +> **Deprecated:** This module is deprecated. Use +> [`opentelemetry-runtime-telemetry`](../library/README.md) instead, which provides a unified API +> for all Java versions including JFR support on Java 17+. + +The main entry point is the `RuntimeMetrics` class in the package +`io.opentelemetry.instrumentation.runtimemetrics.java17`: + +```java +// Initialize JfrTelemetry +RuntimeMetrics runtimeMetrics = RuntimeMetrics.create(openTelemetry); + +// Close JfrTelemetry to stop listening for JFR events +runtimeMetrics.close(); +``` + +`RuntimeMetrics` uses two underlying implementations to gather the full set of metric data, JFR and +JMX. The metrics gathered by the two implementations are mutually exclusive and the union of them +produces the full set of available metrics. The JMX component is reused from the +`io.opentelemetry.instrumentation.runtimemetrics.java8` package. The JFR component uses JFR +streaming and is only available in JAVA 17. It works by subscribing to certain JFR events, and using +relevant bits of information from the events to produce telemetry data like metrics. The code is +divided into "handlers", which listen for specific events and produce relevant telemetry. The +handlers are organized into features (i.e `JfrFeature`), which represent a category of telemetry and +can be toggled on and off. `RuntimeMetrics` evaluates which features are enabled, and only listens +for the events required by the handlers associated with those features. + +Enable or disable a feature as follows: + +``` +RuntimeMetrics runtimeMetrics = RuntimeMetrics.builder(openTelemetry) + .enableFeature(JfrFeature.BUFFER_METRICS) + .disableFeature(JfrFeature.LOCK_METRICS) + .build(); +``` + +The following table describes the set of `JfrFeatures` available, whether each is enabled by +default, and the telemetry each produces: + + + + +**Warning**: JFR events might not be available for all JVMs or with a GraalVM native image, +therefore limiting the produced metrics. The original implementation was done for Hotspot. OpenJ9 +currently (Nov. 2025) only has the VM-level JFR implementation. So events emitted at the Java level +(ie. in jdk.jfr) will not be present. Meaning, jdk.SocketRead, jdk.SocketWrite won't work. + +| JfrFeature | Jfr Event names | Default Enabled | Metric names | +| ------------------------- | -------------------------------------------------------------------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------- | +| BUFFER_METRICS | `jdk.DirectBufferStatistics`[6] | `false` | `jvm.buffer.count`, `jvm.buffer.memory.limit`, `jvm.buffer.memory.used` | +| CLASS_LOAD_METRICS | `jdk.ClassLoadingStatistics`[5] | `false` | `jvm.class.count`, `jvm.class.loaded`, `jvm.class.unloaded` | +| CONTEXT_SWITCH_METRICS | `jdk.ThreadContextSwitchRate`[6] | `true` | `jvm.cpu.context_switch` | +| CPU_COUNT_METRICS | `jdk.ContainerConfiguration` | `true` | `jvm.cpu.limit` | +| CPU_UTILIZATION_METRICS | `jdk.CPULoad`[6] | `false` | `jvm.cpu.recent_utilization`, `jvm.system.cpu.utilization` | +| GC_DURATION_METRICS | `jdk.G1GarbageCollection`[1], `jdk.OldGarbageCollection`[4], `jdk.YoungGarbageCollection`[4] | `false` | `jvm.gc.duration` | +| LOCK_METRICS | `jdk.JavaMonitorWait` | `true` | `jvm.cpu.longlock` | +| MEMORY_ALLOCATION_METRICS | `jdk.ObjectAllocationInNewTLAB`, `jdk.ObjectAllocationOutsideTLAB`[2] | `true` | `jvm.memory.allocation` | +| MEMORY_POOL_METRICS | `jdk.G1HeapSummary`[1], `jdk.MetaspaceSummary`[2], `jdk.PSHeapSummary`[3] | `false` | `jvm.memory.committed`, `jvm.memory.init`, `jvm.memory.limit`, `jvm.memory.used`, `jvm.memory.used_after_last_gc` | +| NETWORK_IO_METRICS | `jdk.SocketRead`, `jdk.SocketWrite` | `true` | `jvm.network.io`, `jvm.network.time` | +| THREAD_METRICS | `jdk.JavaThreadStatistics` | `false` | `jvm.thread.count` | + +**[1]** - G1 doesn't exist if you use the [community edition](https://www.graalvm.org/community/) +for GraalVM native image. + +**[2]** - Not applicable for GraalVM native image. + +**[3]** - No parallel GC on GraalVM native image. + +**[4]** - On GraalVM there is no true "old" and "eden" spaces. Everything is allocated in linked +heap chunks. + +**[5]** - No dynamic class loading on GraalVM. + +**[6]** - Possible but not implemented on GraalVM, as of Nov. 2025. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java8-703ee82d1896.md b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java8-703ee82d1896.md new file mode 100644 index 00000000..4fd455cb --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/runtime-telemetry-java8-703ee82d1896.md @@ -0,0 +1,96 @@ +# JVM Runtime Metrics + +> **Deprecated:** This module is deprecated. Use +> [`opentelemetry-runtime-telemetry`](../library/README.md) instead, which provides a unified API +> for all Java versions. + +This module provides JVM runtime metrics as documented in the +[semantic conventions](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/runtime/jvm-metrics.md). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-runtime-telemetry-java8). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-runtime-telemetry-java8 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +runtimeOnly("io.opentelemetry.instrumentation:opentelemetry-runtime-telemetry-java8:OPENTELEMETRY_VERSION") +``` + +### Usage + +Register JVM runtime metrics: + +```java +OpenTelemetry openTelemetry = // OpenTelemetry instance configured elsewhere + +RuntimeMetrics runtimeMetrics = RuntimeMetrics.create(openTelemetry); + +// When done, close to stop metric collection +runtimeMetrics.close(); +``` + +To select specific metrics, configure +[metric views](https://opentelemetry.io/docs/languages/java/sdk/#views) on the SDK to filter or +customize which metrics are exported. + +For example, using +[declarative configuration](https://github.com/open-telemetry/opentelemetry-java-examples/tree/main/declarative-configuration): + +```yaml +meter_provider: + views: + # Drop jvm.memory.committed metric + - selector: + instrument_name: jvm.memory.committed + stream: + aggregation: + drop: + # Only retain jvm.memory.type attribute on jvm.memory.used + - selector: + instrument_name: jvm.memory.used + stream: + attribute_keys: + included: + - jvm.memory.type +``` + +To retain only `jvm.memory.used` and drop all other JVM runtime metrics: + +```yaml +meter_provider: + views: + # Drop all metrics from this instrumentation scope + - selector: + meter_name: io.opentelemetry.runtime-telemetry-java8 + stream: + aggregation: + drop: + # Keep jvm.memory.used (views are additive, this creates a second stream) + - selector: + meter_name: io.opentelemetry.runtime-telemetry-java8 + instrument_name: jvm.memory.used + stream: {} +``` + +## Garbage Collector Dependent Metrics + +The attributes reported on memory metrics (`jvm.memory.*`) and GC metrics (`jvm.gc.*`) depend on the +garbage collector used by the application. See the +[runtime-telemetry library README](../../library/README.md#garbage-collector-dependent-metrics) for +details on attributes for various garbage collectors. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/rxjava-2.0-74c683fe6342.md b/ecosystem-explorer/public/data/javaagent/markdown/rxjava-2.0-74c683fe6342.md new file mode 100644 index 00000000..59f2ceb6 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/rxjava-2.0-74c683fe6342.md @@ -0,0 +1,53 @@ +# Library Instrumentation for RxJava version 2.0 and higher + +Provides OpenTelemetry instrumentation for [RxJava](https://github.com/ReactiveX/RxJava), enabling +context propagation through RxJava's execution model. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-rxjava-2.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-rxjava-2.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-rxjava-2.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +Enable RxJava instrumentation by calling `TracingAssembly.enable()` once during application startup. +This will automatically instrument all RxJava operations in your application: + +```java +import io.opentelemetry.instrumentation.rxjava.v2_0.TracingAssembly; +import io.reactivex.Observable; +import io.reactivex.Flowable; + +public class RxJavaExample { + public static void main(String[] args) { + // Enable RxJava instrumentation globally + TracingAssembly tracingAssembly = TracingAssembly.create(); + tracingAssembly.enable(); + + // All RxJava operations will now be automatically instrumented + Observable observable = Observable.just("Hello", "World"); + Flowable flowable = Flowable.just("Hello", "World"); + ... + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/rxjava-3.1.1-3fe2760c29d5.md b/ecosystem-explorer/public/data/javaagent/markdown/rxjava-3.1.1-3fe2760c29d5.md new file mode 100644 index 00000000..0d58e822 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/rxjava-3.1.1-3fe2760c29d5.md @@ -0,0 +1,53 @@ +# Library Instrumentation for RxJava version 3.1.1 and higher + +Provides OpenTelemetry instrumentation for [RxJava](https://github.com/ReactiveX/RxJava), enabling +context propagation through RxJava's execution model. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-rxjava-3.1.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-rxjava-3.1.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-rxjava-3.1.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +Enable RxJava instrumentation by calling `TracingAssembly.enable()` once during application startup. +This will automatically instrument all RxJava operations in your application: + +```java +import io.opentelemetry.instrumentation.rxjava.v3_1_1.TracingAssembly; +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.core.Flowable; + +public class RxJavaExample { + public static void main(String[] args) { + // Enable RxJava instrumentation globally + TracingAssembly tracingAssembly = TracingAssembly.create(); + tracingAssembly.enable(); + + // All RxJava operations will now be automatically instrumented + Observable observable = Observable.just("Hello", "World"); + Flowable flowable = Flowable.just("Hello", "World"); + ... + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/servlet-3.0-cfdc0ab7b319.md b/ecosystem-explorer/public/data/javaagent/markdown/servlet-3.0-cfdc0ab7b319.md new file mode 100644 index 00000000..2037b29e --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/servlet-3.0-cfdc0ab7b319.md @@ -0,0 +1,50 @@ +# Library Instrumentation for Java Servlet version 3.0 to 5.0 + +Provides OpenTelemetry instrumentation for Java Servlets through a servlet filter. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-servlet-3.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-servlet-3.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-servlet-3.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +Create telemetry producing servlet filter as shown below: + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.servlet.v3_0.ServletTelemetry; +import javax.servlet.Filter; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a ServletTelemetry instance +ServletTelemetry telemetry = ServletTelemetry.create(openTelemetry); + +// Create telemetry producing servlet filter +Filter filter = telemetry.createFilter(); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/servlet-5.0-2eb4af67ce09.md b/ecosystem-explorer/public/data/javaagent/markdown/servlet-5.0-2eb4af67ce09.md new file mode 100644 index 00000000..e7de1894 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/servlet-5.0-2eb4af67ce09.md @@ -0,0 +1,50 @@ +# Library Instrumentation for Java Servlet version 5.0 and higher + +Provides OpenTelemetry instrumentation for Java Servlets through a servlet filter. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-servlet-5.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-servlet-5.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-servlet-5.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +Create telemetry producing servlet filter as shown below: + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.servlet.v5_0.ServletTelemetry; +import jakarta.servlet.Filter; + +// ... + +// Get an OpenTelemetry instance +OpenTelemetry openTelemetry = ...; + +// Create a ServletTelemetry instance +ServletTelemetry telemetry = ServletTelemetry.create(openTelemetry); + +// Create telemetry producing servlet filter +Filter filter = telemetry.createFilter(); +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-integration-4.1-1e7a5f390454.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-integration-4.1-1e7a5f390454.md new file mode 100644 index 00000000..ac409d3d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-integration-4.1-1e7a5f390454.md @@ -0,0 +1,53 @@ +# Library Instrumentation for Spring Integration version 4.1 and higher + +Provides OpenTelemetry instrumentation for +[Spring Integration](https://spring.io/projects/spring-integration), enabling producer and consumer +messaging spans for Spring Integration. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-integration-4.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-spring-integration-4.1 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-integration-4.1:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides a `ChannelInterceptor` implementation that can be added to your +Spring Integration message channels to provide spans and context propagation. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.spring.integration.v4_1.SpringIntegrationTelemetry; +import org.springframework.messaging.support.ChannelInterceptor; + +public class SpringIntegrationConfiguration { + + // Use this ChannelInterceptor for intercepting Spring Integration message channels. + public ChannelInterceptor createInterceptor(OpenTelemetry openTelemetry) { + return SpringIntegrationTelemetry.builder(openTelemetry) + .build() + .createChannelInterceptor(); + } + + // Apply the interceptor to your message channels in your Spring configuration. +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-kafka-2.7-21188e4ea0dc.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-kafka-2.7-21188e4ea0dc.md new file mode 100644 index 00000000..737b16c7 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-kafka-2.7-21188e4ea0dc.md @@ -0,0 +1,68 @@ +# Library Instrumentation for Spring Kafka version 2.7 and higher + +Provides OpenTelemetry instrumentation for [Spring Kafka](https://spring.io/projects/spring-kafka), +enabling consumer and producer messaging spans. + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-kafka-2.7). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-spring-kafka-2.7 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```kotlin +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-kafka-2.7:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library provides interceptors that can be added to Spring Kafka message listener +containers and producers to provide spans and context propagation. + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.kafkaclients.v2_6.KafkaTelemetry; +import io.opentelemetry.instrumentation.spring.kafka.v2_7.SpringKafkaTelemetry; +import org.springframework.boot.autoconfigure.kafka.DefaultKafkaProducerFactoryCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.kafka.config.ContainerCustomizer; +import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; + +@Configuration +public class KafkaInstrumentationConfig { + + // Instrument Kafka producers + @Bean + public DefaultKafkaProducerFactoryCustomizer producerInstrumentation( + OpenTelemetry openTelemetry) { + KafkaTelemetry kafkaTelemetry = KafkaTelemetry.create(openTelemetry); + return producerFactory -> producerFactory.addPostProcessor(kafkaTelemetry::wrap); + } + + // Instrument Kafka consumers + @Bean + public ContainerCustomizer> + listenerCustomizer(OpenTelemetry openTelemetry) { + SpringKafkaTelemetry springKafkaTelemetry = SpringKafkaTelemetry.create(openTelemetry); + return container -> { + container.setRecordInterceptor(springKafkaTelemetry.createRecordInterceptor()); + container.setBatchInterceptor(springKafkaTelemetry.createBatchInterceptor()); + }; + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-security-config-6.0-f77c2211d1c5.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-security-config-6.0-f77c2211d1c5.md new file mode 100644 index 00000000..1c5b19b0 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-security-config-6.0-f77c2211d1c5.md @@ -0,0 +1,78 @@ +# OpenTelemetry Instrumentation: Spring Security Config + +Provides a Servlet `Filter` and a WebFlux `WebFilter` to capture `enduser.*` semantic attributes +from Spring Security `Authentication` objects. + +Also provides `Customizer` implementations to insert those filters into the filter chains created by +`HttpSecurity` and `ServerHttpSecurity`, respectively. + +## Usage in Spring WebMVC Applications + +When not using [automatic instrumentation](../javaagent/), you can enable enduser attribute +capturing for a `SecurityFilterChain` by appling an `EnduserAttributesHttpSecurityCustomizer` to the +`HttpSecurity` which constructs the `SecurityFilterChain`. + +```java +import io.opentelemetry.instrumentation.spring.security.config.v6_0.EnduserAttributesCapturer; +import io.opentelemetry.instrumentation.spring.security.config.v6_0.servlet.EnduserAttributesHttpSecurityCustomizer; + +@Configuration +@EnableWebSecurity +class MyWebSecurityConfig { + + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + // First, apply application related configuration to http + + // Then, apply enduser.* attribute capturing + EnduserAttributesCapturer capturer = new EnduserAttributesCapturer(); + // Set properties of capturer. Defaults shown. + capturer.setEnduserIdEnabled(false); + capturer.setEnduserRoleEnabled(false); + capturer.setEnduserScopeEnabled(false); + capturer.setRoleGrantedAuthorityPrefix("ROLE_"); + capturer.setScopeGrantedAuthorityPrefix("SCOPE_"); + + new EnduserAttributesHttpSecurityCustomizer(capturer) + .customize(http); + + return http.build(); + } +} +``` + +## Usage in Spring WebFlux Applications + +When not using [automatic instrumentation](../javaagent/), you can enable enduser attribute +capturing for a `SecurityWebFilterChain` by appling an +`EnduserAttributesServerHttpSecurityCustomizer` to the `ServerHttpSecurity` which constructs the +`SecurityWebFilterChain`. + +```java +import io.opentelemetry.instrumentation.spring.security.config.v6_0.EnduserAttributesCapturer; +import io.opentelemetry.instrumentation.spring.security.config.v6_0.webflux.EnduserAttributesServerHttpSecurityCustomizer; + +@Configuration +@EnableWebFluxSecurity +class MyWebFluxSecurityConfig { + + @Bean + public SecurityWebFilterChain filterChain(ServerHttpSecurity http) throws Exception { + // First, apply application related configuration to http + + // Then, apply enduser.* attribute capturing + EnduserAttributesCapturer capturer = new EnduserAttributesCapturer(); + // Set properties of capturer. Defaults shown. + capturer.setEnduserIdEnabled(false); + capturer.setEnduserRoleEnabled(false); + capturer.setEnduserScopeEnabled(false); + capturer.setRoleGrantedAuthorityPrefix("ROLE_"); + capturer.setScopeGrantedAuthorityPrefix("SCOPE_"); + + new EnduserAttributesServerHttpSecurityCustomizer(capturer) + .customize(http); + + return http.build(); + } +} +``` diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-web-3.1-bea40946cd7d.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-web-3.1-bea40946cd7d.md new file mode 100644 index 00000000..9e7dc588 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-web-3.1-bea40946cd7d.md @@ -0,0 +1,93 @@ +# Library Instrumentation for Spring Web version 3.1 and higher + +Provides OpenTelemetry instrumentation for Spring's RestTemplate. + +## Quickstart + +### Add these dependencies to your project + +Replace `SPRING_VERSION` with the version of spring you're using. `Minimum version: 3.1` + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-web-3.1). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-spring-web-3.1 + OPENTELEMETRY_VERSION + + + + + io.opentelemetry + opentelemetry-exporter-logging + OPENTELEMETRY_VERSION + + + + + + org.springframework + spring-web + SPRING_VERSION + + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-web-3.1:OPENTELEMETRY_VERSION") +implementation("io.opentelemetry:opentelemetry-exporter-logging:OPENTELEMETRY_VERSION") + +//this artifact should already be present in your application +implementation("org.springframework:spring-web:SPRING_VERSION") +``` + +### Features + +#### Telemetry-producing `ClientHttpRequestInterceptor` implementation + +`SpringWebTelemetry` allows creating a custom +[ClientHttpRequestInterceptor](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/ClientHttpRequestInterceptor.html) +that produces telemetry for HTTP requests sent using a `RestTemplate`. Example: + +##### Usage + +```java + +import io.opentelemetry.instrumentation.spring.web.SpringWebTelemetry; +import io.opentelemetry.api.OpenTelemetry; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.web.client.RestTemplate; + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate(OpenTelemetry openTelemetry) { + + RestTemplate restTemplate = new RestTemplate(); + SpringWebTelemetry telemetry = SpringWebTelemetry.create(openTelemetry); + restTemplate.getInterceptors().add(telemetry.createInterceptor()); + + return restTemplate; + } +} +``` + +### Starter Guide + +Check out +[OpenTelemetry Manual Instrumentation](https://opentelemetry.io/docs/instrumentation/java/manual/) +to learn more about using the OpenTelemetry API to instrument your code. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-webflux-5.3-2c795bbfeac7.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-webflux-5.3-2c795bbfeac7.md new file mode 100644 index 00000000..9982df54 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-webflux-5.3-2c795bbfeac7.md @@ -0,0 +1,90 @@ +# Library Instrumentation for Spring Webflux + +Provides OpenTelemetry instrumentation for Spring's `WebClient` and Webflux server. + +For this instrumentation, the minimum supported version of Spring Webflux is 5.3.0. + +## Add dependencies to your project + +For Maven, add to your `pom.xml`: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-spring-webflux-5.3 + OPENTELEMETRY_VERSION + + + + + org.springframework + spring-webflux + SPRING_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-webflux-5.3:OPENTELEMETRY_VERSION") + +// this artifact should already be present in your application +implementation("org.springframework:spring-webflux:SPRING_VERSION") +``` + +## Features + +`SpringWebfluxTelemetry` can emit a client span for each request sent using `WebClient` by +implementing the +[ExchangeFilterFunction](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/reactive/function/client/ExchangeFilterFunction.html) +interface. + +`SpringWebfluxTelemetry` can also emit a server span for each request received, by implementing a +`WebFilter` and using the OpenTelemetry Reactor instrumentation to ensure context is passed around +correctly. + +### Web client instrumentation + +The `WebClient` instrumentation will emit the `error.type` attribute with value `cancelled` whenever +an outgoing HTTP request is cancelled. + +### Setup + +Here is how to set up client and server instrumentation respectively: + +```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(); + } +} +``` + +## Starter Guide + +Check out +[OpenTelemetry Manual Instrumentation](https://opentelemetry.io/docs/instrumentation/java/manual/) +to learn more about using the OpenTelemetry API to instrument your code. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-5.3-5770cc89638c.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-5.3-5770cc89638c.md new file mode 100644 index 00000000..0732146d --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-5.3-5770cc89638c.md @@ -0,0 +1,94 @@ +# Library Instrumentation for Spring Web MVC version 5.3 and higher + +Provides OpenTelemetry instrumentation for Spring WebMVC controllers. + +## Quickstart + +### Add these dependencies to your project + +Replace `SPRING_VERSION` with the version of spring you're using. + +- `Minimum version: 5.3` + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-webmvc-5.3). + +For Maven add the following to your `pom.xml`: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-spring-webmvc-5.3 + OPENTELEMETRY_VERSION + + + + + + io.opentelemetry + opentelemetry-exporter-logging + OPENTELEMETRY_VERSION + + + + + + org.springframework + spring-webmvc + SPRING_VERSION + + + +``` + +For Gradle add the following to your dependencies: + +```groovy + +// OpenTelemetry instrumentation +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-webmvc-5.3:OPENTELEMETRY_VERSION") + +// OpenTelemetry exporter +// replace this default exporter with your OpenTelemetry exporter (ex. otlp/zipkin/..) +implementation("io.opentelemetry:opentelemetry-exporter-logging:OPENTELEMETRY_VERSION") + +// required to instrument Spring WebMVC +// this artifact should already be present in your application +implementation("org.springframework:spring-webmvc:SPRING_VERSION") +``` + +### Features + +#### `SpringWebMvcTelemetry` + +`SpringWebMvcTelemetry` enables creating OpenTelemetry server spans around HTTP requests processed +by the Spring servlet container. + +##### Usage in Spring Boot + +Spring Boot allows servlet `Filter`s to be registered as beans: + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.spring.webmvc.v5_3.SpringWebMvcTelemetry; +import javax.servlet.Filter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SpringWebMvcTelemetryConfiguration { + + @Bean + public Filter telemetryFilter(OpenTelemetry openTelemetry) { + return SpringWebMvcTelemetry.create(openTelemetry).createServletFilter(); + } +} +``` + +### Starter Guide + +Check out +[OpenTelemetry Manual Instrumentation](https://opentelemetry.io/docs/instrumentation/java/manual/) +to learn more about using the OpenTelemetry API to instrument your code. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-6.0-0e0850ffa500.md b/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-6.0-0e0850ffa500.md new file mode 100644 index 00000000..2e5553ed --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/spring-webmvc-6.0-0e0850ffa500.md @@ -0,0 +1,94 @@ +# Library Instrumentation for Spring Web MVC version 6.0.0 and higher + +Provides OpenTelemetry instrumentation for Spring WebMVC controllers. + +## Quickstart + +### Add these dependencies to your project + +Replace `SPRING_VERSION` with the version of spring you're using. + +- `Minimum version: 6.0.0` + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-spring-webmvc-6.0). + +For Maven add the following to your `pom.xml`: + +```xml + + + + io.opentelemetry.instrumentation + opentelemetry-spring-webmvc-6.0 + OPENTELEMETRY_VERSION + + + + + + io.opentelemetry + opentelemetry-exporter-logging + OPENTELEMETRY_VERSION + + + + + + org.springframework + spring-webmvc + SPRING_VERSION + + + +``` + +For Gradle add the following to your dependencies: + +```groovy + +// OpenTelemetry instrumentation +implementation("io.opentelemetry.instrumentation:opentelemetry-spring-webmvc-6.0:OPENTELEMETRY_VERSION") + +// OpenTelemetry exporter +// replace this default exporter with your OpenTelemetry exporter (ex. otlp/zipkin/..) +implementation("io.opentelemetry:opentelemetry-exporter-logging:OPENTELEMETRY_VERSION") + +// required to instrument Spring WebMVC +// this artifact should already be present in your application +implementation("org.springframework:spring-webmvc:SPRING_VERSION") +``` + +### Features + +#### `SpringWebMvcTelemetry` + +`SpringWebMvcTelemetry` enables creating OpenTelemetry server spans around HTTP requests processed +by the Spring servlet container. + +##### Usage in Spring Boot + +Spring Boot allows servlet `Filter`s to be registered as beans: + +```java +import io.opentelemetry.api.OpenTelemetry; +import io.opentelemetry.instrumentation.spring.webmvc.v6_0.SpringWebMvcTelemetry; +import jakarta.servlet.Filter; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class SpringWebMvcTelemetryConfiguration { + + @Bean + public Filter telemetryFilter(OpenTelemetry openTelemetry) { + return SpringWebMvcTelemetry.create(openTelemetry).createServletFilter(); + } +} +``` + +### Starter Guide + +Check out +[OpenTelemetry Manual Instrumentation](https://opentelemetry.io/docs/instrumentation/java/manual/) +to learn more about using the OpenTelemetry API to instrument your code. diff --git a/ecosystem-explorer/public/data/javaagent/markdown/vibur-dbcp-11.0-263ed08611be.md b/ecosystem-explorer/public/data/javaagent/markdown/vibur-dbcp-11.0-263ed08611be.md new file mode 100644 index 00000000..7eaf5cf8 --- /dev/null +++ b/ecosystem-explorer/public/data/javaagent/markdown/vibur-dbcp-11.0-263ed08611be.md @@ -0,0 +1,46 @@ +# Library Instrumentation for Vibur DBCP version 11.0 and higher + +Provides OpenTelemetry instrumentation for [Vibur DBCP](https://www.vibur.org/). + +## Quickstart + +### Add these dependencies to your project + +Replace `OPENTELEMETRY_VERSION` with the +[latest release](https://central.sonatype.com/artifact/io.opentelemetry.instrumentation/opentelemetry-vibur-dbcp-11.0). + +For Maven, add to your `pom.xml` dependencies: + +```xml + + + io.opentelemetry.instrumentation + opentelemetry-vibur-dbcp-11.0 + OPENTELEMETRY_VERSION + + +``` + +For Gradle, add to your dependencies: + +```groovy +implementation("io.opentelemetry.instrumentation:opentelemetry-vibur-dbcp-11.0:OPENTELEMETRY_VERSION") +``` + +### Usage + +The instrumentation library allows registering `ViburDBCPDataSource` instances for collecting +OpenTelemetry-based metrics. + +```java +ViburTelemetry viburTelemetry; + +void configure(OpenTelemetry openTelemetry, ViburDBCPDataSource viburDataSource) { + viburTelemetry = ViburTelemetry.create(openTelemetry); + viburTelemetry.registerMetrics(viburDataSource); +} + +void destroy(ViburDBCPDataSource viburDataSource) { + viburTelemetry.unregisterMetrics(viburDataSource); +} +``` diff --git a/ecosystem-explorer/public/schemas/javaagent-instrumentation.schema.json b/ecosystem-explorer/public/schemas/javaagent-instrumentation.schema.json index 4ac7fa86..c1adde52 100644 --- a/ecosystem-explorer/public/schemas/javaagent-instrumentation.schema.json +++ b/ecosystem-explorer/public/schemas/javaagent-instrumentation.schema.json @@ -257,6 +257,10 @@ "required": ["when"] } }, + "markdown_hash": { + "description": "Content hash of the library README markdown file.", + "type": "string" + }, "_is_custom": { "description": "Whether this is a custom (non-upstream) instrumentation.", "type": "boolean" @@ -278,6 +282,7 @@ "javaagent_target_versions", "configurations", "telemetry", + "markdown_hash", "_is_custom" ], "required": ["name", "scope"], diff --git a/ecosystem-explorer/src/App.test.tsx b/ecosystem-explorer/src/App.test.tsx index 37cb15c7..20a8cb7a 100644 --- a/ecosystem-explorer/src/App.test.tsx +++ b/ecosystem-explorer/src/App.test.tsx @@ -20,7 +20,7 @@ import App from "./App"; describe("App", () => { it("renders the page title", async () => { render(); - const heading = await screen.findByRole("heading", { level: 1 }); + const heading = await screen.findByRole("heading", { level: 1 }, { timeout: 5000 }); expect(heading).toHaveTextContent("OpenTelemetry"); expect(heading).toHaveTextContent("Ecosystem Explorer"); }); diff --git a/ecosystem-explorer/src/components/ui/foundation.tsx b/ecosystem-explorer/src/components/ui/foundation.tsx new file mode 100644 index 00000000..66a1cd9d --- /dev/null +++ b/ecosystem-explorer/src/components/ui/foundation.tsx @@ -0,0 +1,71 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +interface TypeStripeProps { + type: string; + className?: string; +} + +export function TypeStripe({ type, className = "" }: TypeStripeProps) { + const getColor = (t: string) => { + switch (t.toLowerCase()) { + case "receiver": + return "bg-blue-500"; + case "processor": + return "bg-purple-500"; + case "exporter": + return "bg-orange-500"; + case "connector": + return "bg-green-500"; + case "extension": + return "bg-pink-500"; + default: + return "bg-primary"; + } + }; + + return

+ ); +} diff --git a/ecosystem-explorer/src/features/list/list-page.tsx b/ecosystem-explorer/src/features/list/list-page.tsx new file mode 100644 index 00000000..5be72c7f --- /dev/null +++ b/ecosystem-explorer/src/features/list/list-page.tsx @@ -0,0 +1,234 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useMemo, useEffect, useCallback } from "react"; +import { useParams, useSearchParams } from "react-router-dom"; +import { Loader2, Search } from "lucide-react"; + +import { PageContainer } from "@/components/layout/page-container"; +import { useCollectorVersions, useCollectorIndex } from "@/hooks/use-collector-data"; +import { parseListFilters, serializeListFilters, DEFAULT_FILTERS } from "@/lib/list-filters"; +import type { ListFilters, Density, SortOption } from "@/lib/list-filters"; + +import { FacetPanel } from "./components/facet-panel"; +import { ActiveFilterChips } from "./components/active-filter-chips"; +import { CompactView } from "./components/views/compact-view"; +import { CardView } from "./components/views/card-view"; +import { TableView } from "./components/views/table-view"; +import { Pagination } from "./components/pagination"; +import { DensityToggle, SortDropdown } from "./components/list-controls"; + +const PAGE_SIZE = 50; + +export function ListPage() { + const { ecosystem = "collector", version: urlVersion } = useParams<{ + ecosystem: string; + version?: string; + }>(); + const [searchParams, setSearchParams] = useSearchParams(); + + const filters = useMemo(() => parseListFilters(searchParams), [searchParams]); + + const { data: versionData, loading: versionsLoading } = useCollectorVersions(); + + const currentVersion = useMemo(() => { + if (urlVersion) return urlVersion; + if (filters.version) return filters.version; + return versionData?.versions.find((v) => v.is_latest)?.version || ""; + }, [urlVersion, filters.version, versionData]); + + const { data: indexData, loading: indexLoading } = useCollectorIndex(currentVersion); + + const handleFilterChange = useCallback( + (updates: Partial) => { + const newFilters = { ...filters, ...updates, page: updates.page ?? 1 }; + const params = serializeListFilters(newFilters); + setSearchParams(params as Record); + }, + [filters, setSearchParams] + ); + + // Sync density to/from localStorage + useEffect(() => { + const savedDensity = localStorage.getItem("list-density") as Density; + if (savedDensity && !searchParams.has("density")) { + handleFilterChange({ density: savedDensity }); + } + }, [handleFilterChange, searchParams]); + + useEffect(() => { + if (filters.density) { + localStorage.setItem("list-density", filters.density); + } + }, [filters.density]); + + const handleRemoveFilter = (key: keyof ListFilters, value: string) => { + const current = filters[key]; + if (Array.isArray(current)) { + handleFilterChange({ [key]: current.filter((v) => v !== value) }); + } else { + handleFilterChange({ [key]: (DEFAULT_FILTERS as unknown as Record)[key] }); + } + }; + + const filteredItems = useMemo(() => { + if (!indexData) return []; + + const result = indexData.components.filter((item) => { + const matchesSearch = + !filters.q || + item.name.toLowerCase().includes(filters.q.toLowerCase()) || + item.display_name?.toLowerCase().includes(filters.q.toLowerCase()) || + item.description?.toLowerCase().includes(filters.q.toLowerCase()); + + const matchesType = filters.type.length === 0 || filters.type.includes(item.type); + const matchesStability = + filters.stability.length === 0 || + (item.stability && filters.stability.includes(item.stability)); + const matchesDistribution = + filters.distribution.length === 0 || filters.distribution.includes(item.distribution); + + return matchesSearch && matchesType && matchesStability && matchesDistribution; + }); + + // Sort + result.sort((a, b) => { + if (filters.sort === "name") { + return (a.display_name || a.name).localeCompare(b.display_name || b.name); + } + // Other sort options to be implemented when data supports them + return 0; + }); + + return result; + }, [indexData, filters]); + + const paginatedItems = useMemo(() => { + const start = (filters.page - 1) * PAGE_SIZE; + return filteredItems.slice(start, start + PAGE_SIZE); + }, [filteredItems, filters.page]); + + const totalPages = Math.ceil(filteredItems.length / PAGE_SIZE); + + if (versionsLoading || (indexLoading && !indexData)) { + return ( + +
+ +
+
+ ); + } + + const baseUrl = `/${ecosystem}/components/${currentVersion}`; + + return ( + +
+ {/* Sidebar */} + + + {/* Main Content */} +
+
+
+
+

+ Browse{" "} + + {ecosystem} + +

+
+ Showing {filteredItems.length} results +
+
+
+ handleFilterChange({ sort })} + /> + handleFilterChange({ density })} + /> +
+
+ + setSearchParams({})} + /> +
+ +
+ {paginatedItems.length > 0 ? ( + <> + {filters.density === "compact" && ( + + )} + {filters.density === "cards" && ( + + )} + {filters.density === "table" && ( + handleFilterChange({ sort: s as SortOption })} + /> + )} + + handleFilterChange({ page })} + /> + + ) : ( +
+ +

No results found

+

+ We couldn't find anything matching your current filters. Try clearing some or + searching for something else. +

+ +
+ )} +
+
+
+
+ ); +} diff --git a/ecosystem-explorer/src/hooks/use-collector-data.ts b/ecosystem-explorer/src/hooks/use-collector-data.ts index 0df2d979..3206d5c1 100644 --- a/ecosystem-explorer/src/hooks/use-collector-data.ts +++ b/ecosystem-explorer/src/hooks/use-collector-data.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { useState, useEffect } from "react"; -import type { VersionsIndex, CollectorComponent } from "@/types/collector"; +import type { VersionsIndex, CollectorComponent, CollectorIndex } from "@/types/collector"; import type { DataState } from "./data-state"; import * as collectorData from "@/lib/api/collector-data"; @@ -145,3 +145,47 @@ export function useCollectorComponent( return state; } + +export function useCollectorIndex(version: string): DataState { + const [state, setState] = useState>({ + data: null, + loading: true, + error: null, + }); + + useEffect(() => { + let cancelled = false; + + async function loadData() { + if (!version) { + setState({ data: null, loading: false, error: null }); + return; + } + + setState({ data: null, loading: true, error: null }); + + try { + const data = await collectorData.loadIndex(version); + if (!cancelled) { + setState({ data, loading: false, error: null }); + } + } catch (error) { + if (!cancelled) { + setState({ + data: null, + loading: false, + error: error instanceof Error ? error : new Error(String(error)), + }); + } + } + } + + loadData(); + + return () => { + cancelled = true; + }; + }, [version]); + + return state; +} diff --git a/ecosystem-explorer/src/lib/api/collector-data.ts b/ecosystem-explorer/src/lib/api/collector-data.ts index fd21d902..b6d2c33d 100644 --- a/ecosystem-explorer/src/lib/api/collector-data.ts +++ b/ecosystem-explorer/src/lib/api/collector-data.ts @@ -13,12 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import type { CollectorComponent, VersionManifest, VersionsIndex } from "@/types/collector"; +import type { + CollectorComponent, + CollectorIndex, + VersionManifest, + VersionsIndex, +} from "@/types/collector"; import { STORES } from "./idb-cache"; import { fetchWithCache } from "./fetch-with-cache"; const BASE_PATH = "/data/collector"; +export async function loadIndex(version: string): Promise { + const data = await fetchWithCache( + `collector-index-${version}`, + `${BASE_PATH}/versions/${version}-index.json`, + STORES.METADATA + ); + if (!data) throw new Error(`Collector index for version ${version} returned null unexpectedly`); + return data; +} + export async function loadVersions(): Promise { const data = await fetchWithCache( "collector-versions-index", diff --git a/ecosystem-explorer/src/lib/api/configuration-data.test.ts b/ecosystem-explorer/src/lib/api/configuration-data.test.ts index 9d435a7b..42a64769 100644 --- a/ecosystem-explorer/src/lib/api/configuration-data.test.ts +++ b/ecosystem-explorer/src/lib/api/configuration-data.test.ts @@ -133,7 +133,7 @@ describe("configuration-data", () => { }); await expect(configData.loadConfigSchema("1.0.0")).rejects.toThrow( - "Failed to load config-schema-1.0.0: 500 Internal Server Error" + "Failed to load config-schema-1.0.0 from /data/configuration/versions/1.0.0.json: 500 Internal Server Error" ); }); }); diff --git a/ecosystem-explorer/src/lib/api/fetch-with-cache.test.ts b/ecosystem-explorer/src/lib/api/fetch-with-cache.test.ts index bde11374..41ccf056 100644 --- a/ecosystem-explorer/src/lib/api/fetch-with-cache.test.ts +++ b/ecosystem-explorer/src/lib/api/fetch-with-cache.test.ts @@ -72,7 +72,7 @@ describe("fetchWithCache", () => { }); await expect(fetchWithCache("key", "/url", idbCache.STORES.METADATA)).rejects.toThrow( - "Failed to load key: 404 Not Found" + "Failed to load key from /url: 404 Not Found" ); }); diff --git a/ecosystem-explorer/src/lib/api/fetch-with-cache.ts b/ecosystem-explorer/src/lib/api/fetch-with-cache.ts index efcec54e..0830c972 100644 --- a/ecosystem-explorer/src/lib/api/fetch-with-cache.ts +++ b/ecosystem-explorer/src/lib/api/fetch-with-cache.ts @@ -19,6 +19,7 @@ const inflightRequests = new Map>(); export interface FetchWithCacheOptions { allow404?: boolean; + format?: "json" | "text"; /** * Optional validator for cached data. When provided, cached data that fails * validation is ignored for the current request and a fresh network request @@ -61,10 +62,13 @@ export async function fetchWithCache( if (response.status === 404 && options?.allow404) { return null; } - throw new Error(`Failed to load ${cacheKey}: ${response.status} ${response.statusText}`); + throw new Error( + `Failed to load ${cacheKey} from ${url}: ${response.status} ${response.statusText}` + ); } - const data = await response.json(); + const format = options?.format ?? "json"; + const data = format === "json" ? await response.json() : await response.text(); if (isIDBAvailable()) { try { diff --git a/ecosystem-explorer/src/lib/api/javaagent-data.test.ts b/ecosystem-explorer/src/lib/api/javaagent-data.test.ts index e23c95cc..32916a24 100644 --- a/ecosystem-explorer/src/lib/api/javaagent-data.test.ts +++ b/ecosystem-explorer/src/lib/api/javaagent-data.test.ts @@ -47,9 +47,10 @@ describe("javaagent-data", () => { }, }; - beforeEach(() => { + beforeEach(async () => { vi.resetAllMocks(); global.fetch = vi.fn(); + await idbCache.clearAllCached(); idbCache.closeDB(); }); @@ -102,7 +103,7 @@ describe("javaagent-data", () => { }); await expect(javaagentData.loadVersions()).rejects.toThrow( - "Failed to load versions-index: 404 Not Found" + /Failed to load versions-index from .*: 404 Not Found/ ); }); @@ -317,4 +318,33 @@ describe("javaagent-data", () => { expect(result).toEqual([]); }); }); + + describe("loadLibraryReadme", () => { + it("should load library README markdown", async () => { + const content = "# My Library README"; + (global.fetch as ReturnType).mockResolvedValue({ + ok: true, + text: async () => content, + }); + + const result = await javaagentData.loadLibraryReadme("mylib", "abc123def456"); + + expect(result).toBe(content); + expect(global.fetch).toHaveBeenCalledWith( + expect.stringContaining("/markdown/mylib-abc123def456.md") + ); + }); + + it("should propagate fetch errors when loading README", async () => { + (global.fetch as ReturnType).mockResolvedValue({ + ok: false, + status: 404, + statusText: "Not Found", + }); + + await expect(javaagentData.loadLibraryReadme("mylib", "abc123def456")).rejects.toThrow( + /Failed to load readme-mylib-abc123def456 from.*: 404 Not Found/ + ); + }); + }); }); diff --git a/ecosystem-explorer/src/lib/api/javaagent-data.ts b/ecosystem-explorer/src/lib/api/javaagent-data.ts index 2684b735..eea1db74 100644 --- a/ecosystem-explorer/src/lib/api/javaagent-data.ts +++ b/ecosystem-explorer/src/lib/api/javaagent-data.ts @@ -87,3 +87,20 @@ export async function loadAllInstrumentations(version: string): Promise { + const url = `${BASE_PATH}/markdown/${libraryName}-${markdownHash}.md`; + const data = await fetchWithCache( + `readme-${libraryName}-${markdownHash}`, + url, + STORES.METADATA, + { format: "text" } + ); + if (data === null) { + throw new Error(`README for ${libraryName} returned null unexpectedly`); + } + return data; +} diff --git a/ecosystem-explorer/src/lib/list-filters.test.ts b/ecosystem-explorer/src/lib/list-filters.test.ts new file mode 100644 index 00000000..cc8b07a5 --- /dev/null +++ b/ecosystem-explorer/src/lib/list-filters.test.ts @@ -0,0 +1,113 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, it, expect } from "vitest"; +import { parseListFilters, serializeListFilters, DEFAULT_FILTERS } from "./list-filters"; + +describe("list-filters", () => { + describe("parseListFilters", () => { + it("should parse empty params as defaults", () => { + const params = new URLSearchParams(); + expect(parseListFilters(params)).toEqual(DEFAULT_FILTERS); + }); + + it("should parse search query", () => { + const params = new URLSearchParams("q=test"); + const filters = parseListFilters(params); + expect(filters.q).toBe("test"); + }); + + it("should parse multi-value facets", () => { + const params = new URLSearchParams("type=receiver&type=processor&signal=traces"); + const filters = parseListFilters(params); + expect(filters.type).toEqual(["receiver", "processor"]); + expect(filters.signal).toEqual(["traces"]); + }); + + it("should parse stability and distribution", () => { + const params = new URLSearchParams("stability=stable&distribution=core"); + const filters = parseListFilters(params); + expect(filters.stability).toEqual(["stable"]); + expect(filters.distribution).toEqual(["core"]); + }); + + it("should parse sort, density and page", () => { + const params = new URLSearchParams("sort=updated&density=table&page=3"); + const filters = parseListFilters(params); + expect(filters.sort).toBe("updated"); + expect(filters.density).toBe("table"); + expect(filters.page).toBe(3); + }); + + it("should ignore invalid sort or density values", () => { + const params = new URLSearchParams("sort=invalid&density=massive"); + const filters = parseListFilters(params); + expect(filters.sort).toBe(DEFAULT_FILTERS.sort); + expect(filters.density).toBe(DEFAULT_FILTERS.density); + }); + + it("should ignore invalid page values", () => { + const params = new URLSearchParams("page=not-a-number"); + const filters = parseListFilters(params); + expect(filters.page).toBe(DEFAULT_FILTERS.page); + + const params2 = new URLSearchParams("page=-5"); + const filters2 = parseListFilters(params2); + expect(filters2.page).toBe(DEFAULT_FILTERS.page); + }); + }); + + describe("serializeListFilters", () => { + it("should serialize to empty object if all are defaults", () => { + expect(serializeListFilters(DEFAULT_FILTERS)).toEqual({}); + }); + + it("should serialize changed filters", () => { + const filters = { + ...DEFAULT_FILTERS, + q: "otel", + type: ["receiver"], + density: "table" as const, + }; + const params = serializeListFilters(filters); + expect(params).toEqual({ + q: "otel", + type: ["receiver"], + density: "table", + }); + }); + + it("should serialize multi-value facets as arrays", () => { + const filters = { + ...DEFAULT_FILTERS, + type: ["receiver", "processor"], + }; + const params = serializeListFilters(filters); + expect(params).toEqual({ + type: ["receiver", "processor"], + }); + }); + + it("should not include defaults in serialization", () => { + const filters = { + ...DEFAULT_FILTERS, + page: 1, // default + sort: "name" as const, // default + }; + expect(serializeListFilters(filters)).toEqual({}); + }); + }); +}); diff --git a/ecosystem-explorer/src/lib/list-filters.ts b/ecosystem-explorer/src/lib/list-filters.ts new file mode 100644 index 00000000..bc6a5704 --- /dev/null +++ b/ecosystem-explorer/src/lib/list-filters.ts @@ -0,0 +1,128 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export type Density = "cards" | "compact" | "table"; +export type SortOption = "name" | "updated" | "stability"; + +export interface ListFilters { + q: string; + type: string[]; + signal: string[]; + stability: string[]; + distribution: string[]; + version: string | null; + sort: SortOption; + density: Density; + page: number; +} + +export const DEFAULT_FILTERS: ListFilters = { + q: "", + type: [], + signal: [], + stability: [], + distribution: [], + version: null, + sort: "name", + density: "compact", + page: 1, +}; + +/** + * Parses URLSearchParams into a typed ListFilters object. + * Multiple values for the same key (e.g. ?type=receiver&type=processor) + * are correctly parsed into arrays. + */ +export function parseListFilters(searchParams: URLSearchParams): ListFilters { + const filters: ListFilters = { ...DEFAULT_FILTERS }; + + const q = searchParams.get("q"); + if (q !== null) filters.q = q; + + filters.type = searchParams.getAll("type"); + filters.signal = searchParams.getAll("signal"); + filters.stability = searchParams.getAll("stability"); + filters.distribution = searchParams.getAll("distribution"); + + const version = searchParams.get("version"); + if (version !== null) filters.version = version; + + const sort = searchParams.get("sort") as SortOption; + if (["name", "updated", "stability"].includes(sort)) { + filters.sort = sort; + } + + const density = searchParams.get("density") as Density; + if (["cards", "compact", "table"].includes(density)) { + filters.density = density; + } + + const pageStr = searchParams.get("page"); + if (pageStr) { + const page = parseInt(pageStr, 10); + if (!isNaN(page) && page > 0) { + filters.page = page; + } + } + + return filters; +} + +/** + * Serializes a ListFilters object into a record suitable for URLSearchParams. + * Only non-default values are included to keep the URL clean. + */ +export function serializeListFilters(filters: ListFilters): Record { + const params: Record = {}; + + if (filters.q !== DEFAULT_FILTERS.q) { + params.q = filters.q; + } + + if (filters.type.length > 0) { + params.type = filters.type; + } + + if (filters.signal.length > 0) { + params.signal = filters.signal; + } + + if (filters.stability.length > 0) { + params.stability = filters.stability; + } + + if (filters.distribution.length > 0) { + params.distribution = filters.distribution; + } + + if (filters.version !== DEFAULT_FILTERS.version && filters.version !== null) { + params.version = filters.version; + } + + if (filters.sort !== DEFAULT_FILTERS.sort) { + params.sort = filters.sort; + } + + if (filters.density !== DEFAULT_FILTERS.density) { + params.density = filters.density; + } + + if (filters.page !== DEFAULT_FILTERS.page) { + params.page = filters.page.toString(); + } + + return params; +} diff --git a/ecosystem-explorer/src/types/javaagent.ts b/ecosystem-explorer/src/types/javaagent.ts index e1d75cae..551dcde2 100644 --- a/ecosystem-explorer/src/types/javaagent.ts +++ b/ecosystem-explorer/src/types/javaagent.ts @@ -62,6 +62,8 @@ export interface InstrumentationData { configurations?: Configuration[]; /** Telemetry emitted by this instrumentation under specific conditions. */ telemetry?: Telemetry[]; + /** Content hash of the library README markdown file. */ + markdown_hash?: string; /** Whether this is a custom (non-upstream) instrumentation. */ _is_custom?: boolean; }