I got rid of netdata polling the exporter endpoint by using docker-compose to connect the exporter to prometheus without exposing any port to the host. This significantly reduced the CPU spikes.
version: '3.7'
services:
storagenode:
image: storjlabs/storagenode:latest
container_name: storagenode1
user: "1000:1000"
restart: unless-stopped
ports:
- 7777:7770
- 14002:14002
- 28967:28967
environment:
- WALLET=
- EMAIL=
- ADDRESS=
- STORAGE=9TB
volumes:
- type: bind
source: /media/STORJ/STORJ
target: /app/config
- type: bind
source: /media/STORJ/identity
target: /app/identity
networks:
- default
stop_grace_period: 300s
deploy:
resources:
limits:
memory: 4096M
storj-exporter:
image: anclrii/storj-exporter:latest
container_name: storj-exporter1
user: "1000:1000"
restart: unless-stopped
environment:
- STORJ_HOST_ADDRESS=storagenode1
- STORJ_API_PORT=14002
- STORJ_EXPORTER_PORT=9651
networks:
- default
prometheus:
image: prom/prometheus
container_name: prometheus
user: "1000:1000"
ports:
- 9090:9090
volumes:
- /sharedfolders/config/prometheus.yml:/etc/prometheus/prometheus.yml
- type: bind
source: /sharedfolders/prometheus
target: /prometheus
restart: unless-stopped
command: --storage.tsdb.retention.time=720d --storage.tsdb.retention.size=30GB --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus
networks:
- default
networks:
default:
and in promtheus.yml:
- job_name: storagenode
scrape_interval: 30s
scrape_timeout: 20s
metrics_path: /
static_configs:
- targets: ["storj-exporter1:9651"]
labels:
instance: "node1"