Crear el Archivo loki-config.yaml Básico
En este paso, creará un archivo de configuración mínimo para Loki. Este archivo, loki-config.yaml, le indica a Loki cómo ejecutarse, dónde almacenar los datos y qué esquema utilizar. Para este laboratorio, configuraremos Loki para que utilice el sistema de archivos local para el almacenamiento.
Usaremos el editor de texto nano para crear el archivo. Ejecute el siguiente comando para abrir un nuevo archivo llamado loki-config.yaml:
nano loki-config.yaml
Ahora, copie y pegue el siguiente contenido YAML en el editor nano:
auth_enabled: false
server:
http_listen_port: 3100
common:
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/index
cache_location: /tmp/loki/cache
filesystem:
directory: /tmp/loki/chunks
ruler:
alertmanager_url: http://localhost:9093
limits_config:
allow_structured_metadata: false
Esta configuración mantiene todo lo que Loki necesita bajo /tmp/loki dentro del contenedor, lo que evita problemas de permisos y mantiene la configuración fácil de entender. Deshabilita la autenticación, habilita un anillo en memoria (in-memory ring) para uso en un solo nodo, y almacena los bloques y los índices en el sistema de archivos local.
A continuación, se explica lo que hace cada sección del archivo:
auth_enabled: false: Desactiva la autenticación para que pueda comunicarse con Loki sin credenciales adicionales. Esto simplifica las pruebas locales; habilitaría la autenticación en producción.
server.http_listen_port: 3100: Indica a Loki que escuche las solicitudes HTTP en el puerto 3100. Cuando usa curl localhost:3100, está accediendo a este puerto.
common.path_prefix: Establece la carpeta base donde Loki almacena datos temporales dentro del contenedor. Cada otra ruta en este archivo se construye a partir de /tmp/loki para que todo permanezca en un solo lugar.
common.storage.filesystem: Indica a Loki dos carpetas para almacenar fragmentos (chunks) de datos de logs y archivos de reglas. Dado que no montamos nada especial en el contenedor, usar /tmp/loki evita dolores de cabeza con los permisos.
common.ring.kvstore.store: inmemory: Mantiene la información de membresía en memoria. Para un laboratorio de un solo nodo, esto es perfecto; un clúster real usaría un almacén compartido como Consul o etcd.
schema_config: Define cómo Loki debe organizar el índice para los datos de logs. Establecemos una fecha de inicio, elegimos el almacén boltdb-shipper y mantenemos el índice en el sistema de archivos. El prefix y el period controlan cómo se nombran los archivos y con qué frecuencia se crea un nuevo archivo de índice (cada 24 horas).
storage_config: Proporciona las carpetas exactas para el índice boltdb-shipper (active_index_directory y cache_location) y para el almacenamiento de fragmentos brutos. Todas las rutas nuevamente residen bajo /tmp/loki para mantener las cosas ordenadas.
ruler.alertmanager_url: Prepara el componente de reglas (ruler) de Loki para enviar alertas a un Alertmanager en http://localhost:9093. Nada fallará si Alertmanager no se está ejecutando; Loki simplemente registrará una advertencia cuando intente enviar una alerta.
limits_config.allow_structured_metadata: false: Deshabilita una característica avanzada para que Loki se adhiera a los metadatos de logs de texto plano más simples que esperan los principiantes.
Presione Ctrl+X para salir, luego Y para confirmar el guardado, y finalmente Enter para guardar el archivo con el nombre loki-config.yaml.