Status Page, with Redis
Fahmi Noor Fiqri - Aug 22 '22 - - Dev Community
Overview of My Submission
This project is basically a Status Page (like Github Status, Azure Status, Atlassian Statuspage, or something similar) built on top of Blazor Server and Redis. Here you can define a "health check" and get reports when one of your service is down. Also it has a Discord webhook client that will send you a message when one of your service status has changed.
- Monitor HTTP/TCP service uptime
- Simple latency graph over time
- Incident report when one of the services status has changed
- Discord webhook notification
Project video overview
Submission Category
MEAN/MERN Maverick
Language Used
C#/Blazor Server
Link to Code
Status page for your microservice apps
RedisStatusPage
Status page for your next microservice backend apps!
Read on DEV.to
This app started as an idea to integrate to my other project, ritsu-pi, it's a Raspberry Pi home server project where you can deploy all kind of apps to a single RPi (or even a cluster). Redis Hackathon comes in just the right moment to give me an extra motivation to finish this project :)
This project is basically a Status Page (like Github Status, Azure Status, Atlassian Statuspage, or something similar) built on top of Blazor Server and Redis. Here you can define a "health check" and get reports when one of your service is down. Also it has a Discord webhook client that will send you a message when one of your service status has changed.
- Monitor HTTP/TCP service uptime
- Simple latency graph over time
- Incident report when one of the services status has changed
- …
Random advice: Read as many resources before starting a hackathon project...
Here's one of bruh moment when I was almost finished working on this project.
Like many developers out there I usually work with SQL or document DB and in this project I also used Redis.OM to help me use Redis faster via LINQ APIs.
But then I checked out the Redis sample app, Redis Analytics Bitmaps demo.
Bruh... damn
I never thought of using many different keys and data structure to store my service monitoring data. Why I don't use Set with a many different part of the service and timestamp as key and simply query it using something like SCAN
? Why I have to bother dealing with complicated LINQ queries when Redis may have a much cleaner alternative? I simply haven't learned Redis enough.
At that time I'm still thinking of modelling data as table in Redis, and ignores the fact that Redis is different from SQL database and document DB like Mongo and I was stuck with that mindset for quite some time.
After I realized there are many more alternatives to model data in Redis, I felt I have to rewrite my project to embrace Redis data structures.
While I'm working on the improved version of this project, the current implementation of this project is already finished and working properly, you can try to run it right now :D and I will try to rewrite it maybe over the weekend, but I don't know when I will have time to finish it before the hackathon ends.