sam 2a82bd9a94 ip_rib perf tuning: per-table autovacuum + drop 4 unused indexes
Derived from the 2026-05-19 ingestion stress-test session. psql-app's
unicast_prefix drain rate caps at a few-hundred msg/s under continuous
Postgres maintenance (autovacuum on ip_rib + update_global_ip_rib() /
update_chg_stats() / update_peer_rib_counts() crons) competing for
ip_rib disk I/O.

ALTER TABLE ip_rib SET autovacuum_vacuum_scale_factor=0.02 -- run more
often on smaller chunks. cost_limit kept at its OpenBMP-default 3000 so
each run finishes fast; the consumer runs flat out between bursts
instead of being throttled continuously.

DROP INDEX for four unused/redundant indexes (every INSERT updates every
index; these all had 0 scans in ~2h of heavy activity):
  - ip_rib_hash_id_idx           (907 MB)
  - ip_rib_base_attr_hash_id_idx (558 MB)
  - ip_rib_prefix_idx            (1538 MB, GiST)
  - ip_rib_origin_as_idx         (364 MB)

9 -> 5 indexes; ~3.4 GB freed (6,715 MB -> 3,348 MB). Reduces index
write-amplification per UPSERT by ~45% and shortens autovacuum on
ip_rib by ~the same.

Measurement note: across-cycle 25-min runs were inconclusive on the
sustained-rate effect (inflow was near-zero by then -- gobgp stopped --
so the consumer was largely idle). The real test is re-enabling the
fleet-wide feed with the consumer-replica + 62 GiB RAM and seeing
whether unicast_prefix keeps up.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 16:50:15 -07:00
2022-10-20 07:12:08 -07:00
2022-10-20 07:12:08 -07:00
2022-10-20 07:12:08 -07:00
2022-06-08 11:53:55 -07:00
2021-03-29 08:52:45 -07:00

OpenBMP docker files

Docker files for OpenBMP.

(Prerequisite) Platform Docker Install

Ignore this step if you already have a current docker install

Note

You should use the latest docker version, documented in this section.

Follow the instructions on https://docs.docker.com/get-docker/

Optionally add a non-root user to run docker as

usermod -aG docker ubuntu

# Logout and log back so the group takes affect. 

Optionally configure /etc/default/docker (e.g. for proxy config)

export http_proxy="http://proxy:80/"
export https_proxy="http://proxy:80/"
export no_proxy="127.0.0.1,openbmp.org,/var/run/docker.sock"

Make sure you can run 'docker run hello-world' successfully.

OpenBMP Docker Files

Each docker file contains a readme file, see below:

Using Docker Compose to run everything

Quick start (recommended): copy .env.example to .env, fill it in, and run ./setup.sh — it creates the data directories, syncs Grafana provisioning, and generates Authelia secrets. Then:

docker compose up -d                                  # BMP collector core
docker compose --profile test --profile auth up -d    # full stack

See DOCS.md section 4 for details and the manual alternative below.

Install Docker Compose

You will need docker-compose. You can install that via Docker Compose instructions. Docker compose will run everything, including handling restarts of containers.

(1) Mount/Make persistent directories

Create expected directories. You can choose to mount these as well or update the compose file to change them.

Note

If you are using OSX/Mac, then you will need to update your docker preferences to allow /var/openbmp

Make sure to create the OBMP_DATA_ROOT directory first.

export OBMP_DATA_ROOT=/var/openbmp
sudo mkdir -p $OBMP_DATA_ROOT

Create sub directories

mkdir -p ${OBMP_DATA_ROOT}/config
mkdir -p ${OBMP_DATA_ROOT}/kafka-data
mkdir -p ${OBMP_DATA_ROOT}/zk-data
mkdir -p ${OBMP_DATA_ROOT}/zk-log
mkdir -p ${OBMP_DATA_ROOT}/postgres/data
mkdir -p ${OBMP_DATA_ROOT}/postgres/ts
mkdir -p ${OBMP_DATA_ROOT}/grafana
mkdir -p ${OBMP_DATA_ROOT}/grafana/dashboards

sudo chmod -R 7777 $OBMP_DATA_ROOT

In order to init the DB tables, you must create the file ${OBMP_DATA_ROOT}/config/init_db. This should only be done once or whenever you want to completely wipe out the DB and start over.

Change OBMP_DATA_ROOT=<path> to where you created the directories above. The default is /var/openbmp

OBMP_DATA_ROOT=/var/openbmp docker-compose -p obmp up -d
Description
OpenBMP + ExaBGP route injector stack — BGP monitoring for CML IOS-XR lab
Readme BSD-3-Clause 879 KiB
Languages
Vue 32.1%
Python 29.5%
PLpgSQL 17.1%
Shell 13.2%
Dockerfile 7%
Other 1.1%