APPENDIX AMaking Your Applications Observable
In this appendix, I will provide some guidelines around implementing techniques to make your application behavior observable via telemetry data. These data are usually categorized into logs, metrics, and traces. All three kinds of data can help you understand what your application is doing and help you answer different kinds of questions about its internal state at a given point of time. First, we will go over the categories of telemetry data that are useful to emit from an application and Go packages that help you implement them. Then we will look at examples of how you can integrate them into your applications.
Logs, Metrics, and Traces
In the book so far we have used functions defined in the standard library's log package such as Printf() and Fatal() to log messages from our applications. This logging technique is easy to implement and better than not having any logging at all. You can search for logs in your logging system using the text in the logs, but that becomes less useful when you want to search for specific data inside the logs. A very common operation is to search for logs having some specific context, or metadata, related to a request—for example, all logs for a particular command, a particular HTTP path, or a gRPC method. With the logging techniques that we have used so far, searches such as these are expensive and inefficient. Thus, you will have to find a way to emit logs from your applications such that each ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access