Outils pour utilisateurs

Outils du site


sysadmin

Ceci est une ancienne révision du document !


Administration système

Ajouter un nouvel utilisateur sur un serveur

Depuis l'interface Ajenti

Dans l'onglet Utilisateurs, cliquer sur le bouton “+ utilisateur” en haut. Renseigner les champs Nom d'utilisateur, Nouveau mot de passe (puis cliquer sur “définir”), Répertoire personnel cliquer le bouton “créer”, Shell avec “/bin/bash/” (sans les guillemets).

Connecté au serveur en ssh avec un utilisateur ayant les droits sudo

  • Modifier le fichier /etc/sudoers pour attribuer les droits sudo au nouvel utilisateur.
  • Modifier/Créer le fichier .ssh/authorized_keys depuis le répertoire personnel du nouvel utilisateur et ajouter une clé ssh publique pour pouvoir se connecter en tant que ce nouvel utilisateur.

Plusieurs clés peuvent être ajoutées dans le fichier authorized_keys, il suffit de les ajouter à la fin du fichier.

Surveillance système

La surveillance système est un processus qui consiste en la vérification périodique du bon fonctionnement de tous les composants des serveurs hébergeant les différents applicatifs logiciels.

Ce processus a été mis en place à la suite d'une erreur liée à l'espace disque insuffisant qui a entraîné une interruption de plusieurs minutes du serveur de développement. Pour prévoir les futures erreurs, nous avions besoin d'une solution capable de surveiller le serveur (charge du système, espace disque restant…) et d'alarmes qui déclencheraient des notifications en cas dépassement de seuils pré-configurés.

La surveillance système est composée de trois outils complémentaires :

  • L'outil qui va chercher les données du serveur
  • L'outil qui va formater les données et le rendre disponible
  • L'outil qui va récupérer les données formatées et les afficher dans des tableaux de bord

Formater et mettre à disposition les données

Le premier outil se nomme Promethéus, c'est une time series database.

Une Time Series DataBase est une base de données optimisée pour le stockage de données horodatées

C'est l'outil qui va stocker les informations que l'on souhaite récolter à propos du serveur et les mettre à disposition pour d'autres outils.

Il permet d'accéder aux données via des requêtes comme sur une base de données classique.

Récolter les données

Prometheus fonctionne avec des exporter. Ce sont des outils qui récolter les données d'un serveur ou d'un service et les enregistrer dans Prometheus. Il en existe de nombreux pour tous types d'applications (MySQL, NodeJS, Nginx, Linux…)

Liste d'exporters

Alerter

Prometheus possède un système d'alarme et de notification lorsqu'un comportement identifié se déroule pendant une période trop longue. Ce système se nomme AlertManager. Il fonctionne grâce à des règles qui définissent le comportement à observer (requête Prometheus), la période avant que l'alarme se déclenche, le canal de notification (E-mail, Slack…) et enfin les destinataires.

Listes d'alertes préconfigurées en fonction d'exporters

Afficher les données

Enfin, il est intéressant d'afficher ces données sous la forme de dashboards pour avoir un rapide aperçu de la santé du système. Pour cela, on utilise Grafana.

Ressources

Installation

L'outil de récupération des données du serveur se nomme node_exporter. L'outil de formatage se nomme Prometheus. L'outil de création de tableau de bord se nomme Grafana.

L'installation de ces trois outils a été réalisée en suivant ce tutoriel

Installation Grafana avancée

A la fin de ces tutoriels, il est possible d'accéder à Prometheus sur 9090 et Grafana est accessible sur 3000. Aucun des deux outils n'est chiffré par SSL pour le moment.

Tableau de bord

Pour répondre au plus vite au besoin de voir les données du système, il est possible d'importer des tableaux de bord grafana déjà construit, ici.

Importer un tableau de bord communautaire

  1. Copier l'id d'un tableau de bord Lien vers tableau de bord
  2. Coller l'id dans Grafana Dashboards > Manage > Import
  3. Configurer la data source comme indiqué

Concepts de Grafana

Gestion des utilisateurs

Lors de l'installation de Grafana, par sécurité, l'inscription d'utilisateurs externes a été désactivée. Seuls les administrateurs peuvent ajouter de nouveaux utilisateurs. Et seuls des utilisateurs inscrit peuvent accéder à Grafana.

L'administration au sein de Grafana est construite de la manière suivante :

  • Tous les dashboards et users appartiennent à une organization. Qui représente une entreprise. Dans la plupart des cas il n'y en a qu'une, mais il peut y en avoir plusieurs.
  • Au sein d'une organization, un user a un rôle particulier : Admin, Editor ou Viewer
  • (Optionnel) Une team est un groupe de users qui permet d'affiner les permissions d'édition ou de visualisation des dashboards
  • Les Grafana Admin ont toutes les permissions

Un user a des permissions qui sont définies par :

  • Le rôle qu'il a au sein de son organization
  • Les permissions de la team auquel il appartient
  • Les permissions qui lui sont attribuées directement
  • Toutes les permissions si il est Grafana Admin

Gestion des alarmes

Comme expliqué plus haut, les alarmes sont gérées par AlertManager.

AlertManager récupère les alertes remontées par Prometheus et les dispatche aux personnes concernées. Il est aussi capable de mettre en silence certaines alertes et d'en regrouper d'autres pour ne pas inonder les boites de réception. Par exemple : l’hébergeur subit une coupure d’électricité, toutes les instances ne fonctionnent plus. Si une alerte doit être déclenchée à chaque fois qu'une instance n'est plus accessible, alors Alermanager n'enverra qu'un e-mail indiquant toutes les instances inaccessibles.

Installation et configuration d'AlertManager

Le fichier de configuration global d'AlertManager se trouve /etc/alertmanager/alertmabager.yml, il contient :

  • les informations de connexions au serveur smtp
  • la liste des destinataires des alertes
  • la configuration du silence et du regroupement des alertes

La configuration des alertes en elle-mêmes est rédigée dans le dossier /etc/prometheus/alerting_rules/*_rule.yml. La convention veut que les fichiers des règles portent le nom du groupe auxquels ils appartiennent puis _rule.yml.

Dans ces fichiers sera décrit :

  • le groupe
  • le nom de l'alerte
  • la requête prometheus qui va identifier le comportement déclenchant l'alerte
  • le temps avant que l'alerte soit déclenchée
  • un label pour identifier la sévérité de l'alerte (page, warning, high, critical…)
  • un sommaire et une description : c'est ce qu'on retrouvera dans la notification

Plusieurs alertes peuvent-être configurées dans un même fichier, à condition qu'elles fassent partie du même groupe.

2 alertes ont déjà été configurées :

  • une alerte si le serveur dev n'est plus accessible pendant plus d'une minute.
  • une alerte si le disque du serveur dev possède moins de 5% de capacité libre pendant plus de une minute.

Attention ! A chaque de fois qu'un fichier d'alerte est créé, il faut vérifier :

  • que les droits du fichier sont prometheus:prometheus
  • que le fichier est correctement construit avec la commande promtool check rules path/to/the/rule
  • relancer prometheus avec sudo systemctl restart prometheus

Monitorer CouchDB

Exporter Prometheus pour CouchDB : CouchDB exporter

Cet exporter fonctionne exclusivement avec Docker il faut donc l'installer sur le serveur.

Installation de Docker sur un serveur Ubuntu 18.04

Il faut ajouter l'utilisateur au groupe docker pour corriger les erreurs de permissions.

sudo usermod -aG docker ${USER}

Puis se reconnecter.

L'exporter se lance avec la commande suivante :

docker run -d --restart always -p 9984:9984 gesellix/couchdb-prometheus-exporter --couchdb.uri=http://dev.qse.betterb.fr:5984 --databases=_all_dbs --couchdb.username=LOGIN --couchdb.password=PASSWORD

Ajouter l'exporter à Prometheus, dans le fichier `/etc/prometheus/prometheus.yml`

- job_name: 'couchdb_dev'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9984']

Ajouter une rêgle d'alerte dans la config d'AlertManager :

dev@ubuntu1804-betterb-dev:~$ cat /etc/prometheus/alerting_rules/couchdb_rule.yml 
groups:
  - name: couchdb.rules
    rules:
    - alert: CouchDbDownAlert
      expr: absent(couchdb_httpd_up) or couchdb_https_up < 1
      for: 1m
      annotations:
        summary: CouchDB Node Down
sysadmin.1582888661.txt.gz · Dernière modification : 2020/02/28 12:17 de lpieri