Skip to content

Instantly share code, notes, and snippets.

@christineywang
Created November 10, 2020 19:42
Show Gist options
  • Save christineywang/f8a10f48b5bc2148ef6f2d9b1d069f65 to your computer and use it in GitHub Desktop.
Save christineywang/f8a10f48b5bc2148ef6f2d9b1d069f65 to your computer and use it in GitHub Desktop.
example
version: "3.3"
networks:
loki:
services:
jaeger:
image: jaegertracing/all-in-one:1.14
ports:
- "5775:5775/udp"
- "6831:6831/udp"
- "6832:6832/udp"
- "5778:5778"
- "16686:16686"
- "14268:14268"
- "9411:9411"
networks:
- loki
pushgateway:
image: prom/pushgateway:latest
command: ["--web.listen-address=0.0.0.0:9091", "--web.telemetry-path=/metrics"]
ports:
- 9091:9091
networks:
- loki
loki:
image: grafana/loki:1.5.0
ports:
- "3100:3100"
volumes:
- ./loki/:/etc/loki/
command: -config.file=/etc/loki/loki.yaml
networks:
- loki
promtail:
image: grafana/promtail:1.5.0
volumes:
- ./promtail/:/etc/promtail/
command: -config.file=/etc/promtail/promtail.yaml
networks:
- loki
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus/:/etc/prometheus/
command:
- '--config.file=/etc/prometheus/prometheus.yml'
ports:
- "9090:9090"
networks:
- loki
graphite:
image: graphiteapp/graphite-statsd:latest
ports:
- "8070:80"
- "2003-2004:2003-2004"
- "2023-2024:2023-2024"
- "8125:8125/udp"
- "8126:8126"
volumes:
- graphite-data:/opt/graphite/storage
networks:
- loki
splunk:
build: ./splunk
image: grafana-splunk:docker-monitor
networks:
- loki
environment:
SPLUNK_START_ARGS: ${SPLUNK_START_ARGS}
SPLUNK_ENABLE_LISTEN: ${SPLUNK_ENABLE_LISTEN}
SPLUNK_USER: ${SPLUNK_USER}
SPLUNK_ADD: ${SPLUNK_ADD}
SPLUNK_ADD_1: ${SPLUNK_ADD_1}
SPLUNK_CMD: ${SPLUNK_CMD}
volumes:
- splunk-etc:/opt/splunk/etc
- splunk-var:/opt/splunk/var
- /var/lib/docker/containers:/host/containers:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/log:/var/log:ro
ports:
- "8000:8000"
- "9997:9997"
- "8088:8088"
- "8089:8089"
- "1514:1514"
mysql:
image: mysql
command: --default-authentication-plugin=mysql_native_password
networks:
- loki
environment:
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
volumes:
- mysql:/var/lib/mysql
- ./mysql/:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
grafana:
image: grafana/grafana-enterprise:7.1.5
ports:
- "3000:3000"
networks:
- loki
volumes:
- ./setup/grafana/grafana-local.ini:/etc/grafana/grafana.ini
- ./production/provisioning:/etc/grafana/provisioning
- ./production/dashboards:/var/lib/grafana/dashboards
- ./production/license.jwt:/var/lib/grafana/license.jwt
- grafana-storage:/var/lib/grafana
- ./production/plugins:/var/lib/grafana/plugins
- ./production/ldap.toml:/var/lib/grafana/ldap.toml
environment:
- GF_AUTH_LDAP_ENABLED=${GF_AUTH_LDAP_ENABLED}
- GF_AUTH_LDAP_CONFIG_FILE=${GF_AUTH_LDAP_CONFIG_FILE}
- GF_ENTERPRISE_LICENSE_PATH=${GF_ENTERPRISE_LICENSE_PATH}
- GF_RENDERING_SERVER_URL=${GF_RENDERING_SERVER_URL}
- GF_RENDERING_CALLBACK_URL=${GF_RENDERING_CALLBACK_URL}
- GF_INSTALL_PLUGINS=${GF_INSTALL_PLUGINS}
- GF_LOG_FILTERS=${GF_LOG_FILTERS}
- GF_FEATURE_TOGGLES_ENABLE=${GF_FEATURE_TOGGLES_ENABLE}
renderer:
networks:
- loki
image: grafana/grafana-image-renderer:latest
ports:
- "8081:8081"
data_generator:
ports:
- "8080:8080"
build: ./data-generator
networks:
- loki
environment:
- LOKI_ENDPOINT=${LOKI_ENDPOINT}
# - LOG_EXTRA=LOGSTASH
- PROMETHEUS_ENDPOINT=${PROMETHEUS_ENDPOINT}
- GRAFANA_ENDPOINT=${GRAFANA_ENDPOINT}
- ROOT_URL=${ROOT_URL}
tns-db:
image: grafana/tns-db
command:
- '-log.level=debug'
ports:
- "8001:80"
networks:
- loki
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_TAGS="cluster=tns, namespace=tns, app=tns"
- JAEGER_SAMPLE_TYPE=const
- JAEGER_SAMPLE_PARAM=1
ulimits:
memlock: -1
tns-app:
image: grafana/tns-app
command:
- '-log.level=debug'
- 'http://tns-db'
logging:
driver: loki
options:
loki-url: "http://host.docker.internal:3100/loki/api/v1/push"
loki-external-labels:
container_name={{.Name}},job=tns-app
loki-pipeline-stages: |
- regex:
expression: 'status=(?P<status_code>\d{3})'
- labels:
status_code:
#links:
# - db
ports:
- "8002:80"
networks:
- loki
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_TAGS="cluster=tns, namespace=tns, app=db"
- JAEGER_SAMPLE_TYPE=const
- JAEGER_SAMPLE_PARAM=1
ulimits:
memlock: -1
tns-loadgen:
image: grafana/tns-loadgen
command:
- '-log.level=debug'
- 'http://tns-app'
#links:
# - app
ports:
- "8003:80"
networks:
- loki
environment:
- JAEGER_AGENT_HOST=jaeger
- JAEGER_TAGS="cluster=tns, namespace=tns, app=loadgen"
- JAEGER_SAMPLE_TYPE=const
- JAEGER_SAMPLE_PARAM=1
ulimits:
memlock: -1
elasticsearch:
image: elasticsearch:7.8.0
ports:
- "9200:9200"
- "9300:9300"
volumes:
- type: bind
source: ./production/elk/elasticsearch/config/elasticsearch.yml
target: /usr/share/elasticsearch/config/elasticsearch.yml
read_only: true
- type: volume
source: elasticsearch
target: /usr/share/elasticsearch/data
environment:
ES_JAVA_OPTS: "-Xmx256m -Xms256m"
ELASTIC_PASSWORD: changeme
networks:
- loki
logstash:
image: docker.elastic.co/logstash/logstash:7.3.1
ports:
- "5000:5000"
- "9600:9600"
volumes:
- type: bind
source: ./production/elk/logstash/config/logstash.yml
target: /usr/share/logstash/config/logstash.yml
read_only: true
- type: bind
source: ./production/elk/logstash/pipeline
target: /usr/share/logstash/pipeline
read_only: true
environment:
LS_JAVA_OPTS: "-Xmx256m -Xms256m"
networks:
- loki
kibana:
image: docker.elastic.co/kibana/kibana:7.3.1
volumes:
- type: bind
source: ./production/elk/kibana/config/kibana.yml
target: /usr/share/kibana/config/kibana.yml
read_only: true
ports:
- "5601:5601"
networks:
- loki
filebeat:
image: docker.elastic.co/beats/filebeat:7.3.1
# https://github.com/docker/swarmkit/issues/1951
# Need to override user so we can access the log files, and docker.sock
user: root
networks:
- loki
volumes:
- type: bind
source: ./production/elk/filebeat/config/filebeat.yml
target: /usr/share/filebeat/filebeat.yml
read_only: true
- filebeat:/usr/share/filebeat/data
- /var/run/docker.sock:/var/run/docker.sock
# This is needed for filebeat to load container log path as specified in filebeat.yml
- /var/lib/docker/containers/:/var/lib/docker/containers/:ro
# # This is needed for filebeat to load jenkins build log path as specified in filebeat.yml
# - /var/lib/docker/volumes/jenkins_home/_data/jobs/:/var/lib/docker/volumes/jenkins_home/_data/jobs/:ro
# This is needed for filebeat to load logs for system and auth modules
- /var/log/:/var/log/:ro
# This is needed for filebeat to load logs for auditd module. you might have to install audit system
# on ubuntu first (sudo apt-get install -y auditd audispd-plugins)
- /var/log/audit/:/var/log/audit/:ro
environment:
- ELASTICSEARCH_HOST="http://elasticsearch:9200"
- KIBANA_HOST="http://kibana:5601"
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=changeme
# disable strict permission checks
command: "filebeat -e -strict.perms=false"
volumes:
filebeat:
elasticsearch:
grafana-storage:
graphite-data:
splunk-etc:
splunk-var:
external: false
mysql:
external: false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment