feat: prepare minio and traefik
commit
05c4bc5400
|
@ -0,0 +1,213 @@
|
|||
services:
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./data/grafana:/var/lib/grafana
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_PASSWORD=ZTWTWXeZhFs4wg6vMr7M
|
||||
- GF_USERS_ALLOW_SIGN_UP=false
|
||||
- GF_SERVER_DOMAIN=old.grafana.eigen.co.id
|
||||
- GF_SERVER_ROOT_URL=https://old.grafana.eigen.co.id
|
||||
- GF_INSTALL_PLUGINS=grafana-pyroscope-app
|
||||
- GF_FEATURE_TOGGLES_ENABLE=traceToProfiles tracesEmbeddedFlameGraph
|
||||
- GF_SMTP_ENABLED=false
|
||||
ports:
|
||||
- "3000:3000"
|
||||
|
||||
pyroscope:
|
||||
image: grafana/pyroscope:latest
|
||||
environment:
|
||||
JAEGER_AGENT_HOST: distributor
|
||||
JAEGER_SAMPLER_TYPE: const
|
||||
JAEGER_SAMPLER_PARAM: 1
|
||||
command: ["-config.file=/etc/pyroscope.yml"]
|
||||
ports:
|
||||
- "4040:4040"
|
||||
volumes:
|
||||
- ./config/pyroscope.yml:/etc/pyroscope.yml
|
||||
|
||||
memcached:
|
||||
image: bitnami/memcached:latest
|
||||
container_name: memcached
|
||||
ports:
|
||||
- "11211:11211"
|
||||
environment:
|
||||
- MEMCACHED_CACHE_SIZE=128
|
||||
- MEMCACHED_THREADS=4
|
||||
|
||||
init-tempo:
|
||||
image: &tempoImage grafana/tempo:latest
|
||||
user: root
|
||||
entrypoint:
|
||||
- "chown"
|
||||
- "10001:10001"
|
||||
- "/var/tempo"
|
||||
volumes:
|
||||
- ./data/tempo:/var/tempo
|
||||
|
||||
tempo:
|
||||
image: *tempoImage
|
||||
command: [ "-config.file=/etc/tempo.yaml" ]
|
||||
volumes:
|
||||
- ./config/tempo-standalone.yaml:/etc/tempo.yaml
|
||||
- ./data/tempo:/var/tempo
|
||||
ports:
|
||||
- "14268:14268" # jaeger ingest
|
||||
- "3200:3200" # tempo
|
||||
- "9095:9095" # tempo grpc
|
||||
- "9411:9411" # zipkin
|
||||
depends_on:
|
||||
- init-tempo
|
||||
- memcached
|
||||
|
||||
alloy:
|
||||
image: grafana/alloy:latest
|
||||
restart: on-failure
|
||||
volumes:
|
||||
- ./config/config.alloy:/etc/alloy/config.alloy
|
||||
environment:
|
||||
REMOTE_WRITE_HOST: 172.10.10.6:30291
|
||||
LOKI_HOST: 172.10.10.6:30501
|
||||
TEMPO_HOST: 172.10.10.6:30641
|
||||
PYROSCOPE_HOST: pyroscope:4040
|
||||
depends_on:
|
||||
# - thanos-receiver
|
||||
# - loki
|
||||
# - tempo
|
||||
- pyroscope
|
||||
command:
|
||||
- run
|
||||
- /etc/alloy/config.alloy
|
||||
- --storage.path=/var/lib/alloy/data
|
||||
- --server.http.listen-addr=0.0.0.0:12345
|
||||
- --stability.level=experimental
|
||||
ports:
|
||||
- "12345:12345"
|
||||
- "4319:4319"
|
||||
- "4017:4017"
|
||||
- "4018:4018"
|
||||
|
||||
loki:
|
||||
image: grafana/loki:3.0.0
|
||||
container_name: loki
|
||||
volumes:
|
||||
- ./config/loki:/mnt/config
|
||||
ports:
|
||||
- "3100:3100"
|
||||
command: -config.file=/mnt/config/loki-config.yaml
|
||||
|
||||
promtail:
|
||||
image: grafana/promtail:3.0.0
|
||||
container_name: promtail
|
||||
volumes:
|
||||
- ./config/loki:/mnt/config
|
||||
- /var/log:/var/log
|
||||
depends_on:
|
||||
- loki
|
||||
command: -config.file=/mnt/config/promtail-config.yaml
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
restart: unless-stopped
|
||||
user: root
|
||||
volumes:
|
||||
- ./config/prometheus.yml:/etc/prometheus/prometheus.yml
|
||||
- ./data/prometheus:/prometheus
|
||||
# Credentials
|
||||
- ./credentials/kubernetes-eigen-core:/credentials/kubernetes-eigen-core
|
||||
- ./credentials/kubernetes-eigen-internal:/credentials/kubernetes-eigen-internal
|
||||
- ./credentials/kubernetes-eigen-external:/credentials/kubernetes-eigen-external
|
||||
- ./credentials/kubernetes-pmps-local:/credentials/kubernetes-pmps-local
|
||||
- ./credentials/kubernetes-ifgf-jakarta:/credentials/kubernetes-ifgf-jakarta
|
||||
command:
|
||||
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||
- '--storage.tsdb.retention.time=60d'
|
||||
- '--storage.tsdb.min-block-duration=2h'
|
||||
- '--storage.tsdb.max-block-duration=2h'
|
||||
- '--storage.tsdb.path=/prometheus'
|
||||
- '--web.console.libraries=/etc/prometheus/console_libraries'
|
||||
- '--web.console.templates=/etc/prometheus/consoles'
|
||||
- '--web.enable-lifecycle'
|
||||
- '--web.enable-admin-api'
|
||||
- '--web.enable-remote-write-receiver'
|
||||
- '--enable-feature=native-histograms'
|
||||
ports:
|
||||
- "9090:9090"
|
||||
#depends_on:
|
||||
# - thanos-receiver
|
||||
|
||||
thanos-query:
|
||||
image: thanosio/thanos:v0.36.1
|
||||
user: root
|
||||
command:
|
||||
- query
|
||||
- --http-address=:19192
|
||||
- --grpc-address=:19092
|
||||
- --endpoint=thanos-store:19090
|
||||
- --endpoint=thanos-receiver:10907
|
||||
#- --query.auto-downsampling
|
||||
#- --query.max-concurrent-select=10
|
||||
#- --query.max-concurrent=50
|
||||
#- --query.timeout=1440m
|
||||
#- --query.partial-response
|
||||
|
||||
thanos-store:
|
||||
image: thanosio/thanos:v0.36.1
|
||||
user: root
|
||||
command:
|
||||
- store
|
||||
- --data-dir=/data
|
||||
- --objstore.config-file=/etc/thanos/bucket.yaml
|
||||
- --http-address=:19191
|
||||
- --grpc-address=:19090
|
||||
volumes:
|
||||
- ./data/thanos/store:/data
|
||||
- ./config/bucket.yaml:/etc/thanos/bucket.yaml
|
||||
|
||||
thanos-compactor:
|
||||
image: thanosio/thanos:v0.36.1
|
||||
user: root
|
||||
command:
|
||||
- compact
|
||||
- --data-dir=/data
|
||||
- --objstore.config-file=/etc/thanos/bucket.yaml
|
||||
- --wait
|
||||
- --wait-interval=5m
|
||||
volumes:
|
||||
- ./data/thanos/compactor:/data
|
||||
- ./config/bucket.yaml:/etc/thanos/bucket.yaml
|
||||
|
||||
thanos-receiver:
|
||||
image: thanosio/thanos:v0.36.1
|
||||
user: root
|
||||
command:
|
||||
- receive
|
||||
- --grpc-address=:10907
|
||||
- --http-address=:10909
|
||||
- --tsdb.path=/data
|
||||
- --receive.local-endpoint=127.0.0.1:10907
|
||||
- --objstore.config-file=/etc/thanos/bucket.yaml
|
||||
- --label=receive_instance_id="thanos-receiver-1"
|
||||
- --remote-write.address=:10908
|
||||
ports:
|
||||
- "10908:10908"
|
||||
volumes:
|
||||
- ./data/thanos/receiver:/data/default-tenant
|
||||
- ./config/bucket.yaml:/etc/thanos/bucket.yaml
|
||||
|
||||
cadvisor:
|
||||
image: "gcr.io/cadvisor/cadvisor:v0.49.1"
|
||||
container_name: cadvisor
|
||||
privileged: true
|
||||
devices:
|
||||
- "/dev/kmsg:/dev/kmsg"
|
||||
volumes:
|
||||
- "/:/rootfs:ro"
|
||||
- "/var/run:/var/run:ro"
|
||||
- "/sys:/sys:ro"
|
||||
- "/var/lib/docker/:/var/lib/docker:ro"
|
||||
- "/dev/disk/:/dev/disk:ro"
|
||||
ports:
|
||||
- "9070:8080"
|
||||
restart: always
|
|
@ -0,0 +1,35 @@
|
|||
networks:
|
||||
default:
|
||||
name: eigen-monitoring
|
||||
external: true
|
||||
|
||||
services:
|
||||
minio:
|
||||
image: quay.io/minio/minio:RELEASE.2024-09-13T20-26-02Z
|
||||
container_name: minio
|
||||
restart: always
|
||||
command: server /data --console-address ":9001"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# Console
|
||||
- "traefik.http.services.minio-console.loadbalancer.server.port=9001"
|
||||
- "traefik.http.routers.minio-console.rule=Host(`console.eigen.research`)"
|
||||
- "traefik.http.routers.minio-console.tls=true"
|
||||
- "traefik.http.routers.minio-console.service=minio-console"
|
||||
- "traefik.http.routers.minio-console.entryPoints=web,websecure"
|
||||
# API
|
||||
- "traefik.http.services.minio-api.loadbalancer.server.port=9000"
|
||||
- "traefik.http.routers.minio-api.rule=Host(`minio.eigen.research`)"
|
||||
- "traefik.http.routers.minio-api.tls=true"
|
||||
- "traefik.http.routers.minio-api.service=minio-api"
|
||||
- "traefik.http.routers.minio-api.entryPoints=web,websecure"
|
||||
volumes:
|
||||
- "./.data:/data"
|
||||
environment:
|
||||
MINIO_ROOT_USER: eigen
|
||||
MINIO_ROOT_PASSWORD: Eigen3m!
|
||||
MINIO_SERVER_URL: http://minio:9000
|
||||
MINIO_BROWSER_REDIRECT_URL: http://console.eigen.research
|
||||
MINIO_SITE_REGION: ap-indonesia-1
|
||||
MINIO_SITE_NAME: instance-1
|
||||
MINIO_PROMETHEUS_AUTH_TYPE: public
|
|
@ -0,0 +1,16 @@
|
|||
networks:
|
||||
default:
|
||||
name: eigen-monitoring
|
||||
external: true
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: "traefik:v3"
|
||||
container_name: traefik
|
||||
restart: "always"
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./config:/etc/traefik
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
@ -0,0 +1,5 @@
|
|||
[http.routers]
|
||||
[http.routers.api]
|
||||
rule = "Host(`traefik.eigen.research`)"
|
||||
entrypoints = ["web"]
|
||||
service = "api@internal"
|
|
@ -0,0 +1,24 @@
|
|||
[providers.docker]
|
||||
watch = true
|
||||
exposedByDefault = false
|
||||
|
||||
[entryPoints]
|
||||
[entryPoints.web]
|
||||
address = ":80"
|
||||
[entryPoints.web.forwardedHeaders]
|
||||
insecure = true
|
||||
|
||||
[entryPoints.websecure]
|
||||
address = ":443"
|
||||
|
||||
[api]
|
||||
dashboard = true
|
||||
insecure = true
|
||||
|
||||
[providers.file]
|
||||
directory = "/etc/traefik"
|
||||
filename = "dynamic.toml"
|
||||
watch = true
|
||||
|
||||
[serversTransport]
|
||||
insecureSkipVerify = true
|
Loading…
Reference in New Issue