104 lines
2.7 KiB
Markdown
104 lines
2.7 KiB
Markdown
# TowerOps
|
|
|
|
Network monitoring and alerting platform built with Phoenix LiveView.
|
|
|
|
## Features
|
|
|
|
- **Multi-tenant architecture** - Organizations with role-based permissions
|
|
- **Site hierarchy** - Organize equipment across multiple sites
|
|
- **Automated monitoring** - Real-time ping monitoring with configurable intervals
|
|
- **Time-series data** - Efficient storage with TimescaleDB (optional)
|
|
- **Real-time updates** - LiveView dashboard with PubSub
|
|
- **Equipment tracking** - Monitor network devices by IP address
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Elixir 1.14+
|
|
- PostgreSQL 14+
|
|
- (Optional) TimescaleDB for production-grade time-series performance
|
|
|
|
### Setup
|
|
|
|
```bash
|
|
# Install dependencies
|
|
mix setup
|
|
|
|
# Start the server
|
|
mix phx.server
|
|
```
|
|
|
|
Visit [`localhost:4000`](http://localhost:4000) from your browser.
|
|
|
|
### TimescaleDB (Production Only)
|
|
|
|
**Development**: Uses standard PostgreSQL (no TimescaleDB required).
|
|
|
|
**Production**: TimescaleDB is automatically enabled for optimal performance with time-series data.
|
|
|
|
```bash
|
|
# Production deployment - install TimescaleDB first
|
|
brew tap timescale/tap && brew install timescaledb # macOS
|
|
# Then run migrations with MIX_ENV=prod
|
|
MIX_ENV=prod mix ecto.migrate
|
|
```
|
|
|
|
See [TIMESCALEDB.md](TIMESCALEDB.md) for detailed installation and configuration.
|
|
|
|
**How it works**: Migrations detect the environment (`MIX_ENV`) and only enable TimescaleDB features (hypertables, compression, retention policies, continuous aggregates) in production.
|
|
|
|
## Development
|
|
|
|
### Database
|
|
|
|
```bash
|
|
mix ecto.create # Create database
|
|
mix ecto.migrate # Run migrations
|
|
mix ecto.reset # Drop, create, and migrate
|
|
```
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
mix test # Run all tests
|
|
mix test --trace # Run with detailed output
|
|
```
|
|
|
|
### Code Quality
|
|
|
|
```bash
|
|
mix format # Format code with Styler
|
|
mix compile --warnings-as-errors
|
|
```
|
|
|
|
### Firmware Version Tracking
|
|
|
|
The system automatically checks for latest firmware versions daily (2 AM dev, 4 AM prod). To manually trigger a firmware check:
|
|
|
|
```bash
|
|
# Start IEx console
|
|
iex -S mix phx.server
|
|
|
|
# Manually trigger firmware version fetch
|
|
Oban.insert(Towerops.Workers.FirmwareVersionFetcherWorker.new(%{}))
|
|
```
|
|
|
|
The worker will:
|
|
1. Fetch the latest MikroTik RouterOS version from RSS feed
|
|
2. Store version information in the database
|
|
3. Enable firmware update indicators on device detail pages
|
|
|
|
Check the logs for fetch results:
|
|
```elixir
|
|
# View recent Oban jobs
|
|
Towerops.Repo.all(Oban.Job) |> Enum.take(5)
|
|
```
|
|
|
|
## Learn more
|
|
|
|
* Official website: https://www.phoenixframework.org/
|
|
* Guides: https://hexdocs.pm/phoenix/overview.html
|
|
* Docs: https://hexdocs.pm/phoenix
|
|
* Forum: https://elixirforum.com/c/phoenix-forum
|
|
* Source: https://github.com/phoenixframework/phoenix
|