Compare commits
4 Commits
87cddfa23e
..
master
| Author | SHA1 | Date | |
|---|---|---|---|
| a884ed0dbc | |||
| 4df3a11e0c | |||
| 8509a1a4e8 | |||
| 65673636c4 |
@@ -1,35 +0,0 @@
|
|||||||
name: Deploy to Coolify
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Deploy to Coolify
|
|
||||||
run: |
|
|
||||||
curl -X POST \
|
|
||||||
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}" \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{
|
|
||||||
"deploymentUuid": "${{ secrets.COOLIFY_DEPLOYMENT_UUID }}",
|
|
||||||
"gitCommitSha": "${{ github.sha }}",
|
|
||||||
"gitBranch": "${{ github.ref_name }}"
|
|
||||||
}' \
|
|
||||||
${{ secrets.COOLIFY_WEBHOOK_URL }}
|
|
||||||
|
|
||||||
- name: Notify deployment
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
if [ "${{ job.status }}" == "success" ]; then
|
|
||||||
echo "✅ Deployment successful"
|
|
||||||
else
|
|
||||||
echo "❌ Deployment failed"
|
|
||||||
fi
|
|
||||||
+78
-78
@@ -42,32 +42,32 @@ prometheus.scrape "loki" {
|
|||||||
job_name = "loki"
|
job_name = "loki"
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scraping de Tempo
|
// // Scraping de Tempo
|
||||||
prometheus.scrape "tempo" {
|
// prometheus.scrape "tempo" {
|
||||||
targets = [{"__address__" = "tempo:3200"}]
|
// targets = [{"__address__" = "tempo:3200"}]
|
||||||
forward_to = [prometheus.remote_write.prometheus.receiver]
|
// forward_to = [prometheus.remote_write.prometheus.receiver]
|
||||||
scrape_interval = "15s"
|
// scrape_interval = "15s"
|
||||||
metrics_path = "/metrics"
|
// metrics_path = "/metrics"
|
||||||
job_name = "tempo"
|
// job_name = "tempo"
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Scraping de Node Exporter (métricas del host Docker)
|
// // Scraping de Node Exporter (métricas del host Docker)
|
||||||
prometheus.scrape "node_exporter" {
|
// prometheus.scrape "node_exporter" {
|
||||||
targets = [{"__address__" = "node-exporter:9100"}]
|
// targets = [{"__address__" = "node-exporter:9100"}]
|
||||||
forward_to = [prometheus.remote_write.prometheus.receiver]
|
// forward_to = [prometheus.remote_write.prometheus.receiver]
|
||||||
scrape_interval = "15s"
|
// scrape_interval = "15s"
|
||||||
metrics_path = "/metrics"
|
// metrics_path = "/metrics"
|
||||||
job_name = "node_exporter"
|
// job_name = "node_exporter"
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Scraping de cAdvisor (métricas detalladas de Docker/containers)
|
// // Scraping de cAdvisor (métricas detalladas de Docker/containers)
|
||||||
prometheus.scrape "cadvisor" {
|
// prometheus.scrape "cadvisor" {
|
||||||
targets = [{"__address__" = "cadvisor:8080"}]
|
// targets = [{"__address__" = "cadvisor:8080"}]
|
||||||
forward_to = [prometheus.remote_write.prometheus.receiver]
|
// forward_to = [prometheus.remote_write.prometheus.receiver]
|
||||||
scrape_interval = "15s"
|
// scrape_interval = "15s"
|
||||||
metrics_path = "/metrics"
|
// metrics_path = "/metrics"
|
||||||
job_name = "cadvisor"
|
// job_name = "cadvisor"
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Scraping fijo para métricas expuestas desde el host (scripts Python)
|
// Scraping fijo para métricas expuestas desde el host (scripts Python)
|
||||||
// Corre por defecto en host.docker.internal:9102 para PrometheusMetric
|
// Corre por defecto en host.docker.internal:9102 para PrometheusMetric
|
||||||
@@ -168,66 +168,66 @@ loki.write "loki" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// TEMPO - TRAZAS
|
// TEMPO - TRAZAS (COMENTADO - NO SE USA)
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
// Receptor OTLP
|
// // Receptor OTLP
|
||||||
otelcol.receiver.otlp "tempo" {
|
// otelcol.receiver.otlp "tempo" {
|
||||||
grpc {
|
// grpc {
|
||||||
endpoint = "0.0.0.0:4317"
|
// endpoint = "0.0.0.0:4317"
|
||||||
}
|
// }
|
||||||
http {
|
// http {
|
||||||
endpoint = "0.0.0.0:4318"
|
// endpoint = "0.0.0.0:4318"
|
||||||
}
|
// }
|
||||||
output {
|
// output {
|
||||||
traces = [otelcol.processor.batch.tempo.input]
|
// traces = [otelcol.processor.batch.tempo.input]
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Receptor Jaeger
|
// // Receptor Jaeger
|
||||||
otelcol.receiver.jaeger "jaeger_traces" {
|
// otelcol.receiver.jaeger "jaeger_traces" {
|
||||||
protocols {
|
// protocols {
|
||||||
grpc {
|
// grpc {
|
||||||
endpoint = "0.0.0.0:14250"
|
// endpoint = "0.0.0.0:14250"
|
||||||
}
|
// }
|
||||||
thrift_http {
|
// thrift_http {
|
||||||
endpoint = "0.0.0.0:14268"
|
// endpoint = "0.0.0.0:14268"
|
||||||
}
|
// }
|
||||||
thrift_compact {
|
// thrift_compact {
|
||||||
endpoint = "0.0.0.0:6831"
|
// endpoint = "0.0.0.0:6831"
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
output {
|
// output {
|
||||||
traces = [otelcol.processor.batch.tempo.input]
|
// traces = [otelcol.processor.batch.tempo.input]
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Receptor Zipkin
|
// // Receptor Zipkin
|
||||||
otelcol.receiver.zipkin "zipkin_traces" {
|
// otelcol.receiver.zipkin "zipkin_traces" {
|
||||||
endpoint = "0.0.0.0:9411"
|
// endpoint = "0.0.0.0:9411"
|
||||||
output {
|
// output {
|
||||||
traces = [otelcol.processor.batch.tempo.input]
|
// traces = [otelcol.processor.batch.tempo.input]
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Procesador batch
|
// // Procesador batch
|
||||||
otelcol.processor.batch "tempo" {
|
// otelcol.processor.batch "tempo" {
|
||||||
send_batch_size = 1024
|
// send_batch_size = 1024
|
||||||
timeout = "1s"
|
// timeout = "1s"
|
||||||
output {
|
// output {
|
||||||
traces = [otelcol.exporter.otlp.tempo.input]
|
// traces = [otelcol.exporter.otlp.tempo.input]
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// Exportador a Tempo
|
// // Exportador a Tempo
|
||||||
otelcol.exporter.otlp "tempo" {
|
// otelcol.exporter.otlp "tempo" {
|
||||||
client {
|
// client {
|
||||||
endpoint = "http://tempo:4317"
|
// endpoint = "http://tempo:4317"
|
||||||
tls {
|
// tls {
|
||||||
insecure = true
|
// insecure = true
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// CONFIGURACIÓN GENERAL
|
// CONFIGURACIÓN GENERAL
|
||||||
|
|||||||
+63
-77
@@ -33,41 +33,29 @@ services:
|
|||||||
- monitoring
|
- monitoring
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
# Tempo para trazas - Solo almacenamiento (Alloy maneja la recolección)
|
# # Tempo para trazas - Solo almacenamiento (Alloy maneja la recolección)
|
||||||
tempo:
|
# tempo:
|
||||||
image: grafana/tempo:latest
|
# image: grafana/tempo:latest
|
||||||
container_name: tempo
|
# container_name: tempo
|
||||||
ports:
|
# ports:
|
||||||
- "${TEMPO_PORT:-3200}:3200" # Solo puerto de consulta, sin endpoints de recepción
|
# - "${TEMPO_PORT:-3200}:3200" # Solo puerto de consulta, sin endpoints de recepción
|
||||||
volumes:
|
# volumes:
|
||||||
- ./config/tempo/tempo.yaml:/etc/tempo/tempo.yaml
|
# - ./config/tempo/tempo.yaml:/etc/tempo/tempo.yaml
|
||||||
- tempo_data:/var/tempo
|
# - tempo_data:/var/tempo
|
||||||
command:
|
# command:
|
||||||
- -config.file=/etc/tempo/tempo.yaml
|
# - -config.file=/etc/tempo/tempo.yaml
|
||||||
networks:
|
# networks:
|
||||||
- monitoring
|
# - monitoring
|
||||||
restart: always
|
# restart: always
|
||||||
|
|
||||||
# Grafana Alloy para colección de datos - ÚNICA PUERTA DE ENTRADA
|
# Grafana Alloy para colección de métricas y logs
|
||||||
alloy:
|
alloy:
|
||||||
image: grafana/alloy:latest
|
image: grafana/alloy:latest
|
||||||
container_name: alloy
|
container_name: alloy
|
||||||
ports:
|
ports:
|
||||||
- "${ALLOY_UI_PORT:-12345}:12345" # Puerto para la UI de Alloy
|
- "${ALLOY_UI_PORT:-12345}:12345" # Puerto para la UI de Alloy
|
||||||
# Puertos para métricas
|
|
||||||
- "${ALLOY_METRICS_PORT:-9999}:9999" # HTTP receiver para métricas externas
|
- "${ALLOY_METRICS_PORT:-9999}:9999" # HTTP receiver para métricas externas
|
||||||
# Puertos para logs
|
|
||||||
- "${ALLOY_LOGS_HTTP_PORT:-3101}:3101" # HTTP receiver para logs externos
|
- "${ALLOY_LOGS_HTTP_PORT:-3101}:3101" # HTTP receiver para logs externos
|
||||||
- "${ALLOY_SYSLOG_PORT:-1514}:1514" # Syslog TCP receiver
|
|
||||||
# Puertos para trazas - OpenTelemetry
|
|
||||||
- "${ALLOY_OTLP_GRPC_PORT:-4317}:4317" # OTLP gRPC
|
|
||||||
- "${ALLOY_OTLP_HTTP_PORT:-4318}:4318" # OTLP HTTP
|
|
||||||
# Puertos para trazas - Jaeger compatibility
|
|
||||||
- "${ALLOY_JAEGER_GRPC_PORT:-14250}:14250" # Jaeger gRPC
|
|
||||||
- "${ALLOY_JAEGER_HTTP_PORT:-14268}:14268" # Jaeger HTTP
|
|
||||||
- "${ALLOY_JAEGER_COMPACT_PORT:-6831}:6831/udp" # Jaeger compact thrift
|
|
||||||
# Puertos para trazas - Zipkin compatibility
|
|
||||||
- "${ALLOY_ZIPKIN_PORT:-9411}:9411" # Zipkin HTTP
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./config/alloy/alloy.river:/etc/alloy/config.river
|
- ./config/alloy/alloy.river:/etc/alloy/config.river
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
@@ -89,7 +77,6 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- prometheus
|
- prometheus
|
||||||
- loki
|
- loki
|
||||||
- tempo
|
|
||||||
|
|
||||||
# Grafana para visualización
|
# Grafana para visualización
|
||||||
grafana:
|
grafana:
|
||||||
@@ -115,56 +102,55 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- prometheus
|
- prometheus
|
||||||
- loki
|
- loki
|
||||||
- tempo
|
|
||||||
|
|
||||||
# Node Exporter para métricas del host
|
# # Node Exporter para métricas del host
|
||||||
node-exporter:
|
# node-exporter:
|
||||||
image: prom/node-exporter:latest
|
# image: prom/node-exporter:latest
|
||||||
container_name: node-exporter
|
# container_name: node-exporter
|
||||||
ports:
|
# ports:
|
||||||
- "${NODE_EXPORTER_PORT:-9100}:9100"
|
# - "${NODE_EXPORTER_PORT:-9100}:9100"
|
||||||
command:
|
# command:
|
||||||
- '--path.rootfs=/host'
|
# - '--path.rootfs=/host'
|
||||||
volumes:
|
# volumes:
|
||||||
- /proc:/host/proc:ro
|
# - /proc:/host/proc:ro
|
||||||
- /sys:/host/sys:ro
|
# - /sys:/host/sys:ro
|
||||||
- /:/host:ro
|
# - /:/host:ro
|
||||||
networks:
|
# networks:
|
||||||
- monitoring
|
# - monitoring
|
||||||
restart: always
|
# restart: always
|
||||||
|
|
||||||
# cAdvisor para métricas detalladas de Docker
|
# # cAdvisor para métricas detalladas de Docker
|
||||||
cadvisor:
|
# cadvisor:
|
||||||
image: gcr.io/cadvisor/cadvisor:latest
|
# image: gcr.io/cadvisor/cadvisor:latest
|
||||||
container_name: cadvisor
|
# container_name: cadvisor
|
||||||
privileged: true
|
# privileged: true
|
||||||
ports:
|
# ports:
|
||||||
- "${CADVISOR_PORT:-8081}:8080"
|
# - "${CADVISOR_PORT:-8081}:8080"
|
||||||
volumes:
|
# volumes:
|
||||||
- /:/rootfs:ro
|
# - /:/rootfs:ro
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- /sys:/sys:ro
|
# - /sys:/sys:ro
|
||||||
- /var/lib/docker/:/var/lib/docker:ro
|
# - /var/lib/docker/:/var/lib/docker:ro
|
||||||
- /dev/disk/:/dev/disk:ro
|
# - /dev/disk/:/dev/disk:ro
|
||||||
networks:
|
# networks:
|
||||||
- monitoring
|
# - monitoring
|
||||||
restart: always
|
# restart: always
|
||||||
|
|
||||||
# Promtail para exportar logs de todos los contenedores hacia Alloy
|
# # Promtail para exportar logs de todos los contenedores hacia Alloy
|
||||||
promtail:
|
# promtail:
|
||||||
image: grafana/promtail:latest
|
# image: grafana/promtail:latest
|
||||||
container_name: promtail
|
# container_name: promtail
|
||||||
command: -config.file=/etc/promtail/promtail-config.yml
|
# command: -config.file=/etc/promtail/promtail-config.yml
|
||||||
volumes:
|
# volumes:
|
||||||
- ./config/promtail/promtail-config.yml:/etc/promtail/promtail-config.yml:ro
|
# - ./config/promtail/promtail-config.yml:/etc/promtail/promtail-config.yml:ro
|
||||||
- promtail_positions:/var/lib/promtail
|
# - promtail_positions:/var/lib/promtail
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
# - /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
# - /var/lib/docker/containers:/var/lib/docker/containers:ro
|
||||||
networks:
|
# networks:
|
||||||
- monitoring
|
# - monitoring
|
||||||
restart: always
|
# restart: always
|
||||||
depends_on:
|
# depends_on:
|
||||||
- alloy
|
# - alloy
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
monitoring:
|
monitoring:
|
||||||
@@ -174,7 +160,7 @@ networks:
|
|||||||
volumes:
|
volumes:
|
||||||
prometheus_data:
|
prometheus_data:
|
||||||
loki_data:
|
loki_data:
|
||||||
tempo_data:
|
|
||||||
alloy_data:
|
alloy_data:
|
||||||
grafana_data:
|
grafana_data:
|
||||||
promtail_positions:
|
# tempo_data:
|
||||||
|
# promtail_positions:
|
||||||
|
|||||||
Reference in New Issue
Block a user