version: "3.9" services: mariadb: image: mariadb:11 container_name: mariadb restart: unless-stopped environment: MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD} MARIADB_DATABASE: ${MARIADB_DATABASE} MARIADB_USER: ${MARIADB_USER} MARIADB_PASSWORD: ${MARIADB_PASSWORD} ports: - "3306:3306" volumes: - mariadb_data:/var/lib/mysql - ./mariadb/conf.d:/etc/mysql/conf.d:ro networks: - monitoring healthcheck: test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -uroot -p$${MARIADB_ROOT_PASSWORD} || exit 1"] interval: 10s timeout: 5s retries: 10 start_period: 20s opensearch: image: opensearchproject/opensearch:2.15.0 container_name: opensearch restart: unless-stopped environment: discovery.type: single-node bootstrap.memory_lock: "true" OPENSEARCH_JAVA_OPTS: -Xms512m -Xmx512m DISABLE_SECURITY_PLUGIN: "true" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - "9200:9200" - "9600:9600" volumes: - opensearch_data:/usr/share/opensearch/data networks: - monitoring healthcheck: test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:9200 >/dev/null || exit 1"] interval: 15s timeout: 5s retries: 20 start_period: 30s grafana: image: grafana/grafana:11.1.0 container_name: grafana restart: unless-stopped environment: GF_SECURITY_ADMIN_USER: ${GRAFANA_ADMIN_USER} GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_ADMIN_PASSWORD} GF_INSTALL_PLUGINS: grafana-opensearch-datasource ports: - "3030:3000" volumes: - grafana_data:/var/lib/grafana - ./grafana/provisioning:/etc/grafana/provisioning:ro - ./grafana/dashboards:/var/lib/grafana/dashboards:ro depends_on: mariadb: condition: service_healthy opensearch: condition: service_healthy networks: - monitoring pfs-collector: build: context: ./collector container_name: pfs-collector restart: unless-stopped environment: RUN_MODE: loop POLL_INTERVAL: 60 BATCH_SIZE: 1000 INDEX_PREFIX: mariadb MARIADB_HOST: mariadb MARIADB_PORT: 3306 MARIADB_USER: root MARIADB_PASSWORD: ${MARIADB_ROOT_PASSWORD} MARIADB_DATABASE: performance_schema OPENSEARCH_HOST: opensearch OPENSEARCH_PORT: 9200 OPENSEARCH_USE_SSL: "false" OPENSEARCH_VERIFY_CERTS: "false" TRUNCATE_AFTER_EXPORT: "true" LOG_LEVEL: INFO depends_on: mariadb: condition: service_healthy opensearch: condition: service_healthy networks: - monitoring volumes: mariadb_data: opensearch_data: grafana_data: networks: monitoring: driver: bridge