Table of contents
Intro
Requirements
VPS Provider and Servers
Technologies used
How a node works
How the core server works
To sum up
Wha...
For further actions, you may consider blocking this person and/or reporting abuse
Wow man you're amazing. I have just visited your website and it looks very elegant. No non-sense, very simple & shows what it does. Wonderful.
That's does a lot of motivation to build something that could help people and when it looks like a simple trivial job. I think you've done a wonderful job, that too while you were working at a full-time job. You really have a great productive mindset.
I am sure you should've invested good amount of time planning it so well.
In short, Wonderful idea. All the best
Cheers 🍺
Thank you! :)
At first, I was tracking the time I spent on the project, and it was like 620 hours. Then I stopped. So in total, I spent maybe 1000+ hours :)
Great work! I would like to read more articles related to... How architecture developed.
Thanks for sharing.
Happy coding 🙂.
Thank you
This is what I need too. It's not hard to find something like "how to center a div" or "jquery send form", but it's hard to find how big products work inside.
For example, if people shared their Database structure or something :)
In code we trust 😎
Im been thinking of building uptime monitoring like this. Whats concern me about is the resources. Thinking of 10,000 or more data to be monitor in a minute, could be very expensive. What would you suggest? Do you have servers that runs only queues?
Hi Viktor,
Nice work here and as you said it's not as easy as it looks.
You could use Golang which is superb for its concurrency, each go routine only takes up 2 kilobytes!
I am also taking on this type of project in my spare time and at the planning stages at the moment.
I am using Golang for the processing of queues and actually sending out HTTP requests / pings etc and Laravel for the rest.
Question Time
I am stuck at one thing, the part of the process where the system fetches checks to be processed on the queue etc, what if you have 5 million checks to be processed?
You cannot fetch all checks at once, you would run out of memory.
You could batch the checks, ie. fetch 200 checks at a time from the database, with this approach let's say it takes 0.1s to fetch 200 checks and push them to the queue.
That would be 5,000,000 (checks) / 200 (batch) * 0.1 (seconds) = 2500 (seconds)
2500 / 60 = 41 minutes...
How is this scale-able and have you hit such an issue yet?
Thanks
Ben
Woah amazing.
I have also took up similar project myself and it's still in progress from past couple of months.
Although I've based it via ping check only.
And doesn't include features like you have XD
Hope to complete it very soon 💗
Cheers
Just don't give up. It took me a year to build this!
Love the concept and simplicity of the website. Would be great if user can check any TCP port and/or more popular protocol. I am missing at least DNS, POP and IMAP
Well, I have this is plans. But most users need HTTP checks.
Hmm I now realize that it's not easy to integrate them, since they have different attributes I guess.
So I'll need a monitor "type" and bunch of additional columns for monitor_checks table.
The implementation of request should be easy though, so many nice libraries are here :)
Great summary, Viktor!
Always the pleasure to read your stuff :)
Oh, I know you! :) Thank you!
I wonder if we can use coroutine from swoole for example and if the performance would be better.
Woah, never heard of coroutine, will check it out
Performance is crucial here since the more checks should be done, the more Memory/CPU I'll need
Thanks for sharing, I was just started working my own version, reading your post it take quite a lot of scenario to take care.
Nice read and great idea.
Did you consider a serverless approach? You could probably save some bucks in infra using lambdas with sqs queues to ping the URLs.
What should I use instead of Redis? RabbitMQ or Kafka or do you have any recommendations based on your experience?
Are you really making a profit?
Started to make it in September