chore: backup infrastructure configurations [skip ci]

This commit is contained in:
github-actions[bot]
2026-02-04 02:02:47 +00:00
parent e231f18f08
commit 7e55c8f58b
32 changed files with 132 additions and 48 deletions

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T02:09:51.079977+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T03:09:53.741728+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T04:09:56.562342+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T05:09:59.213873+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T06:10:01.845015+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T07:10:04.543038+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T08:10:07.580253+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T09:10:10.298969+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T10:10:13.232000+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T11:10:15.763273+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T12:10:18.667264+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T13:10:21.280654+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T14:10:23.939881+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T15:10:26.897752+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T16:10:29.871920+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T17:10:32.431617+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T18:10:35.379904+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T19:10:38.282565+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T20:10:40.848017+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T21:10:43.381412+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T22:10:45.955712+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-03T23:10:48.626834+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-04T00:10:51.821010+00:00"}

View File

@@ -0,0 +1 @@
{"sync_type": "weight_sync", "status": "partial", "message": "Synced 0 records, 1 failed", "records_processed": 0, "timestamp": "2026-02-04T01:10:55.199088+00:00"}

View File

@@ -1,7 +1,7 @@
{ {
"backup_timestamp": "2026-02-03T02:02:34.837596", "backup_timestamp": "2026-02-04T02:02:47.020515",
"total_keys": 1292, "total_keys": 1316,
"successful_backups": 1287, "successful_backups": 1311,
"failed_backups": 5, "failed_backups": 5,
"consul_address": "http://consul.service.dc1.consul:8500" "consul_address": "http://consul.service.dc1.consul:8500"
} }

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":683034885072,"replication_state":"streaming","timeline":248} {"conn_url":"postgres://192.168.4.227:5432/postgres","api_url":"http://192.168.4.227:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":685234337264,"replication_state":"streaming","timeline":248}

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":683034885824,"timeline":248} {"conn_url":"postgres://192.168.4.228:5432/postgres","api_url":"http://192.168.4.228:8008/patroni","state":"running","role":"primary","version":"4.0.4","xlog_location":685234320552,"timeline":248}

View File

@@ -1 +1 @@
{"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":683034970016,"replication_state":"streaming","timeline":248} {"conn_url":"postgres://192.168.4.36:5432/postgres","api_url":"http://192.168.4.36:8008/patroni","state":"running","role":"replica","version":"4.0.4","xlog_location":685234180872,"replication_state":"streaming","timeline":248}

View File

@@ -1 +1 @@
{"optime":683034885824,"slots":{"pg_odroid7":683034885824,"pg_opti1":683034885824,"pg_odroid8":683034885824},"retain_slots":["pg_odroid7","pg_odroid8","pg_opti1"]} {"optime":685234320552,"slots":{"pg_odroid7":685234320552,"pg_opti1":685234320552,"pg_odroid8":685234320552},"retain_slots":["pg_odroid7","pg_odroid8","pg_opti1"]}

View File

@@ -1,44 +1,49 @@
---
global: global:
scrape_interval: 15s scrape_interval: 15s
evaluation_interval: 15s evaluation_interval: 15s
scrape_timeout: 12s scrape_timeout: 12s
external_labels: external_labels:
monitor: 'example' monitor: example
rule_files: rule_files:
- "alerts.yml" - alerts.yml
alerting: alerting:
alertmanagers: alertmanagers:
- scheme: http - scheme: http
static_configs: static_configs:
- targets: - targets:
- "alertmanager.service.dc1.consul:9093" - alertmanager.service.dc1.consul:9093
scrape_configs: scrape_configs:
- job_name: postgres-job - job_name: postgres-job
metrics_path: /metrics metrics_path: /metrics
scheme: http scheme: http
static_configs: static_configs:
- targets: ['postgres.service.dc1.consul:8008'] - targets:
- postgres.service.dc1.consul:8008
- job_name: minio-job - job_name: minio-job
metrics_path: /minio/v2/metrics/cluster metrics_path: /minio/v2/metrics/cluster
scheme: http scheme: http
static_configs: static_configs:
- targets: ['minio.service.dc1.consul:9000'] - targets:
- job_name: 'traefik' - minio.service.dc1.consul:9000
- job_name: traefik
static_configs: static_configs:
- targets: - targets:
- 'traefik.service.dc1.consul:80' - traefik.service.dc1.consul:80
- job_name: 'consulservices' - job_name: consulservices
consul_sd_configs: consul_sd_configs:
- server: 'consul.service.dc1.consul:8500' - server: consul.service.dc1.consul:8500
services: services:
- cadvisor - cadvisor
relabel_configs: relabel_configs:
- source_labels: [__meta_consul_service] - source_labels:
- __meta_consul_service
target_label: job target_label: job
- source_labels: [__meta_consul_node] - source_labels:
- __meta_consul_node
regex: (.+) regex: (.+)
target_label: node target_label: node
replacement: '${1}' replacement: ${1}
- job_name: nomad_metrics - job_name: nomad_metrics
params: params:
format: format:
@@ -47,28 +52,31 @@ scrape_configs:
scrape_timeout: 10s scrape_timeout: 10s
metrics_path: /v1/metrics metrics_path: /v1/metrics
consul_sd_configs: consul_sd_configs:
- server: 'consul.service.dc1.consul:8500' - server: consul.service.dc1.consul:8500
datacenter: 'dc1' datacenter: dc1
tag_separator: ',' tag_separator: ","
scheme: http scheme: http
services: services:
- nomad-client - nomad-client
relabel_configs: relabel_configs:
- source_labels: [__meta_consul_tags] - source_labels:
- __meta_consul_tags
separator: ; separator: ;
regex: (.*)http(.*) regex: (.*)http(.*)
replacement: $1 replacement: $1
action: keep action: keep
- source_labels: [__meta_consul_address] - source_labels:
- __meta_consul_address
separator: ; separator: ;
regex: (.*) regex: (.*)
target_label: __meta_consul_service_address target_label: __meta_consul_service_address
replacement: $1 replacement: $1
action: replace action: replace
- source_labels: [__meta_consul_node] - source_labels:
- __meta_consul_node
regex: (.+) regex: (.+)
target_label: node target_label: node
replacement: '${1}' replacement: ${1}
- job_name: node_exporter - job_name: node_exporter
params: params:
format: format:
@@ -77,14 +85,35 @@ scrape_configs:
scrape_timeout: 10s scrape_timeout: 10s
metrics_path: /metrics metrics_path: /metrics
consul_sd_configs: consul_sd_configs:
- server: 'consul.service.dc1.consul:8500' - server: consul.service.dc1.consul:8500
datacenter: 'dc1' datacenter: dc1
tag_separator: ',' tag_separator: ","
scheme: http scheme: http
services: services:
- node-exporter - node-exporter
relabel_configs: relabel_configs:
- source_labels: [__meta_consul_node] - source_labels:
- __meta_consul_node
regex: (.+) regex: (.+)
target_label: node target_label: node
replacement: '${1}' replacement: ${1}
- job_name: juicefs_csi
params:
format:
- prometheus
scrape_interval: 10s
scrape_timeout: 10s
metrics_path: /metrics
consul_sd_configs:
- server: consul.service.dc1.consul:8500
datacenter: dc1
tag_separator: ","
scheme: http
services:
- juicefs-metrics
relabel_configs:
- source_labels:
- __meta_consul_node
regex: (.+)
target_label: node
replacement: ${1}

View File

@@ -3,17 +3,38 @@ job "jfs-node" {
type = "system" type = "system"
group "nodes" { group "nodes" {
network {
port "metrics" {
static = 9567
to = 8080
}
}
# Add this inside your "juicefs-plugin" task in jfs-node.nomad
service {
name = "juicefs-metrics"
port = "metrics" # References the static port 9567 defined in your network block
tags = ["prometheus"]
check {
type = "http"
path = "/metrics"
interval = "10s"
timeout = "2s"
}
}
task "juicefs-plugin" { task "juicefs-plugin" {
driver = "docker" driver = "docker"
config { config {
image = "juicedata/juicefs-csi-driver:v0.31.1" image = "juicedata/juicefs-csi-driver:v0.31.1"
memory_hard_limit = 2048 memory_hard_limit = 2048
ports = ["metrics"]
args = [ args = [
"--endpoint=unix://csi/csi.sock", "--endpoint=unix://csi/csi.sock",
"--logtostderr", "--logtostderr",
"--v=5", "--v=5",
"--nodeid=test", "--nodeid=${node.unique.name}", # Better than hardcoded "test"
"--by-process=true", "--by-process=true",
] ]
@@ -24,6 +45,7 @@ job "jfs-node" {
id = "juicefs0" id = "juicefs0"
type = "node" type = "node"
mount_dir = "/csi" mount_dir = "/csi"
health_timeout = "3m"
} }
resources { resources {
cpu = 100 cpu = 100
@@ -31,7 +53,11 @@ job "jfs-node" {
} }
env { env {
POD_NAME = "csi-node" POD_NAME = "csi-node"
AWS_REGION = "garage" AWS_REGION = "garage"
# Aggregates metrics from children onto the 8080 port
JFS_METRICS = "0.0.0.0:8080"
# Ensures mounts run as background processes managed by the driver
JFS_MOUNT_MODE = "process"
} }
} }
} }

View File

@@ -18,13 +18,15 @@ job "navidrome" {
access_mode = "multi-node-multi-writer" access_mode = "multi-node-multi-writer"
} }
# Main Navidrome task # Main Navidrome task
task "navidrome" { task "navidrome" {
driver = "docker" driver = "docker"
volume_mount { volume_mount {
volume = "navidrome-csi-vol" # Matches the name in the volume block above volume = "navidrome-csi-vol" # Matches the name in the volume block above
destination = "/data" # Where it appears inside the container destination = "/db" # Where it appears inside the container
read_only = false read_only = false
} }
@@ -37,16 +39,19 @@ job "navidrome" {
"/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro", "/mnt/Public/Downloads/Clean_Music:/music/CleanMusic:ro",
"/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro", "/mnt/Public/Downloads/news/slskd/downloads:/music/slskd:ro",
"/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro", "/mnt/Public/Downloads/incoming_music:/music/incomingmusic:ro",
#"/mnt/configs/navidrome:/data" "/mnt/Public/configs/navidrome/cache:/data/cache",
"/mnt/Public/configs/navidrome/backups:/data/backups"
] ]
} }
env { env {
ND_DATAFOLDER = "/db"
ND_CACHEFOLDER = "/data/cache"
ND_SCANSCHEDULE = "32 8-20 * * *" ND_SCANSCHEDULE = "32 8-20 * * *"
ND_LOGLEVEL = "debug" ND_LOGLEVEL = "debug"
ND_REVERSEPROXYWHITELIST = "0.0.0.0/0" ND_REVERSEPROXYWHITELIST = "0.0.0.0/0"
ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User" ND_REVERSEPROXYUSERHEADER = "X-Forwarded-User"
ND_SCANNER_GROUPALBUMRELEASES = "False" ND_SCANNER_GROUPALBUMRELEASES = "False"
ND_BACKUP_PATH = "/data" ND_BACKUP_PATH = "/data/backups"
ND_BACKUP_SCHEDULE = "0 0 * * *" ND_BACKUP_SCHEDULE = "0 0 * * *"
ND_BACKUP_COUNT = "7" ND_BACKUP_COUNT = "7"
} }