version: '3.8' networks: default: name: ${NAMESPACE} external: true services: logstash: image: docker.elastic.co/logstash/logstash:8.13.4 hostname: ${NAMESPACE}-log-logstash ports: - '${NODE_PORT}:5044' environment: - TZ=Asia/Shanghai configs: - source: logstash_conf target: /usr/share/logstash/pipeline/my.conf logging: driver: json-file options: max-size: "500m" max-file: "3" deploy: placement: constraints: - node.labels.${NAMESPACE}_es==1 filebeat: image: docker.elastic.co/beats/filebeat:8.13.4 volumes: - "kibana_data:/bitnami/kibana" environment: - TZ=Asia/Shanghai - LOGSTASH_URL=${NAMESPACE}-log-logstash:5044 - KIBANA_HOSTS=${NAMESPACE}-es-kibana configs: - source: filebeat_conf target: /usr/share/filebeat/filebeat.yml volumes: - ${NAMESPACE}_logs:/logs deploy: update_config: order: start-first mode: global placement: constraints: [node.platform.os == linux] configs: logstash_conf: file: ./logstash.conf filebeat_conf: file: ./filebeat.yml volumes: ${NAMESPACE}_logs: external: true