supervision | yann.me | Yann Jajkiewicz https://yann.me Wed, 02 Dec 2020 09:13:39 +0000 fr-FR hourly 1 https://wordpress.org/?v=6.1.7 https://yann.me/wp-content/uploads/2015/12/cropped-logo-500-32x32.png supervision | yann.me | Yann Jajkiewicz https://yann.me 32 32 48963148 Purger InfluxDB avec la politique de rétention des données https://yann.me/purger-influxdb-avec-la-politique-de-retention-des-donnees/ https://yann.me/purger-influxdb-avec-la-politique-de-retention-des-donnees/#respond Mon, 27 Aug 2018 06:15:05 +0000 https://yann.me/?p=1677 J’utilise InfluxDB comme base de données pour stocker les informations de collectd et telegraf pour faire mon monitoring serveur (j’en avais écris un tutoriel) et j’avais alors à l’époque mis en place une rétention des données de 1 mois, sauf que… aujourd’hui je me rend compte que cette rétention ne semble pas être fonctionnelle ! Alors […]

The post Purger InfluxDB avec la politique de rétention des données first appeared on Yann Jajkiewicz.]]>

J’utilise InfluxDB comme base de données pour stocker les informations de collectd et telegraf pour faire mon monitoring serveur (j’en avais écris un tutoriel) et j’avais alors à l’époque mis en place une rétention des données de 1 mois, sauf que… aujourd’hui je me rend compte que cette rétention ne semble pas être fonctionnelle !

Alors forcément les données de supervision ici ne sont pas lourdes, mais accumulées pendant 2 ans ça commence à peser quelques gigaoctets et c’est pas vraiment optimal, du coup dans cet article je vous explique comment mettre en place correctement une politique de rétention des données dans InfluxDB.

Sur votre terminal commencez par taper la commande « influx » pour ouvrir la CLI de InfluxDB.

Vous pouvez alors voir les politiques de rétention actuellement en place sur une base de donnée avec la commande suivante :

SHOW RETENTION POLICIES ON nom_base;

Si vous ne vous souvenez plus du nom de votre base vous pouvez les lister la commande

SHOW DATABASES

Dans mon cas je me suis alors rendu compte qu’il y avait bien ma règle de 1 mois que j’avais mis en place à l’origine, mais qu’il y avait également encore la règle par défaut avec une rétention illimitée. Du coup faites bien attention ici à soit supprimer la politique par défaut et d’ensuite ajouter votre règle, soit de tout simplement modifier la règle par défaut ! Les commandes pour réaliser cela sont assez explicites :

  • créer une politique de rétention de 1 mois :
CREATE RETENTION POLICY "nom_de_la_retention" ON "nom_base" DURATION 720h REPLICATION 1
  • modifier une politique de rétention en  24h :
ALTER RETENTION POLICY "nom_de_la_retention" ON "nom_base" DURATION 24h REPLICATION 1
  • supprimer une politique de rétention :
DROP RETENTION POLICY "nom_de_la_retention" ON "nom_base"

Je vous invite tout de même à aller visiter la documentation pour vous l’approprier si vous souhaitez rendre certaines politiques par défaut ou si vous souhaitez gérer la réplication ou le sharding.

Attention une fois que vous aurez modifié ces politiques de rétention des données les changements ne sont pas instantanés et vous remarquerez peut-être que le poids de votre base ne change pas. On pourrait alors croire que les anciennes données ne sont pas purgées mais en fait encore une fois la documentation nous aide bien puisqu’elle explique que par défaut InfluxDB vérifie les politiques de rétention toutes les 30 minutes donc pas d’inquiétude il suffit d’être patient !

Si vous souhaitez modifier cette durée il suffit alors de modifier le fichier de configuration /etc/influxdb/influxdb.conf et de redémarrer influx :

[retention]
enabled = true
check-interval = "30m"

Tout ça c’est rien de bien compliqué mais il y a quelques points d’attention à connaître et que je vous partage ici, au cas où ça pourrait servir 🙂

The post Purger InfluxDB avec la politique de rétention des données first appeared on Yann Jajkiewicz. ]]>
https://yann.me/purger-influxdb-avec-la-politique-de-retention-des-donnees/feed/ 0 1677
Monitoring de serveur avec collectd, influxdb et grafana https://yann.me/monitoring-de-serveur-avec-collectd-influxdb-et-grafana/ https://yann.me/monitoring-de-serveur-avec-collectd-influxdb-et-grafana/#comments Thu, 08 Dec 2016 05:30:19 +0000 https://yann.me/?p=1142 Parmis les nombreuses solutions de monitoring serveur je me suis penché il y a quelques mois sur une stack que j’utilise désormais : collectd + influxdb + grafana. Dans la suite de cet article je vous expliquerai l’utilité de chacune de ces briques, comment les installer et configurer, et bien entendu les lier ensemble pour […]

The post Monitoring de serveur avec collectd, influxdb et grafana first appeared on Yann Jajkiewicz.]]>
monitoring-de-serveur-avec-collectd-influxdb-et-grafana

Parmis les nombreuses solutions de monitoring serveur je me suis penché il y a quelques mois sur une stack que j’utilise désormais : collectd + influxdb + grafana. Dans la suite de cet article je vous expliquerai l’utilité de chacune de ces briques, comment les installer et configurer, et bien entendu les lier ensemble pour obtenir un tableau de bord clair et précis de monitoring serveur.

Toutes les commandes ci-dessous ont été réalisées sous Debian 8 mais peuvent être adaptées pour la distribution de votre choix, les configurations des applicatifs entre eux ne devraient pas bouger.

1. Collectd

Collectd est un service Linux qui permet de collecter, transférer et sauvegarder des données de performance concernant un ordinateur et son équipement réseau.

C’est donc lui qui va récupérer toutes les données que l’on souhaite utiliser et visualiser graphiquement.

Son installation est simple :

sudo apt-get install collectd

Ensuite il faut le configurer : modifier le fichier /etc/collectd/collectd.conf pour activer ou désactiver les plugins souhaités . Pour cela il suffit de commenter ou décommenter les lignes « LoadPlugin xxxxx ». Dans mon cas par exemple j’ai activé nginx, cpu, df, disk, memory, mysql, memcached.

Il est également nécessaire d’activer le plugin « network » puisqu’il permettra la communication entre collectd et influxdb. Ainsi dans ce même fichier /etc/collectd/collectd.conf il faut insérer les lignes suivantes pour indiquer que InfluxDB est sur la même machine et écoute sur le port 25826 :

<Plugin network>
  Server "127.0.0.1" "25826"
</Plugin>

De la même manière vous pouvez vous aider de la documentation de Collectd pour configurer les autres plugins dont vous avez besoin.

Il faut alors ensuite redémarrer collectd pour prendre en compte ces modifications :

sudo service collectd restart

2. InfluxDB

InfluxDB est une base de données open source écrit en Go spécifiquement pour gérer des séries de données chronologiques. Ses points forts sont la haute disponibilité et la haute performance. C’est InfluxDB qui va sauvegarder les données de collectd pour ensuite être utilisées par Grafana.

Il est à noter que le fait qu’InfluxDB soit écrit en Go peut être une contrainte sur certains systèmes (compiler Go sur raspberry pi par exemple peut être très long).

Dans un premier temps il faut télécharger le package debian et l’installer :

wget https://s3.amazonaws.com/influxdb/influxdb_0.9.6_amd64.deb
sudo dpkg -i influxdb_0.9.6_amd64.deb

La configuration se retrouve alors dans /etc/influxdb/influxdb.conf, il faut la modifier pour activer l’écoute de collectd :

[collectd]
  enabled = true
  bind-address = ":25826"
  database = "collectd_db"
  typesdb = "/usr/share/collectd/types.db"

Par défaut une interface d’administration est activée sur le port 8083. Vous pouvez l’utiliser pour faire des tests et vérifier le bon fonctionnement de InfluxDB mais par sécurité je préfère la désactiver :

[admin]
  enabled = false
  bind-address = ":8083"
  https-enabled = false
  https-certificate = "/etc/ssl/influxdb.pem"

Il vous faut vérifier également que la configuration [http] est bien active sur le port 8086. Après redémarrage de InfluxDB (service influxdb restart) vous pouvez vous assurer du bon fonctionnement du service avec cette commande par exemple :

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=collectd_db" --data-urlencode "q=SELECT value FROM disk_read"

Si vous recevez bien une réponse au format JSON avec des données alors c’est tout bon 😉

3. Grafana

Grafana est un « joli » tableau de bord permettant de visualiser différentes données via un navigateur web. Il est simple à utiliser, permet l’actualisation en temps réel ainsi que le déplacement dans le temps pour visualiser ses informations par dates (hier, aujourd’hui, les 6 dernières heures, etc).

3.1 Installation

Il est possible d’installer Grafana sous debian soit via package debian soit via dépôt APT (voir documentation). Je recommande fortement la version dépôt pour des questions de facilité et de maintenabilité :

  1. Ajouter la ligne suivante dans le fichier /etc/apt/sources.list :
deb https://packagecloud.io/grafana/stable/debian/ wheezy main

(mettre exactement cette ligne même si vous êtes sur une version de debian ou de ubuntu différente)

  1. Ajouter la clé afin de pouvoir installer des package signés :
curl https://packagecloud.io/gpg.key | sudo apt-key add -
  1. Mettre à jour les dépôts et installer Grafana :
sudo apt-get update
sudo apt-get install grafana

La configuration de Grafana se trouve alors dans /etc/grafana/grafana.ini. Le service se lance alors sur le port 3000 avec la commande  :

service grafana-server start

Il reste alors à configurer Grafana : ajouter des sources, créer des requêtes pour mettre en place des graphiques de supervision.

3.2 Configuration

Il est nécessaire dans un premier temps de définir notre base de données collectd_db dans InfluxDB comme une source de données dans Grafana, remplissez alors le formulaire de création de la sorte :

grafana-ajouter-data-source

Ensuite vous pouvez alors créer votre premier tableau de bord (dashboard) qui contiendra des lignes dans lesquelles vous pourrez mettre en place des graphiques (ce qu’on appelle des requêtes) pour visualiser vos données.

4. Exemples de requêtes

Vous trouverez ci-dessous des exemples de requêtes qui vous permettent de vous lancer dans vos premiers graphiques.

Sur chacune de vos requêtes pensez à mettre « Group by time interval » à >10s pour correspondre à la fréquence par défaut de Collectd.

De plus vérifiez bien à ce que votre « Panel data source » soit sélectionné sur votre base de données InfluxDB ajoutée précédemment comme data source de Grafana.

4.1 Disk

grafana-recette-disk

Penser dans l’onglet « Axes » de définir l’unité en « bytes » sur l’axe Y.

4.2 CPU

grafana-recette-CPU

4.3 Memory

grafana-recette-memory

Attention : il faut bien penser dans l’onglet « Axes » de définir l’unité en « bytes » sur l’axe Y.

4.4 Network

grafana-recette-network

N’oubliez pas dans l’onglet « Axes » de modifier l’unité en bytes/sec sur l’axe Y.

Et voilà, à vous de jouer maintenant ! Voici un bout de mon dashboard de supervision par exemple :

grafana-dashboard-example

Source

The post Monitoring de serveur avec collectd, influxdb et grafana first appeared on Yann Jajkiewicz. ]]>
https://yann.me/monitoring-de-serveur-avec-collectd-influxdb-et-grafana/feed/ 1 1142