Comment surveiller les métriques du système avec la pile TICK sur Ubuntu 16.04

introduction

La pile TICK est une collection de produits des développeurs de la base de données chronologique InfluxDB. Il est composé des composants suivants:

  • T elegraf recueille des données de séries chronologiques à partir de diverses sources.

  • I nfluxDB stocke des données de série temporelle.

  • C hronograf visualise et représente graphiquement les données de séries chronologiques.

  • K apacitor alerte et détecte les anomalies dans les données chronologiques.

Vous pouvez utiliser chacun de ces composants séparément, mais si vous les utilisez ensemble, vous disposerez d’un système open source intégré et évolutif pour le traitement des données de séries chronologiques.

Dans ce tutoriel, vous allez configurer et utiliser cette plate-forme en tant que système de contrôle open-source. Vous allez générer un peu d’utilisation du processeur et recevoir une alerte par e-mail lorsque l’utilisation devient trop importante.

Conditions préalables

Avant de commencer, vous aurez besoin des éléments suivants:

  • Un serveur Ubuntu 16.04 a été configuré en suivant les https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04 du guide de configuration initiale du serveur Ubuntu 16.04], y compris un utilisateur root et un pare-feu.

  • Un serveur SMTP pour l’envoi d’alertes, avec les détails de la connexion. Si vous n’en avez pas, vous pouvez installer + sendmail + avec + sudo apt-get install sendmail +.

  • Si vous souhaitez sécuriser l’interface utilisateur de Chronograf comme expliqué à l’étape 7, vous devez disposer d’un compte https://github.com [GitHub] appartenant à une organisation GitHub. Suivez this tutorial pour créer une organisation GitHub.

Étape 1 - Ajout du référentiel de pile TICK

Les composants de la pile TICK ne sont pas disponibles via le gestionnaire de paquets par défaut. Tous les composants de la pile TICK utilisent le même référentiel. Nous allons donc configurer un fichier de configuration du référentiel pour rendre l’installation transparente.

Utilisez les commandes suivantes pour ajouter le référentiel InfluxData:

curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/lsb-release
echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

Avec le nouveau référentiel en place, mettez à jour la liste des packages:

sudo apt-get update

Nous pouvons maintenant installer et configurer InfluxDB.

Étape 2 - Installation d’InfluxDB et configuration de l’authentification

InfluxDB est une base de données open source optimisée pour un stockage rapide, à haute disponibilité et pour la récupération de données de séries chronologiques. InfluxDB est idéal pour la surveillance des opérations, les métriques d’application et les analyses en temps réel.

Exécutez la commande suivante pour installer InfluxDB:

sudo apt-get install influxdb

Une fois l’installation terminée, démarrez le service InfluxDB:

sudo systemctl start influxdb

Ensuite, assurez-vous que le service fonctionne correctement:

systemctl status influxdb

Vous verrez l’état suivant, vérifiant que le service est en cours d’exécution:

[secondary_label Output
●  - InfluxDB is an open-source, distributed, time series database
  Loaded: loaded (/lib/systemd/system/influxdb.service; enabled; vendor preset: enabled)
  Active:
    Docs: https://docs.influxdata.com/influxdb/
Main PID: 1619 (influxd)
  CGroup: /system.slice/influxdb.service
          └─1619 /usr/bin/influxd -config /etc/influxdb/influxdb.conf

InfluxDB est en cours d’exécution, mais vous souhaiterez activer l’authentification utilisateur pour restreindre l’accès à la base de données. Permet de créer au moins un utilisateur administrateur.

Démarrez la console InfluxDB:

influx

Exécutez la commande suivante pour créer un nouvel utilisateur admin. Nous allons créer un utilisateur + sammy + avec le mot de passe + sammy_admin +, mais vous pouvez utiliser ce que vous voulez.

CREATE USER "" WITH PASSWORD '' WITH ALL PRIVILEGES

Vérifiez que l’utilisateur est créé:

show users

Vous verrez la sortie suivante, en vérifiant que votre utilisateur a été créé:

Output    user  admin
   ----  -----
    true

Maintenant que l’utilisateur existe, quittez la console InfluxDB:

exit

Ouvrez maintenant le fichier + / etc / influxdb / influxdb.conf + dans votre éditeur. Ceci est le fichier de configuration pour InfluxDB.

sudo nano /etc/influxdb/influxdb.conf

Localisez la section + [http] +, décommentez l’option + auth-enabled + et définissez sa valeur sur + true +:

/etc/influxdb/influxdb.conf

...
   [http]
     # Determines whether HTTP endpoint is enabled.
     # enabled = true

     # The bind address used by the HTTP service.
     # bind-address = ":8086"

     # Determines whether HTTP authentication is enabled.

...

Enregistrez ensuite le fichier, quittez l’éditeur et redémarrez le service InfluxDB:

sudo systemctl restart influxdb

InfluxDB étant maintenant configuré, installons Telegraf, un agent de collecte de métriques.

Étape 3 - Installation et configuration de Telegraf

Telegraf est un agent open source qui collecte des métriques et des données sur le système sur lequel il est exécuté ou à partir d’autres services. Telegraf écrit ensuite les données dans InfluxDB ou d’autres sorties.

Exécutez la commande suivante pour installer Telegraf:

sudo apt-get install telegraf

Le service Telegraf démarre automatiquement après l’installation.

Telegraf utilise des plugins pour entrer et sortir des données. Le plugin de sortie par défaut est pour InfluxDB. Depuis que nous avons activé l’authentification d’utilisateur pour IndexedDB, nous devons modifier le fichier de configuration de Telegraf afin de spécifier le nom d’utilisateur et le mot de passe que nous avons configurés. Ouvrez le fichier de configuration Telegraf dans votre éditeur:

sudo nano /etc/telegraf/telegraf.conf

Localisez la section + [outputs.influxdb] + et indiquez le nom d’utilisateur et le mot de passe:

/etc/telegraf/telegraf.conf

   [[outputs.influxdb]]
     ## The full HTTP or UDP endpoint URL for your InfluxDB instance.
     ## Multiple urls can be specified as part of the same cluster,
     ## this means that only ONE of the urls will be written to each interval.
     # urls = ["udp://localhost:8089"] # UDP endpoint example
     urls = ["http://localhost:8086"] # required
     ## The target database for metrics (telegraf will create it if not exists).
     database = "telegraf" # required

     ...

     ## Write timeout (for the InfluxDB client), formatted as a string.
     ## If not provided, will default to 5s. 0s means no timeout (not recommended).
     timeout = "5s"


     ## Set the user agent for HTTP POSTs (can be useful for log differentiation)
     # user_agent = "telegraf"
     ## Set UDP payload size, defaults to InfluxDB UDP Client default (512 bytes)
     # udp_payload = 512

Enregistrez le fichier, quittez l’éditeur et redémarrez Telegraf:

sudo systemctl restart telegraf

Ensuite, vérifiez si le service fonctionne correctement:

systemctl status telegraf

Vous verrez l’état suivant, indiquant que Telegraf est en cours d’exécution.

Output●  - The plugin-driven server agent for reporting metrics into InfluxDB
  Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
  Active:
    Docs: https://github.com/influxdata/telegraf
Main PID: 1752 (telegraf)
  CGroup: /system.slice/telegraf.service
          └─1752 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d

Telegraf est en train de collecter des données et de les écrire dans InfluxDB. Ouvrons la console InfluxDB et voyons quelles mesures Telegraf stocke dans la base de données. Connectez-vous avec le nom d’utilisateur et le mot de passe que vous avez précédemment configurés:

influx -username '' -password ''

Une fois connecté, exécutez cette commande pour voir les bases de données disponibles:

show databases

La base de données + telegraf + apparaîtra dans le résultat:

Output    name: databases
   name
   ----
   _internal

Voyons ce que Telegraf stocke dans cette base de données. Exécutez la commande suivante pour passer à la base de données Telegraf:

use telegraf

Affichez les différentes mesures collectées par Telegraf en exécutant cette commande:

show measurements

Vous verrez le résultat suivant:

Output    name: measurements
   name
   ----
   cpu
   disk
   diskio
   kernel
   mem
   processes
   swap
   system

Comme vous pouvez le constater, Telegraf a collecté et stocké de nombreuses informations dans cette base de données.

Il existe plus de 60 plugins d’entrée pour Telegraf. Il peut rassembler des mesures à partir de nombreux services et bases de données populaires, notamment:

  • Apache

  • Cassandra

  • Docker

  • Elasticsearch

  • Graylog

  • IPtables

  • MySQL

  • PostgreSQL

  • Redis

  • SNMP

  • et plein d’autres

Vous pouvez afficher les instructions d’utilisation pour chaque plug-in d’entrée en exécutant + telegraf -usage + dans une fenêtre de terminal.

Quittez la console InfluxDB:

exit

Maintenant que nous savons que Telegraf enregistre les mesures, configurons Kapacitor pour traiter les données.

Étape 4 - Installation de Kapacitor

Kapacitor est un moteur de traitement de données. Il vous permet de connecter votre propre logique personnalisée pour traiter les alertes avec des seuils dynamiques, faire correspondre les métriques aux modèles ou identifier les anomalies statistiques. Nous utiliserons Kapacitor pour lire les données d’InfluxDB, générer des alertes et les envoyer à une adresse électronique spécifiée.

Exécutez la commande suivante pour installer Kapacitor:

sudo apt-get install kapacitor

Ouvrez le fichier de configuration Kapacitor dans votre éditeur:

sudo nano /etc/kapacitor/kapacitor.conf

Localisez la section + + et indiquez le nom d’utilisateur et le mot de passe pour la connexion à la base de données InfluxDB:

/etc/kapacitor/kapacitor.conf

# Multiple InfluxDB configurations can be defined.
# Exactly one must be marked as the default.
# Each one will be given a name and can be referenced in batch queries and InfluxDBOut nodes.
[[influxdb]]
 # Connect to an InfluxDB cluster
 # Kapacitor can subscribe, query and write to this cluster.
 # Using InfluxDB is not required and can be disabled.
 enabled = true
 default = true
 name = "localhost"
 urls = ["http://localhost:8086"]


...

Enregistrez le fichier, quittez l’éditeur et lancez Kapacitor:

sudo systemctl start kapacitor

Maintenant vérifions que Kapacitor est en cours d’exécution. Vérifiez la liste des tâches de Kapacitor à l’aide de la commande suivante:

kapacitor list tasks

Si Kapacitor est opérationnel, vous verrez une liste vide de tâches, comme celle-ci:

Output    ID                            Type      Status    Executing Databases and Retention Policies

Maintenant que Kapacitor est installé et configuré, installons le composant d’interface utilisateur de la pile TICK afin d’obtenir des résultats et de configurer certaines alertes.

Étape 5 - Installation et configuration de Chronograf

Chronograf est une application de création de graphiques et de visualisation qui fournit des outils permettant de visualiser les données de surveillance et de créer des règles d’alerte et d’automatisation. Il inclut la prise en charge des modèles et dispose d’une bibliothèque de tableaux de bord intelligents préconfigurés pour des ensembles de données communs. Nous allons le configurer pour se connecter aux autres composants que nous avons installés.

Téléchargez et installez le dernier package:

wget https://dl.influxdata.com/chronograf/releases/chronograf__amd64.deb
sudo dpkg -i chronograf__amd64.deb

Puis démarrez le service Chronograf:

sudo systemctl start chronograf

Vous pouvez maintenant accéder à l’interface Chronograf en visitant + http: //: 8888 + dans votre navigateur Web.

Vous verrez une page de bienvenue comme celle de la figure suivante:

image: https: //assets.digitalocean.com/articles/tickstack_ubuntu1604/BM7l6eF.png [Écran d’accueil de Chronograf avec des champs pour se connecter à une source de données]

Entrez le nom d’utilisateur et le mot de passe de la base de données InfluxDB, puis cliquez sur * Connect New Source * pour continuer.

Une fois connecté, vous verrez une liste d’hôtes. Cliquez sur le nom d’hôte de votre serveur pour ouvrir un tableau de bord avec une série de graphiques au niveau du système relatifs à votre hôte, comme indiqué dans l’image suivante:

image: https: //assets.digitalocean.com/articles/tickstack_ubuntu1604/OXk2ohb.png [Le tableau de bord de votre serveur]

Connectons maintenant Chronograf à Kapacitor pour configurer une alerte. Survolez l’icône représentant une roue dentée dans le menu de navigation de gauche et cliquez sur * Kapacitor * pour ouvrir la page de configuration.

image: https: //assets.digitalocean.com/articles/tickstack_ubuntu1604/B1pTobl.png [Configuration de Kapacitor]

Utilisez les détails de connexion par défaut; nous n’avons pas configuré de nom d’utilisateur ni de mot de passe pour Kapacitor. Cliquez sur * Connect Kapacitor *. Une fois que Kapacitor est connecté avec succès, la section * Configurer les points de terminaison des alertes * apparaît sous le formulaire.

Kapacitor prend en charge plusieurs points de terminaison d’alerte:

  • HipChat

  • OpsGenie

  • PagerDuty

  • Sensu

  • Mou

  • SMTP

  • Talk

  • Télégramme

  • VictorOps

La méthode de communication la plus simple est * SMTP *, sélectionné par défaut. Remplissez le champ * De l’email * avec l’adresse à partir de laquelle les alertes seront envoyées. Renseignez ensuite les détails de votre serveur SMTP ou laissez-les aux valeurs par défaut si vous avez installé + sendmail +. Puis cliquez sur * Enregistrer *.

Une fois la configuration en place, créons des alertes.

Étape 6 - Configuration des alertes

Mettons en place une alerte simple qui recherche une utilisation élevée du processeur.

Survolez l’icône du point d’exclamation dans le menu de navigation de gauche et cliquez sur * Règles Kapacitor *. Puis cliquez sur * Créer une nouvelle règle *.

Dans la première section, sélectionnez la série chronologique en cliquant sur * telegraf.autogen *. Sélectionnez ensuite * système * dans la liste qui apparaît. Puis sélectionnez * load1 *. Vous verrez immédiatement un graphique correspondant dans la section ci-dessous.

Au-dessus du graphique, localisez le champ indiquant * Envoyer l’alerte où load1 est supérieur à * et entrez + 0.8 + pour la valeur.

Ensuite, collez le texte suivant dans le champ * Message d’alerte * pour configurer le texte du message d’alerte:

{{ .ID }} is {{ .Level }} value: {{ index .Fields "value" }}

Vous pouvez survoler les entrées de la section * Modèles * avec la souris pour obtenir une description de chaque champ.

Choisissez ensuite l’option * Smtp * dans la liste déroulante * Envoyer cette alerte à * et entrez votre adresse électronique dans le champ associé.

Par défaut, vous recevrez des messages au format JSON, comme suit:

Exemple de message

{
   "Name":"system",
   "TaskName":"chronograf-v1-50c67090-d74d-42ba-a47e-45ba7268619f",
   "Group":"nil",
   "Tags":{
       "host":"centos-tick"
   },
   "ID":"TEST:nil",
   "Fields":{
       "value":1.25
   },
   "Level":"CRITICAL",
   "Time":"2017-03-08T12:09:30Z",
   "Message":"TEST:nil is CRITICAL value: 1.25"
}

Vous pouvez configurer davantage de messages lisibles par l’homme pour les alertes par courrier. Pour ce faire, entrez votre message dans la zone de texte avec l’espace réservé * Mettez le corps du message ici *.

Vous pouvez renommer cette règle en cliquant sur son nom dans le coin supérieur gauche de la page et en entrant un nouveau nom.

Enfin, cliquez sur * Enregistrer la règle * en haut à droite pour terminer la configuration de cette règle.

Pour tester cette alerte nouvellement créée, créez une pointe de processeur en utilisant la commande + dd + pour lire les données de + / dev / zero + et les envoyer à + ​​/ dev / null +:

dd if=/dev/zero of=/dev/null

Laissez la commande s’exécuter pendant plusieurs minutes, ce qui devrait suffire à créer une pointe. Vous pouvez arrêter la commande à tout moment en appuyant sur + CTRL + C +.

Au bout d’un moment, vous recevrez un message électronique. De plus, vous pouvez voir toutes vos alertes en cliquant sur * Historique des alertes * dans le menu de navigation de gauche de l’interface utilisateur de Chronograf.

Des alertes sont en cours d’exécution, mais tout le monde peut se connecter à Chronograf. Limitons l’accès.

Étape 7 - Sécuriser Chronograf avec OAuth

Par défaut, toute personne connaissant l’adresse du serveur exécutant l’application Chronograf peut visualiser toutes les données. C’est acceptable pour l’environnement de test mais pas pour la production. Chronograf prend en charge l’authentification OAuth pour Google, Heroku et GitHub. Nous allons configurer la connexion via un compte https://github.com [GitHub], il vous en faudra donc un pour continuer.

Tout d’abord, enregistrez une nouvelle application avec GitHub. Connectez-vous à votre compte GitHub et accédez à https://github.com/settings/applications/new.

Puis remplissez le formulaire avec les détails suivants:

  1. Entrez * Nom de l’application * avec * Chronograf * ou un nom descriptif approprié.

  2. Pour * l’URL de la page d’accueil *, utilisez + http: //: 8888 +.

  3. Remplissez l’URL de rappel * d’autorisation * avec + http: //: 8888 / oauth / github / callback +.

  4. Cliquez sur * Enregistrer l’application * pour enregistrer les paramètres.

  5. Copiez les valeurs * Client ID * et * Client Secret * fournies à l’écran suivant.

Ensuite, éditez le script systemd de Chronograf pour activer l’authentification. Ouvrez le fichier + / lib / systemd / system / chronograf.service +:

sudo nano /lib/systemd/system/chronograf.service

Ensuite, localisez la section + [Service] + et éditez la ligne commençant par + ExecStart = +:

/lib/systemd/system/chronograf.service

[Service]
User=chronograf
Group=chronograf
/usr/bin/chronograf --host 0.0.0.0 --port 8888 -b /var/lib/chronograf/chronograf-v1.db -c /usr/share/chronograf/canned -t '' -i '' -s '' -o ''
KillMode=control-group
Restart=on-failure

Le + secret_token + est requis par tous les fournisseurs OAuth. Définissez-le sur une chaîne aléatoire. Utilisez votre identifiant client Github, votre secret client Github et votre organisation Github pour les autres valeurs.

Enregistrez le fichier, quittez l’éditeur et redémarrez le service Chronograf:

sudo systemctl daemon-reload
sudo systemctl restart chronograf

Ouvrez + http: //: 8888 + pour accéder à l’interface Chronograf. Cette fois-ci, un bouton * Connexion avec Github * vous sera présenté. Cliquez sur le bouton pour vous connecter et il vous sera demandé d’autoriser l’application à accéder à votre compte Github. Une fois l’accès autorisé, vous serez connecté.

Conclusion

Dans ce didacticiel, vous avez vu comment la pile TICK peut être un outil puissant pour stocker, analyser et visualiser des données de séries chronologiques. Il a de nombreuses fonctionnalités et cas d’utilisation. Par exemple, vous pouvez utiliser Kapacitor pour effectuer anomaly detection ou https://docs.influxdata.com/kapacitor/v1.2/. examples / live_leaderboard / [construire un classement en direct des scores du jeu]. Vous pouvez en savoir plus sur la pile TICK en lisant la documentation officielle.

Related