@ogcio/o11y-sdk-node 0.1.0-beta.4 → 0.1.0-beta.7

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 (71) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/README.md +59 -0
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.js +1 -0
  5. package/dist/lib/exporter/console.d.ts +3 -0
  6. package/dist/lib/exporter/console.js +16 -0
  7. package/dist/lib/exporter/grpc.d.ts +3 -0
  8. package/dist/lib/{grpc.js → exporter/grpc.js} +9 -5
  9. package/dist/lib/exporter/http.d.ts +3 -0
  10. package/dist/lib/{http.js → exporter/http.js} +9 -5
  11. package/dist/lib/index.d.ts +28 -5
  12. package/dist/lib/instrumentation.node.js +37 -7
  13. package/dist/lib/options.d.ts +5 -3
  14. package/dist/lib/processor/enrich-span-processor.d.ts +11 -0
  15. package/dist/lib/processor/enrich-span-processor.js +22 -0
  16. package/dist/lib/traces.d.ts +1 -0
  17. package/dist/lib/traces.js +4 -0
  18. package/dist/lib/url-sampler.d.ts +10 -0
  19. package/dist/lib/url-sampler.js +25 -0
  20. package/dist/lib/utils.d.ts +4 -2
  21. package/dist/lib/utils.js +8 -3
  22. package/dist/package.json +20 -17
  23. package/dist/vitest.config.js +15 -1
  24. package/index.ts +2 -2
  25. package/lib/exporter/console.ts +27 -0
  26. package/lib/{grpc.ts → exporter/grpc.ts} +13 -7
  27. package/lib/{http.ts → exporter/http.ts} +13 -7
  28. package/lib/index.ts +36 -4
  29. package/lib/instrumentation.node.ts +59 -9
  30. package/lib/options.ts +5 -3
  31. package/lib/processor/enrich-span-processor.ts +39 -0
  32. package/lib/traces.ts +5 -0
  33. package/lib/url-sampler.ts +52 -0
  34. package/lib/utils.ts +16 -4
  35. package/package.json +20 -17
  36. package/test/enrich-span-processor.test.ts +105 -0
  37. package/test/index.test.ts +9 -0
  38. package/test/integration/README.md +26 -0
  39. package/test/integration/integration.test.ts +58 -0
  40. package/test/integration/run.sh +85 -0
  41. package/test/node-config.test.ts +49 -36
  42. package/test/url-sampler.test.ts +215 -0
  43. package/test/utils/alloy-log-parser.ts +46 -0
  44. package/vitest.config.ts +15 -1
  45. package/coverage/cobertura-coverage.xml +0 -310
  46. package/coverage/lcov-report/base.css +0 -224
  47. package/coverage/lcov-report/block-navigation.js +0 -87
  48. package/coverage/lcov-report/favicon.png +0 -0
  49. package/coverage/lcov-report/index.html +0 -131
  50. package/coverage/lcov-report/prettify.css +0 -1
  51. package/coverage/lcov-report/prettify.js +0 -2
  52. package/coverage/lcov-report/sdk-node/index.html +0 -116
  53. package/coverage/lcov-report/sdk-node/index.ts.html +0 -112
  54. package/coverage/lcov-report/sdk-node/lib/console.ts.html +0 -130
  55. package/coverage/lcov-report/sdk-node/lib/grpc.ts.html +0 -178
  56. package/coverage/lcov-report/sdk-node/lib/http.ts.html +0 -190
  57. package/coverage/lcov-report/sdk-node/lib/index.html +0 -221
  58. package/coverage/lcov-report/sdk-node/lib/index.ts.html +0 -256
  59. package/coverage/lcov-report/sdk-node/lib/instrumentation.node.ts.html +0 -334
  60. package/coverage/lcov-report/sdk-node/lib/metrics.ts.html +0 -295
  61. package/coverage/lcov-report/sdk-node/lib/options.ts.html +0 -106
  62. package/coverage/lcov-report/sdk-node/lib/utils.ts.html +0 -115
  63. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  64. package/coverage/lcov-report/sorter.js +0 -196
  65. package/coverage/lcov.info +0 -312
  66. package/dist/lib/console.d.ts +0 -3
  67. package/dist/lib/console.js +0 -12
  68. package/dist/lib/grpc.d.ts +0 -3
  69. package/dist/lib/http.d.ts +0 -3
  70. package/lib/console.ts +0 -15
  71. package/test-report.xml +0 -71
@@ -1,256 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for sdk-node/lib/index.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">sdk-node/lib</a> index.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>0/0</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>1/1</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>0/0</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line low'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
124
- <span class="cline-any cline-neutral">&nbsp;</span>
125
- <span class="cline-any cline-neutral">&nbsp;</span>
126
- <span class="cline-any cline-neutral">&nbsp;</span>
127
- <span class="cline-any cline-neutral">&nbsp;</span>
128
- <span class="cline-any cline-neutral">&nbsp;</span>
129
- <span class="cline-any cline-neutral">&nbsp;</span>
130
- <span class="cline-any cline-neutral">&nbsp;</span>
131
- <span class="cline-any cline-neutral">&nbsp;</span>
132
- <span class="cline-any cline-neutral">&nbsp;</span>
133
- <span class="cline-any cline-neutral">&nbsp;</span>
134
- <span class="cline-any cline-neutral">&nbsp;</span>
135
- <span class="cline-any cline-neutral">&nbsp;</span>
136
- <span class="cline-any cline-neutral">&nbsp;</span>
137
- <span class="cline-any cline-neutral">&nbsp;</span>
138
- <span class="cline-any cline-neutral">&nbsp;</span>
139
- <span class="cline-any cline-neutral">&nbsp;</span>
140
- <span class="cline-any cline-neutral">&nbsp;</span>
141
- <span class="cline-any cline-neutral">&nbsp;</span>
142
- <span class="cline-any cline-neutral">&nbsp;</span>
143
- <span class="cline-any cline-neutral">&nbsp;</span>
144
- <span class="cline-any cline-neutral">&nbsp;</span>
145
- <span class="cline-any cline-neutral">&nbsp;</span>
146
- <span class="cline-any cline-neutral">&nbsp;</span>
147
- <span class="cline-any cline-neutral">&nbsp;</span>
148
- <span class="cline-any cline-neutral">&nbsp;</span>
149
- <span class="cline-any cline-neutral">&nbsp;</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-neutral">&nbsp;</span>
162
- <span class="cline-any cline-neutral">&nbsp;</span>
163
- <span class="cline-any cline-neutral">&nbsp;</span>
164
- <span class="cline-any cline-neutral">&nbsp;</span>
165
- <span class="cline-any cline-neutral">&nbsp;</span>
166
- <span class="cline-any cline-neutral">&nbsp;</span>
167
- <span class="cline-any cline-neutral">&nbsp;</span>
168
- <span class="cline-any cline-neutral">&nbsp;</span>
169
- <span class="cline-any cline-neutral">&nbsp;</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-neutral">&nbsp;</span>
172
- <span class="cline-any cline-neutral">&nbsp;</span>
173
- <span class="cline-any cline-neutral">&nbsp;</span>
174
- <span class="cline-any cline-neutral">&nbsp;</span>
175
- <span class="cline-any cline-neutral">&nbsp;</span>
176
- <span class="cline-any cline-neutral">&nbsp;</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-neutral">&nbsp;</span>
179
- <span class="cline-any cline-neutral">&nbsp;</span>
180
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">interface SDKConfig {
181
- /**
182
- * The opentelemetry collector entrypoint GRPC url.
183
- * If the collectoUrl is null or undefined, the instrumentation will not be activated.
184
- * @example http://alloy:4317
185
- */
186
- collectorUrl: string;
187
- /**
188
- * Name of your application used for the collector to group logs
189
- */
190
- serviceName?: string;
191
- /**
192
- * Diagnostic log level for the internal runtime instrumentation
193
- *
194
- * @type string
195
- * @default INFO
196
- */
197
- diagLogLevel?: SDKLogLevel;
198
- /**
199
- * Collector signals processing mode.
200
- * signle: makes an http/grpc request for each signal and it is immediately processed inside grafana
201
- * batch: sends multiple signals within a time window, optimized to reduce http/grpc calls in production
202
- *
203
- * @type string
204
- * @default batch
205
- */
206
- collectorMode?: SDKCollectorMode;
207
- }
208
- &nbsp;
209
- export interface NodeSDKConfig extends SDKConfig {
210
- /**
211
- * Flag to enable or disable the tracing for node:fs module
212
- *
213
- * @default false disabling `instrumentation-fs` because it bloating the traces
214
- */
215
- enableFS?: boolean;
216
- &nbsp;
217
- /**
218
- * protocol used to send signals.
219
- *
220
- * @default grpc
221
- */
222
- protocol?: SDKProtocol;
223
- }
224
- &nbsp;
225
- export type SDKCollectorMode = "single" | "batch";
226
- &nbsp;
227
- export type SDKProtocol = "grpc" | "http" | "console";
228
- &nbsp;
229
- export type SDKLogLevel =
230
- | "NONE"
231
- | "ERROR"
232
- | "WARN"
233
- | "INFO"
234
- | "DEBUG"
235
- | "VERBOSE"
236
- | "ALL";
237
- &nbsp;</pre></td></tr></table></pre>
238
-
239
- <div class='push'></div><!-- for sticky footer -->
240
- </div><!-- /wrapper -->
241
- <div class='footer quiet pad2 space-top1 center small'>
242
- Code coverage generated by
243
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
244
- at 2025-01-28T15:28:22.401Z
245
- </div>
246
- <script src="../../prettify.js"></script>
247
- <script>
248
- window.onload = function () {
249
- prettyPrint();
250
- };
251
- </script>
252
- <script src="../../sorter.js"></script>
253
- <script src="../../block-navigation.js"></script>
254
- </body>
255
- </html>
256
-
@@ -1,334 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for sdk-node/lib/instrumentation.node.ts</title>
7
- <meta charset="utf-8" />
8
- <link rel="stylesheet" href="../../prettify.css" />
9
- <link rel="stylesheet" href="../../base.css" />
10
- <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
- <meta name="viewport" content="width=device-width, initial-scale=1" />
12
- <style type='text/css'>
13
- .coverage-summary .sorter {
14
- background-image: url(../../sort-arrow-sprite.png);
15
- }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <div class='wrapper'>
21
- <div class='pad1'>
22
- <h1><a href="../../index.html">All files</a> / <a href="index.html">sdk-node/lib</a> instrumentation.node.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">100% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>65/65</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">100% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>16/16</span>
36
- </div>
37
-
38
-
39
- <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
41
- <span class="quiet">Functions</span>
42
- <span class='fraction'>1/1</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">100% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>65/65</span>
50
- </div>
51
-
52
-
53
- </div>
54
- <p class="quiet">
55
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
- </p>
57
- <template id="filterTemplate">
58
- <div class="quiet">
59
- Filter:
60
- <input type="search" id="fileSearch">
61
- </div>
62
- </template>
63
- </div>
64
- <div class='status-line high'></div>
65
- <pre><table class="coverage">
66
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
- <a name='L2'></a><a href='#L2'>2</a>
68
- <a name='L3'></a><a href='#L3'>3</a>
69
- <a name='L4'></a><a href='#L4'>4</a>
70
- <a name='L5'></a><a href='#L5'>5</a>
71
- <a name='L6'></a><a href='#L6'>6</a>
72
- <a name='L7'></a><a href='#L7'>7</a>
73
- <a name='L8'></a><a href='#L8'>8</a>
74
- <a name='L9'></a><a href='#L9'>9</a>
75
- <a name='L10'></a><a href='#L10'>10</a>
76
- <a name='L11'></a><a href='#L11'>11</a>
77
- <a name='L12'></a><a href='#L12'>12</a>
78
- <a name='L13'></a><a href='#L13'>13</a>
79
- <a name='L14'></a><a href='#L14'>14</a>
80
- <a name='L15'></a><a href='#L15'>15</a>
81
- <a name='L16'></a><a href='#L16'>16</a>
82
- <a name='L17'></a><a href='#L17'>17</a>
83
- <a name='L18'></a><a href='#L18'>18</a>
84
- <a name='L19'></a><a href='#L19'>19</a>
85
- <a name='L20'></a><a href='#L20'>20</a>
86
- <a name='L21'></a><a href='#L21'>21</a>
87
- <a name='L22'></a><a href='#L22'>22</a>
88
- <a name='L23'></a><a href='#L23'>23</a>
89
- <a name='L24'></a><a href='#L24'>24</a>
90
- <a name='L25'></a><a href='#L25'>25</a>
91
- <a name='L26'></a><a href='#L26'>26</a>
92
- <a name='L27'></a><a href='#L27'>27</a>
93
- <a name='L28'></a><a href='#L28'>28</a>
94
- <a name='L29'></a><a href='#L29'>29</a>
95
- <a name='L30'></a><a href='#L30'>30</a>
96
- <a name='L31'></a><a href='#L31'>31</a>
97
- <a name='L32'></a><a href='#L32'>32</a>
98
- <a name='L33'></a><a href='#L33'>33</a>
99
- <a name='L34'></a><a href='#L34'>34</a>
100
- <a name='L35'></a><a href='#L35'>35</a>
101
- <a name='L36'></a><a href='#L36'>36</a>
102
- <a name='L37'></a><a href='#L37'>37</a>
103
- <a name='L38'></a><a href='#L38'>38</a>
104
- <a name='L39'></a><a href='#L39'>39</a>
105
- <a name='L40'></a><a href='#L40'>40</a>
106
- <a name='L41'></a><a href='#L41'>41</a>
107
- <a name='L42'></a><a href='#L42'>42</a>
108
- <a name='L43'></a><a href='#L43'>43</a>
109
- <a name='L44'></a><a href='#L44'>44</a>
110
- <a name='L45'></a><a href='#L45'>45</a>
111
- <a name='L46'></a><a href='#L46'>46</a>
112
- <a name='L47'></a><a href='#L47'>47</a>
113
- <a name='L48'></a><a href='#L48'>48</a>
114
- <a name='L49'></a><a href='#L49'>49</a>
115
- <a name='L50'></a><a href='#L50'>50</a>
116
- <a name='L51'></a><a href='#L51'>51</a>
117
- <a name='L52'></a><a href='#L52'>52</a>
118
- <a name='L53'></a><a href='#L53'>53</a>
119
- <a name='L54'></a><a href='#L54'>54</a>
120
- <a name='L55'></a><a href='#L55'>55</a>
121
- <a name='L56'></a><a href='#L56'>56</a>
122
- <a name='L57'></a><a href='#L57'>57</a>
123
- <a name='L58'></a><a href='#L58'>58</a>
124
- <a name='L59'></a><a href='#L59'>59</a>
125
- <a name='L60'></a><a href='#L60'>60</a>
126
- <a name='L61'></a><a href='#L61'>61</a>
127
- <a name='L62'></a><a href='#L62'>62</a>
128
- <a name='L63'></a><a href='#L63'>63</a>
129
- <a name='L64'></a><a href='#L64'>64</a>
130
- <a name='L65'></a><a href='#L65'>65</a>
131
- <a name='L66'></a><a href='#L66'>66</a>
132
- <a name='L67'></a><a href='#L67'>67</a>
133
- <a name='L68'></a><a href='#L68'>68</a>
134
- <a name='L69'></a><a href='#L69'>69</a>
135
- <a name='L70'></a><a href='#L70'>70</a>
136
- <a name='L71'></a><a href='#L71'>71</a>
137
- <a name='L72'></a><a href='#L72'>72</a>
138
- <a name='L73'></a><a href='#L73'>73</a>
139
- <a name='L74'></a><a href='#L74'>74</a>
140
- <a name='L75'></a><a href='#L75'>75</a>
141
- <a name='L76'></a><a href='#L76'>76</a>
142
- <a name='L77'></a><a href='#L77'>77</a>
143
- <a name='L78'></a><a href='#L78'>78</a>
144
- <a name='L79'></a><a href='#L79'>79</a>
145
- <a name='L80'></a><a href='#L80'>80</a>
146
- <a name='L81'></a><a href='#L81'>81</a>
147
- <a name='L82'></a><a href='#L82'>82</a>
148
- <a name='L83'></a><a href='#L83'>83</a>
149
- <a name='L84'></a><a href='#L84'>84</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
150
- <span class="cline-any cline-neutral">&nbsp;</span>
151
- <span class="cline-any cline-neutral">&nbsp;</span>
152
- <span class="cline-any cline-neutral">&nbsp;</span>
153
- <span class="cline-any cline-neutral">&nbsp;</span>
154
- <span class="cline-any cline-neutral">&nbsp;</span>
155
- <span class="cline-any cline-neutral">&nbsp;</span>
156
- <span class="cline-any cline-neutral">&nbsp;</span>
157
- <span class="cline-any cline-neutral">&nbsp;</span>
158
- <span class="cline-any cline-neutral">&nbsp;</span>
159
- <span class="cline-any cline-neutral">&nbsp;</span>
160
- <span class="cline-any cline-neutral">&nbsp;</span>
161
- <span class="cline-any cline-yes">8x</span>
162
- <span class="cline-any cline-yes">8x</span>
163
- <span class="cline-any cline-yes">8x</span>
164
- <span class="cline-any cline-yes">8x</span>
165
- <span class="cline-any cline-yes">1x</span>
166
- <span class="cline-any cline-yes">1x</span>
167
- <span class="cline-any cline-yes">1x</span>
168
- <span class="cline-any cline-yes">1x</span>
169
- <span class="cline-any cline-yes">1x</span>
170
- <span class="cline-any cline-neutral">&nbsp;</span>
171
- <span class="cline-any cline-yes">8x</span>
172
- <span class="cline-any cline-yes">1x</span>
173
- <span class="cline-any cline-yes">1x</span>
174
- <span class="cline-any cline-yes">1x</span>
175
- <span class="cline-any cline-yes">1x</span>
176
- <span class="cline-any cline-yes">1x</span>
177
- <span class="cline-any cline-neutral">&nbsp;</span>
178
- <span class="cline-any cline-yes">8x</span>
179
- <span class="cline-any cline-yes">1x</span>
180
- <span class="cline-any cline-yes">1x</span>
181
- <span class="cline-any cline-yes">1x</span>
182
- <span class="cline-any cline-yes">1x</span>
183
- <span class="cline-any cline-yes">1x</span>
184
- <span class="cline-any cline-neutral">&nbsp;</span>
185
- <span class="cline-any cline-yes">5x</span>
186
- <span class="cline-any cline-neutral">&nbsp;</span>
187
- <span class="cline-any cline-yes">8x</span>
188
- <span class="cline-any cline-yes">1x</span>
189
- <span class="cline-any cline-yes">8x</span>
190
- <span class="cline-any cline-yes">1x</span>
191
- <span class="cline-any cline-yes">4x</span>
192
- <span class="cline-any cline-yes">3x</span>
193
- <span class="cline-any cline-yes">3x</span>
194
- <span class="cline-any cline-neutral">&nbsp;</span>
195
- <span class="cline-any cline-yes">5x</span>
196
- <span class="cline-any cline-yes">5x</span>
197
- <span class="cline-any cline-yes">5x</span>
198
- <span class="cline-any cline-yes">5x</span>
199
- <span class="cline-any cline-yes">4x</span>
200
- <span class="cline-any cline-yes">1x</span>
201
- <span class="cline-any cline-yes">8x</span>
202
- <span class="cline-any cline-neutral">&nbsp;</span>
203
- <span class="cline-any cline-yes">8x</span>
204
- <span class="cline-any cline-yes">8x</span>
205
- <span class="cline-any cline-yes">8x</span>
206
- <span class="cline-any cline-yes">8x</span>
207
- <span class="cline-any cline-yes">8x</span>
208
- <span class="cline-any cline-yes">8x</span>
209
- <span class="cline-any cline-yes">8x</span>
210
- <span class="cline-any cline-yes">8x</span>
211
- <span class="cline-any cline-yes">8x</span>
212
- <span class="cline-any cline-yes">8x</span>
213
- <span class="cline-any cline-yes">8x</span>
214
- <span class="cline-any cline-yes">8x</span>
215
- <span class="cline-any cline-yes">8x</span>
216
- <span class="cline-any cline-yes">8x</span>
217
- <span class="cline-any cline-yes">8x</span>
218
- <span class="cline-any cline-yes">8x</span>
219
- <span class="cline-any cline-yes">8x</span>
220
- <span class="cline-any cline-yes">8x</span>
221
- <span class="cline-any cline-neutral">&nbsp;</span>
222
- <span class="cline-any cline-yes">8x</span>
223
- <span class="cline-any cline-yes">8x</span>
224
- <span class="cline-any cline-yes">8x</span>
225
- <span class="cline-any cline-yes">8x</span>
226
- <span class="cline-any cline-yes">1x</span>
227
- <span class="cline-any cline-yes">1x</span>
228
- <span class="cline-any cline-yes">1x</span>
229
- <span class="cline-any cline-yes">1x</span>
230
- <span class="cline-any cline-yes">1x</span>
231
- <span class="cline-any cline-yes">8x</span>
232
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { NodeSDK, resources } from "@opentelemetry/sdk-node";
233
- import type { NodeSDKConfig } from "./index.js";
234
- import type { Exporters } from "./options.js";
235
- import isUrl from "is-url";
236
- import buildHttpExporters from "./http.js";
237
- import buildGrpcExporters from "./grpc.js";
238
- import buildConsoleExporters from "./console.js";
239
- import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
240
- import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
241
- import { W3CTraceContextPropagator } from "@opentelemetry/core";
242
- import packageJson from "../package.json" with { type: "json" };
243
- &nbsp;
244
- export default function buildNodeInstrumentation(
245
- config?: NodeSDKConfig,
246
- ): NodeSDK | undefined {
247
- if (!config) {
248
- console.warn(
249
- "observability config not set. Skipping NodeJS OpenTelemetry instrumentation.",
250
- );
251
- return;
252
- }
253
- &nbsp;
254
- if (!config.collectorUrl) {
255
- console.warn(
256
- "collectorUrl not set. Skipping NodeJS OpenTelemetry instrumentation.",
257
- );
258
- return;
259
- }
260
- &nbsp;
261
- if (!isUrl(config.collectorUrl)) {
262
- console.error(
263
- "collectorUrl does not use a valid format. Skipping NodeJS OpenTelemetry instrumentation.",
264
- );
265
- return;
266
- }
267
- &nbsp;
268
- let exporter: Exporters;
269
- &nbsp;
270
- if (config.protocol === "http") {
271
- exporter = buildHttpExporters(config);
272
- } else if (config.protocol === "console") {
273
- exporter = buildConsoleExporters(config);
274
- } else {
275
- exporter = buildGrpcExporters(config);
276
- }
277
- &nbsp;
278
- try {
279
- diag.setLogger(
280
- new DiagConsoleLogger(),
281
- config.diagLogLevel
282
- ? DiagLogLevel[config.diagLogLevel]
283
- : DiagLogLevel.INFO,
284
- );
285
- &nbsp;
286
- const sdk = new NodeSDK({
287
- resource: new resources.Resource({
288
- "o11y.sdk.name": packageJson.name,
289
- "o11y.sdk.version": packageJson.version,
290
- }),
291
- serviceName: config.serviceName,
292
- traceExporter: exporter.traces,
293
- metricReader: exporter.metrics,
294
- logRecordProcessors: exporter.logs,
295
- textMapPropagator: new W3CTraceContextPropagator(),
296
- instrumentations: [
297
- getNodeAutoInstrumentations({
298
- "@opentelemetry/instrumentation-fs": {
299
- enabled: config.enableFS ?? false,
300
- },
301
- }),
302
- ],
303
- });
304
- &nbsp;
305
- sdk.start();
306
- console.log("NodeJS OpenTelemetry instrumentation started successfully.");
307
- return sdk;
308
- } catch (error) {
309
- console.error(
310
- "Error starting NodeJS OpenTelemetry instrumentation:",
311
- error,
312
- );
313
- }
314
- }
315
- &nbsp;</pre></td></tr></table></pre>
316
-
317
- <div class='push'></div><!-- for sticky footer -->
318
- </div><!-- /wrapper -->
319
- <div class='footer quiet pad2 space-top1 center small'>
320
- Code coverage generated by
321
- <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
322
- at 2025-01-28T15:28:22.401Z
323
- </div>
324
- <script src="../../prettify.js"></script>
325
- <script>
326
- window.onload = function () {
327
- prettyPrint();
328
- };
329
- </script>
330
- <script src="../../sorter.js"></script>
331
- <script src="../../block-navigation.js"></script>
332
- </body>
333
- </html>
334
-