| Minutos | Contenido | Evidencia |
|---|---|---|
| 0–5 | Contexto, objetivos y módulos ASIR | Portada, intro, tabla módulos |
| 5–12 | App: login, citas, noticias, administración | Navegador — flujos principales |
| 12–18 | Docker, BD, volúmenes y redes | docker compose ps, esquema |
| 18–24 | Prometheus, Grafana y simulador | Dashboards y carga sintética |
| 24–28 | AWS, seguridad y presupuesto | Diagrama despliegue y costes |
| 28–30 | Conclusiones, mejoras y preguntas | Tabla objetivos y cierre |
flowchart TB
form(["Formulario de cita"])
auth{"Usuario registrado?"}
data["idUser o datos invitado"]
check["Comprobar franja libre"]
ok(["Cita confirmada"])
form --> auth
auth --> data
data --> check
check --> okPulsa un sector o la leyenda para ver el rol en el proyecto.
| Módulo | Contenidos aplicados en el PFC |
|---|---|
| Implantación de Aplicaciones Web | PHP, Apache, sesiones, formularios, panel admin, API de citas. |
| Gestión de Bases de Datos | MySQL 8, relaciones, índices, unicidad en citas y usuarios. |
| Administración de SGBD | Inicialización SQL, usuarios de aplicación, backups, migración futura a RDS. |
| Servicios de Red e Internet | HTTP, puertos, redes Docker, monitorización. |
| Administración de Sistemas Operativos | Contenedores, volúmenes, logs, healthchecks, scripts de despliegue. |
| Seguridad y Alta Disponibilidad | Roles, contraseñas cifradas, CSRF, consultas preparadas, alertas. |
| Planificación y Administración de Redes | Docker Compose, redes, volúmenes, Security Groups en AWS. |
| LMSGI | HTML/CSS/JS, Markdown, YAML Compose, JSON de dashboards Grafana. |
| Empresa e Iniciativa Emprendedora | Digitalización del taller, presupuesto y costes de explotación. |
| Proyecto de administración de sistemas | Planificación, documentación, despliegue EC2, observabilidad y pruebas. |
flowchart TB
usuarios(("Usuarios y operador"))
web["Apache + PHP"]
mysql[("MySQL")]
metrics["metrics.php"]
logs["Ficheros de log"]
prom["Prometheus"]
graf["Grafana"]
alert["Alertmanager"]
usuarios --> web
web --> mysql
web --> metrics
logs --> prom
metrics --> prom
prom --> graf
prom --> alert| Perfil | Funciones (resumen) |
|---|---|
| Visitante | Inicio, noticias, registro, login, citación como invitado. |
| Usuario registrado | Reservas, citas propias, perfil y contraseña. |
| Administrador | Usuarios, citas, noticias, consejos, estadísticas y monitorización. |
| Operador técnico | Despliegue, logs, métricas, healthchecks, simulador y backups. |
sequenceDiagram
autonumber
actor Cliente
participant Nav as Navegador
participant API as ApiChat
participant DB as MySQL
Cliente->>Nav: Selecciona fecha y hora
Nav->>API: GET booked slots
API->>DB: Consulta citas del mes
DB-->>API: Franjas ocupadas
API-->>Nav: JSON disponibilidad
Nav->>API: POST nueva reserva
API->>DB: INSERT en citas
DB-->>API: OK
API-->>Nav: Confirmación
Nav-->>Cliente: Pantalla confirmaciónerDiagram
users_data ||--o| users_login : credenciales
users_data ||--o{ citas : reserva
users_data ||--o{ noticias : publica
users_data ||--o{ consejos : escribe
users_data {
int idUser PK
string email
string nombre
}
users_login {
int idLogin PK
int idUser FK
string usuario
string rol
}
citas {
int idCita PK
int idUser FK
date fecha_cita
time hora_cita
}
noticias {
int idNoticia PK
int idUser FK
string titulo
}
consejos {
int idConsejo PK
int idUser FK
string titulo
}
flowchart TD
start(["Usuario o invitado"])
form["Formulario de citación"]
auth{"¿Sesión iniciada?"}
link["Vincular idUser"]
guest["Guardar guest_name / email / phone"]
check["Comprobar franja libre"]
save[("INSERT en citas")]
ok(["Confirmación en pantalla"])
start --> form
form --> auth
auth -->|Sí| link
auth -->|No| guest
link --> check
guest --> check
check --> save
save --> ok
| Servicio | Función en el stack |
|---|---|
| web | Apache/PHP — espera healthcheck de MySQL en el arranque. |
| mysql | Persistencia — sin publicar puertos al host en producción. |
| prometheus + alertmanager | Scraping, reglas de alerta y notificaciones. |
| grafana | Dashboards preprovisionados desde monitoring/grafana/. |
| exportadores | Node, MySQL, blackbox, cAdvisor, Telegraf. |
| simulador (perfil traffic) | JMeter worker + UI para carga controlada. |
flowchart LR
sim["simulador
perfil traffic"] --> web["web
Apache + PHP"]
web --> mysql[("mysql
persistencia")]
prom["prometheus"] --> web
prom --> exp["exportadores"]
prom --> graf["grafana"]
prom --> am["alertmanager"]flowchart TB
operador["Operador técnico"] --> preparar["Plan JMX"]
preparar --> jmeter["Apache JMeter CLI"]
jmeter --> appWeb["Aplicación PHP/Apache"]
appWeb --> accessLogs["access.log / source=app"]
jmeter --> jtl["results.jtl / jmeter.log"]
jtl --> metricsFile["metrics.log / source=simulator"]
accessLogs --> prometheus["Prometheus / metrics.php"]
metricsFile --> prometheus
prometheus --> grafana["Grafana / comparación"]flowchart TB web["Apache + PHP\nmetrics.php"] exp["Exportadores\nNode / MySQL / blackbox"] prom["Prometheus"] graf["Grafana"] am["Alertmanager"] web --> prom exp --> prom prom --> graf prom --> am
flowchart TB
ec2["EC2 + AMI"] --> userData["user-data idempotente"]
userData --> docker["Docker Engine + Compose + Buildx"]
docker --> repo["Repo en /opt/taller"]
repo --> env[".env con secretos rotados"]
env --> deploy["deploy_aws_docker.sh"]
deploy --> logs["bootstrap.log"]
deploy --> ps["docker ps / compose ps"]
env --> creds["credenciales Grafana/MySQL"]| Concepto | Coste anual |
|---|---|
| EC2 t3.small 24/7 | 300 EUR |
| EBS gp3 cifrado 50 GiB | 60 EUR |
| Dominio propio | 12 EUR |
| Backups / snapshots | 60 EUR |
| Correo SMTP alertas | 60 EUR |
| Implantación + mantenimiento | 550 EUR |
| Contingencia 10 % | 104 EUR |
| Total orientativo | 1.146 EUR/año |