@arizeai/phoenix-otel 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/esm/createNoOpProvider.d.ts +6 -0
  2. package/dist/esm/createNoOpProvider.d.ts.map +1 -0
  3. package/dist/esm/createNoOpProvider.js +9 -0
  4. package/dist/esm/createNoOpProvider.js.map +1 -0
  5. package/dist/esm/index.d.ts +5 -2
  6. package/dist/esm/index.d.ts.map +1 -1
  7. package/dist/esm/index.js +5 -2
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/register.d.ts +13 -1
  10. package/dist/esm/register.d.ts.map +1 -1
  11. package/dist/esm/register.js +9 -2
  12. package/dist/esm/register.js.map +1 -1
  13. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  14. package/dist/esm/utils.d.ts +3 -0
  15. package/dist/esm/utils.d.ts.map +1 -0
  16. package/dist/esm/utils.js +4 -0
  17. package/dist/esm/utils.js.map +1 -0
  18. package/dist/src/createNoOpProvider.d.ts +6 -0
  19. package/dist/src/createNoOpProvider.d.ts.map +1 -0
  20. package/dist/src/createNoOpProvider.js +12 -0
  21. package/dist/src/createNoOpProvider.js.map +1 -0
  22. package/dist/src/index.d.ts +5 -2
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +21 -3
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/register.d.ts +13 -1
  27. package/dist/src/register.d.ts.map +1 -1
  28. package/dist/src/register.js +9 -2
  29. package/dist/src/register.js.map +1 -1
  30. package/dist/src/utils.d.ts +3 -0
  31. package/dist/src/utils.d.ts.map +1 -0
  32. package/dist/src/utils.js +7 -0
  33. package/dist/src/utils.js.map +1 -0
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
  36. package/src/createNoOpProvider.ts +10 -0
  37. package/src/index.ts +13 -2
  38. package/src/register.ts +21 -1
  39. package/src/utils.ts +9 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arizeai/phoenix-otel",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Otel registration and convenience methods",
5
5
  "main": "dist/src/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -0,0 +1,10 @@
1
+ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
2
+
3
+ /**
4
+ * For dry runs we create a provider that doesn't export traces.
5
+ */
6
+ export function createNoOpProvider() {
7
+ const provider = new NodeTracerProvider({});
8
+
9
+ return provider;
10
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,15 @@
1
- export { trace } from "@opentelemetry/api";
1
+ export {
2
+ trace,
3
+ context,
4
+ type DiagLogLevel,
5
+ type Tracer,
6
+ SpanStatusCode,
7
+ } from "@opentelemetry/api";
2
8
  export { registerInstrumentations } from "@opentelemetry/instrumentation";
3
- export { type RegisterParams, register } from "./register";
4
9
  export { type Instrumentation } from "@opentelemetry/instrumentation";
10
+ export { type NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
11
+
12
+ // Phoenix abstractions
13
+ export * from "./createNoOpProvider";
14
+ export * from "./register";
15
+ export * from "./utils";
package/src/register.ts CHANGED
@@ -14,6 +14,9 @@ import {
14
14
  Instrumentation,
15
15
  registerInstrumentations,
16
16
  } from "@opentelemetry/instrumentation";
17
+ import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
18
+
19
+ export type Headers = Record<string, string>;
17
20
 
18
21
  /**
19
22
  * Configuration parameters for registering Phoenix OpenTelemetry tracing
@@ -35,6 +38,10 @@ export type RegisterParams = {
35
38
  * If not provided, environment variables are checked.
36
39
  */
37
40
  apiKey?: string;
41
+ /**
42
+ * Headers to be used when communicating with the OTLP collector
43
+ */
44
+ headers?: Headers;
38
45
  /**
39
46
  * Whether to use batching for span processing.
40
47
  * It is recommended to use batching in production environments
@@ -51,6 +58,11 @@ export type RegisterParams = {
51
58
  * @default true
52
59
  */
53
60
  global?: boolean;
61
+ /**
62
+ * The diag log level to set for the built in DiagConsoleLogger instance.
63
+ * Omit to disable built in logging.
64
+ */
65
+ diagLogLevel?: DiagLogLevel;
54
66
  };
55
67
 
56
68
  /**
@@ -63,6 +75,7 @@ export type RegisterParams = {
63
75
  * @param params.instrumentations - A list of instrumentation to register
64
76
  * @param params.batch - Whether to use batching for span processing
65
77
  * @param params.global - Whether to set the tracer as a global provider
78
+ * @param params.diagLogLevel - the diagnostics log level
66
79
  * @returns {NodeTracerProvider} The configured NodeTracerProvider instance
67
80
  *
68
81
  * @example
@@ -80,16 +93,23 @@ export type RegisterParams = {
80
93
  export function register({
81
94
  url: paramsUrl,
82
95
  apiKey: paramsApiKey,
96
+ headers: paramsHeaders = {},
83
97
  projectName = "default",
84
98
  instrumentations,
85
99
  batch = true,
86
100
  global = true,
101
+ diagLogLevel,
87
102
  }: RegisterParams): NodeTracerProvider {
103
+ if (diagLogLevel) {
104
+ diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
105
+ }
88
106
  const url = ensureCollectorEndpoint(
89
107
  paramsUrl || getEnvCollectorURL() || "http://localhost:6006"
90
108
  );
91
109
  const apiKey = paramsApiKey || getEnvApiKey();
92
- const headers: Record<string, string> = {};
110
+ const headers: Headers = Array.isArray(paramsHeaders)
111
+ ? Object.fromEntries(paramsHeaders)
112
+ : paramsHeaders;
93
113
  const configureHeaders = typeof apiKey == "string";
94
114
  if (configureHeaders) {
95
115
  headers["authorization"] = `Bearer ${apiKey}`;
package/src/utils.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { AttributeValue } from "@opentelemetry/api";
2
+
3
+ export function objectAsAttributes<T extends Record<string, unknown>>(
4
+ obj: T
5
+ ): Record<string, AttributeValue> {
6
+ return Object.fromEntries(
7
+ Object.entries(obj).filter(([_, value]) => value !== null)
8
+ ) as Record<string, AttributeValue>;
9
+ }