Skip to content

Instantly share code, notes, and snippets.

View nathanleclaire's full-sized avatar
👨‍🍳
Cooking up great code

Nathan LeClaire nathanleclaire

👨‍🍳
Cooking up great code
View GitHub Profile
package com.mycompany.servlet.filterlistener;
import io.honeycomb.beeline.DefaultBeeline;
import io.honeycomb.beeline.tracing.Span;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
INFO[0000] accepted connection                           authority=10.0.0.3:63349 port=80
INFO[0000] basic authentication accepted                 user=foo
INFO[0000] processing request                            path=/super/slow/server
INFO[0000] sent response code                            status=200
INFO[0000] closed connection                             authority=10.0.0.3:63349
$('body').on("click mousedown mouseup focus blur keydown change dblclick mousemove mouseover mouseout mousewheel keydown keyup keypress textInput touchstart touchmove touchend touchcancel resize scroll zoom select change submit reset",function(e){
libhoney.sendNow(e);
});
public static class DatabaseService {
public void queryDb(String id) {
try (Span childSpan = beeline.startChildSpan("customer-db-query")) {
String data = getCustomerDataById(id);
childSpan.addField("customer-data", data);
}
}
public String getCustomerDataById(String id) {

create a new network

$ docker network create test

create a container to listen

$ docker run -d --net test --network-alias listener alpine nc -l 8080
@nathanleclaire
nathanleclaire / index.js
Created February 20, 2019 21:19
honeycombio nodejs beeline tracing without any frameworks
const beeline = require("honeycomb-beeline")({
writeKey: "KEY",
dataset: "examples.puppeteer",
serviceName: "examples.puppeteer",
});
const puppeteer = require("puppeteer");
let trace = beeline.startTrace();
(async () => {

✅ Offer lovely view of requests as they flow through your system

✅ Offers access to the raw data making up every result

🚫 Instrumentation is hard to start small and grow outwards

🚫 Finding the traces you are interested in is difficult

🚫 Nowhere to go from problematic traces (i.e., no way to ask additional questions)

✅ Offer direct access to the raw data iff you have a very specific idea what you are looking for already

🚫 Not ergonomic to query

🚫 Slow and hard to maintain

🚫 Tend to be full of a lot of noise

🚫 Hard to get a feel for trends

❌ No access to the raw data comprising the time series.

@nathanleclaire
nathanleclaire / gke.hcl
Last active September 21, 2018 18:34
Basic setup to get a GKE cluster on Google Cloud using Terraform
variable "kube_password" {
default = "containers_r_cool"
}
variable "google_project" {
default = "honeycomb-test-project"
}
variable "google_region" {
default = "us-west1-a"