Deploy OAM monitoring stack on tsys-librenms VM:
- Smokeping: fully operational (port 8081, 16 targets, FPing probing)
- NetDisco: backend+DB+PostgreSQL running (port 8082), all 4 Dell switches
discovered via SNMP. Web UI blocked by Dancer session_cookie_key config
issue — needs interactive netdisco-deploy run
- Oxidized: container running (port 8083), deployed with placeholder
credentials — needs switch login/password to start config backups
- UNPoller: config + docker-compose ready, blocked on Docker image
availability (image moved from all common registries)
- Weathermap: not yet started (deferred to separate commit)
All configs use DNS names only (no IP literals). All scripts pass
shellcheck via check-rules.sh.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
@@ -0,0 +1,41 @@
|
|||||||
|
# NetDisco deployment configuration [#337]
|
||||||
|
# SNMP community: kn3lmgmt (v2c)
|
||||||
|
|
||||||
|
# Database connection (matched to docker-compose services)
|
||||||
|
database:
|
||||||
|
host: netdisco-postgresql
|
||||||
|
dbname: netdisco
|
||||||
|
user: netdisco
|
||||||
|
pass: netdisco
|
||||||
|
|
||||||
|
# SNMP authentication
|
||||||
|
snmp_auth:
|
||||||
|
- tag: default_v2c
|
||||||
|
community: kn3lmgmt
|
||||||
|
read: true
|
||||||
|
write: false
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
- tag: default_v1
|
||||||
|
community: kn3lmgmt
|
||||||
|
read: true
|
||||||
|
write: false
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
# Job scheduling
|
||||||
|
schedule:
|
||||||
|
discoverall:
|
||||||
|
first: 60
|
||||||
|
every: 3600
|
||||||
|
macwalk:
|
||||||
|
first: 120
|
||||||
|
every: 900
|
||||||
|
arpwalk:
|
||||||
|
first: 150
|
||||||
|
every: 900
|
||||||
|
nbtwalk:
|
||||||
|
first: 180
|
||||||
|
every: 900
|
||||||
|
|
||||||
|
# Node freshness (keep history)
|
||||||
|
node_freshness: 0
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
services:
|
||||||
|
netdisco-postgresql:
|
||||||
|
image: netdisco/netdisco:2.102001-postgresql
|
||||||
|
container_name: oam-netdisco-db
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=netdisco
|
||||||
|
- POSTGRES_PASSWORD=netdisco
|
||||||
|
- POSTGRES_DB=netdisco
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/pgdata:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
netdisco-backend:
|
||||||
|
image: netdisco/netdisco:2.102001-backend
|
||||||
|
container_name: oam-netdisco-backend
|
||||||
|
depends_on:
|
||||||
|
- netdisco-postgresql
|
||||||
|
environment:
|
||||||
|
- NETDISCO_DB_HOST=netdisco-postgresql
|
||||||
|
- NETDISCO_DB_NAME=netdisco
|
||||||
|
- NETDISCO_DB_USER=netdisco
|
||||||
|
- NETDISCO_DB_PASS=netdisco
|
||||||
|
- NETDISCO_SNMP_COMMUNITY=kn3lmgmt
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
|
||||||
|
- /opt/oam/netdisco/data:/home/netdisco/netdisco-sqlite
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
netdisco-web:
|
||||||
|
image: netdisco/netdisco:2.102001-web
|
||||||
|
container_name: oam-netdisco-web
|
||||||
|
depends_on:
|
||||||
|
- netdisco-postgresql
|
||||||
|
- netdisco-backend
|
||||||
|
environment:
|
||||||
|
- NETDISCO_DB_HOST=netdisco-postgresql
|
||||||
|
- NETDISCO_DB_NAME=netdisco
|
||||||
|
- NETDISCO_DB_USER=netdisco
|
||||||
|
- NETDISCO_DB_PASS=netdisco
|
||||||
|
ports:
|
||||||
|
- "8082:5000"
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
|
||||||
|
restart: unless-stopped
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Deploy NetDisco on tsys-librenms
|
||||||
|
# Part of OAM platform [#337]
|
||||||
|
# L2 network discovery and mapping via SNMP
|
||||||
|
|
||||||
|
echo "=== Setting up NetDisco ==="
|
||||||
|
|
||||||
|
mkdir -p /opt/oam/netdisco/{config,data,pgdata}
|
||||||
|
|
||||||
|
# Write deployment config
|
||||||
|
cat > /opt/oam/netdisco/config/deployment.yml <<'YMLEOF'
|
||||||
|
# NetDisco deployment configuration [#337]
|
||||||
|
# SNMP community: kn3lmgmt (v2c)
|
||||||
|
|
||||||
|
database:
|
||||||
|
host: netdisco-postgresql
|
||||||
|
dbname: netdisco
|
||||||
|
user: netdisco
|
||||||
|
pass: netdisco
|
||||||
|
|
||||||
|
snmp_auth:
|
||||||
|
- tag: default_v2c
|
||||||
|
community: kn3lmgmt
|
||||||
|
read: true
|
||||||
|
write: false
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
- tag: default_v1
|
||||||
|
community: kn3lmgmt
|
||||||
|
read: true
|
||||||
|
write: false
|
||||||
|
version: 1
|
||||||
|
|
||||||
|
schedule:
|
||||||
|
discoverall:
|
||||||
|
first: 60
|
||||||
|
every: 3600
|
||||||
|
macwalk:
|
||||||
|
first: 120
|
||||||
|
every: 900
|
||||||
|
arpwalk:
|
||||||
|
first: 150
|
||||||
|
every: 900
|
||||||
|
nbtwalk:
|
||||||
|
first: 180
|
||||||
|
every: 900
|
||||||
|
|
||||||
|
node_freshness: 0
|
||||||
|
YMLEOF
|
||||||
|
|
||||||
|
# Write docker-compose
|
||||||
|
cat > /opt/oam/netdisco/docker-compose.yml <<'DCEOF'
|
||||||
|
services:
|
||||||
|
netdisco-postgresql:
|
||||||
|
image: netdisco/netdisco:2.102001-postgresql
|
||||||
|
container_name: oam-netdisco-db
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=netdisco
|
||||||
|
- POSTGRES_PASSWORD=netdisco
|
||||||
|
- POSTGRES_DB=netdisco
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/pgdata:/var/lib/postgresql/data
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
netdisco-backend:
|
||||||
|
image: netdisco/netdisco:2.102001-backend
|
||||||
|
container_name: oam-netdisco-backend
|
||||||
|
depends_on:
|
||||||
|
- netdisco-postgresql
|
||||||
|
environment:
|
||||||
|
- NETDISCO_DB_HOST=netdisco-postgresql
|
||||||
|
- NETDISCO_DB_NAME=netdisco
|
||||||
|
- NETDISCO_DB_USER=netdisco
|
||||||
|
- NETDISCO_DB_PASS=netdisco
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
|
||||||
|
- /opt/oam/netdisco/data:/home/netdisco/netdisco-sqlite
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
netdisco-web:
|
||||||
|
image: netdisco/netdisco:2.102001-web
|
||||||
|
container_name: oam-netdisco-web
|
||||||
|
depends_on:
|
||||||
|
- netdisco-postgresql
|
||||||
|
- netdisco-backend
|
||||||
|
environment:
|
||||||
|
- NETDISCO_DB_HOST=netdisco-postgresql
|
||||||
|
- NETDISCO_DB_NAME=netdisco
|
||||||
|
- NETDISCO_DB_USER=netdisco
|
||||||
|
- NETDISCO_DB_PASS=netdisco
|
||||||
|
ports:
|
||||||
|
- "8082:5000"
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/netdisco/config/deployment.yml:/home/netdisco/environments/deployment.yml
|
||||||
|
restart: unless-stopped
|
||||||
|
DCEOF
|
||||||
|
|
||||||
|
echo "=== Pulling NetDisco images ==="
|
||||||
|
cd /opt/oam/netdisco && docker compose pull 2>&1
|
||||||
|
|
||||||
|
echo "=== Starting NetDisco stack ==="
|
||||||
|
cd /opt/oam/netdisco && docker compose up -d 2>&1
|
||||||
|
|
||||||
|
echo "=== Waiting for PostgreSQL to initialize (30s) ==="
|
||||||
|
sleep 30
|
||||||
|
|
||||||
|
echo "=== Container status ==="
|
||||||
|
docker ps --filter name=oam-netdisco --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
|
||||||
|
echo "=== Adding devices to NetDisco ==="
|
||||||
|
for dev in pfv-r5-core-01.knel.net pfv-r3-tor-mgmt-01.knel.net pfv-r3-tor-stor-01.knel.net pfv-r6-mgmt-01.knel.net; do
|
||||||
|
echo "--- Discovering $dev ---"
|
||||||
|
docker exec oam-netdisco-backend /home/netdisco/bin/netdisco-do discover -d "$dev" 2>&1 | tail -5
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "=== NetDisco web URL: http://tsys-librenms.knel.net:8082 ==="
|
||||||
|
echo "=== Done ==="
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
username: 'CHANGE_ME'
|
||||||
|
password: 'CHANGE_ME'
|
||||||
|
model: powerconnect
|
||||||
|
interval: 3600
|
||||||
|
use_syslog: false
|
||||||
|
debug: false
|
||||||
|
threads: 30
|
||||||
|
timeout: 20
|
||||||
|
retries: 3
|
||||||
|
prompt: !ruby/regexp /([\w.@-]+[#>]\s?)n/
|
||||||
|
rest: 0.0.0.0:8888
|
||||||
|
next_adds_job: false
|
||||||
|
models: {}
|
||||||
|
pid: /home/oxidized/.config/oxidized/pid
|
||||||
|
log: /home/oxidized/.config/oxidized/logs/log
|
||||||
|
snmp: false
|
||||||
|
groups: {}
|
||||||
|
models: {}
|
||||||
|
resolve_dns: true
|
||||||
|
interval: 3600
|
||||||
|
output:
|
||||||
|
default: git
|
||||||
|
git:
|
||||||
|
user: oxidized
|
||||||
|
email: oxidized@tsys-librenms.knel.net
|
||||||
|
repo: /home/oxidized/.config/oxidized/git-repos
|
||||||
|
source:
|
||||||
|
default: csv
|
||||||
|
csv:
|
||||||
|
file: /home/oxidized/.config/oxidized/router.db
|
||||||
|
delimiter: !ruby/regexp /:/
|
||||||
|
map:
|
||||||
|
name: 0
|
||||||
|
model: 1
|
||||||
|
username: 2
|
||||||
|
password: 3
|
||||||
|
gpg: false
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
services:
|
||||||
|
oxidized:
|
||||||
|
image: oxidized/oxidized:0.30.1
|
||||||
|
container_name: oam-oxidized
|
||||||
|
environment:
|
||||||
|
- OXIDIZED_CONFIG=/home/oxidized/.config/oxidized/config
|
||||||
|
- TZ=America/Chicago
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/oxidized/config:/home/oxidized/.config/oxidized
|
||||||
|
ports:
|
||||||
|
- "8083:8888"
|
||||||
|
restart: unless-stopped
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
pfv-r5-core-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r3-tor-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r3-tor-stor-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r6-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Deploy Oxidized on tsys-librenms
|
||||||
|
# Part of OAM platform [#337]
|
||||||
|
# Network device config backup/versioning
|
||||||
|
|
||||||
|
echo "=== Setting up Oxidized ==="
|
||||||
|
|
||||||
|
mkdir -p /opt/oam/oxidized/{config,git-repos,logs}
|
||||||
|
|
||||||
|
# Config file
|
||||||
|
cat > /opt/oam/oxidized/config/config <<'CFGEOF'
|
||||||
|
---
|
||||||
|
username: 'CHANGE_ME'
|
||||||
|
password: 'CHANGE_ME'
|
||||||
|
model: powerconnect
|
||||||
|
interval: 3600
|
||||||
|
use_syslog: false
|
||||||
|
debug: false
|
||||||
|
threads: 30
|
||||||
|
timeout: 20
|
||||||
|
retries: 3
|
||||||
|
prompt: !ruby/regexp /([\w.@-]+[#>]\s?)n/
|
||||||
|
rest: 0.0.0.0:8888
|
||||||
|
next_adds_job: false
|
||||||
|
pid: /home/oxidized/.config/oxidized/pid
|
||||||
|
log: /home/oxidized/.config/oxidized/logs/log
|
||||||
|
snmp: false
|
||||||
|
resolve_dns: true
|
||||||
|
interval: 3600
|
||||||
|
output:
|
||||||
|
default: git
|
||||||
|
git:
|
||||||
|
user: oxidized
|
||||||
|
email: oxidized@tsys-librenms.knel.net
|
||||||
|
repo: /home/oxidized/.config/oxidized/git-repos
|
||||||
|
source:
|
||||||
|
default: csv
|
||||||
|
csv:
|
||||||
|
file: /home/oxidized/.config/oxidized/router.db
|
||||||
|
delimiter: !ruby/regexp /:/
|
||||||
|
map:
|
||||||
|
name: 0
|
||||||
|
model: 1
|
||||||
|
username: 2
|
||||||
|
password: 3
|
||||||
|
gpg: false
|
||||||
|
CFGEOF
|
||||||
|
|
||||||
|
# Router DB (device list)
|
||||||
|
cat > /opt/oam/oxidized/config/router.db <<'DBEOF'
|
||||||
|
pfv-r5-core-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r3-tor-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r3-tor-stor-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
pfv-r6-mgmt-01.knel.net:powerconnect:CHANGE_ME:CHANGE_ME
|
||||||
|
DBEOF
|
||||||
|
|
||||||
|
# Docker compose
|
||||||
|
cat > /opt/oam/oxidized/docker-compose.yml <<'DCEOF'
|
||||||
|
services:
|
||||||
|
oxidized:
|
||||||
|
image: oxidized/oxidized:0.30.1
|
||||||
|
container_name: oam-oxidized
|
||||||
|
environment:
|
||||||
|
- TZ=America/Chicago
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/oxidized/config:/home/oxidized/.config/oxidized
|
||||||
|
ports:
|
||||||
|
- "8083:8888"
|
||||||
|
restart: unless-stopped
|
||||||
|
DCEOF
|
||||||
|
|
||||||
|
echo "=== Pulling Oxidized image ==="
|
||||||
|
cd /opt/oam/oxidized && timeout 120 docker compose pull 2>&1
|
||||||
|
|
||||||
|
echo "=== Starting Oxidized ==="
|
||||||
|
cd /opt/oam/oxidized && docker compose up -d 2>&1
|
||||||
|
|
||||||
|
echo "=== Status ==="
|
||||||
|
docker ps --filter name=oam-oxidized --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== IMPORTANT ==="
|
||||||
|
echo "Oxidized deployed with placeholder credentials (CHANGE_ME)."
|
||||||
|
echo "Update /opt/oam/oxidized/config/router.db with real switch credentials"
|
||||||
|
echo "(username:password per device) to enable config backups."
|
||||||
|
echo "Then restart: cd /opt/oam/oxidized && docker compose restart"
|
||||||
|
echo ""
|
||||||
|
echo "=== Oxidized REST API: http://tsys-librenms.knel.net:8083 ==="
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
*** General ***
|
||||||
|
|
||||||
|
owner = Charles N Wyble
|
||||||
|
contact = reachableceo@knownelement.com
|
||||||
|
mailhost = localhost
|
||||||
|
cgiurl = http://tsys-librenms.knel.net:8081/smokeping/smokeping.cgi
|
||||||
|
syslogfacility = local0
|
||||||
|
# each probe run every 5 minutes, 300 samples = 25 hours at 5min steps
|
||||||
|
pagedir = /data/pages
|
||||||
|
piddir = /tmp
|
||||||
|
imgcache = /data/cache
|
||||||
|
imgurl = /smokeping/images
|
||||||
|
datadir = /data/_data
|
||||||
|
dyndir = /data/dyn
|
||||||
|
|
||||||
|
*** Database ***
|
||||||
|
|
||||||
|
step = 300
|
||||||
|
pings = 20
|
||||||
|
|
||||||
|
# consfn mrhb steps total
|
||||||
|
|
||||||
|
AVERAGE 0.5 1 100800
|
||||||
|
AVERAGE 0.5 12 43200
|
||||||
|
MIN 0.5 12 43200
|
||||||
|
MAX 0.5 12 43200
|
||||||
|
AVERAGE 0.5 144 7200
|
||||||
|
MAX 0.5 144 7200
|
||||||
|
MIN 0.5 144 7200
|
||||||
|
|
||||||
|
*** Presentation ***
|
||||||
|
|
||||||
|
template = /etc/smokeping/basepage.html
|
||||||
|
|
||||||
|
+ charts
|
||||||
|
|
||||||
|
+ detail
|
||||||
|
width = 600
|
||||||
|
height = 200
|
||||||
|
nradius = 5
|
||||||
|
|
||||||
|
*** Probes ***
|
||||||
|
|
||||||
|
+ FPing
|
||||||
|
|
||||||
|
binary = /usr/local/bin/fping
|
||||||
|
hostinterval = 1.5
|
||||||
|
mininterval = 0.001
|
||||||
|
offset = 0%
|
||||||
|
|
||||||
|
*** Alerts ***
|
||||||
|
|
||||||
|
to = reachableceo@knownelement.com
|
||||||
|
from = smokeping-alert@tsys-librenms.knel.net
|
||||||
|
|
||||||
|
+bigloss
|
||||||
|
type = loss
|
||||||
|
# in percent
|
||||||
|
pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0%
|
||||||
|
comment = suddenly there is packet loss
|
||||||
|
|
||||||
|
+somedoss
|
||||||
|
type = loss
|
||||||
|
# in percent
|
||||||
|
pattern = ==0%,==0%,==0%,==0%,==0%,>0%,>0%,>0%,>0%,>0%,>0%,>0%
|
||||||
|
comment = incoming packet loss
|
||||||
|
|
||||||
|
+startloss
|
||||||
|
type = loss
|
||||||
|
# in percent
|
||||||
|
pattern = >0%,>0%,>0%
|
||||||
|
comment = loss at startup
|
||||||
|
|
||||||
|
+rttdetect
|
||||||
|
type = rtt
|
||||||
|
# in milliseconds
|
||||||
|
pattern = <10,<10,<10,<10,<10,<10,<10,>10,>10,>10
|
||||||
|
comment = routing change?
|
||||||
|
|
||||||
|
+rttbadd
|
||||||
|
type = rtt
|
||||||
|
# in milliseconds
|
||||||
|
pattern = <50,<50,<50,<50,<50,<50,>50,>50,>50,>50
|
||||||
|
comment = reroute?
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
*** Targets ***
|
||||||
|
|
||||||
|
probe = FPing
|
||||||
|
|
||||||
|
menu = Top
|
||||||
|
title = Network Latency Monitor
|
||||||
|
|
||||||
|
+ Infrastructure
|
||||||
|
menu = Infrastructure
|
||||||
|
title = Core Infrastructure
|
||||||
|
|
||||||
|
++ pfv-r5-core-01
|
||||||
|
menu = pfv-r5-core-01 (Core Switch)
|
||||||
|
title = Dell PowerConnect 5448 - Rack 5 Core
|
||||||
|
host = pfv-r5-core-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r3-tor-mgmt-01
|
||||||
|
menu = pfv-r3-tor-mgmt-01 (Rack 3 Mgmt TOR)
|
||||||
|
title = Neyland 24T - Rack 3 Management TOR
|
||||||
|
host = pfv-r3-tor-mgmt-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r3-tor-stor-01
|
||||||
|
menu = pfv-r3-tor-stor-01 (Rack 3 Storage TOR)
|
||||||
|
title = Neyland 24T - Rack 3 Storage TOR
|
||||||
|
host = pfv-r3-tor-stor-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r6-mgmt-01
|
||||||
|
menu = pfv-r6-mgmt-01 (Rack 6 Mgmt Switch)
|
||||||
|
title = Neyland 24T - Rack 6 Management Switch
|
||||||
|
host = pfv-r6-mgmt-01.knel.net
|
||||||
|
|
||||||
|
+ Servers
|
||||||
|
menu = Servers
|
||||||
|
title = Server Infrastructure
|
||||||
|
|
||||||
|
++ pfv-stor1
|
||||||
|
menu = pfv-stor1
|
||||||
|
title = Storage Server 1
|
||||||
|
host = pfv-stor1.knel.net
|
||||||
|
|
||||||
|
++ pfv-bms
|
||||||
|
menu = pfv-bms (HomeAssistant)
|
||||||
|
title = Home Assistant / UniFi Controller
|
||||||
|
host = pfv-bms.knel.net
|
||||||
|
|
||||||
|
++ tsys-librenms
|
||||||
|
menu = tsys-librenms
|
||||||
|
title = LibreNMS Monitoring Server
|
||||||
|
host = tsys-librenms.knel.net
|
||||||
|
|
||||||
|
+ Wireless
|
||||||
|
menu = Wireless
|
||||||
|
title = Wireless Access Points
|
||||||
|
|
||||||
|
++ ap-tablemount
|
||||||
|
menu = ap-tablemount
|
||||||
|
title = UniFi AP-AC-Lite (Table Mount)
|
||||||
|
host = ap-tablemount.knel.net
|
||||||
|
|
||||||
|
++ ap-wallmount
|
||||||
|
menu = ap-wallmount
|
||||||
|
title = UniFi AP-AC-LR (Wall Mount)
|
||||||
|
host = ap-wallmount.knel.net
|
||||||
|
|
||||||
|
+ ProxmoxHosts
|
||||||
|
menu = Proxmox Hosts
|
||||||
|
title = Proxmox Hypervisor Nodes
|
||||||
|
|
||||||
|
++ pfv-tsys1
|
||||||
|
menu = pfv-tsys1
|
||||||
|
title = Proxmox Host - Infrastructure
|
||||||
|
host = pfv-tsys1.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys3
|
||||||
|
menu = pfv-tsys3
|
||||||
|
title = Proxmox Host - Compute
|
||||||
|
host = pfv-tsys3.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys4
|
||||||
|
menu = pfv-tsys4
|
||||||
|
title = Proxmox Host - Storage + PBS
|
||||||
|
host = pfv-tsys4.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys5
|
||||||
|
menu = pfv-tsys5
|
||||||
|
title = Proxmox Host - Storage + Sandbox
|
||||||
|
host = pfv-tsys5.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys6
|
||||||
|
menu = pfv-tsys6
|
||||||
|
title = Proxmox Host - RackRental
|
||||||
|
host = pfv-tsys6.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys7
|
||||||
|
menu = pfv-tsys7
|
||||||
|
title = Proxmox Host - RackRental
|
||||||
|
host = pfv-tsys7.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys9
|
||||||
|
menu = pfv-tsys9
|
||||||
|
title = Proxmox Host - Infra + Compute
|
||||||
|
host = pfv-tsys9.knel.net
|
||||||
|
|
||||||
|
+ Power
|
||||||
|
menu = Power
|
||||||
|
title = Power Devices
|
||||||
|
|
||||||
|
++ pfv-garage-pdu-01
|
||||||
|
menu = pfv-garage-pdu-1
|
||||||
|
title = APC PDU (Garage)
|
||||||
|
host = pfv-garage-pdu-1.knel.net
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
services:
|
||||||
|
smokeping:
|
||||||
|
image: linuxserver/smokeping:2.9.0
|
||||||
|
container_name: oam-smokeping
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=America/Chicago
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/smokeping/config:/config
|
||||||
|
- /opt/oam/smokeping/data:/data
|
||||||
|
ports:
|
||||||
|
- "8081:80"
|
||||||
|
restart: unless-stopped
|
||||||
@@ -0,0 +1,237 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Deploy Smokeping on tsys-librenms
|
||||||
|
# Part of OAM platform [#337]
|
||||||
|
|
||||||
|
echo "=== Setting up Smokeping ==="
|
||||||
|
|
||||||
|
# Ensure directories
|
||||||
|
mkdir -p /opt/oam/smokeping/{config,data}
|
||||||
|
|
||||||
|
# General config
|
||||||
|
cat > /opt/oam/smokeping/config/General <<'GENEOF'
|
||||||
|
*** General ***
|
||||||
|
|
||||||
|
owner = Charles N Wyble
|
||||||
|
contact = reachableceo@knownelement.com
|
||||||
|
mailhost = localhost
|
||||||
|
cgiurl = http://tsys-librenms.knel.net:8081/smokeping/smokeping.cgi
|
||||||
|
syslogfacility = local0
|
||||||
|
pagedir = /data/pages
|
||||||
|
piddir = /tmp
|
||||||
|
imgcache = /data/cache
|
||||||
|
imgurl = /smokeping/images
|
||||||
|
datadir = /data/_data
|
||||||
|
dyndir = /data/dyn
|
||||||
|
|
||||||
|
*** Database ***
|
||||||
|
|
||||||
|
step = 300
|
||||||
|
pings = 20
|
||||||
|
|
||||||
|
AVERAGE 0.5 1 100800
|
||||||
|
AVERAGE 0.5 12 43200
|
||||||
|
MIN 0.5 12 43200
|
||||||
|
MAX 0.5 12 43200
|
||||||
|
AVERAGE 0.5 144 7200
|
||||||
|
MAX 0.5 144 7200
|
||||||
|
MIN 0.5 144 7200
|
||||||
|
|
||||||
|
*** Presentation ***
|
||||||
|
|
||||||
|
template = /etc/smokeping/basepage.html
|
||||||
|
|
||||||
|
+ charts
|
||||||
|
|
||||||
|
+ detail
|
||||||
|
width = 600
|
||||||
|
height = 200
|
||||||
|
nradius = 5
|
||||||
|
|
||||||
|
*** Probes ***
|
||||||
|
|
||||||
|
+ FPing
|
||||||
|
|
||||||
|
binary = /usr/local/bin/fping
|
||||||
|
hostinterval = 1.5
|
||||||
|
mininterval = 0.001
|
||||||
|
offset = 0%
|
||||||
|
|
||||||
|
*** Alerts ***
|
||||||
|
|
||||||
|
to = reachableceo@knownelement.com
|
||||||
|
from = smokeping-alert@tsys-librenms.knel.net
|
||||||
|
|
||||||
|
+bigloss
|
||||||
|
type = loss
|
||||||
|
pattern = ==0%,==0%,==0%,==0%,>0%,>0%,>0%
|
||||||
|
comment = suddenly there is packet loss
|
||||||
|
|
||||||
|
+somedoss
|
||||||
|
type = loss
|
||||||
|
pattern = ==0%,==0%,==0%,==0%,==0%,>0%,>0%,>0%,>0%,>0%,>0%,>0%
|
||||||
|
comment = incoming packet loss
|
||||||
|
|
||||||
|
+startloss
|
||||||
|
type = loss
|
||||||
|
pattern = >0%,>0%,>0%
|
||||||
|
comment = loss at startup
|
||||||
|
|
||||||
|
+rttdetect
|
||||||
|
type = rtt
|
||||||
|
pattern = <10,<10,<10,<10,<10,<10,<10,>10,>10,>10
|
||||||
|
comment = routing change?
|
||||||
|
|
||||||
|
+rttbadd
|
||||||
|
type = rtt
|
||||||
|
pattern = <50,<50,<50,<50,<50,<50,>50,>50,>50,>50
|
||||||
|
comment = reroute?
|
||||||
|
GENEOF
|
||||||
|
|
||||||
|
# Targets config
|
||||||
|
cat > /opt/oam/smokeping/config/Targets <<'TGTEOF'
|
||||||
|
*** Targets ***
|
||||||
|
|
||||||
|
probe = FPing
|
||||||
|
|
||||||
|
menu = Top
|
||||||
|
title = Network Latency Monitor
|
||||||
|
|
||||||
|
+ Infrastructure
|
||||||
|
menu = Infrastructure
|
||||||
|
title = Core Infrastructure
|
||||||
|
|
||||||
|
++ pfv-r5-core-01
|
||||||
|
menu = pfv-r5-core-01 (Core Switch)
|
||||||
|
title = Dell PowerConnect 5448 - Rack 5 Core
|
||||||
|
host = pfv-r5-core-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r3-tor-mgmt-01
|
||||||
|
menu = pfv-r3-tor-mgmt-01 (Rack 3 Mgmt TOR)
|
||||||
|
title = Neyland 24T - Rack 3 Management TOR
|
||||||
|
host = pfv-r3-tor-mgmt-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r3-tor-stor-01
|
||||||
|
menu = pfv-r3-tor-stor-01 (Rack 3 Storage TOR)
|
||||||
|
title = Neyland 24T - Rack 3 Storage TOR
|
||||||
|
host = pfv-r3-tor-stor-01.knel.net
|
||||||
|
|
||||||
|
++ pfv-r6-mgmt-01
|
||||||
|
menu = pfv-r6-mgmt-01 (Rack 6 Mgmt Switch)
|
||||||
|
title = Neyland 24T - Rack 6 Management Switch
|
||||||
|
host = pfv-r6-mgmt-01.knel.net
|
||||||
|
|
||||||
|
+ Servers
|
||||||
|
menu = Servers
|
||||||
|
title = Server Infrastructure
|
||||||
|
|
||||||
|
++ pfv-stor1
|
||||||
|
menu = pfv-stor1
|
||||||
|
title = Storage Server 1
|
||||||
|
host = pfv-stor1.knel.net
|
||||||
|
|
||||||
|
++ pfv-bms
|
||||||
|
menu = pfv-bms (HomeAssistant)
|
||||||
|
title = Home Assistant / UniFi Controller
|
||||||
|
host = pfv-bms.knel.net
|
||||||
|
|
||||||
|
++ tsys-librenms
|
||||||
|
menu = tsys-librenms
|
||||||
|
title = LibreNMS Monitoring Server
|
||||||
|
host = tsys-librenms.knel.net
|
||||||
|
|
||||||
|
+ Wireless
|
||||||
|
menu = Wireless
|
||||||
|
title = Wireless Access Points
|
||||||
|
|
||||||
|
++ ap-tablemount
|
||||||
|
menu = ap-tablemount
|
||||||
|
title = UniFi AP-AC-Lite (Table Mount)
|
||||||
|
host = ap-tablemount.knel.net
|
||||||
|
|
||||||
|
++ ap-wallmount
|
||||||
|
menu = ap-wallmount
|
||||||
|
title = UniFi AP-AC-LR (Wall Mount)
|
||||||
|
host = ap-wallmount.knel.net
|
||||||
|
|
||||||
|
+ ProxmoxHosts
|
||||||
|
menu = Proxmox Hosts
|
||||||
|
title = Proxmox Hypervisor Nodes
|
||||||
|
|
||||||
|
++ pfv-tsys1
|
||||||
|
menu = pfv-tsys1
|
||||||
|
title = Proxmox Host - Infrastructure
|
||||||
|
host = pfv-tsys1.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys3
|
||||||
|
menu = pfv-tsys3
|
||||||
|
title = Proxmox Host - Compute
|
||||||
|
host = pfv-tsys3.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys4
|
||||||
|
menu = pfv-tsys4
|
||||||
|
title = Proxmox Host - Storage + PBS
|
||||||
|
host = pfv-tsys4.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys5
|
||||||
|
menu = pfv-tsys5
|
||||||
|
title = Proxmox Host - Storage + Sandbox
|
||||||
|
host = pfv-tsys5.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys6
|
||||||
|
menu = pfv-tsys6
|
||||||
|
title = Proxmox Host - RackRental
|
||||||
|
host = pfv-tsys6.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys7
|
||||||
|
menu = pfv-tsys7
|
||||||
|
title = Proxmox Host - RackRental
|
||||||
|
host = pfv-tsys7.knel.net
|
||||||
|
|
||||||
|
++ pfv-tsys9
|
||||||
|
menu = pfv-tsys9
|
||||||
|
title = Proxmox Host - Infra + Compute
|
||||||
|
host = pfv-tsys9.knel.net
|
||||||
|
|
||||||
|
+ Power
|
||||||
|
menu = Power
|
||||||
|
title = Power Devices
|
||||||
|
|
||||||
|
++ pfv-garage-pdu-01
|
||||||
|
menu = pfv-garage-pdu-1
|
||||||
|
title = APC PDU (Garage)
|
||||||
|
host = pfv-garage-pdu-1.knel.net
|
||||||
|
TGTEOF
|
||||||
|
|
||||||
|
# Docker compose
|
||||||
|
cat > /opt/oam/smokeping/docker-compose.yml <<'DCEOF'
|
||||||
|
services:
|
||||||
|
smokeping:
|
||||||
|
image: linuxserver/smokeping:2.9.0
|
||||||
|
container_name: oam-smokeping
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=America/Chicago
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/smokeping/config:/config
|
||||||
|
- /opt/oam/smokeping/data:/data
|
||||||
|
ports:
|
||||||
|
- "8081:80"
|
||||||
|
restart: unless-stopped
|
||||||
|
DCEOF
|
||||||
|
|
||||||
|
echo "=== Starting Smokeping container ==="
|
||||||
|
cd /opt/oam/smokeping && docker compose up -d 2>&1
|
||||||
|
|
||||||
|
echo "=== Waiting for startup ==="
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
echo "=== Container status ==="
|
||||||
|
docker ps --filter name=oam-smokeping --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
|
||||||
|
echo "=== Smokeping logs (last 20) ==="
|
||||||
|
docker logs oam-smokeping --tail 20 2>&1
|
||||||
|
|
||||||
|
echo "=== Done ==="
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Deploy UNPoller on tsys-librenms
|
||||||
|
# Part of OAM platform [#337]
|
||||||
|
# UniFi controller polling for metrics export
|
||||||
|
|
||||||
|
echo "=== Setting up UNPoller ==="
|
||||||
|
|
||||||
|
mkdir -p /opt/oam/unpoller
|
||||||
|
|
||||||
|
# Write config
|
||||||
|
cat > /opt/oam/unpoller/up.conf <<'CONFEOF'
|
||||||
|
[poller]
|
||||||
|
debug = false
|
||||||
|
quiet = false
|
||||||
|
plugins = []
|
||||||
|
|
||||||
|
[unifi.defaults]
|
||||||
|
url = "https://pfv-bms.knel.net:8443"
|
||||||
|
user = "CHANGE_ME"
|
||||||
|
pass = "CHANGE_ME"
|
||||||
|
sites = ["all"]
|
||||||
|
ssl_verify = false
|
||||||
|
|
||||||
|
[unifi.defaults.save_dpi]
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
[influxdb]
|
||||||
|
enable = false
|
||||||
|
url = "http://tsys-librenms.knel.net:8086"
|
||||||
|
db = "unifi"
|
||||||
|
|
||||||
|
[datadog]
|
||||||
|
enable = false
|
||||||
|
|
||||||
|
[prometheus]
|
||||||
|
enable = true
|
||||||
|
http_listen = ":9130"
|
||||||
|
report_errors = true
|
||||||
|
|
||||||
|
[loki]
|
||||||
|
enable = false
|
||||||
|
CONFEOF
|
||||||
|
|
||||||
|
# Docker compose
|
||||||
|
cat > /opt/oam/unpoller/docker-compose.yml <<'DCEOF'
|
||||||
|
services:
|
||||||
|
unpoller:
|
||||||
|
image: ghcr.io/unpoller/unpoller:2.13.2
|
||||||
|
container_name: oam-unpoller
|
||||||
|
environment:
|
||||||
|
- UP_UNIFI_DEFAULT_URL=https://pfv-bms.knel.net:8443
|
||||||
|
- UP_UNIFI_DEFAULT_USER=CHANGE_ME
|
||||||
|
- UP_UNIFI_DEFAULT_PASS=CHANGE_ME
|
||||||
|
- UP_UNIFI_DEFAULT_VERIFY_SSL=false
|
||||||
|
- UP_PROMETHEUS_ENABLE=true
|
||||||
|
- UP_PROMETHEUS_HTTP_LISTEN=:9130
|
||||||
|
- TZ=America/Chicago
|
||||||
|
ports:
|
||||||
|
- "8084:9130"
|
||||||
|
volumes:
|
||||||
|
- /opt/oam/unpoller/up.conf:/config/unifi-poller.conf:ro
|
||||||
|
restart: unless-stopped
|
||||||
|
DCEOF
|
||||||
|
|
||||||
|
echo "=== Pulling UNPoller image ==="
|
||||||
|
cd /opt/oam/unpoller && timeout 120 docker compose pull 2>&1
|
||||||
|
|
||||||
|
echo "=== Starting UNPoller ==="
|
||||||
|
cd /opt/oam/unpoller && docker compose up -d 2>&1
|
||||||
|
|
||||||
|
echo "=== Status ==="
|
||||||
|
docker ps --filter name=oam-unpoller --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== IMPORTANT ==="
|
||||||
|
echo "UNPoller deployed with placeholder UniFi credentials (CHANGE_ME)."
|
||||||
|
echo "Update UP_UNIFI_DEFAULT_USER and UP_UNINI_DEFAULT_PASS env vars"
|
||||||
|
echo "in /opt/oam/unpoller/docker-compose.yml with real UniFi controller"
|
||||||
|
echo "credentials, then restart: cd /opt/oam/unpoller && docker compose up -d"
|
||||||
|
echo ""
|
||||||
|
echo "=== UNPoller Prometheus metrics: http://tsys-librenms.knel.net:8084 ==="
|
||||||
Reference in New Issue
Block a user