Splunk no inicia¶
Esta guía ayuda a diagnosticar problemas de arranque de Splunk Enterprise sin reinstalar ni cambiar permisos a ciegas.
El objetivo es identificar la capa que falla:
Comando
↓
Usuario y permisos
↓
Servicio systemd
↓
Logs de arranque
↓
Recursos del sistema
↓
Puertos
↓
Configuración
↓
Certificados
↓
Datos o estado persistente
No ejecutes varias correcciones a la vez. Conserva:
- el primer mensaje de error;
- el comando que lo produjo;
- el usuario utilizado;
- la fecha y hora;
- el último cambio realizado;
- el resultado después de cada modificación.
1. Objetivos¶
Al finalizar esta práctica, el asistente podrá:
- comprobar la versión de Splunk;
- identificar el usuario de ejecución;
- revisar el estado de
splunkd; - distinguir
splunkdde Splunk Web; - consultar logs mediante
journalctly archivos propios; - detectar problemas de propiedad y permisos;
- revisar espacio, inodos y memoria;
- identificar conflictos de puertos;
- revisar el arranque automático;
- utilizar
btoolpara consultar configuración efectiva; - detectar configuraciones modificadas recientemente;
- validar Splunk Web después del arranque;
- diferenciar un problema de arranque de un problema de ingesta;
- documentar la causa raíz y la corrección.
2. Entorno de referencia¶
El laboratorio utiliza como referencia:
- Splunk Enterprise 10.4.3.
- Ubuntu 24.04.5 LTS.
- Instalación habitual:
/opt/splunk. - Usuario recomendado del servicio:
splunk. - Splunk Web: puerto
8000. - Management port: puerto
8089. - Índice del curso:
curso.
La ruta, el usuario y los puertos pueden cambiar según la instalación. Comprueba los valores reales antes de aplicar una corrección.
3. Diferenciar los componentes¶
splunkd¶
Es el proceso principal de Splunk Enterprise.
Gestiona, entre otras funciones:
- indexación;
- búsquedas;
- API REST;
- administración;
- entradas de datos;
- alertas;
- comunicación interna;
- parte de los servicios web.
Splunk Web¶
Es la interfaz web accesible normalmente mediante:
Puede ocurrir que:
splunkdesté activo y Splunk Web no responda;- Splunk Web responda, pero no existan datos;
- el proceso esté activo, pero no pueda leer una entrada;
- la API
8089funcione, pero el puerto8000tenga un problema.
Por eso no basta con comprobar que existe un proceso llamado splunkd.
4. Regla de diagnóstico¶
Sigue siempre este orden:
1. Comando correcto
2. Usuario correcto
3. Estado del servicio
4. Primer error del log
5. Recursos del sistema
6. Puertos
7. Configuración
8. Propiedad y permisos
9. Arranque automático
10. Validación funcional
No empieces por:
- reinstalar;
- borrar índices;
- ejecutar como
root; - cambiar todos los permisos;
- abrir todos los puertos;
- modificar varios archivos
.conf; - recargar el dataset.
5. Paso 1: comprobar el comando y la instalación¶
5.1 Comprobar la ruta¶
Si la instalación está en otra ruta, utiliza el valor real.
5.2 Comprobar el ejecutable¶
5.3 Comprobar la variable SPLUNK_HOME¶
Si está definida:
5.4 Comprobar la versión¶
Si requiere privilegios:
Resultado esperado:
Si el ejecutable no existe:
- la ruta puede ser incorrecta;
- la instalación puede estar incompleta;
- se está utilizando otro usuario o entorno;
- el paquete puede estar instalado en otra ubicación.
Localizar el ejecutable:
6. Paso 2: comprobar el usuario de ejecución¶
No mezcles arranques como root y splunk durante la misma sesión de
diagnóstico.
6.1 Identificar el usuario del proceso¶
6.2 Revisar el propietario de la instalación¶
6.3 Comprobar si existe el usuario splunk¶
6.4 Ejecutar como splunk¶
Si la instalación pertenece a splunk:
También:
6.5 Ejecutar como root¶
Si la instalación está configurada para ejecutarse como root, utiliza
explícitamente:
o:
La ejecución como root no debe utilizarse como solución automática. Puede ocultar
problemas de propiedad y crear archivos que después el usuario splunk no pueda
modificar.
6.6 Advertencia sobre root¶
El mensaje:
es una advertencia de seguridad y operación.
No significa necesariamente que el arranque haya fallado, pero indica que conviene migrar a un usuario de servicio dedicado cuando la instalación lo permita.
7. Paso 3: comprobar systemd¶
7.1 Estado del servicio¶
Resultado esperado:
7.2 Consultar si la unidad existe¶
7.3 Consultar el estado de forma breve¶
Interpretación:
| Resultado | Significado |
|---|---|
active |
El servicio está ejecutándose |
inactive |
Está detenido |
failed |
El último arranque terminó con error |
enabled |
Está configurado para iniciar con systemd |
disabled |
No está configurado para arranque automático |
7.4 Consultar logs de systemd¶
Últimos 30 minutos:
Seguir en tiempo real:
Mostrar solo errores:
8. Paso 4: detener posibles procesos residuales¶
Antes de iniciar, comprueba si ya existen procesos de Splunk:
o:
Puede existir una instancia parcialmente iniciada o un proceso pendiente de una ejecución anterior.
No mates procesos automáticamente. Documenta primero:
- PID;
- usuario;
- tiempo de ejecución;
- comando;
- estado;
- proceso padre.
Para consultar un proceso concreto:
Si existe un procedimiento operativo aprobado para detener Splunk:
Después verifica:
No elimines manualmente archivos PID o locks sin comprender su origen.
9. Paso 5: revisar los logs de Splunk¶
9.1 Log principal¶
9.2 Buscar errores relevantes¶
sudo grep -iE \
'error|fatal|failed|cannot|permission|denied|port|bind|certificate|ssl' \
/opt/splunk/var/log/splunk/splunkd.log \
| tail -n 100
9.3 Log de Splunk Web¶
9.4 Buscar errores de Web y TLS¶
sudo grep -iE \
'error|fatal|failed|certificate|ssl|port|bind|listen' \
/opt/splunk/var/log/splunk/web_service.log \
| tail -n 100
9.5 Revisar el log completo con contexto¶
No te quedes únicamente con una línea aislada:
sudo grep -n -iE \
'error|fatal|failed|cannot|permission|denied' \
/opt/splunk/var/log/splunk/splunkd.log \
| tail -n 30
Después consulta un rango alrededor de la línea relevante:
Sustituye las líneas por el rango real.
9.6 Seguir el log durante un arranque¶
Terminal 1:
Terminal 2:
Guarda el primer error relevante, no solo el último mensaje mostrado.
10. Paso 6: comprobar espacio, inodos y memoria¶
Un disco lleno o sin inodos puede impedir que Splunk escriba:
- logs;
- PID;
- archivos temporales;
- configuración;
- buckets;
- metadatos.
10.1 Espacio disponible¶
Revisar todos los sistemas de archivos:
10.2 Inodos¶
10.3 Memoria¶
10.4 Procesos y consumo¶
10.5 Tamaño de la instalación¶
10.6 Directorios de mayor tamaño¶
Revisar logs:
Revisar almacenamiento de índices:
10.7 No borrar índices manualmente¶
No elimines directamente:
ni sus subdirectorios para liberar espacio.
Antes de actuar:
- identifica qué consume espacio;
- revisa la política de retención;
- comprueba si los datos son de laboratorio;
- documenta la acción;
- aplica un procedimiento aprobado.
11. Paso 7: comprobar los puertos¶
Los puertos habituales son:
8000: Splunk Web;8089: Management port;9997: recepción de forwarders;8088: HTTP Event Collector;8065y8191: pueden aparecer en algunas arquitecturas o componentes.
11.1 Revisar puertos¶
11.2 Revisar un puerto concreto¶
11.3 Detectar conflictos¶
Si otro proceso utiliza 8000:
Identifica:
- proceso;
- PID;
- usuario;
- servicio;
- finalidad.
No detengas el proceso antes de saber qué servicio proporciona.
11.4 Probar disponibilidad del puerto¶
Para la API:
Una conexión correcta no demuestra que Splunk funcione completamente, pero sí que existe un servicio TCP accesible.
12. Paso 8: comprobar configuración efectiva¶
No edites archivos .conf durante el primer diagnóstico. Primero revisa la
configuración efectiva y relaciónala con el primer error del log.
12.1 Revisar configuración de Web¶
Filtrar valores relevantes:
sudo /opt/splunk/bin/splunk btool web list --debug \
| grep -iE \
'httpport|enableSplunkWeb|mgmtHostPort|ssl|privKeyPath|serverCert'
12.2 Revisar configuración del servidor¶
12.3 Revisar índices¶
12.4 Revisar entradas¶
12.5 Revisar propiedades y transformaciones¶
12.6 Qué aporta --debug¶
El modo --debug ayuda a saber:
- qué archivo define un valor;
- qué configuración tiene prioridad;
- si un valor está en
default; - si una aplicación lo sobrescribe en
local; - si existe una configuración global inesperada.
13. Paso 9: revisar cambios recientes¶
Si Splunk dejó de iniciar después de un cambio, identifica:
- archivo modificado;
- hora del cambio;
- usuario que lo realizó;
- valor anterior;
- valor nuevo;
- componente afectado.
13.1 Revisar archivos modificados recientemente¶
sudo find /opt/splunk/etc \
-type f \
-name '*.conf' \
-mtime -2 \
-printf '%TY-%Tm-%Td %TH:%TM %p\n' \
| sort -r
13.2 Revisar certificados modificados¶
sudo find /opt/splunk/etc \
-type f \
\( -name '*.pem' -o -name '*.crt' -o -name '*.key' \) \
-mtime -7 \
-printf '%TY-%Tm-%Td %TH:%TM %p\n' \
| sort -r
13.3 Revisar permisos de certificados¶
Una clave privada debe estar protegida y ser legible por el usuario que ejecuta el componente correspondiente.
No compartas:
- claves privadas;
- tokens;
- certificados internos completos;
- contraseñas;
- archivos de autenticación.
14. Paso 10: revisar propiedad y permisos¶
14.1 Comprobar la instalación¶
stat -c '%U:%G %a %n' \
/opt/splunk \
/opt/splunk/bin \
/opt/splunk/etc \
/opt/splunk/var \
/opt/splunk/var/log/splunk
14.2 Comprobar la ruta completa¶
14.3 Detectar archivos propiedad de root¶
La existencia de archivos propiedad de root no demuestra por sí sola que sean
incorrectos. Debes valorar:
- qué archivo es;
- si lo necesita
splunkd; - cuándo se creó;
- si la instalación se ejecutó anteriormente como
root; - si el usuario de servicio puede leerlo y modificarlo.
14.4 Comprobar escritura como usuario de servicio¶
sudo -u splunk test -r /opt/splunk \
&& echo "Puede leer la instalación" \
|| echo "No puede leer la instalación"
Para una prueba de escritura, utiliza únicamente un directorio temporal aprobado:
sudo -u splunk test -w /opt/splunk/var \
&& echo "Puede escribir en var" \
|| echo "No puede escribir en var"
14.5 Corregir una instalación que se ejecutó como root¶
Si se ha confirmado que toda la instalación debe pertenecer a splunk:
- detén la instancia usando el mismo modo con el que se inició;
- realiza una copia o documenta el estado;
- cambia la propiedad de forma controlada;
- inicia como
splunk; - valida logs, puertos y Web.
Ejemplo:
Después, solo si está aprobado:
Iniciar:
Comprobar:
chown -R es una operación amplia. No la ejecutes sin confirmar:
- usuario y grupo correctos;
- ruta correcta;
- ausencia de otras aplicaciones dentro de la ruta;
- copia o procedimiento de recuperación;
- impacto en certificados;
- política de la organización.
15. Paso 11: revisar certificados y TLS¶
Si splunkd inicia, pero Splunk Web no responde, revisa web_service.log y la
configuración TLS.
15.1 Probar HTTP¶
15.2 Probar HTTPS¶
15.3 Inspeccionar el certificado¶
Mostrar sujeto, emisor y fechas:
openssl s_client \
-connect 127.0.0.1:8000 \
-servername localhost \
</dev/null 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
15.4 Problemas habituales¶
- certificado caducado;
- nombre no incluido en el certificado;
- clave privada ilegible;
- certificado en una ruta incorrecta;
- cadena incompleta;
- HTTP utilizado contra un puerto HTTPS;
- HTTPS utilizado contra un puerto HTTP.
No desactives TLS permanentemente para ocultar un problema de certificados.
16. Paso 12: revisar el arranque automático¶
Si el arranque manual funciona, pero Splunk no se inicia después de reiniciar Ubuntu, revisa systemd y boot-start.
16.1 Comprobar si está habilitado¶
16.2 Revisar la unidad¶
16.3 Revisar dependencias y errores de arranque¶
16.4 Configurar boot-start¶
La forma exacta depende de la versión y de la instalación. En un entorno que
utilice el usuario splunk, el comando habitual es:
Después comprueba:
No configures simultáneamente:
- una unidad systemd personalizada;
- un script antiguo de init;
- cron;
- otro mecanismo de arranque.
Podrían iniciar varias instancias o producir estados inconsistentes.
17. Paso 13: iniciar y validar de forma controlada¶
17.1 Iniciar mediante systemd¶
17.2 Comprobar estado¶
17.3 Comprobar procesos¶
17.4 Comprobar puertos¶
17.5 Probar Splunk Web¶
HTTP:
HTTPS:
17.6 Probar la API local¶
Una respuesta 401 puede indicar que la API está disponible, pero requiere
autenticación. Eso es distinto de que el puerto esté cerrado.
17.7 Validar una búsqueda mínima¶
Después de iniciar sesión en Splunk Web:
Si funciona, valida el índice del curso:
Si makeresults funciona, pero curso no devuelve eventos, el problema ya no es
el arranque. Consulta:
18. Tabla de síntomas¶
| Síntoma | Causa probable | Primera acción |
|---|---|---|
splunkd is not running |
Servicio detenido o arranque fallido | systemctl status y splunkd.log |
Permission denied |
Usuario o propiedad incorrecta | Revisar proceso, propietario y permisos |
| Puerto ocupado | Otro proceso usa 8000 o 8089 |
ss, lsof y ps |
| Arranque muy lento | Disco, memoria, recuperación o configuración | Revisar recursos y logs |
| No inicia tras reiniciar | Boot-start ausente o unidad incorrecta | Revisar systemctl y journalctl -b |
Web no responde, splunkd sí |
Web, TLS, puerto 8000 o proxy |
web_service.log, curl, ss |
| No se escriben logs | Disco lleno, permisos o filesystem | df, df -i y permisos |
Funciona como root, no como splunk |
Archivos creados por root |
Revisar propiedad antes de corregir |
Address already in use |
Conflicto de puerto | Identificar el proceso ocupante |
| Error de certificado | TLS o clave privada incorrectos | openssl, web_service.log |
Too many open files |
Límite de descriptores | Revisar ulimit y logs |
| Servicio se detiene después de iniciar | Error posterior de configuración o recursos | Seguir logs en tiempo real |
makeresults funciona, pero no hay datos |
Problema de ingesta, índice o tiempo | Consultar datos-no-aparecen.md |
19. Comprobación de límites del sistema¶
Algunos errores de arranque o rendimiento pueden estar relacionados con límites del sistema.
19.1 Límites del shell actual¶
19.2 Descriptores abiertos del proceso¶
Primero identifica el PID:
Después:
19.3 Límites del servicio systemd¶
Si aparece un error como:
no cambies límites de forma improvisada. Documenta:
- PID;
- límite actual;
- mensaje del log;
- número de descriptores;
- configuración de systemd;
- cambio propuesto.
20. Comprobar el reloj del sistema¶
Un reloj incorrecto puede afectar a:
- TLS;
- logs;
- alertas;
- timestamps;
- autenticación;
- correlación temporal.
Revisa:
- zona horaria;
- sincronización NTP;
- hora local;
- hora UTC;
- diferencia respecto a la fuente de datos.
21. No confundir mensajes de instalación con comandos¶
Durante un arranque o instalación pueden aparecer mensajes como:
Son mensajes que Splunk imprime en pantalla. No deben copiarse de nuevo en la terminal.
Ejecuta únicamente comandos completos, por ejemplo:
No ejecutes fragmentos de mensajes como si fueran comandos.
22. Avisos relacionados con Python¶
Durante algunas operaciones pueden aparecer referencias a rutas internas como:
Una referencia a una ruta incluida en el entorno de Splunk no significa automáticamente que falte esa versión de Python en Ubuntu.
Comprueba primero:
y el resultado final de la operación.
Distingue entre:
- advertencia;
- error recuperable;
- error fatal;
- instalación incompleta;
- problema de compatibilidad real.
No instales manualmente paquetes de Python del sistema para corregir una ruta interna de Splunk sin una instrucción específica y compatible con la versión.
23. Evidencias para pedir ayuda¶
Recoge la información siguiente sin incluir secretos:
date
/opt/splunk/bin/splunk version
getent passwd splunk
ps -eo user,pid,ppid,cmd | grep -i '[s]plunk'
sudo systemctl status Splunkd --no-pager
sudo ss -ltnp | grep -E ':8000|:8089|:8065|:8191'
df -h /opt/splunk
df -i /opt/splunk
free -h
sudo tail -n 100 /opt/splunk/var/log/splunk/splunkd.log
sudo tail -n 100 /opt/splunk/var/log/splunk/web_service.log
Añade:
- hora del intento;
- usuario utilizado;
- comando ejecutado;
- primer mensaje de error;
- último cambio aplicado;
- si el problema ocurre tras un reinicio;
- si el arranque manual funciona.
Antes de compartir la salida, elimina:
- contraseñas;
- tokens;
- claves privadas;
- datos personales;
- nombres sensibles;
- direcciones internas innecesarias.
24. Cuándo no reinstalar¶
No reinstales mientras no hayas descartado:
- comando o ruta incorrecta;
- usuario de ejecución incorrecto;
- propiedad heredada de una ejecución como
root; - espacio insuficiente;
- inodos agotados;
- memoria insuficiente;
- conflicto de puertos;
- boot-start incorrecto;
- certificado inválido;
- configuración incorrecta;
- proceso pendiente;
- error en
splunkd.log; - error en
web_service.log; - límites del sistema;
- permisos del filesystem.
Una reinstalación puede:
- borrar contexto;
- romper configuraciones;
- eliminar evidencias;
- generar pérdida de datos;
- no resolver un problema de red;
- no resolver un problema de permisos;
- no corregir un conflicto de puertos.
25. Ejercicio práctico 1: diagnóstico básico¶
Objetivo¶
Identificar si el problema está en el comando, servicio o puerto.
Ejecuta:
Documenta:
- versión;
- estado;
- usuario;
- puertos;
- proceso asociado;
- primer error encontrado.
26. Ejercicio práctico 2: usuario y permisos¶
Objetivo¶
Comprobar si Splunk funciona con el usuario previsto.
Ejecuta:
Después comprueba:
Documenta:
- propietario;
- grupo;
- usuario del proceso;
- resultado del comando;
- si existen archivos propiedad de
root.
27. Ejercicio práctico 3: conflicto de puertos¶
Objetivo¶
Identificar si otro servicio impide el arranque.
Ejecuta:
Después:
Documenta:
- puerto;
- PID;
- proceso;
- usuario;
- servicio;
- acción recomendada.
No detengas el proceso sin confirmar su función.
28. Ejercicio práctico 4: recursos¶
Objetivo¶
Determinar si el sistema tiene capacidad suficiente.
Ejecuta:
Documenta:
- espacio libre;
- porcentaje utilizado;
- inodos libres;
- memoria disponible;
- directorio de mayor tamaño;
- riesgo operativo.
29. Ejercicio práctico 5: validación funcional¶
Cuando Splunk aparezca activo:
Después, en Splunk Web:
Y finalmente:
Interpreta:
| Resultado | Conclusión |
|---|---|
| Web no responde | Revisar acceso web |
Web responde y makeresults funciona |
Splunk está operativo |
makeresults funciona, curso no |
Revisar datos, índice, tiempo o permisos |
| Todo funciona | El problema inicial ha sido corregido |
30. Plantilla de informe¶
## Informe: Splunk no inicia
#### Fecha y hora
Completar.
#### Zona horaria
Completar.
#### Servidor
Completar.
#### Versión de Splunk
Completar.
#### Ruta de instalación
Completar.
#### Usuario de ejecución esperado
Completar.
#### Usuario de ejecución observado
Completar.
#### Estado de systemd
```text
Completar.
Comando ejecutado¶
Primer error observado¶
splunkd.log¶
Resumen del mensaje relevante.
web_service.log¶
Resumen del mensaje relevante.
Recursos¶
Puertos¶
Configuración revisada¶
Propiedad y permisos¶
Completar.
Causa raíz¶
Describir una causa concreta.
Corrección aplicada¶
Describir un único cambio cada vez.
Validación¶
Resultado posterior¶
Completar.
Rollback¶
Describir cómo revertir la corrección.
Limitaciones¶
Completar.
Responsable¶
Completar.
---
## 31. Criterios de resolución
El problema se considera resuelto cuando:
- el servicio aparece activo;
- no existen errores nuevos relacionados;
- el usuario de ejecución es el previsto;
- los permisos son coherentes;
- los puertos esperados están escuchando;
- Splunk Web responde;
- `makeresults` funciona;
- la búsqueda de `curso` funciona si existen eventos;
- no se han creado duplicados;
- no se han borrado datos como primera medida;
- la corrección está documentada;
- existe un procedimiento de reversión;
- la validación se ha realizado con el usuario previsto.
Una solución que funciona únicamente como `root` no debe considerarse terminada
si la configuración objetivo utiliza el usuario `splunk`.
---
## 32. Buenas prácticas
- Ejecuta cada comando con el usuario correcto.
- No mezcles arranques como `root` y `splunk`.
- Guarda el primer mensaje de error.
- Revisa `journalctl` además de los logs de Splunk.
- Comprueba recursos antes de modificar configuración.
- Identifica conflictos de puertos antes de detener procesos.
- Usa `btool` para revisar configuración efectiva.
- No edites archivos `default`.
- No uses `chown -R` sin una decisión documentada.
- No borres índices manualmente.
- No reinstales ante el primer error.
- Valida primero `splunkd` y después Splunk Web.
- Utiliza `makeresults` para separar arranque de ingesta.
- Protege certificados y claves privadas.
- Documenta todo cambio.
- Prueba un único cambio cada vez.
- Mantén un rollback claro.
Referencias oficiales¶
- Iniciar y detener Splunk
- Configurar el arranque automático
- Logs disponibles de Splunk
- Troubleshooting de Splunk
- Puertos de Splunk
- Ejecutar Splunk como usuario no root
- Referencia de
server.conf - Referencia de
web.conf - Referencia de
indexes.conf - Referencia de
inputs.conf - Referencia de
btool - Ubuntu Server Documentation
- Systemd en Ubuntu