securenow 5.2.0 → 5.2.1
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.
- package/CONSUMING-APPS-GUIDE.md +17 -17
- package/README.md +7 -7
- package/cli.js +6 -6
- package/console-instrumentation.js +2 -2
- package/docs/ARCHITECTURE.md +3 -3
- package/docs/AUTO-BODY-CAPTURE.md +1 -1
- package/docs/AUTO-SETUP-SUMMARY.md +2 -2
- package/docs/AUTO-SETUP.md +4 -4
- package/docs/AUTOMATIC-IP-CAPTURE.md +5 -5
- package/docs/BODY-CAPTURE-FIX.md +1 -1
- package/docs/BODY-CAPTURE-QUICKSTART.md +2 -2
- package/docs/CHANGELOG-NEXTJS.md +1 -1
- package/docs/COMPLETION-REPORT.md +5 -5
- package/docs/CUSTOMER-GUIDE.md +16 -16
- package/docs/EASIEST-SETUP.md +5 -5
- package/docs/EXPRESS-BODY-CAPTURE.md +10 -10
- package/docs/IMPLEMENTATION-SUMMARY.md +10 -10
- package/docs/LOGGING-GUIDE.md +27 -27
- package/docs/LOGGING-QUICKSTART.md +13 -13
- package/docs/NEXTJS-BODY-CAPTURE.md +2 -2
- package/docs/NEXTJS-GUIDE.md +14 -14
- package/docs/NEXTJS-QUICKSTART.md +1 -1
- package/docs/NEXTJS-WRAPPER-APPROACH.md +1 -1
- package/docs/QUICKSTART-BODY-CAPTURE.md +2 -2
- package/docs/REDACTION-EXAMPLES.md +1 -1
- package/docs/REQUEST-BODY-CAPTURE.md +4 -4
- package/docs/SOLUTION-SUMMARY.md +4 -4
- package/docs/VERCEL-OTEL-MIGRATION.md +3 -3
- package/examples/README.md +6 -6
- package/examples/instrumentation-with-auto-capture.ts +1 -1
- package/examples/nextjs-env-example.txt +2 -2
- package/examples/nextjs-instrumentation.js +1 -1
- package/examples/nextjs-instrumentation.ts +1 -1
- package/examples/nextjs-with-logging-example.md +6 -6
- package/examples/nextjs-with-options.ts +1 -1
- package/examples/test-nextjs-setup.js +1 -1
- package/nextjs.d.ts +1 -1
- package/nextjs.js +1 -1
- package/package.json +2 -3
- package/postinstall.js +6 -6
- package/register.d.ts +1 -1
- package/tracing.d.ts +1 -1
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Create a **seamless, easy-to-use** integration for Next.js apps that:
|
|
6
6
|
1. Requires **minimal configuration** (just install + 1 file + env vars)
|
|
7
|
-
2. Sends traces to **
|
|
7
|
+
2. Sends traces to **any OTLP-compatible backend** (including SecureNow)
|
|
8
8
|
3. Works with **all Node.js frameworks** (Express, Fastify, NestJS, etc.)
|
|
9
9
|
4. Provides **auto-instrumentation** for databases, HTTP calls, and more
|
|
10
10
|
|
|
@@ -90,7 +90,7 @@ export function register() { registerSecureNow(); }
|
|
|
90
90
|
|
|
91
91
|
// 3. Add to .env.local
|
|
92
92
|
SECURENOW_APPID=my-nextjs-app
|
|
93
|
-
SECURENOW_INSTANCE=http://your-
|
|
93
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
94
94
|
```
|
|
95
95
|
|
|
96
96
|
**That's it! 🎉** No complex configuration, no manual setup of exporters or instrumentations.
|
|
@@ -146,7 +146,7 @@ export function register() { registerSecureNow(); }
|
|
|
146
146
|
## 🎯 User Journey
|
|
147
147
|
|
|
148
148
|
### 1. Discovery
|
|
149
|
-
User searches "Next.js OpenTelemetry
|
|
149
|
+
User searches "Next.js OpenTelemetry SecureNow"
|
|
150
150
|
→ Finds `securenow` package with clear Next.js support
|
|
151
151
|
|
|
152
152
|
### 2. Installation
|
|
@@ -168,7 +168,7 @@ npm run dev
|
|
|
168
168
|
30 seconds ⏱️
|
|
169
169
|
|
|
170
170
|
### 5. Confirmation
|
|
171
|
-
Opens
|
|
171
|
+
Opens SecureNow dashboard
|
|
172
172
|
→ Sees traces immediately
|
|
173
173
|
30 seconds ⏱️
|
|
174
174
|
|
|
@@ -190,7 +190,7 @@ OpenTelemetry SDK + Auto-Instrumentations
|
|
|
190
190
|
↓
|
|
191
191
|
OTLP/HTTP Exporter
|
|
192
192
|
↓
|
|
193
|
-
|
|
193
|
+
SecureNow / OpenTelemetry Collector
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
### Key Features
|
|
@@ -265,7 +265,7 @@ Start simple, add config as needed:
|
|
|
265
265
|
SECURENOW_APPID=my-app
|
|
266
266
|
|
|
267
267
|
// Level 2: Add endpoint
|
|
268
|
-
SECURENOW_INSTANCE=http://
|
|
268
|
+
SECURENOW_INSTANCE=http://otel-collector:4318
|
|
269
269
|
|
|
270
270
|
// Level 3: Add authentication
|
|
271
271
|
OTEL_EXPORTER_OTLP_HEADERS="x-api-key=secret"
|
|
@@ -327,7 +327,7 @@ node examples/test-nextjs-setup.js
|
|
|
327
327
|
| Minimal config | ✅ | Just 1 file + 2 env vars |
|
|
328
328
|
| Works with Next.js | ✅ | Full App & Pages Router support |
|
|
329
329
|
| Auto-instrumentation | ✅ | 30+ libraries covered |
|
|
330
|
-
|
|
|
330
|
+
| OTLP compatible | ✅ | OTLP/HTTP standard |
|
|
331
331
|
| Good documentation | ✅ | 5 new docs, 200+ lines |
|
|
332
332
|
| Examples provided | ✅ | 5 example files |
|
|
333
333
|
| No breaking changes | ✅ | 100% backward compatible |
|
|
@@ -349,9 +349,9 @@ node examples/test-nextjs-setup.js
|
|
|
349
349
|
- **Comprehensive docs** reduce support burden
|
|
350
350
|
- **Example code** speeds up adoption
|
|
351
351
|
|
|
352
|
-
### For
|
|
352
|
+
### For SecureNow users
|
|
353
353
|
- **Easier onboarding** of Next.js apps
|
|
354
|
-
- **More users** using
|
|
354
|
+
- **More users** using SecureNow with Next.js
|
|
355
355
|
- **Better traces** due to auto-instrumentation
|
|
356
356
|
- **Reference implementation** for others
|
|
357
357
|
|
|
@@ -363,7 +363,7 @@ node examples/test-nextjs-setup.js
|
|
|
363
363
|
1. Test with a real Next.js app
|
|
364
364
|
2. Publish to NPM
|
|
365
365
|
3. Update NPM description and keywords
|
|
366
|
-
4. Share in Next.js and
|
|
366
|
+
4. Share in Next.js and SecureNow communities
|
|
367
367
|
|
|
368
368
|
### Short Term
|
|
369
369
|
1. Create video tutorial
|
package/docs/LOGGING-GUIDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SecureNow Logging Guide
|
|
2
2
|
|
|
3
|
-
Complete guide for sending logs from your Node.js applications to
|
|
3
|
+
Complete guide for sending logs from your Node.js applications to SecureNow using the SecureNow library.
|
|
4
4
|
|
|
5
5
|
## Table of Contents
|
|
6
6
|
|
|
@@ -39,11 +39,11 @@ export SECURENOW_LOGGING_ENABLED=1
|
|
|
39
39
|
# Required: Your app identifier
|
|
40
40
|
export SECURENOW_APPID=my-app
|
|
41
41
|
|
|
42
|
-
# Optional: Your
|
|
43
|
-
export SECURENOW_INSTANCE=http://your-
|
|
42
|
+
# Optional: Your OTLP endpoint (defaults to https://freetrial.securenow.ai:4318)
|
|
43
|
+
export SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
44
44
|
|
|
45
|
-
# Optional:
|
|
46
|
-
export OTEL_EXPORTER_OTLP_HEADERS="
|
|
45
|
+
# Optional: Authentication for hosted OTLP / SecureNow
|
|
46
|
+
export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-key-here"
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
### 3. Choose Your Usage Method
|
|
@@ -55,7 +55,7 @@ export OTEL_EXPORTER_OTLP_HEADERS="signoz-ingestion-key=your-key-here"
|
|
|
55
55
|
require('securenow/register');
|
|
56
56
|
require('securenow/console-instrumentation');
|
|
57
57
|
|
|
58
|
-
// Now all console logs are automatically sent to
|
|
58
|
+
// Now all console logs are automatically sent to SecureNow
|
|
59
59
|
console.log('Application started');
|
|
60
60
|
console.error('An error occurred', { userId: 123 });
|
|
61
61
|
console.warn('Warning message');
|
|
@@ -95,8 +95,8 @@ SECURENOW_INSTANCE=http://localhost:4318 # Base OTLP endpoint
|
|
|
95
95
|
OTEL_EXPORTER_OTLP_ENDPOINT=... # Alternative to SECURENOW_INSTANCE
|
|
96
96
|
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=... # Specific logs endpoint (overrides base)
|
|
97
97
|
|
|
98
|
-
# Authentication (for
|
|
99
|
-
OTEL_EXPORTER_OTLP_HEADERS="
|
|
98
|
+
# Authentication (for hosted OTLP / SecureNow)
|
|
99
|
+
OTEL_EXPORTER_OTLP_HEADERS="x-api-key=YOUR_KEY"
|
|
100
100
|
|
|
101
101
|
# Service Identification
|
|
102
102
|
SECURENOW_APPID=my-app # Your application name
|
|
@@ -107,20 +107,20 @@ OTEL_LOG_LEVEL=info # debug|info|warn|error
|
|
|
107
107
|
NODE_ENV=production # Environment name
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
###
|
|
110
|
+
### Hosted OTLP / SecureNow configuration
|
|
111
111
|
|
|
112
|
-
For
|
|
112
|
+
For SecureNow or another hosted OTLP endpoint:
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
115
|
export SECURENOW_LOGGING_ENABLED=1
|
|
116
116
|
export SECURENOW_APPID=my-app
|
|
117
|
-
export SECURENOW_INSTANCE=https://
|
|
118
|
-
export OTEL_EXPORTER_OTLP_HEADERS="
|
|
117
|
+
export SECURENOW_INSTANCE=https://freetrial.securenow.ai:4318
|
|
118
|
+
export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=<your-api-key>"
|
|
119
119
|
```
|
|
120
120
|
|
|
121
121
|
Replace:
|
|
122
|
-
-
|
|
123
|
-
- `<your-
|
|
122
|
+
- `SECURENOW_INSTANCE`: Use the OTLP base URL from your SecureNow dashboard (defaults to the freetrial endpoint above)
|
|
123
|
+
- `<your-api-key>`: Your API key or other credentials as required by your backend
|
|
124
124
|
|
|
125
125
|
---
|
|
126
126
|
|
|
@@ -128,7 +128,7 @@ Replace:
|
|
|
128
128
|
|
|
129
129
|
### Method 1: Automatic Console Instrumentation (Easiest)
|
|
130
130
|
|
|
131
|
-
This method wraps the default `console` methods to automatically send logs to
|
|
131
|
+
This method wraps the default `console` methods to automatically send logs to SecureNow while still printing to the console.
|
|
132
132
|
|
|
133
133
|
**Setup:**
|
|
134
134
|
|
|
@@ -357,7 +357,7 @@ export async function register() {
|
|
|
357
357
|
```bash
|
|
358
358
|
SECURENOW_LOGGING_ENABLED=1
|
|
359
359
|
SECURENOW_APPID=nextjs-app
|
|
360
|
-
SECURENOW_INSTANCE=http://your-
|
|
360
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
361
361
|
```
|
|
362
362
|
|
|
363
363
|
**Usage in API Routes:**
|
|
@@ -577,7 +577,7 @@ dbLogger.emit({
|
|
|
577
577
|
|
|
578
578
|
## Troubleshooting
|
|
579
579
|
|
|
580
|
-
### Logs not appearing in
|
|
580
|
+
### Logs not appearing in SecureNow
|
|
581
581
|
|
|
582
582
|
**Check 1: Is logging enabled?**
|
|
583
583
|
|
|
@@ -588,12 +588,12 @@ SECURENOW_LOGGING_ENABLED=1
|
|
|
588
588
|
**Check 2: Verify endpoint**
|
|
589
589
|
|
|
590
590
|
```bash
|
|
591
|
-
# For self-hosted
|
|
592
|
-
export SECURENOW_INSTANCE=http://your-
|
|
591
|
+
# For self-hosted OTLP collector
|
|
592
|
+
export SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
593
593
|
|
|
594
|
-
# For
|
|
595
|
-
export SECURENOW_INSTANCE=https://
|
|
596
|
-
export OTEL_EXPORTER_OTLP_HEADERS="
|
|
594
|
+
# For SecureNow / hosted OTLP
|
|
595
|
+
export SECURENOW_INSTANCE=https://freetrial.securenow.ai:4318
|
|
596
|
+
export OTEL_EXPORTER_OTLP_HEADERS="x-api-key=<your-key>"
|
|
597
597
|
```
|
|
598
598
|
|
|
599
599
|
**Check 3: Enable debug logging**
|
|
@@ -638,7 +638,7 @@ require('securenow/console-instrumentation'); // This wraps console
|
|
|
638
638
|
|
|
639
639
|
You should see:
|
|
640
640
|
```
|
|
641
|
-
[securenow] Console instrumentation installed - all console logs will be sent to
|
|
641
|
+
[securenow] Console instrumentation installed - all console logs will be sent to SecureNow
|
|
642
642
|
```
|
|
643
643
|
|
|
644
644
|
### Logger returns null
|
|
@@ -654,7 +654,7 @@ if (!logger) {
|
|
|
654
654
|
}
|
|
655
655
|
```
|
|
656
656
|
|
|
657
|
-
### Logs in
|
|
657
|
+
### Logs in SecureNow but missing attributes
|
|
658
658
|
|
|
659
659
|
Make sure you're passing attributes correctly:
|
|
660
660
|
|
|
@@ -689,14 +689,14 @@ logger.emit({
|
|
|
689
689
|
3. **Include context** - userId, requestId, etc. in log attributes
|
|
690
690
|
4. **Use appropriate severity levels** - INFO for normal flow, ERROR for exceptions
|
|
691
691
|
5. **Don't log sensitive data** - passwords, tokens, credit cards
|
|
692
|
-
6. **Use different loggers for different modules** - easier filtering in
|
|
692
|
+
6. **Use different loggers for different modules** - easier filtering in SecureNow
|
|
693
693
|
|
|
694
694
|
---
|
|
695
695
|
|
|
696
696
|
## Next Steps
|
|
697
697
|
|
|
698
|
-
- [
|
|
699
|
-
- [
|
|
698
|
+
- [SecureNow](https://securenow.ai/)
|
|
699
|
+
- [Documentation](./INDEX.md)
|
|
700
700
|
- [Combine with tracing](../README.md) for full observability
|
|
701
701
|
|
|
702
702
|
---
|
|
@@ -19,11 +19,11 @@ Create `.env` file or export variables:
|
|
|
19
19
|
```bash
|
|
20
20
|
SECURENOW_LOGGING_ENABLED=1
|
|
21
21
|
SECURENOW_APPID=my-app
|
|
22
|
-
SECURENOW_INSTANCE=http://your-
|
|
22
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
23
23
|
|
|
24
|
-
# For
|
|
25
|
-
# SECURENOW_INSTANCE=https://
|
|
26
|
-
# OTEL_EXPORTER_OTLP_HEADERS="
|
|
24
|
+
# For SecureNow / hosted OTLP (example):
|
|
25
|
+
# SECURENOW_INSTANCE=https://freetrial.securenow.ai:4318
|
|
26
|
+
# OTEL_EXPORTER_OTLP_HEADERS="x-api-key=<your-key>"
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
---
|
|
@@ -63,16 +63,16 @@ npm start
|
|
|
63
63
|
You should see:
|
|
64
64
|
|
|
65
65
|
```
|
|
66
|
-
[securenow] OTel SDK started → http://your-
|
|
67
|
-
[securenow] 📋 Logging: ENABLED → http://your-
|
|
66
|
+
[securenow] OTel SDK started → http://your-otlp-backend:4318/v1/traces
|
|
67
|
+
[securenow] 📋 Logging: ENABLED → http://your-otlp-backend:4318/v1/logs
|
|
68
68
|
[securenow] Console instrumentation installed
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
---
|
|
72
72
|
|
|
73
|
-
## 5. View Logs in
|
|
73
|
+
## 5. View Logs in SecureNow
|
|
74
74
|
|
|
75
|
-
1. Open your
|
|
75
|
+
1. Open your SecureNow dashboard
|
|
76
76
|
2. Go to **Logs** section
|
|
77
77
|
3. Filter by `service.name = my-app`
|
|
78
78
|
4. See all your logs with automatic trace correlation!
|
|
@@ -162,7 +162,7 @@ bootstrap();
|
|
|
162
162
|
**Logs not appearing?**
|
|
163
163
|
|
|
164
164
|
1. Check `SECURENOW_LOGGING_ENABLED=1` is set
|
|
165
|
-
2. Verify
|
|
165
|
+
2. Verify your OTLP / SecureNow endpoint is correct
|
|
166
166
|
3. Enable debug: `OTEL_LOG_LEVEL=debug`
|
|
167
167
|
|
|
168
168
|
**Console instrumentation not working?**
|
|
@@ -201,7 +201,7 @@ console.log('User logged in', {
|
|
|
201
201
|
});
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
This creates a log with attributes you can filter/search in
|
|
204
|
+
This creates a log with attributes you can filter/search in SecureNow!
|
|
205
205
|
|
|
206
206
|
---
|
|
207
207
|
|
|
@@ -228,12 +228,12 @@ logger.emit({
|
|
|
228
228
|
## Next Steps
|
|
229
229
|
|
|
230
230
|
- [Complete Logging Guide](./LOGGING-GUIDE.md) - All features and options
|
|
231
|
-
- [
|
|
232
|
-
- [
|
|
231
|
+
- [SecureNow](https://securenow.ai/)
|
|
232
|
+
- [Documentation](./INDEX.md)
|
|
233
233
|
- [Combine with Tracing](../README.md) - Full observability
|
|
234
234
|
|
|
235
235
|
---
|
|
236
236
|
|
|
237
|
-
**That's it!** 🎉 Your app is now sending logs to
|
|
237
|
+
**That's it!** 🎉 Your app is now sending logs to SecureNow.
|
|
238
238
|
|
|
239
239
|
Need help? Check the [full documentation](./LOGGING-GUIDE.md) or open an issue.
|
|
@@ -213,7 +213,7 @@ your-nextjs-app/
|
|
|
213
213
|
-d '{"username":"test","password":"secret123"}'
|
|
214
214
|
```
|
|
215
215
|
|
|
216
|
-
4. **Check
|
|
216
|
+
4. **Check SecureNow:**
|
|
217
217
|
- Find the `/api/test` trace
|
|
218
218
|
- Look for `http.request.body` attribute
|
|
219
219
|
- Verify password shows `[REDACTED]`
|
|
@@ -259,7 +259,7 @@ export const config = {
|
|
|
259
259
|
```bash
|
|
260
260
|
# Required
|
|
261
261
|
SECURENOW_APPID=my-nextjs-app
|
|
262
|
-
SECURENOW_INSTANCE=http://your-
|
|
262
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
263
263
|
|
|
264
264
|
# Optional: Enable body capture
|
|
265
265
|
SECURENOW_CAPTURE_BODY=1
|
package/docs/NEXTJS-GUIDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SecureNow for Next.js - Complete Integration Guide
|
|
2
2
|
|
|
3
|
-
Send traces and logs from your Next.js app to
|
|
3
|
+
Send traces and logs from your Next.js app to SecureNow or any OTLP-compatible backend in under 2 minutes.
|
|
4
4
|
|
|
5
5
|
## 🚀 Quick Start (2 Simple Steps!)
|
|
6
6
|
|
|
@@ -27,11 +27,11 @@ pnpm add securenow
|
|
|
27
27
|
Edit the `.env.local` file that was created:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
# Required: Your app name (shows up in
|
|
30
|
+
# Required: Your app name (shows up in SecureNow)
|
|
31
31
|
SECURENOW_APPID=my-nextjs-app
|
|
32
32
|
|
|
33
|
-
# Required: Your
|
|
34
|
-
SECURENOW_INSTANCE=http://your-
|
|
33
|
+
# Required: Your OTLP endpoint
|
|
34
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
35
35
|
|
|
36
36
|
# Optional: API key for authentication
|
|
37
37
|
OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-api-key-here"
|
|
@@ -155,7 +155,7 @@ See [REQUEST-BODY-CAPTURE.md](./REQUEST-BODY-CAPTURE.md) for full details.
|
|
|
155
155
|
SECURENOW_APPID=my-nextjs-app
|
|
156
156
|
|
|
157
157
|
# Optional Configuration
|
|
158
|
-
SECURENOW_INSTANCE=http://your-
|
|
158
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
159
159
|
SECURENOW_NO_UUID=1 # Don't append UUID (useful for dev)
|
|
160
160
|
OTEL_LOG_LEVEL=info # debug|info|warn|error
|
|
161
161
|
SECURENOW_DISABLE_INSTRUMENTATIONS=fs,dns # Disable specific instrumentations
|
|
@@ -178,7 +178,7 @@ import { registerSecureNow } from 'securenow/nextjs';
|
|
|
178
178
|
export function register() {
|
|
179
179
|
registerSecureNow({
|
|
180
180
|
serviceName: 'my-nextjs-app',
|
|
181
|
-
endpoint: 'http://your-
|
|
181
|
+
endpoint: 'http://your-otlp-backend:4318',
|
|
182
182
|
noUuid: false,
|
|
183
183
|
disableInstrumentations: ['fs', 'dns'],
|
|
184
184
|
headers: {
|
|
@@ -243,7 +243,7 @@ COPY . .
|
|
|
243
243
|
RUN npm run build
|
|
244
244
|
|
|
245
245
|
ENV SECURENOW_APPID=my-nextjs-app
|
|
246
|
-
ENV SECURENOW_INSTANCE=http://
|
|
246
|
+
ENV SECURENOW_INSTANCE=http://otel-collector:4318
|
|
247
247
|
|
|
248
248
|
EXPOSE 3000
|
|
249
249
|
CMD ["npm", "start"]
|
|
@@ -255,7 +255,7 @@ Just set environment variables and run:
|
|
|
255
255
|
|
|
256
256
|
```bash
|
|
257
257
|
export SECURENOW_APPID=my-nextjs-app
|
|
258
|
-
export SECURENOW_INSTANCE=http://your-
|
|
258
|
+
export SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
259
259
|
npm start
|
|
260
260
|
```
|
|
261
261
|
|
|
@@ -288,14 +288,14 @@ Make sure you're on the latest version:
|
|
|
288
288
|
npm install securenow@latest
|
|
289
289
|
```
|
|
290
290
|
|
|
291
|
-
### Traces not appearing in
|
|
291
|
+
### Traces not appearing in SecureNow
|
|
292
292
|
|
|
293
293
|
1. **Check endpoint:**
|
|
294
294
|
```bash
|
|
295
|
-
curl http://your-
|
|
295
|
+
curl http://your-otlp-backend:4318/v1/traces
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
-
2. **Verify connectivity:** Make sure your app can reach
|
|
298
|
+
2. **Verify connectivity:** Make sure your app can reach your OTLP backend (or SecureNow)
|
|
299
299
|
|
|
300
300
|
3. **Check authentication:** If using API keys, verify headers
|
|
301
301
|
|
|
@@ -311,7 +311,7 @@ SECURENOW_DISABLE_INSTRUMENTATIONS=fs,dns,net
|
|
|
311
311
|
## 📖 Comparison with Other Solutions
|
|
312
312
|
|
|
313
313
|
### vs. `@vercel/otel`
|
|
314
|
-
- ✅ **SecureNow**: Pre-configured for
|
|
314
|
+
- ✅ **SecureNow**: Pre-configured for OTLP / SecureNow, includes auto-instrumentations
|
|
315
315
|
- ⚠️ **@vercel/otel**: Requires manual instrumentation setup
|
|
316
316
|
|
|
317
317
|
### vs. Manual OpenTelemetry Setup
|
|
@@ -375,7 +375,7 @@ Check the `examples/` folder for:
|
|
|
375
375
|
|
|
376
376
|
- **Issues:** [GitHub Issues](https://github.com/your-repo/securenow/issues)
|
|
377
377
|
- **Documentation:** [Full Documentation](https://your-docs-site.com)
|
|
378
|
-
- **
|
|
378
|
+
- **SecureNow:** [securenow.ai](https://securenow.ai/)
|
|
379
379
|
|
|
380
380
|
---
|
|
381
381
|
|
|
@@ -385,5 +385,5 @@ ISC
|
|
|
385
385
|
|
|
386
386
|
---
|
|
387
387
|
|
|
388
|
-
**Made with ❤️ for the Next.js and
|
|
388
|
+
**Made with ❤️ for the Next.js and SecureNow community**
|
|
389
389
|
|
|
@@ -8,7 +8,7 @@ This approach **never interferes** with your middleware or routing.
|
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
SECURENOW_APPID=my-app
|
|
11
|
-
SECURENOW_INSTANCE=http://
|
|
11
|
+
SECURENOW_INSTANCE=http://otel-collector:4318
|
|
12
12
|
SECURENOW_CAPTURE_BODY=1
|
|
13
13
|
```
|
|
14
14
|
|
|
@@ -155,7 +155,7 @@ export async function GET() {
|
|
|
155
155
|
```bash
|
|
156
156
|
# Required
|
|
157
157
|
SECURENOW_APPID=my-nextjs-app
|
|
158
|
-
SECURENOW_INSTANCE=http://your-
|
|
158
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
159
159
|
|
|
160
160
|
# Body capture
|
|
161
161
|
SECURENOW_CAPTURE_BODY=1 # Enable body capture
|
|
@@ -439,7 +439,7 @@ If "token" is sensitive, these get redacted:
|
|
|
439
439
|
-d '{"username":"test","password":"secret123"}'
|
|
440
440
|
```
|
|
441
441
|
|
|
442
|
-
3. **Check
|
|
442
|
+
3. **Check SecureNow:**
|
|
443
443
|
- Find the trace
|
|
444
444
|
- Look for `http.request.body`
|
|
445
445
|
- Verify password shows `[REDACTED]`
|
|
@@ -235,7 +235,7 @@ export function register() {
|
|
|
235
235
|
|
|
236
236
|
---
|
|
237
237
|
|
|
238
|
-
## 🔍 Viewing in
|
|
238
|
+
## 🔍 Viewing in SecureNow
|
|
239
239
|
|
|
240
240
|
### Query Examples
|
|
241
241
|
|
|
@@ -277,7 +277,7 @@ Request bodies may contain personal data. Consider:
|
|
|
277
277
|
|
|
278
278
|
1. **Legal Basis** - Ensure you have legitimate interest or consent
|
|
279
279
|
2. **Data Minimization** - Only capture what you need
|
|
280
|
-
3. **Retention** - Configure
|
|
280
|
+
3. **Retention** - Configure SecureNow retention policies
|
|
281
281
|
4. **Anonymization** - Add more fields to redact list
|
|
282
282
|
|
|
283
283
|
### PCI-DSS Compliance
|
|
@@ -397,7 +397,7 @@ Field matching is case-insensitive and uses `includes()`:
|
|
|
397
397
|
}
|
|
398
398
|
```
|
|
399
399
|
|
|
400
|
-
3. **Filter in
|
|
400
|
+
3. **Filter in SecureNow**
|
|
401
401
|
- Use sampling to reduce volume
|
|
402
402
|
- Set up trace tail sampling
|
|
403
403
|
|
|
@@ -564,7 +564,7 @@ SECURENOW_SENSITIVE_FIELDS="" # Don't do this!
|
|
|
564
564
|
|
|
565
565
|
3. **Deploy!** Bodies are captured with sensitive data automatically redacted.
|
|
566
566
|
|
|
567
|
-
**View in
|
|
567
|
+
**View in SecureNow:**
|
|
568
568
|
- `http.request.body` - The captured body (redacted)
|
|
569
569
|
- `http.request.body.size` - Body size in bytes
|
|
570
570
|
- `http.request.body.type` - Content type (json, graphql, form)
|
package/docs/SOLUTION-SUMMARY.md
CHANGED
|
@@ -36,7 +36,7 @@ Would you like to enable request body capture? (y/N) y
|
|
|
36
36
|
Edit `.env.local` (already created by installer):
|
|
37
37
|
```bash
|
|
38
38
|
SECURENOW_APPID=my-app
|
|
39
|
-
SECURENOW_INSTANCE=http://
|
|
39
|
+
SECURENOW_INSTANCE=http://otel-collector:4318
|
|
40
40
|
SECURENOW_CAPTURE_BODY=1 # Enable body capture
|
|
41
41
|
```
|
|
42
42
|
|
|
@@ -159,12 +159,12 @@ Would you like to enable request body capture? (y/N) y
|
|
|
159
159
|
│ │
|
|
160
160
|
│ 1. Edit .env.local and set: │
|
|
161
161
|
│ SECURENOW_APPID=your-app-name │
|
|
162
|
-
│ SECURENOW_INSTANCE=http://
|
|
162
|
+
│ SECURENOW_INSTANCE=http://otel-collector:4318 │
|
|
163
163
|
│ SECURENOW_CAPTURE_BODY=1 │
|
|
164
164
|
│ │
|
|
165
165
|
│ 2. Run your app: npm run dev │
|
|
166
166
|
│ │
|
|
167
|
-
│ 3. Check
|
|
167
|
+
│ 3. Check SecureNow for traces! │
|
|
168
168
|
│ │
|
|
169
169
|
│ 📝 Body capture enabled with auto-redaction │
|
|
170
170
|
└─────────────────────────────────────────────────┘
|
|
@@ -241,7 +241,7 @@ SECURENOW_SENSITIVE_FIELDS=email,phone
|
|
|
241
241
|
3. **.env.local**
|
|
242
242
|
```bash
|
|
243
243
|
SECURENOW_APPID=my-app
|
|
244
|
-
SECURENOW_INSTANCE=http://
|
|
244
|
+
SECURENOW_INSTANCE=http://otel-collector:4318
|
|
245
245
|
SECURENOW_CAPTURE_BODY=1
|
|
246
246
|
```
|
|
247
247
|
*Just configuration!*
|
|
@@ -62,7 +62,7 @@ export function register() {
|
|
|
62
62
|
```bash
|
|
63
63
|
# .env.local
|
|
64
64
|
SECURENOW_APPID=my-nextjs-app
|
|
65
|
-
SECURENOW_INSTANCE=http://your-
|
|
65
|
+
SECURENOW_INSTANCE=http://your-otlp-backend:4318
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
### What They Get
|
|
@@ -89,7 +89,7 @@ SECURENOW_INSTANCE=http://your-signoz:4318
|
|
|
89
89
|
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`
|
|
90
90
|
3. SecureNow calls `@vercel/otel`'s `registerOTel()`
|
|
91
91
|
4. @vercel/otel handles all the OpenTelemetry setup
|
|
92
|
-
5. Traces flow to
|
|
92
|
+
5. Traces flow to SecureNow
|
|
93
93
|
|
|
94
94
|
### What @vercel/otel Does
|
|
95
95
|
|
|
@@ -185,7 +185,7 @@ All options still work:
|
|
|
185
185
|
```typescript
|
|
186
186
|
registerSecureNow({
|
|
187
187
|
serviceName: 'my-app',
|
|
188
|
-
endpoint: 'http://
|
|
188
|
+
endpoint: 'http://otel-collector:4318',
|
|
189
189
|
noUuid: false,
|
|
190
190
|
});
|
|
191
191
|
```
|
package/examples/README.md
CHANGED
|
@@ -160,7 +160,7 @@ OTEL_LOG_LEVEL=info
|
|
|
160
160
|
```bash
|
|
161
161
|
# Set in Vercel dashboard:
|
|
162
162
|
SECURENOW_APPID=my-app
|
|
163
|
-
SECURENOW_INSTANCE=http://your-
|
|
163
|
+
SECURENOW_INSTANCE=http://your-collector-host:4318
|
|
164
164
|
OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-key"
|
|
165
165
|
```
|
|
166
166
|
|
|
@@ -180,7 +180,7 @@ npm install securenow@latest
|
|
|
180
180
|
1. Check console for `[securenow] ✅ OpenTelemetry started`
|
|
181
181
|
2. Enable debug mode: `OTEL_LOG_LEVEL=debug`
|
|
182
182
|
3. Run test script: `node examples/test-nextjs-setup.js`
|
|
183
|
-
4. Verify
|
|
183
|
+
4. Verify OTLP collector accessibility: `curl http://your-collector-host:4318/v1/traces`
|
|
184
184
|
|
|
185
185
|
### Too many spans
|
|
186
186
|
|
|
@@ -206,7 +206,7 @@ registerSecureNow({
|
|
|
206
206
|
```typescript
|
|
207
207
|
registerSecureNow({
|
|
208
208
|
headers: {
|
|
209
|
-
'x-api-key': process.env.
|
|
209
|
+
'x-api-key': process.env.SECURENOW_API_KEY,
|
|
210
210
|
'x-environment': process.env.NODE_ENV,
|
|
211
211
|
},
|
|
212
212
|
});
|
|
@@ -229,7 +229,7 @@ After setting up:
|
|
|
229
229
|
|
|
230
230
|
1. **Run your app** and verify traces appear
|
|
231
231
|
2. **Test key user flows** to see end-to-end tracing
|
|
232
|
-
3. **Check
|
|
232
|
+
3. **Check SecureNow dashboard** for service map and traces
|
|
233
233
|
4. **Adjust configuration** based on your needs
|
|
234
234
|
5. **Deploy to production** with proper environment variables
|
|
235
235
|
|
|
@@ -242,12 +242,12 @@ $ npm run dev
|
|
|
242
242
|
|
|
243
243
|
[securenow] Next.js integration loading (pid=12345)
|
|
244
244
|
[securenow] 🚀 Next.js App → service.name=my-app-abc123
|
|
245
|
-
[securenow] ✅ OpenTelemetry started for Next.js → http://
|
|
245
|
+
[securenow] ✅ OpenTelemetry started for Next.js → http://your-collector-host:4318/v1/traces
|
|
246
246
|
|
|
247
247
|
✓ Ready in 1.2s
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
Then in
|
|
250
|
+
Then in SecureNow:
|
|
251
251
|
- ✅ See your service in service map
|
|
252
252
|
- ✅ View traces for requests
|
|
253
253
|
- ✅ Analyze performance metrics
|
|
@@ -30,7 +30,7 @@ export function register() {
|
|
|
30
30
|
*
|
|
31
31
|
* Configuration in .env.local:
|
|
32
32
|
* SECURENOW_APPID=my-app
|
|
33
|
-
* SECURENOW_INSTANCE=http://
|
|
33
|
+
* SECURENOW_INSTANCE=http://localhost:4318
|
|
34
34
|
* SECURENOW_CAPTURE_BODY=1
|
|
35
35
|
* SECURENOW_MAX_BODY_SIZE=10240
|
|
36
36
|
* SECURENOW_SENSITIVE_FIELDS=custom_field
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
# Required: Your application identifier
|
|
5
5
|
SECURENOW_APPID=my-nextjs-app
|
|
6
6
|
|
|
7
|
-
# Optional: Your
|
|
7
|
+
# Optional: Your OTLP collector endpoint (SecureNow or any OTLP-compatible backend)
|
|
8
8
|
# Default: https://freetrial.securenow.ai:4318
|
|
9
|
-
SECURENOW_INSTANCE=http://your-
|
|
9
|
+
SECURENOW_INSTANCE=http://your-otlp-collector:4318
|
|
10
10
|
|
|
11
11
|
# Optional: API Key or authentication headers
|
|
12
12
|
OTEL_EXPORTER_OTLP_HEADERS="x-api-key=your-api-key-here"
|
|
@@ -21,7 +21,7 @@ export function register() {
|
|
|
21
21
|
* SECURENOW_APPID=my-nextjs-app
|
|
22
22
|
*
|
|
23
23
|
* Optional:
|
|
24
|
-
* SECURENOW_INSTANCE=http://your-
|
|
24
|
+
* SECURENOW_INSTANCE=http://your-otlp-collector:4318
|
|
25
25
|
* SECURENOW_NO_UUID=1 # Don't append UUID to service name
|
|
26
26
|
* OTEL_LOG_LEVEL=info # debug|info|warn|error
|
|
27
27
|
* SECURENOW_DISABLE_INSTRUMENTATIONS=fs # Comma-separated list
|
|
@@ -21,7 +21,7 @@ export function register() {
|
|
|
21
21
|
* SECURENOW_APPID=my-nextjs-app
|
|
22
22
|
*
|
|
23
23
|
* Optional:
|
|
24
|
-
* SECURENOW_INSTANCE=http://your-
|
|
24
|
+
* SECURENOW_INSTANCE=http://your-otlp-collector:4318
|
|
25
25
|
* SECURENOW_NO_UUID=1 # Don't append UUID to service name
|
|
26
26
|
* OTEL_LOG_LEVEL=info # debug|info|warn|error
|
|
27
27
|
* SECURENOW_DISABLE_INSTRUMENTATIONS=fs # Comma-separated list
|