Skip to content
@Ping-Tower

Ping Tower

PingTower

PingTower

Real-time server availability monitoring

PingTower checks your servers over HTTP/HTTPS, TCP, and ICMP, keeps latency history, and tells you the moment one goes down or comes back — in the browser, by email, or in Telegram.

C# Go Python React TypeScript PostgreSQL ClickHouse RabbitMQ Redis Docker Traefik Grafana


How it works

Probe Evaluate Store Alert
Each server gets its own goroutine that checks it over HTTP/HTTPS, TCP, or ICMP on schedule Failures in a row and slow responses flip a server to DOWN; a success brings it back UP Every ping — latency, RTT, packet loss, TLS, DNS — goes to ClickHouse in batches Status changes reach the browser, email, and Telegram, with a cooldown against spam
PingTower architecture
Services talk to each other only through RabbitMQ

Repositories

Product
api — REST API, live status SignalR hub, authentication, notification routing
C# · ASP.NET Core 10 · MediatR · SignalR · EF Core · PostgreSQL
frontend — dashboard: servers, real-time statuses, latency charts, notification settings
React 19 · TypeScript · Vite · TanStack Query · Zustand · Radix UI · Recharts
Monitoring
ping-service — HTTP/HTTPS, TCP and ICMP probes, one goroutine per target
Go · pro-bing · RabbitMQ · Redis
state-elevator — status lifecycle: failure and latency thresholds → UP / DOWN
C# · .NET Worker Service · RabbitMQ · Redis
metrics-writer — batched ping history writes to ClickHouse
C# · .NET Worker Service · ClickHouse
Notifications
email-service — SMTP email with retries and a circuit breaker
C# · .NET Worker Service · MailKit · Polly
tg-bot — Telegram bot: account linking and alert delivery
Python · FastAPI · aiogram · FastStream
Platform
infra — Traefik, PostgreSQL, Redis, ClickHouse, RabbitMQ, logging; one Makefile for the whole stack
Docker Compose · Traefik · Loki / Promtail / Grafana

Getting started

I want to… Go to
run everything locally infra: make -C infra up — storages, broker, migrations and all services
understand the event flow the diagram above and the RabbitMQ topology
integrate over REST api — endpoints, JWT auth, /hubs/monitoring hub

Data model

PingTower ERD
PostgreSQL: servers, ping_settings, users, tokens, telegram_accounts, notification_settings · ClickHouse: server_pings

Popular repositories Loading

  1. api api Public

    API & WebSocket hub - 1 of 6 microservices in PingTower, an event-driven uptime monitoring platform

    C# 1

  2. email-service email-service Public

    Email notification worker for PingTower - SMTP delivery with retry & circuit breaker (MailKit + Polly).

    C#

  3. frontend frontend Public

    Web UI for PingTower - manage monitored servers, live status via WebSocket, ping history & uptime charts. React 19 + TypeScript + Vite.

    TypeScript

  4. infra infra Public

    Infrastructure for PingTower - Traefik, PostgreSQL, ClickHouse, Redis, RabbitMQ, and Loki/Grafana logging, deployed via Docker Compose.

    Makefile

  5. metrics-writer metrics-writer Public

    Time-series ingestion worker for PingTower - batches ping results from RabbitMQ into ClickHouse.

    C#

  6. ping-service ping-service Public

    Concurrent health-check worker for PingTower - HTTP/TCP/ICMP checks, one goroutine per target, publishes results to RabbitMQ. Go.

    Go

Repositories

Showing 9 of 9 repositories

Top languages

Loading…

Most used topics

Loading…