Sign inSign up

azirar/glenn

By azirar

•Updated 8 months ago

A Reactive health monitoring platform

Image
0

1.6K

azirar/glenn repository overview

⁠Glenn - Health Monitoring Platform

Version Java Version Spring Boot Reactive

A reactive health monitoring platform

ā šŸ“‹ Overview

Glenn is a reactive health monitoring platform that continuously checks the availability and performance of your applications. Named after the dedicated healer from the light novel "Monster Girl Doctor," Glenn watches over your digital ecosystem with the same care and attention.

⁠✨ Key Features
  • šŸ”„ Continuous Monitoring: Automatically checks your applications at configurable intervals
  • šŸ“Š Real-time Dashboard: Live view of all monitored applications with status indicators
  • ⚔ Reactive Architecture: Built with Spring WebFlux and R2DBC for non-blocking operations
  • šŸ“ˆ Response Time Tracking: Monitor performance metrics over time
  • šŸ·ļø Category Management: Organize applications by categories with filtering
  • šŸ“± Responsive Design: Works on desktop and mobile devices
  • šŸ”” Status History: Complete history of all health checks
  • āš™ļø Configurable Status Codes: Define which HTTP codes indicate a healthy application
  • 🌐 Live Updates: Server-Sent Events (SSE) for real-time dashboard updates

ā šŸ—ļø Architecture

Glenn is built with a modern reactive stack:

  • Backend: Spring Boot 3.3.2 with WebFlux
  • Database: PostgreSQL with R2DBC for reactive data access
  • Migrations: Liquibase for database schema management
  • Frontend: Thymeleaf with Bootstrap 5 and Chart.js
  • Real-time: Server-Sent Events (SSE) for live updates
  • Build Tool: Maven

ā šŸš€ Getting Started

⁠Prerequisites
  • Java 21 or higher
  • PostgreSQL 14 or higher
  • Maven 3.8+
⁠Installation
  1. Clone the repository

    git clone https://github.com/AZIRARM/Glenn.git
    cd glenn
    
  2. Configure the database

    Create a PostgreSQL database:

    CREATE DATABASE glenn;
    
  3. Configure environment variables

    Create a .env file at the project root:

    POSTGRES_URL=jdbc:postgresql://localhost:5432/glenn
    POSTGRES_REACTIVE_URL=r2dbc:postgresql://localhost:5432/glenn
    POSTGRES_USERNAME=postgres
    POSTGRES_PWD=yourpassword
    
  4. Build the application

    mvn clean package
    
  5. Run the application

    mvn spring-boot:run
    

    Or with environment variables:

    set -a; source .env; set +a; mvn spring-boot:run
    
  6. Access the dashboard

    Open your browser and navigate to http://localhost:1080

ā šŸ“– Usage Guide

⁠Adding an Application
  1. Click the "Add Application" button on the dashboard
  2. Fill in the application details:
    • Name: A descriptive name (e.g., "Production API")
    • Category: Optional category for filtering (e.g., "Backend", "Frontend")
    • Description: Optional description of the application's purpose
    • URL: The endpoint to monitor (must start with http:// or https://)
  3. Select which HTTP status codes indicate a healthy application
    • Use preset buttons for quick selection (2xx Success, 3xx Redirect)
    • Default selection includes common success codes
  4. Click "Add Application" to start monitoring
⁠Dashboard Features
  • Status Cards: Visual cards showing application name, current status, response time, and HTTP code
  • Statistics Bar: Overview of total apps, healthy/unhealthy counts, and global uptime
  • Category Filtering: Click on category badges to filter applications by category
  • Status Filtering: Filter by all, healthy, or unhealthy applications
  • Live Updates: Dashboard updates automatically when new health checks are performed
  • Quick Actions: Pause/resume monitoring or delete applications directly from the dashboard
⁠Application Details

Click the "Details" button on any application card to access:

  • Complete application information
  • Uptime statistics (24h, 7d, 30d)
  • Response time chart
  • Complete status history
  • Edit application configuration
⁠Editing an Application

Click the pencil icon (āœļø) on an application card or in the details view to:

  • Modify application name, category, or description
  • Update the monitored URL
  • Change accepted status codes

ā āš™ļø Configuration

⁠Application Properties
PropertyDescriptionDefault
monitoring.intervalInterval between health checks (ms)30000
monitoring.timeoutHTTP request timeout (ms)5000
server.portWeb server port1080
⁠Monitoring Configuration

The monitoring service automatically:

  • Checks all active applications at the configured interval
  • Records status, response time, and any errors
  • Updates the dashboard in real-time via SSE
  • Maintains complete history for uptime calculations

ā šŸ› ļø Technology Stack

ComponentTechnologyPurpose
Core FrameworkSpring Boot 3.3.2Application foundation
Reactive WebSpring WebFluxNon-blocking HTTP requests
DatabasePostgreSQLData persistence
Reactive DBR2DBCNon-blocking database access
MigrationsLiquibaseDatabase version control
Template EngineThymeleafServer-side HTML rendering
FrontendBootstrap 5 + Chart.jsUI components and charts
Real-timeSSE (Server-Sent Events)Live dashboard updates
Build ToolMavenDependency management

ā šŸ“ Project Structure

glenn/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ main/
│   │   ā”œā”€ā”€ java/org/azirar/glenn/
│   │   │   ā”œā”€ā”€ endpoints/        # Web controllers
│   │   │   ā”œā”€ā”€ handlers/         # Business logic
│   │   │   ā”œā”€ā”€ models/           # Domain entities
│   │   │   └── repositories/     # Data access
│   │   └── resources/
│   │       ā”œā”€ā”€ db/changelog/     # Liquibase migrations
│   │       ā”œā”€ā”€ static/           # CSS, JS, images
│   │       ā”œā”€ā”€ templates/        # Thymeleaf templates
│   │       └── application.yml   # Application config
│   └── test/                     # Unit tests
ā”œā”€ā”€ pom.xml                        # Maven configuration
└── README.md                      # This file

⁠🌟 Why "Glenn"?

Glenn is named after the compassionate healer from the light novel and anime "Monster Girl Doctor." Just as Glenn treats and cares for monster girls with dedication and expertise, this platform monitors and cares for your applications, ensuring they stay healthy and performant.

ā šŸ“Š Roadmap

  • Basic health monitoring
  • Real-time dashboard with SSE
  • Category filtering
  • Response time tracking
  • Application editing
  • Email/Slack notifications
  • Advanced uptime SLAs
  • Custom monitoring intervals per application
  • API for external integrations
  • Prometheus metrics export
  • Grafana dashboards

ā šŸ¤ Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

ā šŸ“ License

This project is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details.

ā šŸ‘ Acknowledgments

  • Inspired by the need for simple, reactive health monitoring
  • Named after Glenn Litbeit from "Monster Girl Doctor" (Kensuke Koba)
  • Built with Spring Boot and the amazing Java ecosystem
⁠Glenn vs Other Monitoring Solutions
⁠Why Glenn Stands Out
FeatureGlennUptime KumaGatusUptimeRobot
Modern Tech Stackāœ… Spring WebFlux/R2DBC (Reactive)āŒ Node.js (Blocking)āœ… Go (Efficient)āŒ Legacy PHP
Reactive Architectureāœ… Non-blocking, High ConcurrencyāŒ Synchronous I/Oāœ… LightweightāŒ Traditional
Databaseāœ… PostgreSQL (Enterprise-grade)āŒ SQLite (File-based)āŒ No persistenceāœ… Cloud
Stream Monitoringāœ… PostgreSQL, MySQL, MongoDB, SSH, Redis, RabbitMQāŒ HTTP/HTTPS onlyāŒ HTTP/HTTPS onlyāŒ HTTP/HTTPS only
Real-time Updatesāœ… SSE (Server-Sent Events)āœ… WebSocketsāŒ PollingāŒ Polling
History Retentionāœ… Full SQL database (years)āœ… File-based (limited)āŒ In-memory onlyāš ļø Limited (paid)
Self-hostedāœ… Docker, easy setupāœ… Dockerāœ… Single binaryāŒ SaaS only
Category Filteringāœ… Yesāœ… YesāŒ Noāœ… Yes
Response Time Trackingāœ… Detailed per checkāœ… Basicāœ… Basicāœ… Basic
ā šŸŽÆ Perfect for Java Developers
AspectGlennOthers
Tech Stack Familiarityāœ… Java 21, Spring EcosystemāŒ Node.js, Go, PHP
Code Customizationāœ… Full Java controlāŒ Limited by design
Integrationāœ… Easy with Java servicesāš ļø Requires adapters
Learning Curveāœ… Natural for Java devsāš ļø New languages/frameworks
ā šŸ“Š Performance & Scalability
MetricGlennUptime KumaGatusUptimeRobot
ArchitectureReactive, non-blockingEvent-loop (Node.js)Concurrent (Go)Traditional
DatabasePostgreSQL connection poolSQLite (single-threaded)NoneCloud
Concurrent checks⚔ Excellentāš ļø Moderateāœ… Goodāœ… Excellent
Memory usage~150-250MB~50-100MB~10-20MBN/A
ā šŸš€ What Makes Glenn Unique
⁠1. Stream Protocol Support

Unlike competitors limited to HTTP/HTTPS, Glenn monitors:

  • PostgreSQL databases
  • MySQL/MariaDB
  • MongoDB
  • SSH services
  • Redis instances
  • RabbitMQ/AMQP
⁠2. Enterprise-Grade Database
  • PostgreSQL persistence means:
    • Years of history
    • Complex queries
    • Data integrity
    • Backup/restore capabilities
⁠3. Reactive from the Core
  • Spring WebFlux + R2DBC = truly non-blocking
  • Handles thousands of concurrent checks
  • Efficient resource usage
  • Perfect for microservices environments
⁠4. Developer-Friendly
  • Pure Java - easy to extend
  • Familiar Spring ecosystem
  • Clean, maintainable codebase
  • Perfect for teams already using Java
ā šŸ“ˆ Ideal Use Cases
ScenarioGlennOther Solutions
Java/Spring ecosystemāœ… Perfect fitāš ļø Foreign stack
Mixed protocols (HTTP + DB)āœ… One tool for everythingāŒ Need multiple tools
Long-term historical analysisāœ… SQL-poweredāš ļø Limited retention
High-frequency checksāœ… Reactive architectureāš ļø May struggle
Self-hosted with PostgreSQLāœ… Native supportāš ļø SQLite limitations
ā šŸŽ“ Comparison Summary
AspectGlenn's Advantage
TechnologyMost modern stack (Spring WebFlux + R2DBC)
Protocol SupportWidest (HTTP + Databases + SSH + Message queues)
Data PersistenceEnterprise-grade (PostgreSQL)
Developer ExperienceBest for Java/Spring developers
ArchitectureTruly reactive, non-blocking
CustomizationFull control via Java code
ā šŸ’” When to Choose Glenn
  • āœ… You're a Java/Spring developer
  • āœ… You need to monitor databases and services, not just HTTP
  • āœ… You want long-term history in PostgreSQL
  • āœ… You prefer self-hosted solutions
  • āœ… You need a lightweight but powerful monitoring tool
ā šŸ”® Future Potential
Coming SoonStatus
Notifications (Slack, Discord, Email)🚧 Planned
Public Status Pages🚧 Planned
SSL Certificate Monitoring🚧 Planned
REST API🚧 Planned
Authentication & Multi-user🚧 Planned

Glenn isn't just another uptime monitor. It's a modern, reactive health monitoring platform built for Java developers who need more than just HTTP checks.

ā šŸ“§ Contact

Project Link: Glenn on Github⁠

Tag summary

Content type

Image

Digest

sha256:1b369b4f4…

Size

133.5 MB

Last updated

8 months ago

docker pull azirar/glenn