68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
/**
|
|
* ═══════════════════════════════════════════════════════════
|
|
* 🐍 OPHION - Example Node.js Application
|
|
* This app is automatically instrumented by OpenTelemetry
|
|
* No code changes needed - just env vars!
|
|
* ═══════════════════════════════════════════════════════════
|
|
*/
|
|
|
|
const http = require('http');
|
|
|
|
const PORT = process.env.PORT || 3000;
|
|
|
|
// Simple HTTP server
|
|
const server = http.createServer((req, res) => {
|
|
const { url, method } = req;
|
|
|
|
console.log(`[${new Date().toISOString()}] ${method} ${url}`);
|
|
|
|
// Route handling
|
|
if (url === '/health') {
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({ status: 'healthy', service: 'nodejs-example' }));
|
|
return;
|
|
}
|
|
|
|
if (url === '/') {
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({
|
|
message: 'Hello from Node.js!',
|
|
instrumented: true,
|
|
otelEndpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'not set'
|
|
}));
|
|
return;
|
|
}
|
|
|
|
if (url === '/api/users') {
|
|
// Simulate some work
|
|
setTimeout(() => {
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify([
|
|
{ id: 1, name: 'Alice' },
|
|
{ id: 2, name: 'Bob' },
|
|
{ id: 3, name: 'Charlie' }
|
|
]));
|
|
}, Math.random() * 100);
|
|
return;
|
|
}
|
|
|
|
if (url === '/api/slow') {
|
|
// Simulate slow operation (good for testing traces)
|
|
setTimeout(() => {
|
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({ message: 'Slow response', delay: '500ms' }));
|
|
}, 500);
|
|
return;
|
|
}
|
|
|
|
// 404
|
|
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
res.end(JSON.stringify({ error: 'Not Found' }));
|
|
});
|
|
|
|
server.listen(PORT, () => {
|
|
console.log(`🚀 Node.js server running on port ${PORT}`);
|
|
console.log(`📊 OTEL Endpoint: ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'not configured'}`);
|
|
console.log(`🏷️ Service Name: ${process.env.OTEL_SERVICE_NAME || 'unknown'}`);
|
|
});
|