This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
conseguir_datos_con_agentes/notebooks/grafana.py
T

103 lines
2.8 KiB
Python

import marimo
__generated_with = "0.14.17"
app = marimo.App(width="medium")
@app.cell
def _():
import marimo as mo
return (mo,)
@app.cell(hide_code=True)
def _(mo):
mo.md(r"""# Grafana: Inicialización automática 🚀""")
return
@app.cell
def _():
import os
import yaml
import subprocess
from pathlib import Path
# ==== Parámetros ====
PUERTO_GRAFANA = 33000 # puerto host -> 3000 del contenedor
SERVICIO = "grafana_srv"
ADMIN_USER = "admin"
ADMIN_PASSWORD = "admin123"
RUTA_PROYECTO = Path(".").resolve()
return (
ADMIN_PASSWORD,
ADMIN_USER,
Path,
PUERTO_GRAFANA,
RUTA_PROYECTO,
SERVICIO,
subprocess,
yaml,
)
@app.cell
def _(Path, yaml):
def crear_docker_compose(ruta: Path, servicio: str, puerto_host: int, admin_user: str, admin_password: str):
compose = {
"version": "3.8",
"services": {
servicio: {
"image": "grafana/grafana:latest",
"container_name": servicio,
"restart": "always",
"ports": [f"{puerto_host}:3000"],
"environment": {
"GF_SECURITY_ADMIN_USER": admin_user,
"GF_SECURITY_ADMIN_PASSWORD": admin_password,
"GF_USERS_ALLOW_SIGN_UP": "false",
"GF_INSTALL_PLUGINS": "grafana-piechart-panel,grafana-worldmap-panel",
},
"volumes": [
"grafana_data:/var/lib/grafana",
],
}
},
"volumes": {"grafana_data": {}}
}
(ruta / "docker-compose.yml").write_text(yaml.dump(compose, sort_keys=False), encoding="utf-8")
return (crear_docker_compose,)
@app.cell
def _(Path, subprocess):
def construir_y_levantar(ruta: Path):
def _run(cmd):
subprocess.run(cmd, cwd=ruta, check=True)
try:
_run(["docker", "compose", "build"])
_run(["docker", "compose", "up", "-d"])
except Exception:
_run(["docker-compose", "build"])
_run(["docker-compose", "up", "-d"])
return (construir_y_levantar,)
@app.cell
def _(ADMIN_PASSWORD, ADMIN_USER, PUERTO_GRAFANA, RUTA_PROYECTO, SERVICIO, construir_y_levantar, crear_docker_compose):
if __name__ == "__main__":
RUTA_PROYECTO.mkdir(parents=True, exist_ok=True)
crear_docker_compose(RUTA_PROYECTO, SERVICIO, PUERTO_GRAFANA, ADMIN_USER, ADMIN_PASSWORD)
construir_y_levantar(RUTA_PROYECTO)
print(f"✅ Grafana inicializado en http://localhost:{PUERTO_GRAFANA} (usuario: {ADMIN_USER}, contraseña: {ADMIN_PASSWORD})")
return
if __name__ == "__main__":
app.run()