Press "Enter" to skip to content

Build a Home / Business NOC Monitoring Dashboard (Grafana + Prometheus + Kitamon)

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 with latest Package Release (>= 260314)

Notes:

  • localhost is used in examples. Replace it with your server IP if accessing remotely.
  • For Raspberry Pi, replace amd64 with arm64 when 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

Run Grafana

sudo service grafana-server start

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:

sudo tar -xvf prometheus-3.10.0.linux-amd64.tar.gz -C /opt
sudo 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.

Install Python environment

sudo apt install python3.12-venv

Download Kitamon

sudo mkdir -p /opt/kitamon

Download files:

sudo wget https://raw.githubusercontent.com/Anime4000/RTL960x/refs/heads/main/WebGui/kitamon/main.py -O /opt/kitamon/main.py
sudo wget https://raw.githubusercontent.com/Anime4000/RTL960x/refs/heads/main/WebGui/kitamon/requirements.txt -O /opt/kitamon/requirements.txt

Enter directory:

cd /opt/kitamon

Set permission

sudo chown -R 1000:1000 .

Create Python virtual environment

python3 -m venv venv

Activate it:

source venv/bin/activate

Install dependencies:

pip install -r requirements.txt

Exit venv

deactivate

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:

sudo nano /opt/prometheus/prometheus.yml

Replace the contents with:

global:
scrape_interval: 5s

scrape_configs:
- job_name: kitamon
scrape_timeout: 3s
metrics_path: /metrics

static_configs:
- targets:
- 192.168.1.1

relabel_configs:
- source_labels: [__address__]
target_label: __param_target

- source_labels: [__param_target]
target_label: instance

- target_label: __address__
replacement: 127.0.0.1:4000

You can add more - targets: IP Address to point each NIJIKA ONT

Reload Prometheus

sudo systemctl restart prometheus

Verify metrics collection

Open (refresh few times if blank):

http://localhost:9090/targets

You should see:

job="kitamon"

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 (use localhost if Grafana and Prometheus in same VM):

http://localhost:9090

Click:

Save & Test

Import Dashboard

Navigate to:

Dashboards
→ New
→ Import

Copy and Paste the JSON:

https://github.com/Anime4000/RTL960x/blob/main/WebGui/kitamon/grafana_import.json

Once imported, you will have a complete GPON monitoring dashboard.


✅ You now have a NOC-style monitoring system for your GPON device.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.