Course Introduction
Welcome to Software Instrumentation course. This course is designed to help you understand the fundamental ideas behind software instrumentation and monitoring, its applicability, benefits, as well as current and future challenges.
I made a short video to explain what this course is about and how the result of final projects and challenges look like.
Who is this course for?
This course is designed for beginner and intermediate software engineers who are interested in learning about software instrumentation and monitoring. No prior experience with software instrumentation and monitoring is required.
If you are an expert and have been working with observability tools for years, this course might not be for you.
Course Goals/Objectives
During this course, you will learn the following:
- Fundamental ideas behind software instrumentation and monitoring, its applicability, benefits, as well as current and future challenges.
- Setting up basic tech stacks for tracing, logging, and monitoring in cloud native environment such as Grafana, Fluenbit, Prometheus, Loki, Jaeger, and OpenTelemetry.
- Different instrumentation techniques to understand the performance and how your application behaves. It includes, and not limited to, logs, metrics, traces, manual instrumentation, and automatic instrumentation.
- Performing instrumentation for application consists of multiple dependencies (e.g. web application, microservices, databases, message brokers, message queues, etc.)
- Using instrumentation to diagnose performance issues, reliability issues, and business-relevant metrics.
Tech Stacks Used
During this course, we are going to use, learn and discuss at least the following cloud native technologies:
- Grafana
- Grafana Loki
- Fluentbit
- Prometheus
- Jaeger
- OpenTelemetry
- Go
- Postgresql
- Docker
Communication and collaboration
We will use Discord for communication and collaboration. You will be invited to the Discord channel after you register to the course. You can use discord to share your progress, ask questions, and help each other. I will be there to help you as well.
What this course is about
-
Instrumentation and monitoring from software engineering perspective. We will focus on how we as software engineers can instrument our application and how we can use the data to understand our application and so that we can improve our application performance, reliability, and business metrics.
-
Hands-on experience. This course is designed to be hands-on. You will be given a lot of exercises to help you understand the concepts and apply it in practice.
-
This course is designed to be a starting point for you to learn about instrumentation and monitoring. It is meant to give you ideas about what can be enabled by having good instrumentation and monitoring practice by using real world scenario. More often than not, you will find that the scenario is not complete and you will need to do some research to complete the exercise. This is intentional. I want you to be able to learn how to learn and how to find the information that you need to complete the exercise.
What this course is not about
-
Building and configuring logging and monitoring infrastructure *at scale. Logging and monitoring tooling that we will use in this course is probably not suitable for production use case at scale. But it should be enough for you to get started and learn the concepts applicable to production use case.
-
Deep dive into logging, tracing, and monitoring tools. We will only cover the basics of the tools that you can use to understand your application performance and behavior.