of measurement properties of relevant events in the software operations. e.g. - request.sent (method, URI, body.size) - response.received (status_code, error) What is instrumentation? @jcchavezs
towards increasing observability, but it’s not observability in itself. One instruments and monitors a system as part of a broader strategy to make the system more observable. The goal of instrumentation @jcchavezs
faces of the same coin, what is instrumented for observation dictates the degree of controllability the system has. Observability vs Controllability @jcchavezs
part of the software building process (rather proactive than reactive) As a user, one should focus on: • Understand the use case to choose the right instrument • Avoid writing manual or custom instrumentation • Consider costs and privacy Consuming instrumentation @jcchavezs
with instrumentation as a first-class use case and that organically allows users to plug instrumentation on it. What is instrumentable code? @jcchavezs
on latency source or error prone operations but there are more factors to take into consideration: • relevant events and properties • collecting more data doesn't mean it can be analyzed • operational costs What to allow for instrumentation @jcchavezs
known patterns: ◦ decoration (example) ◦ event listeners (example) ◦ middlewares (example) ◦ interceptors (example) • Focus on events to describe operations (example) • When possible, use standard components (e.g. standard libraries, http client, sql driver) Rules of thumb for instrumentable code @jcchavezs
instrumentation should be a first class use case. • The fewer assumptions about type of instrumentation, the better. • The more relevant data instrumentation can collect, the better. In summary @jcchavezs
and to adopt. • Negligible impact in performance. • Flexible collection based on user needs. • Keeps the focus on relevant data. What is good instrumentation? @jcchavezs
• Don’t ignore privacy and security. • All components -not just critical services- should be instrumented. • Be in control to what users can do on top of it What instrumentation should consider? @jcchavezs
the right (existing) instrumentation, help your future you by adding it. As a framework/library author: bear in mind instrumentation, use standard components when possible. As an instrumentation author: focus on UX, don’t allow introducing bugs on instrumentation. TL;DR @jcchavezs
topic on: • Is Operational Sympathy A (Good) Thing? - @autoletics • Go for industrial programming - @peterbourgon • Brave instrumentation - Zipkin authors Look around