Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu

image.png

introduction

Une application, un système, un produit ou un processus comporte plusieurs mesures de performances importantes qui visent à vous donner un aperçu de l'état et de la force de ce système. L'un de ces rôles métriques importants est la manière dont un paramètre ou un point de données particulier fonctionne au fil du temps. Que faire si vous souhaitez surveiller la latence de la base de données en secondes, le nombre de hits sur un point de terminaison d'API dans une période donnée, ou simplement le temps nécessaire pour exécuter un processus particulier? Un seul point de données capturé à ce moment ne fournit pas beaucoup d'informations à lui seul. Cependant, retracer les mêmes points au fil du temps révèle beaucoup plus, comme l'impact des changements sur une métrique particulière.

Par exemple, si vous voulez savoir comment une nouvelle conception d'interface utilisateur ou un nouveau document d'API affecte le nombre d'appels d'API, ou comment un correctif / une mise à niveau de logiciel particulier a affecté la latence de la base de données, utilisez la valeur actuelle plus tôt. Comparez avec la valeur. Cela aide à fournir ces informations avant que les changements ne soient introduits. C'est la valeur des données de séries chronologiques.

Graphite a été développé sur la base d'un outil open source qui surveille les données de séries chronologiques et affiche des informations sur un tableau de bord facile à lire. Hosted Graphite, un produit de MetricFire, exécute Graphite, offrant une fiabilité et une facilité d'utilisation difficiles à réaliser en interne. Vous pouvez maintenant vous inscrire pour un essai gratuit de Metric Fire et commencer à envoyer vos métriques dès aujourd'hui. Consultez ce guide pour installer Graphite sur Ubuntu pour découvrir ce dont vous avez besoin pour le faire vous-même.

Explication du graphite

Il existe plusieurs outils dont le but principal est de collecter, surveiller et fournir des informations utiles à l'aide de données chronologiques. Un exemple d'un tel outil est le graphite.

Graphite est un outil de surveillance et de création de graphiques à l'échelle de l'entreprise qui fonctionne aussi bien sur une infrastructure cloud que sur du matériel bon marché. Les entreprises peuvent utiliser Graphite pour suivre les performances des applications, des sites Web, des serveurs réseau et des services commerciaux. Il s'agissait d'un produit pionnier dans la génération d'outils de surveillance. Avec l'avènement de Graphite, le partage, la récupération, le stockage et la visualisation des données de séries chronologiques n'a jamais été aussi simple.

Fondamentalement, Graphite fait deux choses. Enregistre les données de séries chronologiques de nombres et rend un graphique de ces données à la demande. Graphite lui-même ne collecte pas de données, donc pour les collecter, vous devez les collecter avec un minimum d'effort et de modifications de code. Actuellement, il existe de nombreux outils qui peuvent être utilisés pour envoyer des données au graphite. Une liste de ces outils se trouve sur la page de documentation graphite (https://graphite.readthedocs.io/en/latest/tools.html).

La répartition de l'architecture Graphite montre qu'elle se compose de trois composants logiciels:

image.png

Dans le cas d'utilisation simplifié de Graphite, vous devez écrire une application qui collecte des données de séries chronologiques numériques (ces données sont généralement collectées par un autre outil ci-dessus) qui vous intéresse. L'application envoie ensuite les données au backend de traitement de Graphite, Carbon, qui stocke les données dans la base de données dédiée de Graphite, Whisper. Les données peuvent ensuite être visualisées via l'interface Web de Graphite, Graphite Web App.

Après vous avoir donné un aperçu de Graphite, le reste de cet article se concentrera spécifiquement sur la façon d'installer Graphite sur le système d'exploitation Ubuntu.

Installation de Graphite à l'aide de Docker

Installer Graphite à partir de la source peut être un processus complexe, mais heureusement, il existe Docker à cette époque! Si vous utilisez docker pour installer l'image Graphite, vous pouvez lancer et exécuter Graphite en quelques minutes seulement. Cela permet une installation rapide et très portable. Pour installer Graphite à l'aide de docker, exécutez simplement la commande suivante:

docker run -d\
 --name graphite\
 --restart=always\
 -p 80:80\
 -p 2003-2004:2003-2004\
 -p 2023-2024:2023-2024\
 -p 8125:8125/udp\
 -p 8126:8126\
 graphiteapp/graphite-statsd

Cette commande lance un conteneur nommé graphite, qui contient les composants suivants:

Notez également que si les ports correspondants répertoriés dans la commande ci-dessus sont déjà occupés par l'hôte, vous êtes libre de modifier le mappage des ports de conteneur vers n'importe quel port d'hôte. Il n'est pas non plus obligatoire de mapper tous les ports. Par exemple, l'utilisation de la commande ci-dessus signifie que le composant Grafana ne sera exposé sur aucun port. Cela vous oblige à utiliser l'application Web Graphite comme tableau de bord frontal pour votre application. Si vous souhaitez utiliser Grafana comme tableau de bord frontal, utilisez la commande suivante à la place.

docker run -d\
 --name graphite\
 --restart=always\
 -p 80:80\
 -p 81:81\
 -p 2003-2004:2003-2004\
 -p 2023-2024:2023-2024\
 -p 8125:8125/udp\
 -p 8126:8126\
 hopsoft/graphite-statsd

Cela configure le port Grafana 80 et le port Graphite 81. La commande précédente mappe Graphite au port 80. Une représentation détaillée des ports mappés se trouve dans le tableau suivant.

Host Container Service
80 80 nginx - grafana
81 81 nginx - graphite
2003 2003 carbon receiver - plaintext
2004 2004 carbon receiver - pickle
2023 2023 carbon aggregator - plaintext
2024 2024 carbon aggregator - pickle
8125 8125 statsd
8126 8126 statsd admin

Après vous être connecté, mettez à jour les informations de connexion du compte utilisateur administrateur Django par défaut. La valeur par défaut n'est pas sûre.

http:// localhost / account / login

Vous pouvez accéder à la page de connexion (ou http: // localhost: 81 / account / login si Grafana est activé) et vous connecter avec les deux valeurs en utilisant votre nom d'utilisateur et votre mot de passe par défaut. Une fois connecté, vous pouvez mettre à jour le profil de l'utilisateur root à l'URL suivante

http: // localhost / admin / auth / user / 1 / (ou http: // localhost: 81 / admin / auth / user / 1 / Graphana est valide).

Vous pouvez accéder au tableau de bord Graphite en utilisant le lien suivant:

http: // localhost / Dashboard (ou http: // localhost: 81 / dashboard si Grafana est activé).

Si Docker ne convient pas, vous pouvez installer Graphite directement à l'aide de la commande linux apt-get.

Installation de Graphite sur Ubuntu 16.04

Installation graphite

Tout d'abord, mettez à jour l'index du package local vers la dernière version stable en exécutant la commande suivante:

sudo apt-get update -y
sudo apt-get upgrade -y

Comme mentionné précédemment, Graphite se compose de plusieurs composants: l'application Web Graphite, le backend de stockage Carbon et la bibliothèque de base de données, Whisper. Chacun de ces composants est situé dans le référentiel par défaut d'Ubuntu. Ceux-ci peuvent être installés simplement en exécutant la commande suivante:

sudo apt-get install graphite-web graphite-carbon -y

Dans le cadre de l'installation, j'ai les questions suivantes:

«Le répertoire / var / lib / graphite / whisper contient des fichiers de base de données whisper. Conservez ces fichiers de base de données même si vous avez complètement supprimé Graphite Carbon au cas où vous le réinstalleriez plus tard. Voulez-vous supprimer le fichier de la base de données lors de la purge du carbone Graphite? "

La question elle-même est explicite et la réponse dépend du cas d'utilisation.

Installation et configuration de PostgreSQL

Ensuite, configurez la base de données pour l'application Web Django. Les données Graphite elles-mêmes sont traitées par la bibliothèque de base de données Whisper et Carbon, mais l'application Web Graphite est conçue comme une application Django Python, vous devez donc stocker les données quelque part.

Par défaut, il est configuré pour utiliser les fichiers de base de données SQLite3, mais ceux-ci ne sont pas aussi robustes que les vrais systèmes de gestion de bases de données relationnelles. À la place, utilisez la base de données PostgreSQL pour configurer votre application. En effet, la saisie des données est beaucoup plus rigoureuse et détecte les exceptions susceptibles de poser des problèmes à l'avenir. Exécutez la commande suivante pour installer et configurer PostgreSQL.

sudo apt-get install postgresql libpq-dev python-psycopg2 -y

Cette commande installe et exécute PostgreSQL. Cependant, pour utiliser PostgreSQL, vous devez créer l'utilisateur souhaité avant de créer la base de données Graphite. Ceci est obtenu comme suit:

  1. Tout d'abord, connectez-vous au shell PostgreSQL à l'aide de la commande suivante:
sudo -u postgres psql
  1. Créez un utilisateur Graphite et protégez-le avec un mot de passe comme suit:
postgres=# CREATE USER graphite WITH PASSWORD 'password';
  1. Créez une base de données Graphite et attribuez la propriété à l'utilisateur.
postgres=# CREATE DATABASE graphite WITH OWNER graphite;
  1. Quittez le shell PostgreSQL à l'aide de la commande suivante:
\q

Configuration graphite

Maintenant que la base de données et les utilisateurs sont prêts, vous devez modifier les paramètres Graphite pour utiliser les composants configurés. Ouvrez le fichier de configuration de l'application Web Graphite local_settings.py.

sudo nano /etc/graphite/local_settings.py

Apportez les modifications suivantes au fichier:

  1. La clé secrète doit être définie sur n'importe quelle valeur qui sera utilisée comme sel lors de la création du hachage. Décommentez le paramètre SECRET_KEY et remplacez la valeur par quelque chose d'unique, long et facile à retenir.
SECRET_KEY = 'something_unique' 
  1. Spécifiez le fuseau horaire. Ceci est important à définir car il affecte l'heure affichée sur le graphique. Modifiez la variable TIME_ZONE dans le fichier pour définir le fuseau horaire.
TIME_ZONE = 'America/New_York'
  1. Je voudrais configurer l'authentification pour stocker les données graphiques. Cela se fait en décommentant la ligne suivante.
USE_REMOTE_USER_AUTHENTICATION = True 
  1. Recherchez la section Configuration de la base de données du fichier. Modifiez la valeur pour refléter la configuration Postgres. Cela inclut les touches NAME, ENGINE, USER, PASSWORD et HOST.

Une fois terminé, cela devrait ressembler à ceci:

DATABASES = {
    'default': {
        'NAME': 'graphite',
        'ENGINE': 'django.db.backends.sqlite3',
        'USER': 'graphite',
        'PASSWORD': 'password',
        'HOST': '127.0.0.1',
        'PORT': ''
    }
}

Lorsque vous avez terminé, appuyez sur CTRL + O, Entrée, CTRL + X pour enregistrer et fermer le fichier et quitter l'éditeur de fichiers.

Exécutez ensuite la commande suivante pour synchroniser la base de données et créer la structure correcte.

sudo graphite-manage migrate auth
sudo graphite-manage syncdb 

Il vous sera alors demandé de créer un compte de super utilisateur pour la base de données et d'être invité à saisir certaines valeurs. Suivez simplement les instructions à l'écran et entrez les valeurs appropriées pour chaque question pour terminer la configuration Graphite.

Composez le carbone

Modifiez ensuite le fichier de configuration du service, graphite-carbone, pour configurer le backend de stockage Graphite, Carbon.

sudo nano /etc/default/graphite-carbon
  1. Pour démarrer carbon au démarrage du système, modifiez la valeur de CARBON_CACHE_ENABLED sur true.
CARBON_CACHE_ENABLED=true

Lorsque vous avez terminé, enregistrez le fichier et fermez-le.

  1. Ensuite, ouvrez le fichier de configuration Carbon carbon.conf.
sudo nano /etc/carbon/carbon.conf
  1. Définissez la variable ENABLE_LOGROTATION sur true pour activer la rotation du journal.
ENABLE_LOGROTATION = True
  1. Enregistrez le fichier, modifiez le fichier de schéma de stockage pour configurer le schéma de stockage et indiquez à Carbon combien de temps enregistrer la valeur et comment / quelle métrique conserver.
sudo nano /etc/carbon/storage-schemas.conf

Il existe deux ensembles de règles déjà définis dans ce fichier. Ceux-ci sont divisés en sections. Les mots entre parenthèses sont les en-têtes de section utilisés pour spécifier la nouvelle définition. Sous chaque section se trouve une définition de modèle et une politique de rétention.

Une définition de modèle est une expression régulière utilisée pour faire correspondre les informations envoyées à Carbon. Ces informations incluent les noms de métriques que cette définition de modèle vérifie. Dans le premier exemple, le modèle vérifie si la métrique en question commence par la chaîne "carbone".

La politique de rétention est définie par une série de nombres séparés par des deux-points. Chaque ensemble se compose d'un intervalle métrique (qui spécifie la fréquence à laquelle la métrique est enregistrée), de deux points et de la durée de stockage de ces valeurs. Vous pouvez définir plusieurs ensembles de nombres séparés par des virgules.

Pour démontrer, définissez votre propre schéma qui correspond aux valeurs de test que vous utiliserez plus tard. Ajoutez la section suivante à la fin du fichier.

[test]
pattern = ^test\.
retentions = 10s:10m,1m:1h,10m:1d

Lorsque vous avez terminé, enregistrez le fichier et fermez-le.

Cela correspond à toutes les métriques commençant par la valeur «test». Enregistrez les données collectées 3 fois et modifiez les détails. La première définition (10s: 10m) crée des points de données toutes les 10 secondes et stocke les valeurs pendant seulement 10 minutes.

La deuxième définition d'archive (1m: 1h) crée des points de données par minute. Collectez toutes les données de la dernière minute (6 points si l'archive précédente a créé des points toutes les 10 secondes) et agrégez-les pour créer un seul point. Par défaut, cela se fait en faisant la moyenne des points, mais vous pouvez l'ajuster plus tard. Les données créées à ce niveau de détail sont stockées pendant une heure.

La définition d'archive finale (10m: 1d) créée crée des points de données toutes les 10 minutes et agrège les données comme elle l'a fait dans la deuxième archive. Sauvegardez les données de la journée.

Par conséquent, lorsque vous demandez des informations à Graphite, les données sont renvoyées à partir de l'archive la plus détaillée qui mesure la période que vous demandez. Par exemple, la demande de métriques pour les 5 dernières minutes renverra les informations de la première archive. Si vous avez demandé un graphique pour les 50 dernières minutes, les données seront extraites de la deuxième archive.

  1. Ensuite, vous devez définir comment effectuer l'agrégation. Cela peut être fait en modifiant un fichier appelé storage-aggregation.conf pour définir les spécifications d'agrégation, mais ce didacticiel utilise un exemple de fichier de configuration d'agrégation de stockage. Copiez l'exemple de fichier de configuration dans le répertoire de configuration Carbon.
sudo cp /usr/share/doc/graphite-carbon/examples/storage-aggregation.conf.example /etc/carbon/storage-aggregation.conf
  1. Finally, start the Carbon service with the following command:
sudo systemctl start carbon-cache

Configurer Apache pour Graphite

Apache doit être installé et configuré avant de pouvoir utiliser l'interface Web Graphite. Vous pouvez installer Apache avec la commande suivante:

sudo apt-get install apache2 libapache2-mod-wsgi -y

Une fois l'installation terminée, vous devez désactiver le fichier d'hôte virtuel par défaut. C'est parce qu'il entre en conflit avec le nouveau fichier.

sudo a2dissite 000-default

Copiez ensuite le fichier d'hôte virtuel Graphite Apache dans le répertoire des sites disponibles.

sudo cp /usr/share/graphite-web/apache2-graphite.conf /etc/apache2/sites-available

Ensuite, activez le fichier hôte virtuel en tapant:

sudo a2ensite apache2-graphite

Rechargez le service pour implémenter les modifications.

sudo service apache2 reload

Accéder à l'interface Web Graphite

Enfin, Graphite a été installé et vous pouvez désormais accéder à son interface Web. Ouvrez votre navigateur Web préféré et entrez l'URL.

http://your_server_domain_name_or_IP

Toutes nos félicitations. J'ai installé et configuré Graphite.

Même si vous connaissez les bases de l'utilisation du graphite, la mise à l'échelle du graphite au niveau de la production peut être un défi de taille. Si vous envisagez d'exécuter Graphite au niveau de la production, [MetricFire](https://www.metricfire.com/japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Install%20and%20Configure % 20Graphite% 20on% 20 Ubuntu) [Inscrivez-vous à la démo](https://www.metricfire.com/demo-japan/?utm_source=blog&utm_medium=Qiita&utm_campaign=Japan&utm_content=How%20to%20Install%20and%20Configure% 20on% 20Ubuntu) et obtenez de l'aide.

Recommended Posts

Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Comment installer WildFly sur Ubuntu 18.04
Comment installer et utiliser Composer sur une instance ECS sur Ubuntu 16.04
Comment installer le langage utilisé dans Ubuntu et comment créer l'environnement
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Comment installer les pilotes réseau sur Ubuntu autonome
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
Comment installer le pilote NVIDIA sur la destination SSH Ubuntu
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Installez docker et docker-compose sur ubuntu dans les plus brefs délais
Comment installer JDK 8 sur Windows sans utiliser le programme d'installation
Comment installer java9 sur elementaryOS Freya ou Ubuntu 14.04 LTS
Comment exécuter React et Rails sur le même serveur
Installez JDK et JRE sur Ubuntu 16.10
Comment utiliser les bio-formats sur Ubuntu 20.04
Installer et configurer jenv sur macOS
Comment installer MariaDB 10.4 sur CentOS 8
Comment installer Adopt OpenJDK sur Debian, Ubuntu avec apt (-get)
Installez OpenJDK (Java) sur le dernier Ubuntu
Comment installer Eclipse (Photon) sur votre Mac
Je souhaite installer PHP 7.2 sur Ubuntu 20.04.
Comment installer la beta php8.0 sur CentOS8
Comment trouver les dizaines et les unités
Comment installer kafkacat sur Amazon Linux2
[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
Construire et installer la version de développement Wireshark (3.3.1) sur Ubuntu
Installez plusieurs Javas et basculez entre eux sur Ubuntu
Installez la dernière version de Jenkins sur Ubuntu 16
Comment installer Oracle JDK 1.8 dans Ubuntu 18.04 LTS?
Comment trouver le score total et le score moyen
Comment créer un environnement Pytorch sur Ubuntu
[Java] Mémo sur la façon d'écrire la source
Comment exécuter NullpoMino 7.5.0 sur la version 64 bits d'Ubuntu 20.04.1
Comment trouver la distance et l'angle entre deux points sur un plan
Comment partager côté hôte (Windows) et côté invité (CentOS 7) avec VirtualBox
Comment installer Ruby sur une instance EC2 d'AWS
Installez pyqt5 sur ubuntu
[Ruby on Rails] Comment changer le nom de la colonne
SSH dans Ubuntu sur VirtualBox de votre Mac et faites-le jusqu'à ce que vous installiez Docker
Installez Ruby sur Ubuntu 20.04
Comment installer Docker
Comment installer docker-machine
Installez rbenv avec apt sur ubuntu et mettez ruby
Comment installer MySQL
Comment installer Gradle et Kotlin avec SDKMAN (Mac)
Installez ag (le chercheur d'argent) [sur CentOS / Ubuntu / Mac]