Added Grafana & Prometheus

This commit is contained in:
2023-04-03 15:48:07 -05:00
parent 2e6e949ddc
commit 6f0ff9094e
2 changed files with 107 additions and 4 deletions

View File

@ -7,7 +7,8 @@ services:
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
networks: networks:
- service_network - service_network
portainer:
portainer: # Portainer (visualizes docker stack)
container_name: portainer container_name: portainer
image: portainer/portainer-ce:latest image: portainer/portainer-ce:latest
restart: unless-stopped restart: unless-stopped
@ -18,6 +19,67 @@ services:
- service_network - service_network
expose: expose:
- 9000 - 9000
node-exporter: # Node Exporter (collects metrics from the host)
container_name: node-exporter
image: quay.io/prometheus/node-exporter:latest
restart: always
command: --path.rootfs=/host
pid: host
volumes:
- /:/host:ro,rslave
networks:
- service_network
expose:
- 9100
cadvisor: # cAdvisor (collects metrics from docker)
container_name: cadvisor
image: gcr.io/cadvisor/cadvisor:latest
restart: always
command:
- --housekeeping_interval=30s
- --disable_metrics=disk,diskIO,network,tcp,udp,percpu,sched,process
- --docker_only=true
devices:
- /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
networks:
- service_network
expose:
- 8080
prometheus: # Prometheus (collects logs & metrics)
container_name: prometheus
image: prom/prometheus:latest
restart: unless-stopped
command: --config.file=/config/prometheus.yml
user: 1001:0
volumes:
- ./data/prometheus/config:/config
- ./data/prometheus/data:/prometheus
networks:
- service_network
expose:
- 9090
grafana: # Grafana (visualizes Prometheus logs & metrics)
container_name: grafana
image: grafana/grafana-oss:latest
restart: unless-stopped
user: 1001:0
volumes:
- ./data/grafana:/var/lib/grafana
networks:
- service_network
expose:
- 3000
npm: # Nginx Proxy Manager (handles proxies) npm: # Nginx Proxy Manager (handles proxies)
container_name: npm container_name: npm
image: jc21/nginx-proxy-manager:latest image: jc21/nginx-proxy-manager:latest
@ -33,10 +95,12 @@ services:
- 80:80 - 80:80
- 81:81 - 81:81
- 443:443 - 443:443
nextcloud: # Nextcloud (hosts file server) nextcloud: # Nextcloud (hosts file server)
container_name: nextcloud container_name: nextcloud
image: nextcloud:latest image: nextcloud:latest
restart: unless-stopped restart: unless-stopped
user: 1001:0
env_file: ./env/nextcloud.env env_file: ./env/nextcloud.env
volumes: volumes:
- ./data/nextcloud:/var/www/html - ./data/nextcloud:/var/www/html
@ -49,6 +113,7 @@ services:
depends_on: depends_on:
- nextcloud-db - nextcloud-db
- nextcloud-cache - nextcloud-cache
nextcloud-db: nextcloud-db:
container_name: nextcloud-db container_name: nextcloud-db
image: mariadb:10.6 image: mariadb:10.6
@ -59,12 +124,14 @@ services:
- ./data/nextcloud-db:/var/lib/mysql - ./data/nextcloud-db:/var/lib/mysql
networks: networks:
- nextcloud_network - nextcloud_network
nextcloud-cache: nextcloud-cache:
container_name: nextcloud-cache container_name: nextcloud-cache
image: redis:alpine image: redis:alpine
restart: always restart: always
networks: networks:
- nextcloud_network - nextcloud_network
pterodactyl: # Pterodactyl (hosts game servers) pterodactyl: # Pterodactyl (hosts game servers)
container_name: pterodactyl container_name: pterodactyl
image: ghcr.io/pterodactyl/panel:latest image: ghcr.io/pterodactyl/panel:latest
@ -80,6 +147,7 @@ services:
depends_on: depends_on:
- pterodactyl-db - pterodactyl-db
- pterodactyl-cache - pterodactyl-cache
pterodactyl-db: pterodactyl-db:
container_name: pterodactyl-db container_name: pterodactyl-db
image: mariadb:10.5 image: mariadb:10.5
@ -90,12 +158,14 @@ services:
- ./data/pterodactyl-db:/var/lib/mysql - ./data/pterodactyl-db:/var/lib/mysql
networks: networks:
- pterodactyl_network - pterodactyl_network
pterodactyl-cache: pterodactyl-cache:
container_name: pterodactyl-cache container_name: pterodactyl-cache
image: redis:alpine image: redis:alpine
restart: always restart: always
networks: networks:
- pterodactyl_network - pterodactyl_network
photoprism: # Photoprism (manages photo and video library) photoprism: # Photoprism (manages photo and video library)
container_name: photoprism container_name: photoprism
image: photoprism/photoprism:latest image: photoprism/photoprism:latest
@ -109,7 +179,7 @@ services:
devices: devices:
- /dev/dri/card0:/dev/dri/card0 - /dev/dri/card0:/dev/dri/card0
- /dev/dri/renderD128:/dev/dri/renderD128 - /dev/dri/renderD128:/dev/dri/renderD128
working_dir: "/photoprism" working_dir: /photoprism
volumes: volumes:
- ./data/photoprism:/photoprism/storage - ./data/photoprism:/photoprism/storage
- /mnt/storage/photoprism/import:/photoprism/import - /mnt/storage/photoprism/import:/photoprism/import
@ -121,6 +191,7 @@ services:
- 2342 - 2342
depends_on: depends_on:
- photoprism-db - photoprism-db
photoprism-db: photoprism-db:
container_name: photoprism-db container_name: photoprism-db
image: mariadb:10.10 image: mariadb:10.10
@ -131,6 +202,7 @@ services:
- ./data/photoprism-db:/var/lib/mysql - ./data/photoprism-db:/var/lib/mysql
networks: networks:
- photoprism_network - photoprism_network
jellyfin: # Jellyfin (manages movies, shows, & books) jellyfin: # Jellyfin (manages movies, shows, & books)
container_name: jellyfin container_name: jellyfin
image: jellyfin/jellyfin:latest image: jellyfin/jellyfin:latest
@ -154,6 +226,7 @@ services:
service_network: service_network:
exposed_service_network: exposed_service_network:
ipv4_address: 192.168.1.104 ipv4_address: 192.168.1.104
gitea: # Gitea (hosts git server) gitea: # Gitea (hosts git server)
container_name: gitea container_name: gitea
image: gitea/gitea:latest image: gitea/gitea:latest
@ -168,6 +241,7 @@ services:
- 3000 - 3000
depends_on: depends_on:
- gitea-db - gitea-db
gitea-db: gitea-db:
container_name: gitea-db container_name: gitea-db
image: mysql:8 image: mysql:8
@ -177,6 +251,7 @@ services:
- ./data/gitea-db:/var/lib/mysql - ./data/gitea-db:/var/lib/mysql
networks: networks:
- gitea_network - gitea_network
homer: # Homer (displays all self-hosted services) homer: # Homer (displays all self-hosted services)
container_name: homer container_name: homer
image: b4bz/homer:latest image: b4bz/homer:latest
@ -189,6 +264,7 @@ services:
- service_network - service_network
expose: expose:
- 8080 - 8080
uptime-kuma: # Uptime Kuma (displays uptime for all self-hosted services) uptime-kuma: # Uptime Kuma (displays uptime for all self-hosted services)
container_name: uptime-kuma container_name: uptime-kuma
image: louislam/uptime-kuma:latest image: louislam/uptime-kuma:latest
@ -199,8 +275,6 @@ services:
- service_network - service_network
expose: expose:
- 3001 - 3001
depends_on:
- npm
networks: networks:

29
scripts/backup-db.sh Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
COMPOSE_PATH=/root/new-services
databases=$(docker compose -f ${COMPOSE_PATH}/compose.yml ps | grep '\-db' | awk '{print $1}' | tr '\n' ' ')
for db in $databases; do
db_env_path=${COMPOSE_PATH}/env/${db}.env
if [ ! -f $db_env_path ]; then
echo "Could not find the environment file for database '$db'"
continue
fi
db_service=${db/\-db/}
db_passwd=$(cat $db_env_path | grep MYSQL_ROOT_PASSWORD | tr '=' ' ' | awk '{print $NF}' | tr -d '"')
db_dmp_cmd="mysqldump --password=${db_passwd} ${db_service} > /root/${db_service}.sql"
echo -e "\nDumping database '${db}'"
docker exec ${db} sh -c "$db_dmp_cmd" &> /dev/null
echo "Copying database dump '${db_service}.sql' to '${COMPOSE_PATH}/sql/${db_service}.sql'"
docker cp ${db}:/root/${db_service}.sql ${COMPOSE_PATH}/sql/${db_service}.sql &> /dev/null
chown -R root:root ${COMPOSE_PATH}/sql
done
echo -e "\nDumping complete!"