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

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 (38) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/dist/lib/index.d.ts +11 -0
  3. package/dist/lib/instrumentation.node.js +12 -1
  4. package/dist/lib/url-sampler.d.ts +9 -0
  5. package/dist/lib/url-sampler.js +28 -0
  6. package/dist/package.json +4 -5
  7. package/dist/vitest.config.js +1 -1
  8. package/lib/index.ts +12 -0
  9. package/lib/instrumentation.node.ts +12 -1
  10. package/lib/url-sampler.ts +53 -0
  11. package/package.json +3 -4
  12. package/test/integration/README.md +26 -0
  13. package/test/integration/integration.test.ts +37 -0
  14. package/test/integration/run.sh +85 -0
  15. package/test/utils/alloy-log-parser.ts +46 -0
  16. package/vitest.config.ts +1 -1
  17. package/coverage/cobertura-coverage.xml +0 -310
  18. package/coverage/lcov-report/base.css +0 -224
  19. package/coverage/lcov-report/block-navigation.js +0 -87
  20. package/coverage/lcov-report/favicon.png +0 -0
  21. package/coverage/lcov-report/index.html +0 -131
  22. package/coverage/lcov-report/prettify.css +0 -1
  23. package/coverage/lcov-report/prettify.js +0 -2
  24. package/coverage/lcov-report/sdk-node/index.html +0 -116
  25. package/coverage/lcov-report/sdk-node/index.ts.html +0 -112
  26. package/coverage/lcov-report/sdk-node/lib/console.ts.html +0 -130
  27. package/coverage/lcov-report/sdk-node/lib/grpc.ts.html +0 -178
  28. package/coverage/lcov-report/sdk-node/lib/http.ts.html +0 -190
  29. package/coverage/lcov-report/sdk-node/lib/index.html +0 -221
  30. package/coverage/lcov-report/sdk-node/lib/index.ts.html +0 -256
  31. package/coverage/lcov-report/sdk-node/lib/instrumentation.node.ts.html +0 -334
  32. package/coverage/lcov-report/sdk-node/lib/metrics.ts.html +0 -295
  33. package/coverage/lcov-report/sdk-node/lib/options.ts.html +0 -106
  34. package/coverage/lcov-report/sdk-node/lib/utils.ts.html +0 -115
  35. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  36. package/coverage/lcov-report/sorter.js +0 -196
  37. package/coverage/lcov.info +0 -312
  38. 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
-