Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Premiers pas avec Grafana Loki

grafana-loki
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

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.

What is 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.

Loki Benefits

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 volumineuses 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 assurer 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.

Loki Architecture

architecture loki - geekflare

L'architecture Loki comprend trois composants - Promtail, Loki et 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.

Loki Use Cases

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 permanent, la création d'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 permettre de créer de nouvelles stratégies pour la croissance de votre entreprise. Par exemple, grâce aux données de journal d'une organisation, 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.
  • Cyber sécurité: Au cours des dernières années, les cyberattaques sur les portails de commerce électronique ont augmenté de façon exponentielle. Avec l'aide de Loki, vous pouvez consulter les journaux pour identifier toute menace ou tout problème, ou toute activité malveillante se produisant dans le système de votre organisation. Si le piratage réussissait, Loki pourrait toujours être utile à l'équipe médico-légale pour comprendre en détail ce qui s'est passé dans le système. Cela les aidera à retracer 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é.

Installing Loki and 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.

geekflare@geekflare:~$ mkdir loki
geekflare@geekflare:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
geekflare@geekflare:~$ cd loki/
geekflare@geekflare:~/loki$ ls
loki-linux-amd64 promtail-linux-amd64

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

geekflare@geekflare:~/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]
geekflare@geekflare:~/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]
geekflare@geekflare:~/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.

geekflare@geekflare:~/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.

geekflare@geekflare:~/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}"

Visualize Log using Loki and 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 <em>{filename="/var/log/grafana/grafana.log"}</em> 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.

Merci à nos commanditaires
Plus de bonnes lectures sur le Cloud Computing
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder