{"ref":"artifact:saptools-cf-otel","page":"/artifacts/saptools-cf-otel","json":"/artifacts/saptools-cf-otel.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"saptools-cf-otel","name":"@saptools/cf-otel","artifact_type":"cli","ecosystem":"btp","domain":"operations-and-runtime","origin_ring":"independent","description":{"one_line":"A read-only command line that queries the OpenTelemetry trace spans [SAP Cloud Logging](artifact:btp-cloud-logging) has already ingested and ranks the spans of a trace by self-time.","short":"Read-only query tool for OpenTelemetry spans in SAP Cloud Logging","what_it_solves":"Finding where the time in a slow request went means reading spans out of the OpenSearch index behind [SAP Cloud Logging](artifact:btp-cloud-logging), `otel-v1-apm-span-*`. This command line logs in with the `cf` CLI, finds a dashboards basic-auth credential on the Cloud Logging instance from existing service keys or an app binding made before SAML was switched on, and then answers queries: `find` locates traces by service, time or attribute, or from the `vcapRequestId` on a [@saptools/cf-logs](artifact:saptools-cf-logs) row, `selftime` ranks a trace's spans by self-time, and `diff` compares two traces. It never instruments an app, so it reads only spans already exported to Cloud Logging, and those reach the index a few seconds after the request. Minting a new credential means switching SAML off on the instance for a moment, which it does only behind `--allow-mint-credential`."},"links":{"npm":"https://www.npmjs.com/package/@saptools/cf-otel","repo":"https://github.com/dongitran/saptools","docs":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/README.md"},"identity":{"author":"dongitran","license":"MIT"},"compat":{"deployment":["cf"]},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/dongitran/saptools","title":"@saptools/cf-otel — README","checked":"2026-10-18","quote":"npm install -g @saptools/cf-otel"}]}},"provides":["capability:telemetry"],"requires":[{"ref":"artifact:btp-cloud-logging","for":"Every query reads the trace spans stored in the OpenSearch backend of a Cloud Logging instance, through a dashboards credential found on that instance.","sources":[{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/README.md","title":"dongitran/saptools — packages/cf-otel/README.md","checked":"2026-10-15","quote":"Query and analyze OpenTelemetry trace spans already ingested into SAP Cloud Logging's"}]}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-10-15"},"maintainers":["actor:dong-tran"],"contributors":["actor:dong-tran"],"drafted_with_ai":true,"changed_in":[{"version":"0.10.0","date":"2026-09-13","what_changed":"The dashboards credential on the Cloud Logging instance is found through the Cloud Foundry v3 API instead of by parsing `cf services`, `cf service-keys` and `cf env`, and it is cached on disk until it expires or OpenSearch rejects it; `CF_OTEL_CREDENTIAL_CACHE=0` turns the cache off.","source":{"url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#0100","title":"@saptools/cf-otel changelog, 0.10.0","checked":"2026-10-19","quote":"An on-disk dashboards-credential cache (`CF_OTEL_CREDENTIAL_CACHE=0` to opt out)"}}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"1 month since release"},{"label":"Continuity","tier":"fair","evidence":"2 contributors, 1 publisher"},{"label":"Repository","tier":"good","evidence":"pushed 2026-09, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no BTP release lines in the atlas"},{"label":"Maintainer's CI","tier":"good","evidence":"CodeQL Security Scan green, 2026-09-18"}],"practice":[{"label":"Tests","tier":"good","evidence":"679 test files"},{"label":"Docs","tier":"good","evidence":"docs site, README 14 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":13,"unit":"installs/week"},{"value":3,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-25","latest_version":"0.10.1","majors":{"0.1":{"version":"0.1.0","date":"2026-08-29"},"0.2":{"version":"0.2.0","date":"2026-09-02"},"0.3":{"version":"0.3.0","date":"2026-09-03"},"0.4":{"version":"0.4.0","date":"2026-09-03"},"0.5":{"version":"0.5.0","date":"2026-09-03"},"0.6":{"version":"0.6.0","date":"2026-09-03"},"0.7":{"version":"0.7.0","date":"2026-09-04"},"0.8":{"version":"0.8.0","date":"2026-09-05"},"0.9":{"version":"0.9.0","date":"2026-09-12"},"0.10":{"version":"0.10.0","date":"2026-09-13"}},"license":"MIT","first_release":"2026-08-29","last_release":"2026-09-13","releases":15,"cadence_days":0,"maintainers":1,"repository":"git+https://github.com/dongitran/saptools.git","repository_directory":"packages/cf-otel","peer_cds":null,"dependencies":1,"node_engine":">=20.0.0","test_script":false,"types":true,"downloads_weekly":13,"downloads_monthly":66,"stars":3,"forks":0,"open_issues":1,"archived":false,"pushed_at":"2026-09-18","license_spdx":null,"org_owned":false,"default_branch":"main","created_at":"2026-04-03T14:04:40Z","open_prs":1,"tree_truncated":false,"test_files":679,"workflows":33,"other_ci":false,"readme_bytes":14020,"docs_files":0,"changelog":false,"license_file":false,"dts_files":2,"first_commit":"2026-08-29","last_commit":"2026-09-13","commits":21,"contributors":2,"ci_status":"success","ci_run_at":"2026-09-18","ci_workflow":"CodeQL Security Scan","ci_event":"push","readme_path":"packages/cf-otel/README.md","readme_sha":"c6d78c2131ebe100b9a0a98d24f2469c56480d42","months_since_release":1,"dormant":false,"repo_read":"2026-10-25"},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"npm","path":"CHANGELOG.md","version":"0.10.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md"},"format":"headings","releases":[{"version":"0.10.1","date":"2026-09-13","date_source":"registry","heading":"0.10.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#0101","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"563251062bfee795"},{"version":"0.10.0","date":"2026-09-13","date_source":"registry","heading":"0.10.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#0100","sections":[{"kind":"change","heading":"Changed","items":1},{"kind":"feature","heading":"Added","items":1},{"kind":"fix","heading":"Fixed","items":2},{"kind":"removal","heading":"Removed","items":1}],"hash":"ed485f89689729f4","cited_by":[{"version":"0.10.0","date":"2026-09-13"}]},{"version":"0.9.0","date":"2026-09-12","date_source":"registry","heading":"0.9.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#090","sections":[{"kind":"fix","heading":"Fixed","items":10}],"hash":"ac58ab6f3c32bfdf"},{"version":"0.8.0","date":"2026-09-05","date_source":"registry","heading":"0.8.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#080","sections":[{"kind":"fix","heading":"Fixed","items":4},{"kind":"change","heading":"Changed","items":1}],"hash":"b10228995bd013e7"},{"version":"0.7.1","date":"2026-09-04","date_source":"registry","heading":"0.7.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#071","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"523f1fec25d37aca"},{"version":"0.7.0","date":"2026-09-04","date_source":"registry","heading":"0.7.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#070","sections":[{"kind":"fix","heading":"Fixed","items":6},{"kind":"feature","heading":"Added","items":2},{"kind":"change","heading":"Changed","items":3}],"hash":"6074f6be72f42365"},{"version":"0.6.0","date":"2026-09-03","date_source":"registry","heading":"0.6.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#060","sections":[{"kind":"fix","heading":"Fixed","items":6},{"kind":"change","heading":"Changed","items":1},{"kind":"other","heading":"Known limitations","items":3}],"hash":"a83c7d134d76a248"},{"version":"0.5.0","date":"2026-09-03","date_source":"registry","heading":"0.5.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#050","sections":[{"kind":"fix","heading":"Fixed","items":12},{"kind":"change","heading":"Changed","items":3}],"hash":"742f0d58d6eb91d7"},{"version":"0.4.0","date":"2026-09-03","date_source":"registry","heading":"0.4.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#040","sections":[{"kind":"fix","heading":"Fixed","items":3}],"hash":"a3588d6ab68ee47b"},{"version":"0.3.0","date":"2026-09-03","date_source":"registry","heading":"0.3.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#030","sections":[{"kind":"other","heading":null,"items":5}],"hash":"5866aaf84dee7b67"},{"version":"0.2.1","date":"2026-09-03","date_source":"registry","heading":"0.2.1","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#021","sections":[{"kind":"other","heading":null,"items":6}],"hash":"d6a044f5de731b41"},{"version":"0.2.0","date":"2026-09-02","date_source":"registry","heading":"0.2.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#020","sections":[{"kind":"other","heading":null,"items":1}],"hash":"cd10665fb894c308"},{"version":"0.1.2","date":"2026-08-29","date_source":"heading","heading":"0.1.2 - 2026-08-29","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#012---2026-08-29","sections":[{"kind":"other","heading":null,"items":4}],"hash":"5e66b5a3887b078c"},{"version":"0.1.1","date":"2026-08-29","date_source":"heading","heading":"0.1.1 - 2026-08-29","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#011---2026-08-29","sections":[{"kind":"other","heading":null,"items":8}],"hash":"c1104bc0eebaeea4"},{"version":"0.1.0","date":"2026-08-29","date_source":"registry","heading":"0.1.0","url":"https://github.com/dongitran/saptools/blob/main/packages/cf-otel/CHANGELOG.md#010","sections":[{"kind":"other","heading":null,"items":6}],"hash":"0e8681e2686044c6"}],"versions":[{"version":"0.10.1","date":"2026-09-13"},{"version":"0.10.0","date":"2026-09-13"},{"version":"0.9.0","date":"2026-09-12"},{"version":"0.8.0","date":"2026-09-05"},{"version":"0.7.1","date":"2026-09-04"},{"version":"0.7.0","date":"2026-09-04"},{"version":"0.6.0","date":"2026-09-03"},{"version":"0.5.0","date":"2026-09-03"},{"version":"0.4.0","date":"2026-09-03"},{"version":"0.3.0","date":"2026-09-03"},{"version":"0.2.1","date":"2026-09-03"},{"version":"0.2.0","date":"2026-09-02"},{"version":"0.1.2","date":"2026-08-29"},{"version":"0.1.1","date":"2026-08-29"},{"version":"0.1.0","date":"2026-08-29"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"contributors":[{"ref":"actor:dong-tran","name":"Đông Trần","json":"/actors/dong-tran.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}