In this guide, you will build a Network Operations Center (NOC) style monitoring dashboard similar to what ISPs use.
This setup allows you to monitor GPON / PON Stick telemetry using:
- Grafana – Visualization dashboard
- Prometheus – Metrics database
- Kitamon – GPON telemetry exporter
Once complete, you will have real-time monitoring for your ONU / PON stick.
Requirements
This guide assumes:
- Ubuntu Server (or any Debian-based distribution)
- Basic Linux terminal knowledge
- Internet connection
- NIJIKA PON Stick or ONT BOX
Notes:
localhostis used in examples. Replace it with your server IP if accessing remotely.- For Raspberry Pi, replace
amd64witharm64when downloading binaries. - Make sure your system is fully updated before starting.
sudo apt update
sudo apt upgrade -y
Install Grafana
Grafana will be used to visualize metrics collected by Prometheus.
Install dependencies
sudo apt install -y adduser libfontconfig1 musl
Download Grafana
wget https://dl.grafana.com/grafana/release/12.4.1/grafana_12.4.1_22846628243_linux_amd64.deb
Install Grafana
sudo dpkg -i grafana_12.4.1_22846628243_linux_amd64.deb
Verify installation
Open your browser:
http://localhost:3000
Default login:
Username: admin
Password: admin
Install Prometheus
Prometheus will collect and store metrics from Kitamon.
Create Prometheus user
sudo useradd --no-create-home --shell /bin/false prometheus
Download Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v3.10.0/prometheus-3.10.0.linux-amd64.tar.gz
Extract it:
tar -xvf prometheus-3.10.0.linux-amd64.tar.gz -C /opt
mv /opt/prometheus-* /opt/prometheus
Create directories
sudo mkdir -p /opt/prometheus/storage
sudo mkdir -p /opt/prometheus/consoles
sudo mkdir -p /opt/prometheus/console_libraries
Set permissions:
sudo chown -R prometheus:prometheus /opt/prometheus
Create Prometheus service
Create the systemd service:
sudo nano /etc/systemd/system/prometheus.service
Paste the following configuration:
[Unit]
Description=Prometheus Monitoring
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/opt/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/storage \
--web.console.templates=/opt/prometheus/consoles \
--web.console.libraries=/opt/prometheus/console_libraries
Restart=always
[Install]
WantedBy=multi-user.target
Start Prometheus
Reload systemd:
sudo systemctl daemon-reload
Enable Prometheus on boot:
sudo systemctl enable prometheus
Start Prometheus:
sudo systemctl start prometheus
Verify Prometheus
Open:
http://localhost:9090/targets
If Prometheus is running correctly, the page should load successfully.
Install Kitamon (GPON Telemetry Exporter)
Kitamon is a translator between the PON stick and Prometheus. It converts GPON telemetry into Prometheus metrics.
Note:
One
kitamoninstance is required per PON stick.
Install Python environment
sudo apt install python3.12-venv
Download Kitamon
sudo mkdir -p /opt/kitamon
Download files:
wget https://raw.githubusercontent.com/Anime4000/RTL960x/refs/heads/main/WebGui/kitamon/main.py -O /opt/kitamon/main.pywget https://raw.githubusercontent.com/Anime4000/RTL960x/refs/heads/main/WebGui/kitamon/requirements.txt -O /opt/kitamon/requirements.txt
Enter directory:
cd /opt/kitamon
Create Python virtual environment
python3 -m venv venv
Activate it:
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
Create Kitamon service
sudo nano /etc/systemd/system/kitamon.service
Paste the following:
[Unit]
Description=Kita Monitor GPON Telemetry Exporter
After=network-online.target
Wants=network-online.target
[Service]
User=1000
Group=1000
Type=simple
Environment="PYTHONUNBUFFERED=1"
WorkingDirectory=/opt/kitamon
ExecStart=/opt/kitamon/venv/bin/python3 /opt/kitamon/main.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Start Kitamon
Reload systemd:
sudo systemctl daemon-reload
Enable the service:
sudo systemctl enable kitamon
Start Kitamon:
sudo systemctl start kitamon
Connect Kitamon to Prometheus
Edit the Prometheus configuration:
nano /opt/prometheus/prometheus.yml
Replace the contents with:
global:
scrape_interval: 10s
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "onu_exporter"
metrics_path: /
params:
prometheus: [""]
static_configs:
- targets:
- 127.0.0.1:4000
Reload Prometheus
sudo systemctl restart prometheus
Verify metrics collection
Open:
http://localhost:9090/targets
You should see:
job="onu_exporter"
This means Prometheus is successfully collecting metrics from Kitamon.
Connect Grafana to Prometheus
Open Grafana:
http://localhost:3000
Login:
admin / admin
Add Prometheus Data Source
Navigate to:
Connections
→ Data Sources
→ Add data source
→ Prometheus
Set the URL:
http://localhost:9090
Click:
Save & Test
Import Dashboard
Navigate to:
Dashboards
→ New
→ Import
Import using this URL:
https://www.hitoha.moe/downloads/NIJIKA%20GPON%20_%20Unifi%20Metrics-1773482399352.json
Once imported, you will have a complete GPON monitoring dashboard.
✅ You now have a NOC-style monitoring system for your GPON device.
