Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:adminsys:monitoring:log:query [2022/09/22 08:51] rdelaagetechnique:adminsys:monitoring:log:query [2023/11/05 07:43] (Version actuelle) rdelaage
Ligne 1: Ligne 1:
-Requêter les logs+Comment query les logs dans Loki ? 
 + 
 +Dans [Grafana](https://grafana.picasoft.net), on va dans la boussole, "Explore", puis tout en haut on sélectionne la *datasource* "**Loki**". On peut sélectionner les labels qui nous intéressent (exemple : `container=blog`, pour voir les logs du conteneur `blog`). 
 +Voici [un lien](https://grafana.picasoft.net/explore?orgId=1&left=%7B%22datasource%22%3A%22YY1sian4z%22%2C%22queries%22%3A%5B%7B%22refId%22%3A%22A%22%2C%22editorMode%22%3A%22builder%22%2C%22expr%22%3A%22%7Bcontainer%3D%5C%22blog%5C%22%7D+%7C%3D+%60%60%22%2C%22queryType%22%3A%22range%22%7D%5D%2C%22range%22%3A%7B%22from%22%3A%22now-1h%22%2C%22to%22%3A%22now%22%7D%7D) pour voir les logs du blog de Picasoft sur la dernière heure. 
 +Grafana/Loki permet de faire des requêtes bien plus complexes, en faisant de l'agrégation, un peu comme des opérateurs SQL (style `max()`). [Docs officielles](https://grafana.com/docs/loki/latest/logql/)
  
 ## Exemples de requêtes ## Exemples de requêtes
Ligne 13: Ligne 17:
 ``` ```
 {container="traefik", host="pica02"} | json status="OriginStatus", dockerService="ServiceName" | status = `401` | dockerService = `mattermost-app@docker` {container="traefik", host="pica02"} | json status="OriginStatus", dockerService="ServiceName" | status = `401` | dockerService = `mattermost-app@docker`
 +```
 +
 +## Utilisation de LogCLI
 +
 +LogCLI est un petit utilitaire fourni par l'équipe de développement de Loki afin d’interagir avec une infrastructure de logs sous Loki. Il permet d'exécuter des requêtes LogQL et automatise le processus de récupération (gestion de la récupération de l'ensemble des pages sur un intervalle de temps, parallélisation du téléchargement, filtre, ...).
 +
 +[Installation de LogCLI](https://grafana.com/docs/loki/latest/query/logcli/#installation)
 +
 +### Connexion au serveur de Loki
 +
 +```bash
 +export LOKI_ADDR=https://loki.picasoft.net
 +export LOKI_USERNAME=<identifiants dans le pass>
 +export LOKI_PASSWORD=<identifiants dans le pass>
 +```
 +
 +On peut tester la connexion avec :
 +```bash
 +logcli labels job
 +```
 +
 +### Récupérer l'ensemble des labels disponibles
 +
 +Lors de la construction des requêtes LogQL, on utilise des labels afin de filtrer les logs disponibles.
 +
 +On peut voir les labels présents avec :
 +```bash
 +logcli labels
 +```
 +
 +On peut voir l'ensemble des valeurs disponibles pour un label donné avec :
 +```bash
 +logcli labels <label>
 +```
 +
 +### Récupérer les logs sur un intervalle donné
 +
 +Avec traefik par exemple :
 +```bash
 +logcli query --limit 0 --from 2023-11-04T00:00:00Z --to 2023-11-05T00:00:00Z '{container='traefik'}'
 +```
 +
 +On peut spécialiser la requête pour télécharger les logs d'une machine spécifiquement :
 +```bash
 +logcli query --limit 0 --from 2023-11-04T00:00:00Z --to 2023-11-05T00:00:00Z '{container="traefik",host="media"}'
 +```
 +
 +On peut demander de télécharger les lignes seules `raw` ou dans un format json `jsonl` avec le flag `-o <raw|jsonl>`, au lieu du format par défaut.
 +
 +On peut gérer les options de parallélisation avec les flags `--parallel-duration=<duration>` et `--parallel-max-workers=n` pour gérer respectivement la taille des intervalles demandés et le nombre de worker téléchargeant les différents intervalles. Par exemple `--parallel-duration=1h --parallel-max-workers=4`.
 +
 +On peut paramétrer la gestion des erreurs lors du téléchargement avec les flags `--retries=n` (nombre d’essais en cas d'erreur avant d'échouer) `--min-backoff=s` (nombre minimum de secondes à attendre avant de ressayer en cas d'erreur) et `--max-backoff=s` (nombre maximum de secondes à attendre avant de ressayer en cas d'erreur). En cas d'erreur l'outil va attendre un nombre aléatoire de secondes et ressayer le téléchargement, exemple `--retries 10 --min-backoff=25 --max-backoff=180`.
 +
 +### Visualisation des logs en direct
 +
 +Au lieu de télécharger les logs sur un intervalle donné, on peut les visionner en direct avec :
 +```bash
 +logcli query --follow '{unit="ssh.service"}'
 ``` ```
  • technique/adminsys/monitoring/log/query.1663829508.txt.gz
  • de rdelaage