When first deploying the collector and kafka, it takes kafka a couple minutes to start. In some cases, the collector would proceed to startup without waiting for kafka. This resulted in the first few messages to be dropped, such as dropping the router init and peer up messages.
135 lines
5.0 KiB
YAML
135 lines
5.0 KiB
YAML
---
|
|
version: '3'
|
|
services:
|
|
|
|
zookeeper:
|
|
restart: unless-stopped
|
|
container_name: obmp-zookeeper
|
|
image: confluentinc/cp-zookeeper:7.0.1
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/zk-data:/var/lib/zookeeper/data
|
|
- ${OBMP_DATA_ROOT}/zk-log:/var/lib/zookeeper/log
|
|
environment:
|
|
ZOOKEEPER_CLIENT_PORT: 2181
|
|
ZOOKEEPER_TICK_TIME: 2000
|
|
|
|
kafka:
|
|
restart: unless-stopped
|
|
container_name: obmp-kafka
|
|
image: confluentinc/cp-kafka:7.0.1
|
|
|
|
# Change the mount point to where you want to store Kafka data.
|
|
# Normally 80GB or more
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/kafka-data:/var/lib/kafka/data
|
|
depends_on:
|
|
- zookeeper
|
|
ports:
|
|
- 9092:9092
|
|
environment:
|
|
KAFKA_BROKER_ID: 1
|
|
KAFKA_ZOOKEEPER_CONNECT: obmp-zookeeper:2181
|
|
|
|
# Change/add listeners based on your FQDN that the host and other containers can access. You can use
|
|
# an IP address as well. By default, only within the compose/containers can Kafka be accesssed
|
|
# using port 29092. Outside access can be enabled, but you should use an FQDN listener.
|
|
#KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://<FQDN>:9092
|
|
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://obmp-kafka:29092
|
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
|
|
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
|
|
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
|
|
KAFKA_NUM_PARTITIONS: 8
|
|
KAFKA_LOG_RETENTION_MINUTES: 90
|
|
KAFKA_LOG_ROLL_MS: 3600000
|
|
KAFKA_LOG_SEGMENT_BYTES: 1073741824
|
|
KAFKA_MESSAGE_MAX_BYTES: 100000000
|
|
KAFKA_LOG_CLEANER_THREADS: 2
|
|
|
|
grafana:
|
|
restart: unless-stopped
|
|
container_name: obmp-grafana
|
|
image: grafana/grafana:8.3.4
|
|
ports:
|
|
- 3000:3000
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/grafana:/var/lib/grafana
|
|
- ${OBMP_DATA_ROOT}/grafana/provisioning:/etc/grafana/provisioning/
|
|
environment:
|
|
- GF_SECURITY_ADMIN_PASSWORD=openbmp
|
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
|
- GF_SERVER_ROOT_URL=/ # Change this if you have grafana behind URL/paths, such as /grafana/
|
|
- GF_INSTALL_PLUGINS=agenty-flowcharting-panel,briangann-datatable-panel,digrich-bubblechart-panel,grafana-piechart-panel,grafana-worldmap-panel,vonage-status-panel
|
|
|
|
psql:
|
|
restart: unless-stopped
|
|
container_name: obmp-psql
|
|
image: openbmp/postgres:2.0.3
|
|
ports:
|
|
- 5432:5432
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/postgres/data:/var/lib/postgresql/data # change this to 80GB SSD slice/partition
|
|
- ${OBMP_DATA_ROOT}/postgres/ts:/var/lib/postgresql/ts # Chnage this to 500GB SSD slice/partition
|
|
environment:
|
|
- MEM=10 # Set MEM to at least 2GB but ideally >16GB
|
|
- POSTGRES_PASSWORD=openbmp
|
|
- POSTGRES_USER=openbmp
|
|
- POSTGRES_DB=openbmp
|
|
|
|
collector:
|
|
restart: unless-stopped
|
|
container_name: obmp-collector
|
|
image: openbmp/collector:2.0.3
|
|
sysctls:
|
|
- net.ipv4.tcp_keepalive_intvl=30
|
|
- net.ipv4.tcp_keepalive_probes=5
|
|
- net.ipv4.tcp_keepalive_time=180
|
|
ports:
|
|
- 5000:5000
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/config:/config
|
|
environment:
|
|
- KAFKA_FQDN=obmp-kafka:29092
|
|
|
|
psql-app:
|
|
restart: unless-stopped
|
|
container_name: obmp-psql-app
|
|
image: openbmp/psql-app:2.0.3
|
|
sysctls:
|
|
- net.ipv4.tcp_keepalive_intvl=30
|
|
- net.ipv4.tcp_keepalive_probes=5
|
|
- net.ipv4.tcp_keepalive_time=180
|
|
ports:
|
|
- 9005:9005
|
|
|
|
volumes:
|
|
- ${OBMP_DATA_ROOT}/config:/config
|
|
environment:
|
|
- MEM=4 # Set memory to at least 2GB but ideally 4GB
|
|
- KAFKA_FQDN=obmp-kafka:29092
|
|
- RPKI_URL=https://rpki.cloudflare.com/rpki.json # define the URL to retrieve json endoed RPKI data
|
|
- RPKI_PASS=None
|
|
- RPKI_USER=None
|
|
- ENABLE_RPKI=1 # 1 enables, 0 disables RPKI sync
|
|
- ENABLE_IRR=1 # 1 enables, 0 disables IRR sync
|
|
- POSTGRES_REPORT_WINDOW='8 minute' # default POSTGRESS window to select when building
|
|
# summary tables. For deployments that absorb large
|
|
# bursts increase the value, ex 60 minute
|
|
- POSTGRES_PASSWORD=openbmp
|
|
- POSTGRES_USER=openbmp
|
|
- POSTGRES_DB=openbmp
|
|
- POSTGRES_HOST=obmp-psql
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DROP_peer_event_log='1 year'
|
|
- POSTGRES_DROP_stat_reports='4 weeks'
|
|
- POSTGRES_DROP_ip_rib_log='4 weeks'
|
|
- POSTGRES_DROP_alerts='4 weeks'
|
|
- POSTGRES_DROP_ls_nodes_log='4 months'
|
|
- POSTGRES_DROP_ls_links_log='4 months'
|
|
- POSTGRES_DROP_ls_prefixes_log='4 months'
|
|
- POSTGRES_DROP_stats_chg_byprefix='4 weeks'
|
|
- POSTGRES_DROP_stats_chg_byasn='4 weeks'
|
|
- POSTGRES_DROP_stats_chg_bypeer='4 weeks'
|
|
- POSTGRES_DROP_stats_ip_origins='4 weeks'
|
|
- POSTGRES_DROP_stats_peer_rib='4 weeks'
|
|
- POSTGRES_DROP_stats_peer_update_counts='4 weeks'
|