* Update psql-app container to use MEM for heap setting This fixes issue where psql-app would run out of memory * Update psql-app container to restart psql consumer if if stops. This handles restart on out of memory exit.
160 lines
5.7 KiB
YAML
160 lines
5.7 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,grafana-piechart-panel,grafana-worldmap-panel,grafana-simple-json-datasource,vonage-status-panel
|
|
|
|
psql:
|
|
restart: unless-stopped
|
|
container_name: obmp-psql
|
|
image: openbmp/postgres:2.1.0
|
|
shm_size: 1536m
|
|
sysctls:
|
|
- net.ipv4.tcp_keepalive_intvl=30
|
|
- net.ipv4.tcp_keepalive_probes=5
|
|
- net.ipv4.tcp_keepalive_time=180
|
|
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
|
|
# alter_job max_runtime in _timescaledb_config.bgw_job ( https://docs.timescale.com/latest/api#alter_job )
|
|
command: >
|
|
-c max_wal_size=10GB
|
|
environment:
|
|
- POSTGRES_PASSWORD=openbmp
|
|
- POSTGRES_USER=openbmp
|
|
- POSTGRES_DB=openbmp
|
|
|
|
collector:
|
|
restart: unless-stopped
|
|
container_name: obmp-collector
|
|
image: openbmp/collector:2.1.1
|
|
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.1.1
|
|
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=3 # 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'
|
|
|
|
whois:
|
|
restart: unless-stopped
|
|
container_name: obmp-whois
|
|
image: openbmp/whois:2.1.0
|
|
sysctls:
|
|
- net.ipv4.tcp_keepalive_intvl=30
|
|
- net.ipv4.tcp_keepalive_probes=5
|
|
- net.ipv4.tcp_keepalive_time=180
|
|
ports:
|
|
- "4300:43"
|
|
# volumes:
|
|
# - ${OBMP_DATA_ROOT}/config:/config
|
|
environment:
|
|
- POSTGRES_PASSWORD=openbmp
|
|
- POSTGRES_USER=openbmp
|
|
- POSTGRES_DB=openbmp
|
|
- POSTGRES_HOST=obmp-psql
|
|
- POSTGRES_PORT=5432 |