• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • Apprenons les principes de base de Grafana Loki, un système d'agrégation de journaux multi-locataires.

    Dans un environnement de production, les temps d'arrêt sont inacceptables. Cela peut entraîner une perte massive de revenus et de réputation. Mais si vous disposez d'un système de journalisation et de surveillance approprié, vous saurez comment déboguer de tels scénarios, ce qui entraîne des temps d'arrêt.

    Cela aide à réduire les coûts et à identifier les problèmes qui pourraient survenir à l'avenir.

    De nos jours, chaque taille d'organisation utilise DevOps principes et outils. Les conteneurs et Kubernetes sont les plus populaires. Et la surveillance d'un tel système se fait très efficacement avec Prométhée. Mais là où Prométhée est en retard, c'est la partie de la journalisation. Il ne fournit pas de système de journalisation centralisé, et c'est là que Loki entre en scène.

    Qu'est-ce que Grafana Loki?

    Grafana Loki est un système d'agrégation de journaux multi-locataires lancé par Grafana en 2018 et publié sous la licence Apache 2.0. Ce système a été développé en s'inspirant de Prométhée. Il est principalement utilisé avec les fournisseurs de cloud et avec des outils tels que Prometheus et Grafana.

    Loki est similaire à la pile ELK / EFK, mais il est plus facile à configurer et à utiliser avec de meilleures fonctionnalités. Loki n'indexe pas le contenu du journal, mais indexe plutôt les horodatages et un ensemble d'étiquettes pour un flux de journal. Cela rend l'index plus petit, ce qui simplifie les opérations et réduit finalement le coût.

    Avantages de Loki

    Voici les avantages de l'utilisation de Loki dans votre pile:

    • En indexant uniquement les métadonnées, Loki est très rentable. L'exécution d'index pour le traitement de texte intégral nécessite des instances de RAM plus grandes qui sont très coûteuses. Le stockage des journaux sur des objets stockés comme S3 le rend également très moins cher.
    • Il prend en charge l'hébergement multiclient à l'aide de tenantID, de sorte que les données des locataires sont stockées séparément.
    • Vous pouvez exécuter Loki localement pour des opérations à petite échelle ou facilement le mettre à l'échelle horizontalement pour des opérations à grande échelle.
    • Il utilise le style dynamo pour garantir la cohérence du quorum pour les opérations de lecture et d'écriture.
    • Il est configuré par défaut pour avoir 3 répliques de journaux pour répondre au risque de plantages de processus et de sorties brusques où les journaux sont perdus. Oui, cela entraînerait des dépenses supplémentaires mais pas si élevées, l'intégrité des données est plus critique.
    • Facile à brancher avec des outils populaires tels que Kubernetes, Prometheus et la visualisation dans Grafana.

    Architecture de Loki

    architecture loki - geekflare

    L'architecture Loki comprend trois composants - Promtail, Lokiainsi que Grafana.

    Promtail est un agent qui doit être installé sur chaque nœud exécutant vos applications ou services. La responsabilité principale de Promtail est de découvrir la cible, d'attacher les étiquettes aux flux lo provenant des pods et de pousser ces journaux vers les instances Loki. L'agent promtail suit les journaux du système de fichiers local et les pousse vers le serveur central de Loki. Après cela, vous pouvez interroger vos journaux en utilisant Grafana.

    Cas d'utilisation de Loki

    Vous trouverez ci-dessous les cas d'utilisation populaires pour l'utilisation d'un système de journalisation tel que Loki.

    • L'intelligence d'entreprise: Il s'agit d'un cas d'utilisation persistant, créer des informations exploitables à partir des données de journal peut toujours être très utile. Loki peut vous aider à comprendre les données des journaux et vous rendre capable de créer de nouvelles stratégies pour la croissance de votre entreprise. Par exemple, via les données de journal d'une organisation, il peut vous aider à connaître les taux de conversion d'un canal publicitaire.
    • Surveillance: Prometheus est beaucoup utilisé dans l'industrie pour la surveillance. Mais vous pouvez identifier beaucoup de choses en surveillant vos journaux avec des outils comme Loki. Il peut vous aider à surveiller les taux d'erreur sur votre site Web en parcourant les journaux et en envoyant des alertes une fois le seuil franchi.
    • Débogage et dépannage: Loki peut aider l'équipe DevOps avec des réponses rapides telles que quand l'application s'est-elle plantée, la raison de son crash, son dernier statut avant de planter, etc.
    • La cyber-sécurité: Au cours des dernières années, les cyberattaques contre les portails de commerce électronique ont augmenté de façon exponentielle. Avec l'aide de Loki, vous pouvez vérifier les journaux pour identifier toute menace, problème ou activité malveillante se produisant dans le système de votre organisation. Si le piratage réussit, Loki pourrait toujours aider l'équipe médico-légale à comprendre en détail ce qui s'est passé dans le système. Cela les aidera à retrouver les pirates.
    • Conformité : Pour se conformer aux réglementations de l'industrie, les organisations doivent conserver leurs journaux d'audit pendant 7 ans au maximum. Les autorités locales peuvent auditer les journaux à tout moment. Loki peut stocker vos journaux d'audit en toute sécurité.

    Installer Loki et Promtail

    Découvrons rapidement comment installer et visualiser les logs sur Grafana. Dans cette démonstration, j'utiliserai la configuration générique qui récupérera les logs de /var/log/*log

    Allez à Sorties de Loki page, faites défiler jusqu'à Actifs, vous trouverez ici plusieurs packages Loki et Promtail. Téléchargez le package Loki en fonction du système que vous utilisez. Ne téléchargez pas de packages cli ou canary Loki. Je télécharge loki-linux-amd64.zip et promtail-linux-amd64.zip pour mon système Ubuntu.

    Une fois le téléchargement terminé, extrayez les fichiers de Loki et Promtail et placez-les dans un seul répertoire.

    [email protected]:~$ mkdir loki
    [email protected]:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
    [email protected]:~$ cd loki/
    [email protected]:~/loki$ ls
    loki-linux-amd64 promtail-linux-amd64

    Maintenant, téléchargez le fichier de configuration générique de Loki et Promtail.

    [email protected]:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
    --2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
    Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
    Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: 1832 (1.8K) [text/plain]
    Saving to: ‘loki-local-config.yaml’
    
    loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s
    
    2021-04-30 12:00:51 (16.6 MB/s) - ‘loki-local-config.yaml’ saved [1832/1832]
    [email protected]:~/loki$ wget https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
    --2021-04-30 12:05:07--  https://github.com/grafana/loki/blob/main/clients/cmd/promtail/promtail-local-config.yaml
    Resolving github.com (github.com)... 13.234.210.38
    Connecting to github.com (github.com)|13.234.210.38|:443... connected.
    HTTP request sent, awaiting response... 200 OK
    Length: unspecified [text/html]
    Saving to: ‘promtail-local-config.yaml’
    
    promtail-local-config.yaml                        [ <=>                                                                                            ] 109.16K  --.-KB/s    in 0.002s  
    
    2021-04-30 12:05:08 (66.8 MB/s) - ‘promtail-local-config.yaml’ saved [111779]
    [email protected]:~/loki$ ls
    loki-linux-amd64  loki-local-config.yaml  promtail-linux-amd64  promtail-local-config.yaml

    Pour démarrer Loki, exécutez la commande ci-dessous avec le fichier de configuration Loki. Cela démarrera Loki et affichera les journaux Loki dans le terminal.

    [email protected]:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml
    level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
    level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses"
    level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode"
    level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp
    level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory"
    level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables"
    level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store
    level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv
    level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server
    level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester
    level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"

    Pour démarrer Promtail, exécutez la commande ci-dessous avec le fichier de configuration Promtail. Promtail est nécessaire pour obtenir les journaux dans Loki.

    [email protected]:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml
    level=info ts=2021-04-30T16:35:52.775998059Z caller=server.go:229 http=[::]:9080 grpc=[::]:42557 msg="server listening on addresses"
    level=info ts=2021-04-30T16:35:52.776283661Z caller=main.go:112 msg="Starting Promtail" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
    level=info ts=2021-04-30T16:35:57.776226323Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
    ts=2021-04-30T16:35:57.776902427Z caller=log.go:124 level=info msg="Seeked /var/log/fontconfig.log - &{Offset:11055 Whence:0}"
    level=info ts=2021-04-30T16:35:57.776983546Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/auth.log
    level=info ts=2021-04-30T16:35:57.777009023Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/fontconfig.log
    ts=2021-04-30T16:35:57.777094698Z caller=log.go:124 level=info msg="Seeked /var/log/lastlog - &{Offset:0 Whence:0}"
    ts=2021-04-30T16:35:57.777712594Z caller=log.go:124 level=info msg="Seeked /var/log/apport.log - &{Offset:0 Whence:0}"
    ts=2021-04-30T16:35:57.778200383Z caller=log.go:124 level=info msg="Seeked /var/log/alternatives.log - &{Offset:456 Whence:0}"
    ts=2021-04-30T16:35:57.780467419Z caller=log.go:124 level=info msg="Seeked /var/log/syslog - &{Offset:56911 Whence:0}"
    level=info ts=2021-04-30T16:35:57.780646032Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/kern.log
    level=info ts=2021-04-30T16:35:57.781289004Z caller=filetargetmanager.go:254 msg="Adding target" key="{job=\"varlogs\"}"
    level=info ts=2021-04-30T16:35:57.787770104Z caller=tailer.go:125 component=tailer msg="tail routine: started" path=/var/log/grafana/grafana.log
    ts=2021-04-30T16:35:57.782276009Z caller=log.go:124 level=info msg="Seeked /var/log/grafana/grafana.log - &{Offset:0 Whence:0}"

    Visualiser le journal à l'aide de Loki et Grafana

    Grafana fournit un support intégré pour Loki. Loki est déjà présent dans les sources de données de Grafana.

    Étape 1 : Allez dans Configurations Grafana et cliquez sur «Sources de données».

    Grafana

    Étape 2 : Dans Sources de données, vous pouvez rechercher la source par nom ou par type.

    paramétrage

    Étape 3 : Recherche par le nom Loki. Vous pouvez voir que cette source de données est déjà présente dans Grafana. Cliquez sur Sélectionner.

    ajouter loki

    Étape 4 : Entrez le nom que vous souhaitez donner à la source de données et mettez http://localhost:3100 (changez ceci en IP du serveur si Loki fonctionne sur un serveur différent de Grafana) dans l'URL car nous avons démarré Loki sur le port 3100.

    source de données loki

    Cliquez sur le bouton Tester et enregistrer en bas. Si vous avez correctement configuré Loki, vous obtiendrez le message ci-dessous affiché dans une boîte verte.

    enregistrer et tester

    Étape 5 : Cliquez sur l'onglet Explorer sur le côté gauche. Sélectionnez Loki dans la liste déroulante de la sélection de la source de données. Maintenant, je voudrais visualiser l'activité des logs Grafana. Pour ce faire, vous devez ajouter la requête {filename = "/ var / log / grafana / grafana.log"} dans le navigateur de journaux. Les barres vertes ci-dessous sont des entrées d'événements dans le fichier journal.

    journal de grafana

    Vous pouvez sélectionner la plage de temps pour laquelle vous souhaitez que la visualisation apparaisse sur le tableau de bord, et vous pouvez également définir l'intervalle d'actualisation de la requête, après quoi la requête s'exécutera à nouveau. Pour voir plus de détails sur les journaux, faites défiler vers le bas et cliquez sur l'une des entrées du journal, cela donnera toutes sortes d'informations liées au journal.

    journal détaillé

    C'est beau, n'est-ce pas?

    Donc, il s'agissait de commencer. Je vous conseillerais vivement de consulter la vidéo du webinaire ci-dessous expliquant l'observabilité avec Loki.

    Conclusion

    Un système distribué est composé de nombreuses applications ou microservices, chacun ayant des tonnes de journaux. Vous auriez besoin d'un moyen rentable de recueillir les journaux, stockez-les puis utilisez-les. Loki est une solution parfaite pour de tels cas. En fait, vous pouvez réduire d'environ 75% vos coûts de journalisation et de surveillance en intégrant Loki dans votre environnement de production.

    Loki est également disponible via Nuage de Grafana, il serait bon de l'essayer si vous ne voulez pas passer par le processus d'installation.

    Ensuite, apprenez à connaître Tempo Grafana.