Créer le Fichier loki-config.yaml de Base
Dans cette étape, vous allez créer un fichier de configuration minimal pour Loki. Ce fichier, loki-config.yaml, indique à Loki comment s'exécuter, où stocker les données et quel schéma utiliser. Pour ce laboratoire, nous allons configurer Loki pour utiliser le système de fichiers local pour le stockage.
Nous utiliserons l'éditeur de texte nano pour créer le fichier. Exécutez la commande suivante pour ouvrir un nouveau fichier nommé loki-config.yaml :
nano loki-config.yaml
Maintenant, copiez et collez le contenu YAML suivant dans l'éditeur 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
Cette configuration maintient tout ce dont Loki a besoin sous /tmp/loki à l'intérieur du conteneur, ce qui évite les problèmes de permissions et rend la configuration facile à comprendre. Elle désactive l'authentification, active un anneau en mémoire (inmemory ring) pour une utilisation sur un seul nœud, et stocke les blocs et les index sur le système de fichiers local.
Voici ce que fait chaque section du fichier :
auth_enabled: false: Désactive l'authentification afin que vous puissiez communiquer avec Loki sans identifiants supplémentaires. Cela simplifie les tests locaux ; vous activeriez l'authentification en production.
server.http_listen_port: 3100: Indique à Loki d'écouter les requêtes HTTP sur le port 3100. Lorsque vous utilisez curl localhost:3100, vous atteignez ce port.
common.path_prefix: Définit le dossier de base où Loki stocke les données temporaires à l'intérieur du conteneur. Chaque autre chemin dans ce fichier est construit à partir de /tmp/loki pour que tout reste au même endroit.
common.storage.filesystem: Indique à Loki deux dossiers pour stocker les morceaux (chunks) de données de logs et les fichiers de règles. Comme nous ne montons rien de spécial dans le conteneur, l'utilisation de /tmp/loki évite les problèmes de permissions.
common.ring.kvstore.store: inmemory: Conserve les informations d'appartenance en mémoire. Pour un laboratoire sur un seul nœud, c'est parfait ; un vrai cluster utiliserait un magasin partagé comme Consul ou etcd.
schema_config: Définit comment Loki doit organiser l'index pour les données de logs. Nous fixons une date de début, choisissons le magasin boltdb-shipper, et gardons l'index sur le système de fichiers. Le prefix et la period contrôlent comment les fichiers sont nommés et à quelle fréquence un nouveau fichier d'index est créé (toutes les 24 heures).
storage_config: Fournit les dossiers exacts pour l'index boltdb-shipper (active_index_directory et cache_location) et pour le stockage des blocs bruts. Tous les chemins résident à nouveau sous /tmp/loki pour garder les choses ordonnées.
ruler.alertmanager_url: Prépare le composant ruler de Loki à envoyer des alertes à un Alertmanager à http://localhost:9093. Rien ne cassera si Alertmanager n'est pas en cours d'exécution ; Loki enregistrera simplement un avertissement lorsqu'il tentera d'envoyer une alerte.
limits_config.allow_structured_metadata: false: Désactive une fonctionnalité avancée afin que Loki s'en tienne aux métadonnées de logs en texte brut plus simples auxquelles les débutants s'attendent.
Appuyez sur Ctrl+X pour quitter, puis Y pour confirmer l'enregistrement, et enfin Enter pour sauvegarder le fichier sous le nom loki-config.yaml.