Sin telemetría centralizada, los incidentes en pods suelen diagnosticarse tarde y con información incompleta. Esta guía propone una implementación base de observabilidad en Kubernetes usando OpenTelemetry Collector, con un enfoque conservador: cambios verificables, comandos claros, advertencias antes de acciones sensibles y una validación final para detectar errores antes de mover tráfico o datos reales.
La propuesta está pensada para entornos cloud, servidores Linux propios o laboratorios controlados donde se necesite una configuración repetible y documentada.
Qué vas a construir
Vas a preparar una implementación base de observabilidad para Kubernetes que podrás adaptar a un Cloud Server de DonWeb Cloud, a una instancia Linux propia o a un entorno de laboratorio.
El resultado esperado es una configuración documentada, con comandos de prueba y recomendaciones para pasar de laboratorio a producción.
Cuándo conviene usarlo
Este enfoque es útil cuando:
- Necesitas una solución operativa y repetible, no solo una explicación conceptual.
- El servicio va a vivir en un servidor cloud y requiere seguridad básica desde el primer despliegue.
- Necesitas dejar evidencia de configuración, pruebas y criterios de mantenimiento.
- Quieres reducir configuraciones manuales difíciles de auditar.
Requisitos previos
Antes de comenzar, verifica que cuentas con:
- Un Cloud Server o servidor Ubuntu/Debian actualizado.
- Un usuario con permisos
sudoo rol equivalente. - Acceso SSH o consola segura.
- Backup previo si el servidor ya tiene datos o tráfico real.
- Dominio o subdominio si el artículo publica un servicio web.
- Credenciales con mínimo privilegio si se usan comandos AWS.
- Ventana de mantenimiento para cambios de red, firewall, runtime, base de datos o credenciales.
Arquitectura o flujo de trabajo
El flujo recomendado es:
- Preparar el entorno.
- Instalar los componentes necesarios.
- Configurar con archivos versionables.
- Probar localmente.
- Reforzar seguridad.
- Documentar el mantenimiento.
Evita cambiar varias capas a la vez. Si algo falla, una modificación incremental es más fácil de revisar y revertir.
Comandos principales
kubectl create namespace observabilitykubectl apply -f otel-collector.yamlkubectl get pods -n observabilitykubectl logs deploy/otel-collector -n observability --tail=80kubectl port-forward svc/otel-collector 4318:4318 -n observabilityConfiguración base
La siguiente configuración define un receptor OTLP y un exportador debug para validar el flujo de datos sin enviar información a un backend externo.
receivers:
otlp:
protocols:
grpc:
http:
exporters:
debug:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [debug]Paso 1: Preparar el entorno
Antes de ejecutar este paso, revisa que estás en el clúster correcto y que tienes una ventana de mantenimiento si el servicio ya recibe tráfico.
Crea un namespace específico para los componentes de observabilidad:
kubectl create namespace observabilityVerifica la salida antes de continuar. Si el cambio afecta red, credenciales, firewall, base de datos o runtime de contenedores, conserva una copia de seguridad y una ruta de rollback.
Paso 2: Instalar o activar OpenTelemetry Collector
Aplica el manifiesto del Collector:
kubectl apply -f otel-collector.yamlLuego revisa que los pods se hayan creado correctamente:
kubectl get pods -n observabilitySi el manifiesto modifica componentes sensibles, revisa el contexto de Kubernetes antes de aplicarlo y conserva la versión anterior del archivo.
Paso 3: Configurar la solución
Define la configuración base del Collector en el archivo correspondiente del manifiesto o ConfigMap.
receivers:
otlp:
protocols:
grpc:
http:
exporters:
debug:
service:
pipelines:
traces:
receivers: [otlp]
exporters: [debug]Esta configuración permite recibir telemetría por OTLP y enviarla al exportador debug, útil para validar que el Collector recibe datos antes de conectar otros destinos.
Paso 4: Probar que funciona
Revisa los logs del deployment del Collector:
kubectl logs deploy/otel-collector -n observability --tail=80Valida que no haya errores de arranque, problemas de configuración o fallas al inicializar los pipelines.
Paso 5: Probar recepción local por OTLP HTTP
Para hacer una prueba local, puedes exponer temporalmente el servicio con port-forward:
kubectl port-forward svc/otel-collector 4318:4318 -n observabilityUsa este acceso solo como validación local. Antes de exponer endpoints en un entorno real, revisa red, autenticación, límites de acceso y criterios de seguridad.
Problemas frecuentes
Permisos insuficientes
Revisa el usuario, el grupo, el rol IAM o el contexto de Kubernetes antes de repetir comandos con más privilegios.
Puerto ocupado o cerrado
Valida con ss -tulpn, reglas de firewall y security groups antes de asumir que la aplicación falló.
Variables de entorno ausentes
Confirma .env, secretos del orquestador y configuración relacionada. Evita imprimir credenciales en logs.
El servicio inicia, pero no responde
Revisa healthchecks, logs, dependencia de base de datos y resolución DNS.
Rollback no definido
Conserva la versión anterior, snapshot, backup o manifiesto previo antes de aplicar cambios sensibles.
Buenas prácticas para producción
- Usa mínimo privilegio para usuarios, roles, contenedores y reglas de red.
- Versiona configuraciones sin incluir secretos.
- Prueba restauraciones de backup, no solo la creación del archivo.
- Activa logs y alertas antes de necesitar diagnosticar un incidente.
- Documenta quién puede ejecutar cambios y qué evidencia debe quedar.
- Revisa periódicamente dependencias, imágenes y paquetes del sistema.
