Deploy a central server and run lightweight workers in any data centers. Get accurate and reliable downtime alerts.
Start in 5 MinutesLaunch workers in different networks and regions for objective availability assessment.
Multiple users, groups, and detailed access control system for all resources.
HTTP(S), TCP, Ping, and Docker container status monitoring via API.
Configure alerts in Telegram and Mattermost. The system doesn't spam during partial failures.
Centralized tracking of your containers status across all hosts.
Complete history of all user actions in the system for maintaining order and security.
The system consists of two components:
akeb/monitoring-worker:latest
Lightweight agent. Performs checks and sends results to the Server.

mkdir monitoring-server
cd monitoring-server
Create .env file with your configuration:
# Timezone
TZ=Europe/London
# MySQL
MYSQL_PASSWORD=YourSecureRootPassword123
# Web Server Port
NGINX_PORT=80
# Memcached
MEMCACHED_HOST=memcached
# Security - CHANGE THIS!
PASSWORD_SALT=YourRandomSaltStringHere123456789
Create docker-compose.yml:
---
services:
mysql:
container_name: monitoring-mysql
image: mysql:latest
restart: always
environment:
TZ: ${TZ:-UTC}
MYSQL_ROOT_PASSWORD: ${MYSQL_PASSWORD:-RootPassword}
volumes:
- ./mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysql", "-h", "127.0.0.1", "-u", "root", "--password=${MYSQL_ROOT_PASSWORD}", "-e", "show databases;"]
start_period: 10s
interval: 5s
timeout: 5s
retries: 55
memcached:
container_name: "monitoring-memcached"
image: memcached
restart: always
environment:
TZ: ${TZ:-UTC}
command:
- --conn-limit=1024
- --memory-limit=32
- --threads=4
server:
container_name: "monitoring-server"
image: "akeb/monitoring:latest"
restart: always
environment:
TZ: ${TZ:-UTC}
NGINX_PORT: ${NGINX_PORT:-80}
MYSQL_HOST: mysql
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-RootPassword}
MEMCACHED_HOST: ${MEMCACHED_HOST:-memcached}
PASSWORD_SALT: ${PASSWORD_SALT:-bHchLzC3B99Ss1213127fdw876EDghc2gkDdtg}
volumes:
- ./logs/php/:/var/log/php/:rw
- ./logs/nginx/:/var/log/nginx/:rw
ports:
- "${NGINX_PORT:-80}:80"
depends_on:
mysql:
condition: service_healthy
memcached:
condition: service_started
docker-compose up -dThe server will be available at http://your-server-ip
Open your browser and navigate to your server's IP address.
admin@admin.com and password Admin@123)On each remote server where you want to perform monitoring, run:
docker run -d \
--name monitoring-worker \
-e SERVER_URL=https://your-monitoring-server.com \
-e WORKER_KEY=your_unique_worker_key_here \
akeb/monitoring-worker:latest
You'll see the first results within a minute!
Complete guide for installation, configuration and usage of all project features.