Table of contents : inside front cover Cloud Observability in Action Copyright dedication contents front matter preface acknowledgments about this book Who should read this book How this book is organized About the code liveBook discussion forum Online resources about the author about the cover illustration 1 End-to-end observability 1.1 What is observability? 1.2 Observability use cases 1.3 Roles and goals 1.4 Example microservices app 1.5 Challenges and how observability helps 1.5.1 Return on investment 1.5.2 Signal correlation 1.5.3 Portability Summary 2 Signal types 2.1 Reference example 2.2 Assessing instrumentation costs 2.3 Logs 2.3.1 Instrumentation 2.3.2 Telemetry 2.3.3 Costs and benefits 2.3.4 Observability with logs 2.4 Metrics 2.4.1 Instrumentation 2.4.2 Telemetry 2.4.3 Costs and benefits 2.4.4 Observability with metrics 2.5 Traces 2.5.1 Instrumentation 2.5.2 Telemetry 2.5.3 Costs and benefits 2.5.4 Observability with traces 2.6 Selecting signals Summary 3 Sources 3.1 Selecting sources 3.2 Compute-related sources 3.2.1 Basics 3.2.2 Containers 3.2.3 Kubernetes 3.2.4 Serverless compute 3.3 Storage-related sources 3.3.1 Relational databases and NoSQL data stores 3.3.2 File systems and object stores 3.4 Network-related sources 3.4.1 Network interfaces 3.4.2 Higher-level network sources 3.5 Your code 3.5.1 Instrumentation 3.5.2 Proxy sources Summary 4 Agents and instrumentation 4.1 Log routers 4.1.1 Fluentd and Fluent Bit 4.1.2 Other log routers 4.2 Metrics collection 4.2.1 Prometheus 4.2.2 Other metrics agents 4.3 OpenTelemetry 4.3.1 Instrumentation 4.3.2 Collector 4.4 Other agents 4.5 Selecting an agent 4.5.1 Security for and of the agent 4.5.2 Agent performance and resource usage 4.5.3 Agent nonfunctional requirements Summary 5 Backend destinations 5.1 Backend destination terminology 5.2 Backend destinations for logs 5.2.1 Cloud providers 5.2.2 Open source log backends 5.2.3 Commercial offerings for log backends 5.3 Backend destinations for metrics 5.3.1 Cloud providers 5.3.2 Open source metrics backends 5.3.3 Commercial offerings for metrics backends 5.4 Backend destinations for traces 5.4.1 Cloud providers 5.4.2 Open source traces backends 5.4.3 Commercial offerings for trace backends 5.5 Columnar data stores 5.6 Selecting backend destinations 5.6.1 Costs 5.6.2 Open standards 5.6.3 Back pressure 5.6.4 Cardinality and queries Summary 6 Frontend destinations 6.1 Frontends 6.1.1 Grafana 6.1.2 Kibana and OpenSearch Dashboards 6.1.3 Other open source frontends 6.1.4 Cloud providers and commercial frontends 6.2 All-in-ones 6.2.1 CNCF Jaeger 6.2.2 CNCF Pixie 6.2.3 Zipkin 6.2.4 Apache SkyWalking 6.2.5 SigNoz 6.2.6 Uptrace 6.2.7 Commercial offerings 6.3 Selecting frontends and all-in-ones Summary 7 Cloud operations 7.1 Incident management 7.1.1 Health and performance monitoring 7.1.2 Handling the incident 7.1.3 Learning from the incident after the fact 7.2 Alerting 7.2.1 Prometheus alerting 7.2.2 Using Grafana for alerting 7.2.3 Cloud providers 7.3 Usage tracking 7.3.1 Users 7.3.2 Costs Summary 8 Distributed tracing 8.1 Intro and terminology 8.1.1 Motivational example 8.1.2 Terminology 8.1.3 Use cases 8.2 Using distributed tracing in a microservices app 8.2.1 Example app overview 8.2.2 Implementing the example app 8.2.3 The “happy path” 8.2.4 Exploring a failure in the example app 8.3 Practical considerations 8.3.1 Sampling 8.3.2 Observability tax 8.3.3 Traces vs. metrics vs. logs Summary 9 Developer observability 9.1 Continuous profiling 9.1.1 The humble beginnings 9.1.2 Common technologies 9.1.3 Open source CP tooling 9.1.4 Commercial continuous profiling offerings 9.1.5 Using continuous profiling to assess continuous profiling 9.2 Developer productivity 9.2.1 Challenges 9.2.2 Tooling 9.3 Tooling considerations 9.3.1 Symbolization 9.3.2 Storing profiles 9.3.3 Querying profiles 9.3.4 Correlation 9.3.5 Standards 9.3.6 Using tooling in production Summary 10 Service level objectives 10.1 The fundamentals of SLOs 10.1.1 Types of services 10.1.2 Service level indicator 10.1.3 Service level objective 10.1.4 Service level agreement 10.2 Implementing SLOs 10.2.1 High-level example 10.2.2 Using Prometheus to implement SLOs 10.2.3 Commercial SLO offerings 10.3 Considerations Summary 11 Signal correlation 11.1 Correlation fundamentals 11.1.1 Correlation with OpenTelemetry 11.1.2 Correlating traces 11.1.3 Correlating metrics 11.1.4 Correlating logs 11.1.5 Correlating profiles 11.2 Using Prometheus, Jaeger, and Grafana for correlation 11.2.1 Metrics–traces correlation example setup 11.2.2 Using metrics–traces correlation 11.3 Signal correlation support in commercial offerings 11.4 Considerations 11.4.1 Early days 11.4.2 Signals 11.4.3 User experience 11.5 Conclusion Summary Appendix. A Kubernetes end-to-end example A.1 Overview A.2 Prerequisites A.3 Demo walk-through A.3.1 Installing the demo A.3.2 Using the demo index inside back cover