uptime-monitor
uptime-monitor copied to clipboard
A self-hosted web monitoring tool, built with laravel
Uptime Monitor
Uptime Monitor is a self-hosted web monitoring tool, built with laravel.
Features
- Monitor your web uptime per minutes (or any time interval)
- Record response time on each web
- Show uptime badges in 3 colors: green for up, yellow for warning, red for down, based on response time
- Send telegram notification when you site down for 5 minutes (based on check periode)
Why I need this?
- Open-source, modify as you need
- Self-hosted, deploy on your own server
- Store and control your monitoring logs yourself
- Let you know when your websites are down
- For freelancer/agency, increase your client's trust because you monitor their website
How to Install
Server Requirements
This application can be installed on local server and online server with these specifications:
- PHP 8.1 (and meet Laravel 10.x requirements).
- MySQL or MariaDB Database.
- SQLite (for automated testing).
Installation Steps
- Clone repository:
git clone https://github.com/nafiesl/uptime-monitor.git
-
$ cd uptime-monitor
- Install PHP dependencies:
$ composer install
- Install javscript dependencies:
$ npm install
- Copy
.env.example
to.env
:$ cp .env.example .env
- Generate application key:
$ php artisan key:generate
- Create a MySQL or MariaDB database.
- Configure database and environment variables
.env
.APP_URL=http://localhost:8000 APP_TIMEZOME="Asia/Jakarta" DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret TELEGRAM_NOTIFER_TOKEN=
- Run database migration:
$ php artisan migrate --seed
- Build assets:
$ npm run build
- Run task scheduler:
$ php artisan schedule:work
- Start server in a separeted terminal tab:
$ php artisan serve
- Open the web app: http://localhost:8000.
- Login using default user credential:
- Email:
[email protected]
- Password:
password
- Email:
- Go to Customer Site menu.
- Add some new customer sites (name and URL).
- After adding customer sites, go to Dashboard
- Click Start Monitoring to update the uptime badge per minute.
Telegram Notifier Setup
In order to get notified in Telegram when the customer sites are down, we need to use a Telegram Bot and a Chat ID
- Create a Telegram Bot (how to)
- Get a Chat ID of the Telegram Bot (how to)
- Update
.env
file, setTELEGRAM_NOTIFER_TOKEN=your_telegram_bot_token
- Set our Chat ID in the Profile Page.
- Go to User Profile Menu
- Click Edit Profile
- Fill the Telegram Chat ID field with
your_chat_id
- Click Update Profile
- Click Test Telegram Chat to test the telegram configuration
- By default, we will have 5 minutes inteval when the customer sites are down. But we can change the interval per customer sites.
- Go to Customer Site menu
- Select one of the customer site and click Edit link
- Set the Notify User Interval field, between 0 to 60.
- Set the Notify User Interval field to 0 if you don't want to get notified.
Screenshot
Dashboard
Dashboard in mobile device
Monitoring graph on customer site detail
Monitoring log tab on customer site detail
User profile menu
Telegram notification sample
Lisensi
Uptime Monitor project is an open-sourced software licensed under the Lisensi MIT.