Prometheus: Récupération des métriques depuis Linux
Comment récupérer les métriques d'un serveur Linux dans Prometheus en utilisant Node Exporter
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution Prometheus cloud prête à l'emploi qui offre de nombreux avantages, notamment :
Alert Managerinclus pour envoyer des alertes àSlack,Mattermost,PagerDuty, etc.- Serveur d'e-mail dédié pour envoyer des alertes e-mail illimitées.
Blackboxpour sonderHTTP,ICMP,TCP, et plus encore.- Configuration facile avec un éditeur de fichier de configuration en ligne.
- Mises à jour sans effort en un clic.
- Performance optimale et sécurité robuste grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Prometheus cloud hosting de Stackhero !
Qu'est-ce que Prometheus Node Exporter
Node Exporter est un logiciel que vous pouvez installer sur les noyaux *NIX (Linux, OpenBSD, FreeBSD ou Darwin) pour exposer les métriques système à Prometheus. C'est un composant essentiel pour surveiller la performance des serveurs et la santé de l'infrastructure.
Dans la terminologie Prometheus, Node Exporter agit comme un exportateur et est ajouté comme cible dans votre configuration Prometheus. Prometheus se connecte à Node Exporter en utilisant le port TCP 9100 via HTTP à intervalles réguliers pour récupérer les métriques.
En résumé, Node Exporter vous permet de surveiller un système basé sur Linux. Pour les systèmes Windows, vous pouvez utiliser le Windows Exporter.
Vue d'ensemble de Stackhero pour Prometheus
Installer Prometheus Node Exporter sur un serveur Linux
Vous pouvez télécharger Node Exporter depuis sa page de releases GitHub. Il est distribué sous forme de binaire qui s'exécute directement sur votre système. Comme il est conçu pour fonctionner en continu, il est recommandé de le configurer pour qu'il se lance automatiquement au démarrage de votre serveur.
Par défaut, Node Exporter ouvre le port 9100 au monde sans authentification ni chiffrement. Il est fortement recommandé d'ajouter à la fois une authentification et un chiffrement TLS (voir ci-dessous) et de configurer un pare-feu pour restreindre l'accès au port 9100 afin que seuls votre serveur Prometheus ou d'autres adresses IP autorisées puissent se connecter.
Comment installer Prometheus Node Exporter sur Ubuntu
Vous pouvez suivre ces étapes sur Ubuntu :
# Allez sur https://github.com/prometheus/node_exporter/releases pour obtenir le dernier numéro de version.
node_exporter_version="1.2.0"
node_exporter_release="linux-amd64"
# Télécharger et installer node_exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v${node_exporter_version}/node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
tar xvfa node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
sudo mv node_exporter-${node_exporter_version}.${node_exporter_release}/node_exporter /usr/local/bin/
rm -rf node_exporter-${node_exporter_version}.${node_exporter_release} node_exporter-${node_exporter_version}.${node_exporter_release}.tar.gz
# Créer un utilisateur "node_exporter"
sudo useradd -rs /bin/false node_exporter
# Créer un service systemd pour démarrer node_exporter automatiquement au démarrage
sudo bash -c 'cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter --web.config=/etc/prometheus_node_exporter/configuration.yml
[Install]
WantedBy=multi-user.target
EOF'
# Créer un répertoire et un fichier de configuration
sudo mkdir -p /etc/prometheus_node_exporter/
sudo touch /etc/prometheus_node_exporter/configuration.yml
sudo chmod 700 /etc/prometheus_node_exporter
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
# Démarrer le démon node_exporter et vérifier son statut
sudo systemctl start node_exporter
sudo systemctl status node_exporter
À ce stade, le binaire node_exporter devrait être en cours d'exécution sur votre serveur. Pour confirmer qu'il fonctionne, vous pouvez vous y connecter et vérifier s'il renvoie des métriques :
curl http://localhost:9100/metrics
Node Exporter ouvre le port 9100 au réseau public. Cela signifie que n'importe qui peut se connecter et récupérer les métriques de votre serveur ! Au minimum, vous devriez ajouter une authentification et un chiffrement TLS (voir ci-dessous) et il est fortement recommandé de configurer un pare-feu pour bloquer les requêtes vers le port 9100 provenant d'IPs autres que votre serveur Prometheus.
Comment installer Prometheus Node Exporter sur Debian
Le processus d'installation de Node Exporter sur Debian est identique à la méthode Ubuntu décrite ci-dessus. Suivez simplement les mêmes instructions.
Comment installer Prometheus Node Exporter sur d'autres systèmes
Les étapes d'installation de Node Exporter dépendent du système que vous utilisez. Bien que la documentation détaillée pour chaque plateforme ne soit pas fournie, la procédure de base consiste à télécharger le binaire correspondant à votre système et à le configurer pour démarrer au démarrage.
Ajouter une authentification à Prometheus Node Exporter
Par défaut, Node Exporter n'effectue pas d'authentification, ce qui signifie que n'importe qui peut récupérer les métriques exposées. Pour sécuriser l'accès, vous pouvez ajouter une authentification basique pour un utilisateur.
Génération d'un mot de passe aléatoire
Générez un mot de passe en utilisant les commandes suivantes :
password=`openssl rand -base64 32`
passwordHashed=`echo ${password} | htpasswd -inBC 10 "" | tr -d ':'`
echo "Mot de passe clair à conserver pour le serveur Prometheus : ${password}"
Si vous n'avez pas le binaire
htpasswd, vous pouvez l'installer sur Debian/Ubuntu en utilisantapt-get install --no-install-recommends apache2-utils.
Gardez le mot de passe clair en sécurité car vous en aurez besoin lors de la configuration de Prometheus.
Ajout de l'utilisateur et redémarrage de Node Exporter
Ajoutez les lignes suivantes au fichier de configuration pour ajouter un utilisateur appelé "prometheus" avec le hash du mot de passe généré :
sudo cat << EOF >> /etc/prometheus_node_exporter/configuration.yml
basic_auth_users:
prometheus: ${passwordHashed}
EOF
# Redémarrer Node Exporter
sudo systemctl restart node_exporter
Enfin, vérifiez que l'authentification fonctionne correctement :
- Exécuter
curl http://localhost:9100/metricsdevrait retourner "Unauthorized". - Exécuter
curl -u prometheus:${password} http://localhost:9100/metricsdevrait retourner la liste des métriques.
Ajouter un chiffrement TLS à Prometheus Node Exporter
Par défaut, Node Exporter ne chiffre pas les communications. Cela signifie que les identifiants, y compris le mot de passe défini précédemment, sont transmis en clair. Pour sécuriser les communications, vous pouvez activer le chiffrement TLS comme suit.
Création de certificats TLS
Exécutez les commandes suivantes pour créer un certificat et une clé TLS :
# Créer un certificat TLS
cd /tmp
sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 \
-keyout /etc/prometheus_node_exporter/tlsCertificate.key \
-out /etc/prometheus_node_exporter/tlsCertificate.crt \
-subj "/CN=`hostname`" \
-addext "subjectAltName = DNS:`hostname`"
sudo chmod 600 /etc/prometheus_node_exporter/*
sudo chown -R node_exporter:node_exporter /etc/prometheus_node_exporter
Mise à jour de la configuration
Ajoutez les lignes suivantes au fichier de configuration pour ajouter les paramètres TLS puis redémarrez Node Exporter :
sudo cat << 'EOF' >> /etc/prometheus_node_exporter/configuration.yml
tls_server_config:
cert_file: /etc/prometheus_node_exporter/tlsCertificate.crt
key_file: /etc/prometheus_node_exporter/tlsCertificate.key
EOF
# Redémarrer Prometheus Node Exporter
sudo systemctl restart node_exporter
Vous pouvez vérifier que TLS est actif en vous connectant via HTTPS avec la commande suivante :
curl -k -u prometheus:${password} https://localhost:9100/metrics
Notez que cette méthode n'utilise pas de certificat CA, vous devez donc passer l'option "-k" à cURL pour contourner la vérification du certificat.
Configurer le serveur Prometheus pour récupérer les données de Node Exporter
Après avoir installé Node Exporter et l'avoir sécurisé, configurez votre serveur Prometheus pour récupérer les métriques à intervalles réguliers.
Sur Stackhero, sélectionnez votre service Prometheus et allez à l'URL "Prometheus configuration". Ajoutez ensuite ce qui suit à votre section scrape_configs :
scrape_configs:
- job_name: "My servers pool"
static_configs:
- targets: [ "<yourLinuxServerDomain>:9100" ]
basic_auth:
username: "prometheus"
password: "<password>"
scheme: https
tls_config:
insecure_skip_verify: true
# Relabeling "instance" pour supprimer la partie ":9100"
relabel_configs:
- source_labels: [__address__]
target_label: instance
regex: '([^:]+)(:[0-9]+)?'
replacement: '${1}'
Enregistrez le fichier et vérifiez les logs de Prometheus pour confirmer qu'il a été rechargé avec succès (vous pouvez voir les logs depuis le tableau de bord Stackhero en sélectionnant votre service Prometheus et en cliquant sur l'onglet "Logs").
Enfin, vérifiez que Prometheus récupère les métriques en accédant à l'interface utilisateur de Prometheus sur le tableau de bord Stackhero et en naviguant vers Status > Targets. Votre serveur Linux devrait apparaître dans la liste des cibles comme étant UP.
La cible "myLinuxServer" est UP
Afficher les données sur Prometheus
Pour visualiser les métriques récupérées depuis Node Exporter, connectez-vous à Prometheus via le tableau de bord Stackhero en utilisant l'URL "Prometheus UI" ou directement à https://<prometheusDomain>/.
Dans le champ "Expression", tapez node_memory_MemTotal_bytes et appuyez sur Entrée. Si tout est correctement configuré, vous verrez la RAM totale du serveur affichée en octets.
La quantité totale de RAM pour ce serveur est de 4068794368 octets, soit 3.78GB
Configurer Grafana pour afficher les données Prometheus récupérées depuis Node Exporter
Grafana peut générer des tableaux de bord facilement basés sur les données de Prometheus. Pour des instructions détaillées sur la configuration de Grafana pour afficher les données de Prometheus, veuillez vous référer à la documentation de Grafana.
Exemple de tableau de bord généré par Grafana, basé sur les données de Prometheus Node Exporter