Monitoring Agent

An open-source, self-hosted observability platform for monitoring servers, AWS infrastructure, website uptime, SSL certificates, logs, and browser performance from one unified dashboard.

Self-Hosted Observability Platform
Github

Monitor your entire stack from one place

Monitoring Agent is an open-source, self-hosted observability platform designed to give teams visibility into their infrastructure and applications without sending operational data to a third-party monitoring service.

It combines a Laravel web application with a lightweight Java agent, AWS integrations, scheduled uptime checks, and a browser monitoring SDK.

The main dashboard brings together server health, cloud resources, website availability, SSL status, and frontend performance in one responsive interface.

Key features

Server monitoring

Install the lightweight Java agent on Linux servers to collect:

  • CPU and memory utilization
  • Running processes
  • Process-level CPU and memory usage
  • Disk and filesystem usage
  • Selected application and system logs
  • Historical process and storage snapshots
  • Process CPU heatmaps

Each agent uses a stable UUID and sends telemetry through a token-authenticated API.

AWS Cloud monitoring

Connect AWS accounts through an external-ID-protected, read-only IAM role.

Monitoring Agent provides visibility into:

  • Auto Scaling groups
  • EC2 instances and EBS volumes
  • RDS databases
  • S3 buckets
  • VPC resources and Security Groups
  • Elastic IP addresses
  • CloudWatch metrics
  • RDS Performance Insights

The platform also generates read-only recommendations for public exposure, unrestricted ports, unused Security Groups, public S3 buckets, and unassociated Elastic IP addresses.

It never modifies AWS resources.

Website uptime monitoring

Monitor website availability every minute and track:

  • HTTP status
  • Response time
  • Outages and recoveries
  • Connection and TLS errors
  • Last check time
  • SSL certificate expiry

Administrators can use the Check now action to run a monitor manually.

SSL inspection can be enabled or disabled for each monitor. When enabled, certificate expiry alerts are generated at 30, 15, 7, and 0 days.

Browser monitoring

Add the lightweight browser SDK to a website to collect real-user performance and error data:

  • Page loads and reloads
  • DNS and connection timing
  • Time to first byte
  • Largest Contentful Paint
  • Cumulative Layout Shift
  • Interaction to Next Paint
  • Fetch, XMLHttpRequest, and HTMX activity
  • HTTP and network failures
  • JavaScript errors
  • Unhandled promise rejections
  • Failed page resources

Events are grouped by page view, making it easy to connect a main page request with the background activity and errors that followed it.

The SDK does not collect form values, DOM text, cookies, authorization headers, or request bodies.

Log monitoring

Monitoring Agent can synchronize selected application and system log files.

It supports:

  • Durable file offsets
  • Log rotation and truncation handling
  • Controlled upload sizes
  • File and date-time filtering
  • Paginated log viewing
  • Restricted, administrator-configured file access

Administration and security

The platform includes:

  • Administrator and member roles
  • Team invitations
  • Named, hash-only API tokens
  • SMTP configuration
  • White-label name and logo
  • Configurable data retention
  • Guided installation
  • Responsive desktop and mobile navigation
  • Light and dark themes
  • Administrator-protected factory reset

Why I built it

Infrastructure monitoring often becomes fragmented across several tools.

One platform may contain server metrics, another monitors AWS, another checks uptime, and another records browser errors. This makes it harder to understand how an infrastructure issue affects the customer experience.

Monitoring Agent brings these signals together while keeping deployment and data ownership under the user’s control.

The project focuses on:

  • Self-hosted data ownership
  • A straightforward installation process
  • Read-only cloud access
  • Useful defaults
  • Clear and responsive dashboards
  • Extensibility for future integrations
  • Avoiding unnecessary third-party dependencies

Technology stack

  • Laravel 13
  • PHP 8.3+
  • Tailwind CSS 4
  • Vite
  • Java 17
  • Maven
  • AWS SDK for PHP
  • MySQL, PostgreSQL, or Oracle
  • Apache
  • Laravel Scheduler

Installation

For a supported Linux server:

git clone https://github.com/kunalkurhader/monitoring-agent.git
cd monitoring-agent
sudo ./install.sh

The installer prepares the Laravel application, Java agent build environment, Apache integration, and scheduled background tasks.

After installation, open the application in a browser and complete the guided database and administrator setup.

Local development

git clone https://github.com/kunalkurhader/monitoring-agent.git
cd monitoring-agent

composer install --ignore-platform-req=ext-oci8
npm install
cp .env.example .env

php artisan key:generate
php artisan migrate
npm run build
php artisan serve

Then open:

http://127.0.0.1:8000

Demo data

The repository includes repeatable seeders for testing every major dashboard:

php artisan db:seed --class=DashboardDemoSeeder --force
php artisan db:seed --class=BrowserMonitoringDemoSeeder --force
php artisan db:seed --class=AwsCloudDemoSeeder --force
php artisan db:seed --class=WebsiteMonitoringDemoSeeder --force

These seeders generate recent server telemetry, browser activity, AWS resources, uptime checks, SSL states, warnings, and errors.

Open-source contributions

Monitoring Agent is open source, and contributions are welcome.

You can help by:

  • Fixing bugs
  • Adding tests
  • Improving documentation
  • Enhancing accessibility
  • Improving dashboard usability
  • Adding monitoring integrations
  • Optimizing data collection and queries
  • Extending the Java or browser agents

Before opening a pull request, run:

vendor/bin/pint --test
php artisan test
npm run build

If the Java agent changes, also run:

mvn -f agent/pom.xml clean package

For larger features or schema changes, open an issue first so the approach can be discussed.