Skip to content

Instantly share code, notes, and snippets.

@mollystamos123
Created May 20, 2020 01:05
Show Gist options
  • Save mollystamos123/ea44d9ca24c41ccaf2b5088765f415c4 to your computer and use it in GitHub Desktop.
Save mollystamos123/ea44d9ca24c41ccaf2b5088765f415c4 to your computer and use it in GitHub Desktop.
const honeycombBeeline = require('honeycomb-beeline');
let honeycomb = honeycombBeeline({
writeKey: <writekey>,
dataset: 'staging',
serviceName: 'fakecore',
});
const http = require('http');
const server = http.createServer();
const port = 2222;
function doThing(callback) {
setTimeout(() => {
callback(null, { beep: 'boop' });
}, 1000);
}
function serve() {
server.on('request', (request, response) => {
const { traceId, parentSpanId } = honeycomb.unmarshalTraceContext(
request.headers[honeycomb.TRACE_HTTP_HEADER.toLowerCase()],
);
const trace = honeycomb.startTrace({ name: request.url }, traceId, parentSpanId);
doThing(
honeycomb.bindFunctionToTrace((error, result, context) => {
response.writeHead(200, { 'Content-Type': 'application/json' });
response.end(JSON.stringify(result));
honeycomb.finishTrace(trace);
}),
);
});
server.on('listening', () => console.log(`Listening on port: ${port}`));
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
});
}
serve();
const honeycombBeeline = require('honeycomb-beeline');
let honeycomb = honeycombBeeline({
writeKey: <writekey>,
dataset: 'staging',
serviceName: 'fakegateway',
});
const http = require('http');
const makeRequest = require('request');
const server = http.createServer();
const port = 1111;
function proxyRequest(request, response, trace) {
let traceContext = honeycomb.marshalTraceContext(honeycomb.getTraceContext());
request.headers = { ...request.headers, traceContext };
const proxiedRequest = makeRequest(`http://localhost:2222${request.url}`);
proxiedRequest.on('response', honeycomb.bindFunctionToTrace((proxyResponse) => {
const { statusCode, headers } = proxyResponse;
response.writeHead(statusCode, headers);
proxyResponse.pipe(response);
honeycomb.finishTrace(trace);
}));
request.pipe(proxiedRequest);
}
function serve() {
server.on('request', (request, response) => {
const trace = honeycomb.startTrace({ name: "ServeURL" });
proxyRequest(request, response, trace);
});
server.on('listening', () => console.log(`Listening on port: ${port}`));
server.listen(port);
}
serve();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment