# 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: # Site site: build: ./site ports: - 8080:8080 depends_on: - "logstash" command: python -m SimpleHTTPServer 8080 # Elasticsearch elasticsearch: build: ./elasticsearch/6.8.2 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.8.2 environment: - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - "ELASTICSEARCH_URL=http://elasticsearch:9200" ports: - "5601:5601" depends_on: - "elasticsearch" networks: - esnet # Logstash logstash: build: ./logstash/6.8.2 environment: - "ELASTICSEARCH_URL=elasticsearch:9200" ports: - 8100:8100 volumes: - ./logstash/6.8.2/pipeline/logstash-userale.conf:/usr/share/logstash/pipeline/logstash-userale.conf - ./logstash/6.8.2/templates/userale.json:/usr/share/logstash/templates/userale.json depends_on: - "elasticsearch" networks: - esnet # Specific container and configuration to monitor the HOST (filesystem, memory, processes,...) metricbeat: image: docker.elastic.co/beats/metricbeat-oss:6.8.2 # 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 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" command: metricbeat -e -system.hostfs=/hostfs -strict.perms=false network_mode: host # Mandatory to monitor HOST filesystem, memory, processes,... networks: esnet: external: name: esnet