Loki
Loki est ingester programme permettant de pouvoir indexer des logs et en collecter au format JSON. Loki ne conserve que les données d’indexation et les extraits de logs ce qui réduit la consommation en ressource du programme. Loki fait partie de l’éco système Grafana donc il s’intègre très bien à cet environnement. Ce qui donne une solution complete pour grafana pour fair de la surveillance de log centralisé.
Schema de fonctionnement Loki

Installation Loki
Il faut créer une configmap pour y écrire la configuration de loki et qu’elle puisse être chargée ensuite
configmap-loki.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: loki-server-conf
namespace: monitoring
data:
local-config.yaml: |
auth_enabled: false
server:
grpc_listen_port: 9096
http_listen_port: 3100
common:
instance_addr: 127.0.0.1
path_prefix: /tmp/loki
storage:
filesystem:
chunks_directory: /tmp/loki/chunks
rules_directory: /tmp/loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
query_range:
results_cache:
cache:
embedded_cache:
enabled: true
max_size_mb: 100
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24hDans la configuration de loki nous précison les port ou il faut écouter donc dans notre cas le 3100 pour faire des requête en http. Ensuite nous avons définis la taille du cache. Et les autres parametres sont les parameters par défaut fournis par Grafana.
Il faut faire un deployment afin de déployer le service
deployment-loki.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: loki
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: loki-server
template:
metadata:
labels:
app: loki-server
spec:
containers:
- name: loki
image: grafana/loki:2.9.2
ports:
- containerPort: 3100
name: http-loki
protocol: TCP
volumeMounts:
- name: config-volume
mountPath: /etc/loki
volumes:
- name: config-volume
configMap:
name: loki-server-conf
defaultMode: 420Dans notre deployment pour loki nous avons défini l’image de loki le port d’écoute du conteneur. puis nous avons aussi défini le répertoire ou monter la configmap pour loki.
Maintenant, il faut créer un service réseau pour loki.
service.yaml
apiVersion: v1
kind: Service
metadata:
name: loki
namespace: monitoring
spec:
ports:
- port: 3100
protocol: TCP
targetPort: http-loki
selector:
app: loki-server
sessionAffinity: None
type: LoadBalancerNous précisons au service de router sur le port 3100 du conteneur loki
Configuration de loki
Il faut ajouter la datasource loki dans grafana pour pouvoir faire des requêtes sur les logs.

Dans l’url il faut mettre le nom du service de loki et le port d’écoute du service.
Une fois la datasource ajoutée, il est possible de visualisé les logs avec le menu Explore de grafana.
