-
Notifications
You must be signed in to change notification settings - Fork 13
/
docker-compose-log-analytics.yml
101 lines (96 loc) · 3.4 KB
/
docker-compose-log-analytics.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
########################################################################
# Copyright (c) Intel Corporation 2023
# SPDX-License-Identifier: BSD-3-Clause
########################################################################
networks:
elk:
driver: bridge
edgex-network:
driver: bridge
services:
# The 'setup' service runs a one-off script which initializes the
# 'logstash_internal' and 'kibana_system' users inside Elasticsearch with the
# values of the passwords defined in the '.env' file.
#
# This task is only performed during the *initial* startup of the stack. On all
# subsequent runs, the service simply returns immediately, without performing
# any modification to existing users.
setup:
image: elasticsearch:${ELASTIC_VERSION}
init: true
user: root
# Override entrypooint to allow for user role creation
# -e flag is included to prevent a warning from showing up in the logs
entrypoint: sh /setup/entrypoint.sh -e TINI_SUBREAPER=true
volumes:
- setup:/state:Z
- ./log-analytics/setup:/setup
environment:
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-}
KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-}
networks:
- elk
- edgex-network
depends_on:
- elasticsearch
elasticsearch:
image: elasticsearch:${ELASTIC_VERSION}
volumes:
- ./log-analytics/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z
- elasticsearch:/usr/share/elasticsearch/data:z
ports:
- 9200:9200/tcp
- 9300:9300/tcp
environment:
# Bootstrap password.
# Used to initialize the keystore during the initial startup of
# Elasticsearch. Ignored on subsequent runs.
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-}
# Use single node discovery in order to disable production mode and avoid bootstrap checks.
# see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html
discovery.type: single-node
networks:
- elk
- edgex-network
kibana:
image: kibana:${ELASTIC_VERSION}
volumes:
- ./log-analytics/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z
ports:
- 5601:5601/tcp
environment:
KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-}
networks:
- elk
- edgex-network
depends_on:
- elasticsearch
filebeat:
image: docker.elastic.co/beats/filebeat:${ELASTIC_VERSION}
# Run as 'root' instead of 'filebeat' (uid 1000) to allow reading
# 'docker.sock' and the host's filesystem.
user: root
command:
# Log to stderr.
- -e
# Disable config file permissions checks. Allows mounting
# 'config/filebeat.yml' even if it's not owned by root.
# see: https://www.elastic.co/guide/en/beats/libbeat/current/config-file-permissions.html
- --strict.perms=false
volumes:
- ./log-analytics/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro,Z
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-}
networks:
- elk
- edgex-network
restart: always
depends_on:
- elasticsearch
- kibana
- setup
volumes:
setup: {}
elasticsearch: {}