2021-02-02 22:26:55 -08:00
|
|
|
import beeline from "honeycomb-beeline";
|
2020-08-16 23:28:41 -07:00
|
|
|
|
2020-09-01 01:13:03 -07:00
|
|
|
const beelinePlugin = {
|
2020-08-16 23:28:41 -07:00
|
|
|
requestDidStart() {
|
|
|
|
const trace = beeline.startTrace();
|
|
|
|
return {
|
|
|
|
didResolveOperation({ operationName }) {
|
2020-08-17 01:16:35 -07:00
|
|
|
beeline.addContext({
|
|
|
|
name: operationName,
|
|
|
|
operation_name: operationName,
|
|
|
|
});
|
Apply sampling rates to Honeycomb events
Oops, we get a _lot_ of outfit image requests, and it's pushing the limits of our free Honeycomb plan! But I don't really need all that much detail, because there's so many.
So, we here apply sampling! `api/outfitImage` is getting a 1/10 rate, and for GraphQL, `ApiOutfitImage` is getting 1/10, and `SearchPanel` is getting 1/5.
I had to add a `addTraceContext` call, to give all the child events awareness of what operation they're being called in, too!
I haven't actually tested that this is working-working, just that the endpoints still return good data. We'll see how it shakes out in prod!
But I did add `console.log(sampleRate, shouldSample, data);` to the `samplerHook` briefly, to see the data flow through, and I reloaded a `SearchPanel` request a few times and observed a plausibly 20% success rate.
2021-05-26 18:50:19 -07:00
|
|
|
beeline.addTraceContext({
|
|
|
|
operation_name: operationName,
|
|
|
|
});
|
2020-08-16 23:28:41 -07:00
|
|
|
},
|
|
|
|
willSendResponse() {
|
|
|
|
beeline.finishTrace(trace);
|
|
|
|
},
|
|
|
|
};
|
|
|
|
},
|
|
|
|
};
|
2020-09-01 01:13:03 -07:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
beelinePlugin,
|
|
|
|
};
|