Rutas y ficheros¶
Esta página reúne las rutas y los ficheros más importantes del entorno de laboratorio basado en Ubuntu, Grafana, Prometheus y Node Exporter.
Conocer la ubicación de los ficheros permite:
- Localizar configuraciones.
- Consultar datos y registros.
- Validar permisos.
- Diagnosticar errores.
- Realizar copias de seguridad.
- Comprobar qué unidad de
systemdutiliza cada servicio. - Relacionar una aplicación con sus ficheros de configuración y datos.
Las rutas pueden variar según el método de instalación, la versión del software y la distribución utilizada. Antes de modificar un fichero, comprueba siempre que la ruta corresponde al entorno de laboratorio.
Objetivos¶
Al finalizar esta sesión, el alumno podrá:
- Diferenciar rutas de configuración, datos, registros y ejecutables.
- Localizar los ficheros principales de Grafana.
- Localizar los ficheros principales de Prometheus.
- Localizar los ficheros principales de Node Exporter.
- Consultar las unidades de
systemd. - Identificar las rutas utilizadas por un servicio.
- Comprobar permisos y propietarios.
- Buscar ficheros mediante
find. - Buscar texto dentro de ficheros mediante
grep. - Crear copias de seguridad antes de modificar configuraciones.
- Documentar las rutas utilizadas durante una incidencia.
Introducción¶
En Linux, cada componente suele tener varias ubicaciones diferenciadas:
Configuración
Define cómo funciona el servicio.
Datos
Contiene la información generada o almacenada.
Registros
Permite analizar la actividad y los errores.
Ejecutables
Contiene los programas que se ejecutan.
Unidades systemd
Define cómo se inicia y gestiona el servicio.
Por ejemplo, Prometheus puede utilizar:
/etc/prometheus/
Ficheros de configuración.
/var/lib/prometheus/
Datos almacenados.
/var/log/
Registros, si están configurados en ficheros.
/lib/systemd/system/
Unidad del servicio.
No todos los servicios utilizan exactamente las mismas rutas. Por ese motivo, cuando exista una duda, conviene consultar la unidad de systemd y el proceso en ejecución.
Tipos de rutas¶
Rutas de configuración¶
Contienen los parámetros que definen el comportamiento de un servicio.
Ejemplos:
Rutas de datos¶
Contienen datos generados por la aplicación.
Ejemplos:
Rutas de registros¶
Contienen información sobre la actividad y los errores.
Ejemplos:
Algunos servicios envían sus registros directamente al journal de systemd en lugar de utilizar un fichero específico.
Rutas de ejecutables¶
Contienen los programas que se ejecutan.
Ejemplos:
Rutas de unidades systemd¶
Las unidades pueden encontrarse en varias ubicaciones:
Las unidades creadas o modificadas por el administrador suelen ubicarse en:
Estructura básica del sistema de ficheros¶
Directorio raíz¶
La raíz del sistema se representa mediante:
Desde ella cuelgan los directorios principales:
Directorio /etc¶
Contiene la configuración del sistema y de muchas aplicaciones.
Ejemplos:
Directorio /var¶
Contiene datos variables, como registros, cachés y datos de aplicaciones.
Ejemplos:
Directorio /usr¶
Contiene programas, bibliotecas y recursos instalados por el sistema.
Ejemplos:
Directorio /opt¶
Se utiliza habitualmente para aplicaciones instaladas fuera de la estructura estándar del sistema.
Ejemplo:
Esta ruta puede utilizarse cuando Prometheus se instala manualmente mediante un archivo comprimido.
Directorio /home¶
Contiene los directorios personales de los usuarios.
Ejemplo:
Directorio /root¶
Es el directorio personal del usuario administrador:
Directorio /tmp¶
Contiene ficheros temporales:
No debe utilizarse para almacenar configuraciones permanentes o datos importantes.
Comandos para consultar rutas¶
Mostrar el directorio actual¶
Listar un directorio¶
Mostrar información detallada:
Mostrar ficheros ocultos:
Mostrar tamaños legibles:
Consultar una ruta concreta¶
Si la ruta requiere permisos:
Comprobar si existe un fichero¶
test -f /etc/prometheus/prometheus.yml \
&& echo "El fichero existe" \
|| echo "El fichero no existe"
Comprobar si existe un directorio¶
Consultar información de un fichero¶
Consultar el tamaño de un fichero¶
Consultar el tamaño de un directorio¶
Consultar el tamaño de sus subdirectorios:
Rutas de Grafana¶
Las rutas de Grafana dependen de la instalación y de la distribución. En una instalación habitual mediante paquete .deb, las rutas principales suelen ser las siguientes.
Tabla de rutas de Grafana¶
| Elemento | Ruta habitual |
|---|---|
| Configuración principal | /etc/grafana/grafana.ini |
| Configuración de provisioning | /etc/grafana/provisioning/ |
| Datos de Grafana | /var/lib/grafana/ |
| Plugins | /var/lib/grafana/plugins/ |
| Registros | /var/log/grafana/ |
| Ejecutable o servidor | /usr/sbin/grafana-server |
| Unidad del servicio | /lib/systemd/system/grafana-server.service |
| Variables de entorno | /etc/default/grafana-server |
Configuración principal¶
La configuración principal suele encontrarse en:
Consultar el fichero:
Buscar la configuración de red:
Buscar la configuración de la base de datos:
Algunas líneas pueden estar comentadas. Una línea comentada normalmente comienza con
;o#.
Directorio de provisioning¶
El directorio de provisioning suele ser:
Consultar su contenido:
Las subcarpetas habituales pueden incluir:
/etc/grafana/provisioning/dashboards/
/etc/grafana/provisioning/datasources/
/etc/grafana/provisioning/alerting/
/etc/grafana/provisioning/notifiers/
Datos de Grafana¶
La ruta habitual de datos es:
Consultar el contenido:
Consultar el tamaño:
Base de datos de Grafana¶
En instalaciones básicas, Grafana puede utilizar SQLite. El fichero suele encontrarse en:
Comprobar si existe:
Consultar sus permisos:
No modifiques directamente la base de datos de Grafana. Utiliza la interfaz web o los mecanismos oficiales de exportación y administración.
Plugins de Grafana¶
Los plugins instalados suelen encontrarse en:
Consultar los plugins:
Registros de Grafana¶
Los registros pueden encontrarse en:
Consultar los ficheros:
Consultar las últimas líneas:
En algunos entornos, los registros pueden estar únicamente en journald:
Rutas de Prometheus¶
Prometheus también puede instalarse mediante paquete o manualmente. Las rutas dependen del método utilizado.
Tabla de rutas de Prometheus¶
| Elemento | Instalación mediante paquete | Instalación manual habitual |
|---|---|---|
| Configuración | /etc/prometheus/ |
/etc/prometheus/ o /opt/prometheus/ |
| Configuración principal | /etc/prometheus/prometheus.yml |
/opt/prometheus/prometheus.yml |
| Datos | /var/lib/prometheus/ |
Ruta definida con --storage.tsdb.path |
| Ejecutable | /usr/bin/prometheus o /usr/sbin/prometheus |
/opt/prometheus/prometheus |
Herramienta promtool |
/usr/bin/promtool |
/opt/prometheus/promtool |
| Unidad systemd | /lib/systemd/system/prometheus.service |
/etc/systemd/system/prometheus.service |
Configuración principal¶
La configuración principal suele ser:
Consultar el fichero:
Mostrar las primeras líneas:
Buscar los trabajos configurados:
Buscar los targets:
Buscar referencias a Node Exporter:
Directorio de reglas¶
Si se han configurado reglas de grabación o alertas:
o:
Localizar ficheros de reglas:
Buscar reglas de alerta:
Datos de Prometheus¶
La ruta habitual de almacenamiento es:
Consultar el tamaño:
Consultar los elementos principales:
La base de datos de series temporales no debe modificarse manualmente.
Ejecutables de Prometheus¶
Localizar el ejecutable:
Si no se encuentra mediante command -v, busca en las rutas habituales:
sudo find /usr /opt -type f \
\( -name "prometheus" -o -name "promtool" \) \
-executable 2>/dev/null
Registros de Prometheus¶
Consultar los registros mediante systemd:
Seguirlos en tiempo real:
Buscar errores:
Rutas de Node Exporter¶
Node Exporter es un ejecutable que expone métricas del sistema. Normalmente no necesita una gran estructura de configuración.
Tabla de rutas de Node Exporter¶
| Elemento | Ruta habitual |
|---|---|
| Ejecutable | /usr/local/bin/node_exporter |
| Ejecutable alternativo | /usr/bin/node_exporter |
| Unidad systemd | /etc/systemd/system/node_exporter.service |
| Usuario de servicio | Definido en la unidad systemd |
| Puerto habitual | 9100 |
| Endpoint de métricas | /metrics |
Localizar el ejecutable¶
Buscarlo en el sistema:
Consultar la unidad del servicio¶
Si la unidad está en una ruta específica:
Consultar los parámetros de ejecución¶
También puedes consultar el proceso:
Consultar el endpoint¶
Buscar la versión:
Registros de Node Exporter¶
Seguir los registros:
Unidades systemd¶
Consultar la unidad de un servicio¶
Este comando muestra:
- La unidad principal.
- Las directivas de servicio.
- El usuario de ejecución.
- El comando de inicio.
- Las dependencias.
- Las opciones de reinicio.
Mostrar la ruta de la unidad¶
Mostrar todas las propiedades¶
Consultar propiedades concretas:
systemctl show prometheus \
-p User \
-p Group \
-p ExecStart \
-p FragmentPath \
-p WorkingDirectory
Consultar las dependencias¶
Buscar unidades relacionadas¶
Recargar las unidades¶
Después de modificar o crear una unidad:
Después, reinicia el servicio si es necesario:
Permisos y propietarios¶
Consultar permisos¶
Ejemplo:
La salida contiene:
Consultar permisos con formato detallado¶
Consultar el propietario de un directorio¶
Consultar todos los elementos de una ruta¶
Cambiar el propietario¶
Cambiar los permisos¶
Consultar permisos recursivamente¶
Interpretar permisos habituales¶
Significa:
Para un fichero de configuración que contiene información sensible, no conviene conceder permisos de escritura a todos los usuarios.
Buscar rutas y ficheros¶
Utilizar find¶
Buscar la configuración de Prometheus:
Buscar configuraciones de Grafana:
Buscar unidades de servicios:
sudo find /etc/systemd /lib/systemd /usr/lib/systemd \
-type f \
\( -name "grafana*.service" \
-o -name "prometheus*.service" \
-o -name "node_exporter*.service" \) \
-print 2>/dev/null
Buscar ficheros modificados recientemente:
Buscar ficheros grandes:
Utilizar locate¶
Si está instalado:
Actualizar la base de datos de locate:
locatepuede no mostrar ficheros creados recientemente hasta que se actualice su base de datos.
Utilizar whereis¶
Utilizar command -v¶
Buscar texto dentro de ficheros¶
Buscar una palabra¶
Buscar sin distinguir mayúsculas¶
Buscar recursivamente¶
Mostrar líneas próximas¶
Las opciones significan:
| Opción | Función |
|---|---|
-n |
Mostrar números de línea |
-i |
Ignorar mayúsculas y minúsculas |
-R |
Buscar recursivamente |
-A 5 |
Mostrar cinco líneas posteriores |
-B 5 |
Mostrar cinco líneas anteriores |
Buscar varias palabras¶
Editar ficheros de configuración¶
Utilizar nano¶
Abrir la configuración de Prometheus:
Atajos básicos de nano:
| Atajo | Función |
|---|---|
Ctrl + O |
Guardar |
Enter |
Confirmar nombre |
Ctrl + X |
Salir |
Ctrl + W |
Buscar |
Ctrl + K |
Cortar una línea |
Ctrl + U |
Pegar una línea |
Crear una copia antes de editar¶
Comparar una copia con la configuración actual¶
Restaurar una copia¶
Después de restaurar:
Validar antes de reiniciar¶
No reinicies Prometheus si la validación devuelve errores. Corrige primero el fichero y vuelve a validarlo.
Copias de seguridad¶
Copiar un fichero con fecha¶
Crear un directorio de copias¶
Copiar varias configuraciones¶
sudo cp /etc/prometheus/prometheus.yml \
/var/backups/observabilidad/
sudo cp /etc/grafana/grafana.ini \
/var/backups/observabilidad/
Crear un archivo comprimido¶
sudo tar -czf \
/var/backups/observabilidad/configuracion-$(date +%F).tar.gz \
/etc/prometheus \
/etc/grafana
Consultar el contenido de una copia¶
Extraer una copia¶
Sesión práctica 1: inventario de rutas¶
En esta sesión se elaborará un inventario de las rutas principales del laboratorio.
Objetivo¶
Localizar:
- Configuración de Grafana.
- Configuración de Prometheus.
- Unidad de Node Exporter.
- Directorios de datos.
- Ejecutables.
- Registros.
Preparación¶
Crear el directorio de trabajo:
Buscar las configuraciones principales¶
{
echo "===== CONFIGURACIÓN DE GRAFANA ====="
sudo find /etc/grafana -maxdepth 2 -type f -print \
2>/dev/null || true
echo
echo "===== CONFIGURACIÓN DE PROMETHEUS ====="
sudo find /etc/prometheus -maxdepth 2 -type f -print \
2>/dev/null || true
echo
echo "===== UNIDAD DE NODE EXPORTER ====="
sudo find /etc/systemd /lib/systemd /usr/lib/systemd \
-type f -name "node_exporter*.service" -print \
2>/dev/null || true
} | tee inventario-configuracion.txt
Buscar los ejecutables¶
{
echo "===== EJECUTABLES ====="
echo -n "Grafana: "
command -v grafana-server || true
echo -n "Prometheus: "
command -v prometheus || true
echo -n "Promtool: "
command -v promtool || true
echo -n "Node Exporter: "
command -v node_exporter || true
} | tee inventario-ejecutables.txt
Buscar los directorios de datos¶
{
echo "===== DIRECTORIOS DE DATOS ====="
for directory in \
/var/lib/grafana \
/var/lib/prometheus \
/var/log/grafana \
/etc/prometheus \
/etc/grafana
do
if [ -d "$directory" ]; then
echo "Existe: $directory"
sudo du -sh "$directory"
else
echo "No existe: $directory"
fi
done
} | tee inventario-datos.txt
Evidencias¶
Conserva los siguientes ficheros:
Sesión práctica 2: investigar una unidad systemd¶
En esta sesión se analizará cómo se inicia y configura Prometheus.
Objetivo¶
Identificar:
- La ruta de la unidad.
- El usuario de ejecución.
- El comando de inicio.
- El fichero de configuración.
- La ruta de datos.
- El puerto utilizado.
Consultar la unidad¶
Consultar la ruta de la unidad¶
Consultar los parámetros principales¶
Consultar el proceso en ejecución¶
Consultar el puerto¶
Documentar los resultados¶
{
echo "===== UNIDAD DE PROMETHEUS ====="
systemctl show prometheus \
-p User \
-p Group \
-p ExecStart \
-p FragmentPath
echo
echo "===== PROCESO ====="
ps aux | grep "[p]rometheus" || true
echo
echo "===== PUERTO ====="
sudo ss -lntp | grep ':9090' || true
} | tee analisis-prometheus.txt
Preguntas de análisis¶
- ¿Qué usuario ejecuta Prometheus?
- ¿Qué fichero de configuración utiliza?
- ¿Qué ruta de almacenamiento utiliza?
- ¿Qué puerto aparece en el proceso?
- ¿Coincide la información de la unidad con la del proceso?
Sesión práctica 3: modificar una configuración de forma segura¶
En esta sesión se practicará un procedimiento seguro para modificar la configuración de Prometheus.
Objetivo¶
Aplicar el siguiente procedimiento:
Crear la copia de seguridad¶
Comprobar que existe:
Consultar la configuración actual¶
Editar el fichero¶
Realiza únicamente un cambio controlado y autorizado por el profesor.
Validar la configuración¶
Reiniciar Prometheus¶
Solo si la validación es correcta:
Comprobar el estado¶
Comprobar la salud¶
Consultar los registros¶
Restaurar la copia si aparece un error¶
Después:
Evidencias¶
Incluye:
- Nombre de la copia de seguridad.
- Resultado de
promtool check config. - Estado posterior del servicio.
- Resultado del endpoint de salud.
- Registros relevantes.
Sesión práctica 4: localizar el origen de un error¶
En esta sesión se simulará una investigación sobre un servicio que no funciona correctamente.
Objetivo¶
Utilizar distintas fuentes de información para localizar la causa de un problema.
Comprobar el servicio¶
Consultar la unidad¶
Consultar el proceso¶
Consultar el puerto¶
Comprobar el endpoint¶
Consultar los registros¶
Revisar la configuración¶
Registrar la investigación¶
Componente analizado:
Ruta de configuración:
Ruta de datos:
Ruta de la unidad:
Usuario de ejecución:
Puerto:
Estado del servicio:
Resultado de curl:
Mensaje de error:
Causa identificada:
Corrección:
Resultado final:
Sesión práctica 5: crear un informe de rutas y permisos¶
Objetivo¶
Crear un informe con las rutas, los propietarios y los permisos de los componentes principales.
Crear el informe¶
{
echo "===== INFORME DE RUTAS Y PERMISOS ====="
echo "Fecha: $(date)"
echo "Equipo: $(hostname)"
echo
for path in \
/etc/grafana/grafana.ini \
/etc/grafana/provisioning \
/var/lib/grafana \
/etc/prometheus/prometheus.yml \
/var/lib/prometheus \
/etc/systemd/system/node_exporter.service \
/usr/local/bin/node_exporter
do
echo "===== $path ====="
if [ -e "$path" ]; then
sudo stat \
--format="Tipo: %F%nPermisos: %A%nPropietario: %U%nGrupo: %G%nTamaño: %s bytes%nRuta: %n" \
"$path"
else
echo "No existe en esta instalación."
fi
echo
done
} | tee informe-rutas-permisos.txt
Revisar el informe¶
Identificar diferencias¶
Comprueba si alguna ruta esperada no existe. Si una ruta no está presente:
- Consulta el método de instalación.
- Consulta la unidad de
systemd. - Consulta el proceso en ejecución.
- Busca el ejecutable con
find. - Documenta la ruta real encontrada.
Sesión práctica 6: investigar Grafana¶
Objetivo¶
Localizar la configuración, los datos, los plugins y los registros de Grafana.
Consultar la configuración principal¶
Consultar el provisioning¶
Consultar los datos¶
Consultar los plugins¶
Consultar los registros¶
Comprobar la unidad¶
Resultado esperado¶
El informe debe permitir responder:
- ¿Dónde está
grafana.ini? - ¿Qué puerto utiliza Grafana?
- ¿Dónde se guardan sus datos?
- ¿Dónde se encuentran los plugins?
- ¿Qué usuario ejecuta el servicio?
- ¿Dónde se consultan sus registros?
Rutas habituales resumidas¶
Grafana¶
/etc/grafana/grafana.ini
/etc/grafana/provisioning/
/var/lib/grafana/
/var/lib/grafana/plugins/
/var/log/grafana/
/lib/systemd/system/grafana-server.service
Prometheus¶
/etc/prometheus/prometheus.yml
/etc/prometheus/rules/
/var/lib/prometheus/
/usr/bin/prometheus
/usr/bin/promtool
/lib/systemd/system/prometheus.service
Node Exporter¶
Registros mediante systemd¶
Tabla rápida de comandos¶
| Necesidad | Comando |
|---|---|
| Mostrar la ruta actual | pwd |
| Listar ficheros | ls -lah |
| Buscar un fichero | find /ruta -name "fichero" |
| Buscar texto | grep -n "texto" fichero |
| Consultar permisos | stat fichero |
| Consultar una unidad | systemctl cat servicio |
| Mostrar la ruta de una unidad | systemctl show -p FragmentPath servicio |
| Consultar el ejecutable | command -v programa |
| Consultar el proceso | ps aux \| grep "[p]rograma" |
| Consultar el tamaño | du -sh ruta |
| Crear una copia | cp fichero fichero.bak |
| Comparar ficheros | diff -u original copia |
| Validar Prometheus | promtool check config fichero |
| Consultar registros | journalctl -u servicio |
Tabla de rutas principales¶
| Componente | Configuración | Datos | Unidad |
|---|---|---|---|
| Grafana | /etc/grafana/ |
/var/lib/grafana/ |
grafana-server.service |
| Prometheus | /etc/prometheus/ |
/var/lib/prometheus/ |
prometheus.service |
| Node Exporter | Parámetros de la unidad | No suele almacenar datos propios | node_exporter.service |
Buenas prácticas¶
- Comprueba la ruta real antes de modificar un fichero.
- Crea una copia de seguridad antes de editar configuraciones.
- Valida la configuración antes de reiniciar un servicio.
- No modifiques directamente bases de datos de aplicaciones.
- No borres datos de Prometheus durante una práctica sin autorización.
- Comprueba los permisos y propietarios.
- Utiliza
systemctl catpara conocer cómo se inicia un servicio. - Utiliza
systemctl showpara consultar propiedades concretas. - Documenta las rutas que no coincidan con las esperadas.
- Evita almacenar configuraciones permanentes en
/tmp. - No publiques ficheros que contengan contraseñas o tokens.
- Utiliza rutas absolutas en scripts de administración.
- Comprueba el resultado de cada comando antes de continuar.
Puntos clave¶
/etccontiene configuraciones./var/libcontiene datos variables de las aplicaciones./var/logcontiene registros almacenados en ficheros./usr/bin,/usr/sbiny/usr/local/bincontienen ejecutables.- Las unidades de
systemddefinen cómo se gestionan los servicios. - Grafana utiliza normalmente
/etc/grafana/y/var/lib/grafana/. - Prometheus utiliza normalmente
/etc/prometheus/y/var/lib/prometheus/. - Node Exporter suele definirse mediante una unidad
systemd. systemctl catmuestra la definición de un servicio.systemctl showpermite consultar propiedades de una unidad.findlocaliza ficheros y directorios.greplocaliza texto dentro de ficheros.statmuestra permisos, propietario, grupo y tamaño.- Antes de editar una configuración se debe crear una copia de seguridad.
- Una configuración debe validarse antes de reiniciar el servicio.
Preguntas de comprobación¶
- ¿Qué tipo de información se almacena normalmente en
/etc? - ¿Qué tipo de información se almacena normalmente en
/var/lib? - ¿Cuál es la ruta habitual de la configuración principal de Prometheus?
- ¿Cuál es la ruta habitual de los datos de Prometheus?
- ¿Cuál es la ruta habitual de la configuración principal de Grafana?
- ¿Dónde suelen almacenarse los plugins de Grafana?
- ¿Qué comando permite consultar la definición de una unidad
systemd? - ¿Qué comando permite mostrar la ruta física de una unidad?
- ¿Qué comando permite localizar
prometheus.yml? - ¿Qué comando permite buscar
node_exporterdentro de una configuración? - ¿Qué información muestra
stat? - ¿Por qué se debe crear una copia de seguridad antes de editar una configuración?
- ¿Qué herramienta permite validar la configuración de Prometheus?
- ¿Dónde se pueden consultar los registros de un servicio gestionado por
systemd? - ¿Qué diferencia existe entre una ruta de configuración y una ruta de datos?
- ¿Por qué las rutas pueden variar según el método de instalación?
- ¿Qué información puedes obtener con
systemctl show prometheus -p ExecStart? - ¿Qué procedimiento seguirías para localizar un fichero cuya ruta desconoces?
- ¿Qué riesgos existen al modificar directamente una base de datos de Grafana?
- ¿Qué pasos realizarías antes de reiniciar Prometheus después de editar su configuración?