Go project workshop
You build, end to end, the kind of tools real teams use, combining design, testing, security and shipping in your own lab network.
Level 501 · 13 lessons · 12 practice labs
Lessons
Log collector
- Project: a log agent that follows files
- Project: shipping logs to a central server over TLS
- Project: search and alert rules at the centre
- Short task: add a retention period and a disk limit
Service inventory
- Project: an allow-list of targets and the inventory model
- Project: HTTP, TLS and version checks
- Project: an HTML report that shows changes
- Short task: schedule the checks and keep the results
A small reverse proxy
- Project: a reverse proxy with httputil
- Project: rate limits, an IP allow-list and security headers
- Project: metrics and health checks
- Short task: reload the configuration without downtime
Capstone
- Capstone: a monitoring system that joins the three tools in one panel
Practice labs
- Turning a log line into a structured record: Write a parser separating time, level and message fields and keep a non-matching line in a raw field.
- Resuming the agent where it stopped: Complete an agent that writes its read offset to disk so a restart neither repeats nor loses lines and it moves to the new file on rotation.
- Shipping logs over TLS and applying retention: Ship records to the lab collector over mutual TLS, spool to disk when the connection drops and delete old records past the retention period and disk limit while counting them.
- Building the target allow-list and inventory model: Read the allow-list file, reject invalid and off-list targets and define the inventory record as a struct that marshals to JSON.
- Collecting HTTP and TLS checks: Collect the status code, server header and certificate expiry of allow-listed lab services with a concurrency limit.
- A scheduled report that shows changes: Run the checks at intervals, keep the results and produce an escaped HTML report highlighting what changed since the previous run.
- Setting up a reverse proxy with httputil: Forward requests to the lab backend with httputil.ReverseProxy, set the forwarding headers and return 502 when the backend is down.
- Adding rate limits, an IP allow-list and headers to the proxy: Write middleware adding a per-client rate limit, an IP allow-list for the admin path and security headers and verify with httptest.
- Reloading configuration without downtime: On a signal validate the new configuration and swap it in atomically, carry on with the old one if the file is bad and show no request is dropped under load.
- Adding health and metrics endpoints: Add to the tool a metrics endpoint giving request count, error count and uptime as plain text together with a health endpoint.
- Search and alert rules at the centre: Search collected records by time and text, raise alerts from threshold rules read from a file and suppress repeats of the same alert.
- Joining the three tools in one panel: Write a service showing log, inventory and proxy metrics in one panel that displays partial data within a deadline while one source is not responding.
About this course
You build, end to end, the kind of tools real teams use, combining design, testing, security and shipping in your own lab network.
What you will learn
- Log collector
- Service inventory
- A small reverse proxy
- Capstone
Prerequisites
You should be experienced in the topics of the same path up to level 401.
Lab environment
Lessons run in your own Kali Linux terminal in the browser, connected to a private lab network. Nothing to install.
Frequently asked questions
- Is this course right for my level?
- The course is at level 501; it assumes you know the topics of the lower-level courses.
- Is there anything to install?
- No. Every lesson runs in your own lab environment that opens in the browser.
- How do lessons work?
- Each lesson has 8 to 10 steps and a short quiz. Early steps show the command to type, later steps give less help; if two attempts fail, the solution opens.
- Can I try it for free?
- Yes. The first three lessons of every course are free.