Uncategorized

Labtime, an uptime checker for my homelab ⏱️

Keeping My Homelab in Check: How I Created Labtime, an Uptime Checker

I’ve been lurking in the r/selfhosted community for years, and I’m excited to finally share my pet project, Labtime, with all of you. As someone who’s passionate about self-hosting, I’ve always been on the lookout for tools that can help me keep my homelab running smoothly. That’s why I created Labtime, an uptime checker that monitors my homelab’s HTTP endpoints, TLS certificates, and Docker containers.

So, what’s Labtime all about? In a nutshell, it’s a Go-based monitoring system that exposes metrics via Prometheus. This means I can easily integrate it with my existing Prometheus/Grafana stack, which is the backbone of my observability workflow. With Labtime, I can quickly visualize the status of my services, check if they’re responding to pings, and see if my Docker containers are up and running.

Why I Created Labtime

I started working on Labtime because I wasn’t fully satisfied with existing uptime checkers like Uptime-kuma. Don’t get me wrong, they’re great tools, but I wanted something that would fit seamlessly into my Infrastructure as Code (IaC) driven homelab. I also wanted a tool that would allow me to configure monitors via a YAML configuration file, with customizable intervals and comprehensive health checks.

That’s why I decided to create my own uptime checker from scratch. I wanted something that would be easy to use, flexible, and scalable. And, as a bonus, I wanted it to be secure and minimal, with a distroless and rootless container image.

Features of Labtime

So, what can Labtime do? Here are some of its key features:

  • HTTP Monitoring: Labtime checks website response codes with configurable HTTP methods.
  • TLS Certificate Monitoring: It monitors SSL/TLS certificate expiration dates, so I can stay on top of my certificate renewals.
  • Docker Container Monitoring: Labtime tracks the status of my Docker containers, so I can see if they’re up and running.
  • Prometheus Integration: It exports metrics for monitoring dashboards, making it easy to integrate with my existing Prometheus/Grafana stack.
  • Configurable Intervals: I can set custom check intervals per monitor, giving me the flexibility to tailor Labtime to my specific needs.
  • Distroless and Rootless Container: Labtime’s container image is secure, minimal, and easy to use.
  • JSON Schema Validation: The YAML configuration file has a JSON schema available, making it easy to perform in-editor validation.

One of the things I’m most proud of is the demo dashboard I’ve set up on Grafana. It shows off Labtime’s capabilities and gives you a sense of what it can do. You can check it out here.

Getting Started with Labtime

If you’re interested in trying out Labtime, I’ve made it easy to get started. You can find the project on GitHub, where you’ll find a development guide with architecture documentation. I’ve also written a README that explains how to implement new monitor sources, with the help of AI.

I’d love to hear your feedback, ideas, or any issues you encounter. Your input will help me make Labtime an even better tool for the self-hosted community. So, go ahead and star, fork, or contribute to the project – I’m excited to see where Labtime will go from here!

Trzymając mój homelab pod kontrolą: Jak stworzyłem Labtime, checker dostępności

Przez lata przyglądałem się społeczności r/selfhosted, i jestem podekscytowany, że wreszcie mogę podzielić się moim projektem, Labtime, z wszystkimi wami. Jako ktoś, kto jest pasjonatem self-hostingu, zawsze szukałem narzędzi, które pomogą mi utrzymać mój homelab w dobrym stanie. Dlatego stworzyłem Labtime, checker dostępności, który monitoruje moje punkty końcowe HTTP, certyfikaty TLS i kontenery Docker.

Czym jest Labtime? W skrócie, jest to system monitorowania oparty na Go, który eksponuje metryki za pomocą Prometheus. Oznacza to, że mogę go łatwo zintegrować z moim istniejącym stosiem Prometheus/Grafana, który jest podstawą mojego workflow obserwacyjnego. Z Labtime mogę szybko wizualizować stan moich usług, sprawdzić, czy odpowiadają na pings, i zobaczyć, czy moje kontenery Docker są uruchomione.

Dlaczego stworzyłem Labtime

Zacząłem pracę nad Labtime, ponieważ nie byłem całkowicie zadowolony z istniejących checkerów dostępności, takich jak Uptime-kuma. Nie chcę powiedzieć, że są to złe narzędzia, ale chciałem coś, co będzie pasować bezproblemowo do mojego homelabu napędzanego przez Infrastructure as Code (IaC). Chciałem również narzędzie, które pozwoli mi konfigurować monitory za pomocą pliku konfiguracyjnego YAML, z dostosowanymi interwałami i kompleksowymi sprawdzaniem zdrowia.

Dlatego postanowiłem stworzyć swój własny checker dostępności od podstaw. Chciałem coś, co będzie łatwe w użyciu, elastyczne i skalowalne. I, jako bonus, chciałem, aby było ono bezpieczne i minimalne, z obrazem kontenera distroless i rootless.

Możliwości Labtime

Czym może zrobić Labtime? Oto niektóre z jego kluczowych funkcji:

  • Monitorowanie HTTP: Labtime sprawdza kody odpowiedzi stron internetowych z konfigurowalnymi metodami HTTP.
  • Monitorowanie certyfikatów TLS: Monitoruje daty wygaśnięcia certyfikatów SSL/TLS, dzięki czemu mogę być na bieżąco ze swoimi odnawianiami certyfikatów.
  • Monitorowanie kontenerów Docker: Labtime śledzi stan kontenerów Docker, dzięki czemu mogę zobaczyć, czy są one uruchomione.
  • Integracja z Prometheus: Eksportuje metryki dla pulpitów monitorowania, co sprawia, że jest łatwe zintegrowanie go z moim istniejącym stosiem Prometheus/Grafana.
  • Konfigurowalne interwały: Mogę ustawić niestandardowe interwały sprawdzania dla każdego monitora, co daje mi elastyczność dostosowania Labtime do moich konkretnych potrzeb.
  • Obraz kontenera distroless i rootless: Obraz kontenera Labtime jest bezpieczny, minimalny i łatwy w użyciu.
  • Walidacja schematu JSON: Plik konfiguracyjny YAML ma dostępny schemat JSON, co sprawia, że jest łatwe przeprowadzenie walidacji w edytorze.

Jedną z rzeczy, której jestem najbardziej dumny, jest demo pulpit Labtime, który ustawiam na Grafana. Pokazuje możliwości Labtime i daje wam wyobrażenie o tym, co może zrobić. Możesz go zobaczyć tutaj.

Rozpoczęcie pracy z Labtime

Jeśli jesteś zainteresowany praca z Labtime, uczyniłem to łatwe. Możesz znaleźć projekt na GitHub, gdzie znajdziesz przewodnik rozwoju z dokumentacją architektury. Napisałem również plik README, który wyjaśnia, jak zaimplementować nowe źródła monitorowania, z pomocą AI.

Chciałbym usłyszeć Twoją opinię, pomysły lub jakiekolwiek problemy, które napotkasz. Twoja opinia pomoże mi uczynić Labtime jeszcze lepszym narzędziem dla społeczności self-hostingu. Więc, idź ahead i oznacz, rozwidlaj lub przyczynij się do projektu – jestem podekscytowany, aby zobaczyć, dokąd Labtime zajdzie stąd!

Leave a Reply

Your email address will not be published. Required fields are marked *

WordPress Appliance - Powered by TurnKey Linux