| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Apache Flagon Single-Node Build |
| |
| version: "3" |
| services: |
| |
| # Startup |
| startup: |
| build: ./startup |
| depends_on: |
| - "elasticsearch" |
| command: bash /opt/entrypoint.sh |
| |
| # Site |
| site: |
| build: ./site |
| ports: |
| - 8080:8080 |
| depends_on: |
| - "logstash" |
| command: python -m SimpleHTTPServer 8080 |
| |
| # Elasticsearch |
| elasticsearch: |
| build: ./elasticsearch/6.5.4 |
| environment: |
| - NODE_MASTER=true |
| - NUMBER_OF_MASTERS=1 |
| - NODE_COORDINATE=true |
| - "DISCOVERY_SERVICE=0.0.0.0" |
| - NODE_DATA=true |
| - NODE_INGEST=true |
| - MAX_LOCAL_STORAGE_NODES=1 |
| - NETWORK_HOST=0.0.0.0 |
| - HTTP_ENABLE=true |
| - HTTP_CORS_ENABLE=true |
| - HTTP_CORS_ALLOW_ORIGIN=* |
| - "ES_JAVA_OPTS=-Xms512m -Xmx512m" |
| ulimits: |
| memlock: |
| soft: -1 |
| hard: -1 |
| healthcheck: |
| test: ["CMD", "curl","-s" ,"-f", "-u", "http://localhost:9200/_cluster/health"] |
| # Mount volumes to backup elasticsearch data |
| # volumes: |
| # - esdata:/usr/share/elasticsaerch/data |
| ports: |
| - "9200:9200" |
| networks: |
| - esnet |
| |
| # Kibana |
| kibana: |
| build: ./kibana/6.5.4 |
| environment: |
| - "ES_JAVA_OPTS=-Xms512m -Xmx512m" |
| - "ELASTICSEARCH_URL=http://elasticsearch:9200" |
| ports: |
| - "5601:5601" |
| depends_on: |
| - "elasticsearch" |
| networks: |
| - esnet |
| |
| # Logstash |
| logstash: |
| build: ./logstash/6.5.4 |
| environment: |
| - "ELASTICSEARCH_URL=elasticsearch:9200" |
| ports: |
| - 8100:8100 |
| volumes: |
| - ./logstash/6.5.4/pipeline/logstash-userale.conf:/usr/share/logstash/pipeline/logstash-userale.conf |
| - ./logstash/6.5.4/templates/userale.json:/usr/share/logstash/templates/userale.json |
| depends_on: |
| - "elasticsearch" |
| networks: |
| - esnet |
| |
| # Distill |
| distill: |
| build: ./distill |
| ports: |
| - 8090:8090 |
| depends_on: |
| - "elasticsearch" |
| networks: |
| - esnet |
| |
| # TAP's Database |
| db: |
| build: ./db |
| image: senssoft/postgres:latest |
| ports: |
| - "5432:5432" |
| |
| # TAP |
| tap: |
| build: ./tap |
| command: bash -c "/usr/src/app/wait-for-postgres.sh" |
| ports: |
| - "8010:8010" |
| depends_on: |
| - db |
| links: |
| - db:db |
| |
| # Specific container and configuration to monitor the HOST (filesystem, memory, processes,...) |
| metricbeat: |
| image: docker.elastic.co/beats/metricbeat:6.5.4 |
| # restart: unless-stopped |
| user: root |
| pid: host |
| volumes: |
| #The commented sections below enable Metricbeat to monitor the Docker host |
| #rather than the Metricbeat container. These are used by the system module. |
| - /proc:/hostfs/proc:ro |
| - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro |
| #We mount the host filesystem so we can report on disk usage with the system module |
| - /:/hostfs:ro |
| #Mount the metricbeat configuration so users can make edits |
| - ./beats/metricbeat/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml |
| #Mount the modules.d directory into the container. This allows user to |
| #potentially make changes to the modules and they will be dynamically loaded. |
| - ./beats/metricbeat/modules.d/:/usr/share/metricbeat/modules.d/ |
| #Allows us to report on docker from the hosts information |
| - /var/run/docker.sock:/var/run/docker.sock |
| depends_on: |
| - elasticsearch |
| environment: |
| - ELASTICSEARCH_URL=http://elasticsearch:9200 |
| - KIBANA_URL=http://kibana:5601 |
| - LOGSTASH_URL=http://logstash:9600 |
| - POSTGRESQL_URL="postgresql://db:5432/tapdb?sslmode=disable" |
| - POSTGRESQL_USERNAME=tapuser |
| - POSTGRESQL_PASSWORD="Dr@p3rUs3r" |
| extra_hosts: |
| - "elasticsearch:172.17.0.1" # The IP of docker0 interface to access host from container |
| - "kibana:172.17.0.1" # The IP of docker0 interface to access host from container |
| - "logstash:172.17.0.1" |
| - "db:172.17.0.1" |
| command: metricbeat -e -system.hostfs=/hostfs -strict.perms=false |
| network_mode: host # Mandatory to monitor HOST filesystem, memory, processes,... |
| |
| networks: |
| esnet: |
| external: |
| name: esnet |