Comment installer et configurer Zabbix pour surveiller en toute sécurité les serveurs distants sur Ubuntu 16.04

introduction

Zabbix est un logiciel de surveillance open source pour les réseaux et les applications. Il offre une surveillance en temps réel de milliers de métriques collectées à partir de serveurs, de machines virtuelles et de tout autre type de périphérique réseau. Ces métriques peuvent vous aider à déterminer l'état actuel de votre infrastructure informatique et à détecter les problèmes liés aux composants matériels ou logiciels avant que les clients ne se plaignent. Les informations utiles sont stockées dans une base de données afin que vous puissiez analyser des données au fil du temps et améliorer la qualité des services fournis, ou planifier des mises à niveau de votre équipement.

Zabbix utilise une architecture client-serveur et utilise un petit agent sur le client surveillé pour collecter des données et les envoyer au serveur Zabbix. Zabbix version 3 prend en charge les communications cryptées entre le serveur et les clients connectés. Vos données sont donc protégées pendant leur transfert sur des réseaux non sécurisés.

Le serveur Zabbix stocke ses données dans une base de données relationnelle optimisée par MySQL, PostgreSQL ou Oracle. Il fournit également une interface Web vous permettant d’afficher des données et de configurer les paramètres du système. Dans ce tutoriel, nous allons configurer deux machines. L’un sera configuré en tant que serveur et l’autre en tant que client à surveiller. Le serveur utilisera une base de données MySQL pour enregistrer les données de surveillance et utilisera Apache pour desservir l'interface Web.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

  • Deux serveurs Ubuntu 16.04, chacun configuré avec un utilisateur sudo non root. Vous pouvez les configurer en suivant ceinitial Ubuntu server setup article.

  • Apache, MySQL et PHP doivent être installés sur le serveur qui exécutera le serveur Zabbix. Suivezthis guide pour les configurer sur l'un de vos serveurs.

[[step-1 -—- Installing-the-zabbix-server]] == Étape 1 - Installation du serveur Zabbix

Premièrement, nous devons installer le serveur Zabbix sur le serveur sur lequel nous installons MySQL, Apache et PHP. Dans ce didacticiel, nous ferons référence à cette machine en tant que «serveur Zabbix». Connectez-vous à cette machine en tant qu'utilisateur non root:

ssh sammy@your_zabbix_server_ip_address

Avant d'installer Zabbix, nous devons installer quelques modules PHP nécessaires à Zabbix. Commencez par mettre à jour la liste des packages disponibles de votre système:

sudo apt-get update

Installez ensuite les modules PHP dont Zabbix a besoin:

sudo apt-get install php7.0-xml php7.0-bcmath php7.0-mbstring

Nous pouvons maintenant installer Zabbix.

Zabbix est disponible dans le gestionnaire de paquets d’Ubuntu, mais il est obsolète. Nous allons donc utiliser le référentiel officiel de Zabbix pour installer la dernière version stable. Téléchargez et installez le package de configuration du référentiel:

wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

Vous verrez la sortie suivante:

OutputSelecting previously unselected package zabbix-release.
(Reading database ... 55276 files and directories currently installed.)
Preparing to unpack zabbix-release_3.2-1+xenial_all.deb ...
Unpacking zabbix-release (3.2-1+xenial) ...
Setting up zabbix-release (3.2-1+xenial) ...

Mettez à jour l'index du paquet pour inclure le nouveau référentiel:

sudo apt-get update

Ensuite, installez le serveur Zabbix et l'interface Web avec le support de base de données MySQL:

sudo apt-get install zabbix-server-mysql zabbix-frontend-php

Installez également l’agent Zabbix, ce qui nous permettra de collecter des données sur le statut du serveur Zabbix lui-même.

sudo apt-get install zabbix-agent

Avant de pouvoir utiliser Zabbix, nous devons configurer une base de données contenant les données que le serveur Zabbix collectera auprès de ses agents.

[[step-2 -—- configuration-the-mysql-database-for-zabbix]] == Étape 2 - Configuration de la base de données MySQL pour Zabbix

Nous devons créer une nouvelle base de données MySQL et la renseigner avec des informations de base afin de l'adapter à Zabbix. Nous allons également créer un utilisateur spécifique pour cette base de données afin que Zabbix ne se connecte pas à MySQL avec le compteroot.

Connectez-vous à MySQL en tant qu'utilisateur root à l'aide du mot de passe root que vous avez défini lors de l'installation du serveur MySQL:

mysql -uroot -p

Créez la base de données Zabbix avec la prise en charge des caractères UTF-8:

create database zabbix character set utf8 collate utf8_bin;

Créez ensuite un utilisateur que le serveur Zabbix utilisera, donnez-lui l'accès à la nouvelle base de données et définissez le mot de passe de l'utilisateur:

grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';

Puis appliquez ces nouvelles autorisations:

flush privileges;

Cela prend soin de l'utilisateur et de la base de données. Quittez la console de base de données.

quit;

Ensuite, nous devons importer le schéma initial et les données. L'installation de Zabbix nous a fourni un fichier qui le configure pour nous.

Exécutez la commande suivante pour configurer le schéma et importer les données dans la base de donnéeszabbix. Nous utiliseronszcat car les données du fichier sont compressées.

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

Entrez le mot de passe de l'utilisateur MySQLzabbix que vous avez configuré lorsque vous y êtes invité.

Cette commande ne générera aucune erreur si elle réussit. Si vous voyez l'erreurERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES), assurez-vous d'avoir utilisé le mot de passe de l'utilisateurzabbix et non de l'utilisateurroot.

Pour que le serveur Zabbix utilise cette base de données, vous devez définir le mot de passe de la base de données dans le fichier de configuration du serveur Zabbix. Ouvrez le fichier de configuration dans votre éditeur:

sudo nano /etc/zabbix/zabbix_server.conf

Recherchez la section suivante du fichier:

/etc/zabbix/zabbix_server.conf

### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

Ces commentaires dans le fichier expliquent comment se connecter à la base de données. Nous devons définir la valeurDBPassword du fichier sur le mot de passe de notre utilisateur de base de données. Ajoutez cette ligne sous ces commentaires pour configurer la base de données:

/etc/zabbix/zabbix_server.conf

DBPassword=your_zabbix_mysql_password

Cela prend en charge la configuration du serveur Zabbix, mais nous devons apporter quelques modifications à notre configuration PHP pour que l'interface Web de Zabbix fonctionne correctement.

[[step-3 -—- configuring-php-for-zabbix]] == Étape 3 - Configuration de PHP pour Zabbix

L’interface Web de Zabbix est écrite en PHP et nécessite des paramètres de serveur PHP spéciaux. Le processus d'installation de Zabbix a créé un fichier de configuration Apache contenant ces paramètres. Il se trouve dans le répertoire/etc/zabbix et est chargé automatiquement par Apache. Nous devons apporter une petite modification à ce fichier, alors ouvrez-le.

sudo nano /etc/zabbix/apache.conf

Le fichier contient les paramètres PHP qui répondent à la configuration requise pour l'interface Web de Zabbix. La seule modification à apporter consiste à définir le fuseau horaire approprié, commenté par défaut.

/etc/zabbix/apache.conf

...

    php_value max_execution_time 300
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value always_populate_raw_post_data -1
    # php_value date.timezone Europe/Riga

Décommentez la ligne du fuseau horaire, surlignée ci-dessus, et modifiez-la en fonction de votre fuseau horaire. Vous pouvez utiliser ceslist of supported time zones pour trouver celui qui vous convient. Puis enregistrez et fermez le fichier.

Maintenant, redémarrez Apache pour appliquer ces nouveaux paramètres.

sudo systemctl restart apache2

Vous pouvez maintenant démarrer le serveur Zabbix.

sudo systemctl start zabbix-server

Ensuite, vérifiez si le serveur Zabbix fonctionne correctement:

sudo systemctl status zabbix-server

Vous verrez l'état suivant:

Output● zabbix-server.service - Zabbix Server
   Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
   Active: :active (running) since Thu 2017-06-08 06:40:43 UTC; 6s ago
  Process: 15201 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
  ...

Enfin, activez le démarrage du serveur au démarrage:

sudo systemctl enable zabbix-server

Le serveur est configuré et connecté à la base de données. Maintenant, configurons l’interface Web.

[[step-4 -—- configuration-settings-for-the-zabbix-web-interface]] == Étape 4 - Configuration des paramètres pour l'interface Web Zabbix

L’interface Web nous permet d’afficher des rapports et d’ajouter des hôtes à surveiller, mais elle nécessite une configuration initiale avant de pouvoir être utilisée. Lancez votre navigateur et accédez à l'adressehttp://your_zabbix_server_ip_address/zabbix/. Sur le premier écran, vous verrez un message de bienvenue. Cliquez surNext step pour continuer.

Sur l'écran suivant, vous verrez le tableau qui répertorie toutes les conditions préalables à l'exécution de Zabbix.

Prerequisites

Toutes les valeurs de ce tableau doivent êtreOK, vérifiez donc qu'elles le sont. Assurez-vous de faire défiler la liste et de regarder toutes les conditions préalables. Une fois que vous avez vérifié que tout est prêt, cliquez surNext step pour continuer.

L'écran suivant demande des informations de connexion à la base de données.

DB Connection

Nous avons parlé de notre base de données au serveur Zabbix, mais l'interface Web de Zabbix doit également avoir accès à la base de données pour gérer les hôtes et lire les données. Par conséquent, entrez les informations d'identification MySQL que vous avez configurées à l'étape 2 et cliquez surNext step pour continuer.

Sur l'écran suivant, vous pouvez laisser les options à leurs valeurs par défaut.

Zabbix Server Details

LeName est facultatif; il est utilisé dans l'interface Web pour distinguer un serveur d'un autre au cas où vous auriez plusieurs serveurs de surveillance. Cliquez surNext step pour continuer.

L'écran suivant affichera le résumé de pré-installation afin que vous puissiez confirmer que tout est correct.

Summary

Cliquez surNext step pour passer à l'écran final.

La configuration de l'interface Web est terminée! Ce processus crée le fichier de configuration/usr/share/zabbix/conf/zabbix.conf.php que vous pourrez sauvegarder et utiliser à l'avenir. Cliquez surFinish pour passer à l'écran de connexion. L'utilisateur par défaut estAdmin et le mot de passe estzabbix.

Avant de nous connecter, configurons l’agent Zabbix sur notre autre serveur.

[[step-5 -—- installation-et-configuration-de-l'agent-zabbix]] == Étape 5 - Installation et configuration de l'agent Zabbix

Nous devons maintenant configurer le logiciel agent qui enverra les données de surveillance au serveur Zabbix.

Connectez-vous au deuxième serveur, que nous appellerons le «serveur surveillé».

ssh sammy@your_monitored_server_ip_address

Ensuite, comme sur le serveur Zabbix, exécutez les commandes suivantes pour installer le package de configuration du référentiel:

wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

Ensuite, mettez à jour l'index du paquet:

sudo apt-get update

Ensuite, installez l'agent Zabbix:

sudo apt-get install zabbix-agent

Bien que Zabbix prenne en charge le cryptage basé sur les certificats, la configuration d'une autorité de certification dépasse le cadre de ce didacticiel, mais nous pouvons utiliser des clés pré-partagées (PSK) pour sécuriser la connexion entre le serveur et l'agent.

Alors tout d’abord, générez une PSK:

sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

Affichez la clé pour pouvoir la copier quelque part. Vous en aurez besoin pour configurer l'hôte.

cat /etc/zabbix/zabbix_agentd.psk

La clé ressemblera à ceci:

Outputcd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5

Modifiez maintenant les paramètres de l'agent Zabbix pour configurer sa connexion sécurisée au serveur Zabbix. Ouvrez le fichier de configuration de l'agent dans votre éditeur de texte:

sudo nano /etc/zabbix/zabbix_agentd.conf

Chaque paramètre de ce fichier est documenté via des commentaires informatifs tout au long du fichier, mais vous n’avez qu’à en modifier certains.

Vous devez d’abord modifier l’adresse IP du serveur Zabbix. Trouvez la section suivante:

/etc/zabbix/zabbix_agentd.conf

### Option: Server
#       List of comma delimited IP addresses (or hostnames) of Zabbix servers.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: no
# Default:
# Server=

Server=127.0.0.1

Changez la valeur par défaut en IP de votre serveur Zabbix:

/etc/zabbix/zabbix_agentd.conf

Server=your_zabbix_server_ip_address

Recherchez ensuite la section qui configure la connexion sécurisée au serveur Zabbix et activez la prise en charge des clés pré-partagées. Trouvez la sectionTSLConnect, qui ressemble à ceci:

/etc/zabbix/zabbix_agentd.conf

### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=unencrypted

Ajoutez ensuite cette ligne pour configurer le support des clés pré-partagées:

/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

Ensuite, localisez la sectionTLSAccept, qui ressemble à ceci:

/etc/zabbix/zabbix_agentd.conf

### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=unencrypted

Configurez les connexions entrantes pour prendre en charge les clés pré-partagées en ajoutant cette ligne:

/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

Ensuite, recherchez la sectionTLSPSKIdentity, qui ressemble à ceci:

/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

Choisissez un nom unique pour identifier votre clé pré-partagée en ajoutant cette ligne:

/etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

Vous l'utiliserez commePSK ID lorsque vous ajoutez votre hôte via l'interface Web Zabbix.

Puis définissez l'option qui pointe vers la clé pré-partagée créée précédemment. Recherchez l'optionTLSPSKFile:

/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

Ajoutez cette ligne pour diriger l'agent Zabbix vers le fichier PSK que vous avez créé:

/etc/zabbix/zabbix_agentd.conf

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

Enregistrez et fermez le fichier. Maintenant, vous pouvez démarrer l'agent Zabbix et le configurer pour qu'il démarre au démarrage:

sudo systemctl start zabbix-agent
sudo systemctl enable zabbix-agent

Pour faire bonne mesure, vérifiez que l'agent Zabbix fonctionne correctement:

sudo systemctl status zabbix-agent

Vous verrez l'état suivant, indiquant que l'agent est en cours d'exécution:

Output● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-06-08 08:33:52 UTC; 4s ago
  Process: 18185 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
  ...

Notre agent est maintenant prêt à envoyer des données au serveur Zabbix. Mais pour l’utiliser, nous devons y accéder depuis la console Web du serveur.

[.Remarque]##

Note: Si vous utilisez UFW, configurez-le pour autoriser les connexions au port10050:

sudo ufw allow 10050/tcp

Vous pouvez en savoir plus sur UFW dansHow To Set Up a Firewall with UFW on Ubuntu 16.04.

[[step-6 -—- ajoutant-the-new-host-to-zabbix-server]] == Étape 6 - Ajout du nouvel hôte au serveur Zabbix

L'installation d'un agent sur un serveur que nous souhaitons surveiller ne représente que la moitié du processus. Chaque hôte que nous voulons surveiller doit être enregistré sur le serveur Zabbix, ce que nous pouvons faire via l'interface Web.

Connectez-vous à l'interface Web du serveur Zabbix en accédant à l'adressehttp://your_zabbix_server_ip_address/zabbix/.

The Zabbix login screen

Une fois connecté, cliquez sur lesConfiguration, puis surHosts dans la barre de navigation supérieure. Cliquez ensuite sur le boutonCreate host dans le coin supérieur droit de l'écran. Cela ouvrira la page de configuration de l'hôte.

Creating a host

Ajustez lesHost name etIP ADDRESS pour refléter le nom d'hôte et l'adresse IP de votre ordinateur client. Ajoutez ensuite l'hôte à un groupe en sélectionnant l'un des groupes dans la liste ou en créant votre propre groupe. L'hôte peut être dans plusieurs groupes. Le groupeLinux Servers est un bon choix par défaut. Une fois que vous avez ajouté le groupe, cliquez sur l'ongletTemplates.

Adding a template to the host

TapezTemplate OS Linux dans le champSearch, puis cliquez surAdd pour ajouter ce modèle à l'hôte.

Ensuite, accédez à l'ongletEncryption. SélectionnezPSK pour lesConnections to host etConnections from host. Puis définissezPSK identity surPSK 001, qui est la valeur du paramètreTLSPSKIdentity de l'agent Zabbix que nous avons configuré précédemment. Ensuite, définissez la valeur
PSK sur la clé que vous avez générée pour l'agent Zabbix. C'est celui qui est stocké dans le fichier/etc/zabbix/zabbix_agentd.psk sur la machine de l'agent.

Setting up the encryption.

Enfin, cliquez sur le boutonAdd en bas du formulaire pour créer l'hôte.

Vous verrez votre nouvel hôte avec des étiquettes vertes indiquant que tout fonctionne correctement et que la connexion est cryptée.

Zabbix shows your new host.

Après quelques secondes, vous pouvez accéder àMonitoring puis àLatest data pour voir les données de votre agent.

Pour vous assurer que tout fonctionne correctement, arrêtez votre serveur surveillé afin que vous puissiez voir comment Zabbix vous alerte en cas de problème. Une fois que votre serveur surveillé est hors ligne, l'avertissement apparaît sur le tableau de bord principal:

Zabbix shows you a warning about the host that’s offline.

Si vous avez des serveurs supplémentaires à surveiller, connectez-vous à chaque hôte, installez l'agent Zabbix, générez un PSK, configurez l'agent et ajoutez l'hôte à l'interface Web en suivant les mêmes étapes que vous avez suivies pour ajouter votre premier hôte.

Conclusion

Dans ce didacticiel, vous avez appris à configurer une solution de surveillance simple et sécurisée qui vous aidera à surveiller l’état de vos serveurs. Il peut maintenant vous avertir des problèmes et vous avez la possibilité de tracer des graphiques en fonction des données obtenues afin que vous puissiez les analyser et planifier en conséquence.