Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a40cf5d050 | |||
| 20b7995761 | |||
| 571c9e9120 | |||
| 582268744b | |||
| 2965573551 | |||
| 9c430b9523 | |||
| 8743403f4c | |||
| a129217889 | |||
| fef12e5550 | |||
| 3367d82a03 | |||
| 2fa7c3b302 |
135
README.md
135
README.md
@@ -59,93 +59,92 @@ La partie systèmes et réseaux consiste à déployer une infrastructure virtual
|
||||
|
||||
- Utilisation de Goss pour vérifier le bon fonctionnement des services et des machines
|
||||
|
||||
---
|
||||
|
||||
## Mission I2 - Supervision des serveurs ap31-prod et ap31-test
|
||||
|
||||
## Mission I2 : Supervision avec Zabbix
|
||||
### Objectifs de la mission
|
||||
|
||||
## Objectif
|
||||
- Superviser les serveurs `ap31-prod` et `ap31-test` avec Zabbix installé sur `ap31-mon`.
|
||||
- Vérifier la connectivité (ping), accès SSH, et service web pour `ap31-test`.
|
||||
- Utiliser les agents `zabbix_agent2` et associer les templates `linux-server`.
|
||||
- Envoyer des notifications en cas d’incident (non réalisé via Zabbix mais avec Uptime Kuma).
|
||||
|
||||
Mettre en place une supervision centralisée des serveurs `ap3x-prod` et `ap3x-test` depuis la machine `ap3x-mon` à l'aide de Zabbix.
|
||||
L’objectif est d’assurer une surveillance complète via plusieurs protocoles et services :
|
||||
### Installation et configuration
|
||||
|
||||
- Vérification de la disponibilité réseau (ping)
|
||||
- Surveillance via **Zabbix Agent2** avec application de templates Linux standards
|
||||
- Contrôle de l’accès SSH sur les serveurs
|
||||
- Supervision de l’accès HTTP pour le serveur `ap3x-test`
|
||||
- Mise en place d’un système d’alerte pour notifier automatiquement en cas de problème
|
||||
- Extension de la supervision à d’autres équipements réseaux critiques (passerelle `gwsiox`, serveurs `px`, `pxlabx`, `gwlab`)
|
||||
- Installation via `apt` des paquets Zabbix serveur, frontend, agent2, et MariaDB.
|
||||
- Création d’une base MariaDB dédiée à Zabbix avec utilisateur spécifique et import du schéma initial.
|
||||
- Configuration de l’interface web Zabbix avec connexion à la base MariaDB locale.
|
||||
- Activation automatique et vérification des services Zabbix.
|
||||
|
||||
### Déploiement et supervision
|
||||
|
||||
- Utilisation du wizard agent avec clés PSK pour déployer les agents sur `ap31-prod` et `ap31-test`.
|
||||
- Association des templates `linux-server` aux agents.
|
||||
- Difficultés rencontrées avec les templates ICMP (ping) et Apache2 web, non fonctionnels.
|
||||
- Les templates SSH n’ont pas été utilisés faute d’accès SSH disponible.
|
||||
- La gestion des alertes n’a pas été réalisée via Zabbix mais déléguée à Uptime Kuma.
|
||||
|
||||
---
|
||||
|
||||
## Environnement Technique
|
||||
## Mission I3 - Mise en place d'une infrastructure de gestion centralisée des logs
|
||||
|
||||
| Élément | Description |
|
||||
|---------------------|-----------------------------------|
|
||||
| Système d’exploitation | Debian.12 Bookworm |
|
||||
| Zabbix | Version 7.4. |
|
||||
| Base de données | MariaDB 10.11 |
|
||||
| Serveur Web | Apache2 + PHP 8.2 |
|
||||
| Ports utilisés | 10050 (Zabbix agent), 10051 (Zabbix serveur), 3306 (journald-remote) |
|
||||
### Objectifs de la mission
|
||||
|
||||
- Centraliser les logs de plusieurs serveurs (`ap31-prod`, `ap31-test`, `gwsiox`) sur une machine dédiée (`ap31-mon`) via `systemd-journal-remote`.
|
||||
- Mettre en place une politique de rotation et de rétention des logs syslog, avec une rotation hebdomadaire sur 4 semaines.
|
||||
- Garantir la cohérence temporelle entre toutes les machines impliquées grâce à une synchronisation horaire fiable.
|
||||
|
||||
### Mise en œuvre
|
||||
|
||||
### Sur la machine centrale (réceptrice `ap31-mon`)
|
||||
|
||||
- Activation et configuration du service `systemd-journal-remote` pour recevoir les logs via HTTP.
|
||||
- Création et gestion du répertoire `/var/log/journal/remote` avec les permissions appropriées.
|
||||
- Rechargement des services systemd et vérification de l’écoute sur le port dédié.
|
||||
|
||||
### Sur les serveurs sources (`ap31-prod` et `ap31-test`)
|
||||
|
||||
- Installation du paquet `systemd-journal-remote` pour permettre l’envoi des logs.
|
||||
- Configuration dynamique de l’adresse du serveur de réception dans `/etc/systemd/journal-upload.conf` via un script bash.
|
||||
- Activation et démarrage du service `systemd-journal-upload` pour transmettre les journaux système vers `ap31-mon`.
|
||||
|
||||
### Gestion des logs et synchronisation
|
||||
|
||||
- Mise en place d’une rotation des logs syslog, configurée pour une périodicité hebdomadaire avec une conservation de 4 semaines.
|
||||
- Utilisation de `timedatectl` pour définir le fuseau horaire et garantir la synchronisation temporelle sur toutes les machines.
|
||||
|
||||
---
|
||||
|
||||
## Installation & Configuration
|
||||
## Mission I4 – Sécurisation et sauvegarde de la base de données
|
||||
|
||||
### Installation des composants principaux
|
||||
### Objectifs de la mission
|
||||
|
||||
- Installation des paquets Zabbix serveur, frontend, agent2 et MariaDB via apt
|
||||
- Configuration d’une base MariaDB dédiée à Zabbix avec création d’un utilisateur spécifique et import du schéma initial
|
||||
- Mise en place de l’interface web Zabbix avec paramètres de connexion vers MariaDB (host `localhost`, port 3306 par défaut)
|
||||
- Configuration des services Zabbix pour démarrer automatiquement et vérification de leur état (`systemctl status`)
|
||||
- Sécuriser l'accès SSH aux machines via authentification par clé publique uniquement.
|
||||
- Mettre en place une **sauvegarde automatique, compressée et quotidienne** de la base MariaDB sur `ap31-test`.
|
||||
- Conserver un **historique de 7 jours** de ces sauvegardes.
|
||||
- Fournir un script permettant de **restaurer la dernière sauvegarde** sur `ap31-prod`.
|
||||
|
||||
### Gestion des agents Zabbix
|
||||
### Sécurisation de l'accès SSH
|
||||
|
||||
- Remplacement du `zabbix-agent` classique par `zabbix-agent2` permet une meilleure robustesse,et l’intégration professionnelle. pour corriger les problèmes liés au PID et aux permissions, il est aussi plus récent
|
||||
- Configuration des agents sur `ap3x-prod` et `ap3x-test` avec le template Linux standard afin d’avoir une collecte précise et homogène des métriques
|
||||
- Utilisation exclusive de l’**authentification par clé publique** :
|
||||
- Ajout des clés des administrateurs dans le fichier `~/.ssh/authorized_keys`.
|
||||
- Désactivation de l’authentification par mot de passe dans `/etc/ssh/sshd_config` (`PasswordAuthentication no`).
|
||||
- Configuration du fichier `~/.ssh/config` pour permettre la connexion via **nom de domaine personnalisé**, avec des alias pour simplifier l'accès aux serveurs (ex. : `ssh ap31-prod`).
|
||||
- Redémarrage du service SSH pour prise en compte des modifications.
|
||||
|
||||
### Supervision réseau et services
|
||||
### Sauvegarde automatisée de MariaDB sur `ap31-test`
|
||||
|
||||
- Vérification des accès SSH et HTTP via des vérifications simples dans Zabbix (Simple checks et HTTP checks)
|
||||
- Mise en place d’un **script bash exécuté quotidiennement** (via cron) pour :
|
||||
- Effectuer un **dump** de la base `sdis29` avec l’utilisateur `adminBDsdis`.
|
||||
- Compresser la sauvegarde (`gzip`).
|
||||
- La stocker dans `/var/backups/mariadb` avec un nom de fichier horodaté.
|
||||
- Supprimer les sauvegardes plus anciennes que 7 jours.
|
||||
|
||||
---
|
||||
### Restauration de la dernière sauvegarde sur `ap31-prod`
|
||||
|
||||
## Supervision centralisée des logs avec journald-remote
|
||||
- Un script permet de :
|
||||
- **Décompresser** la dernière sauvegarde disponible.
|
||||
- **Restaurer automatiquement** le fichier SQL dans la base `sdis29` sur `ap31-prod` à l’aide des identifiants fournis.
|
||||
|
||||
Pour aller au-delà de la simple supervision système, un serveur de logs centralisé a été mis en place sur `ap3x-mon` :
|
||||
|
||||
- Installation et configuration du service `systemd-journal-remote` pour recevoir les logs système des serveurs supervisés
|
||||
- Script automatisé (`journald-rcv.sh`) pour configurer le serveur receveur avec les bons droits et paramètres (écoute HTTP sur le port 3306)
|
||||
- Script client (`journald-snd.sh`) sur chaque serveur supervisé permettant d’envoyer leurs journaux via `systemd-journal-upload` vers le serveur central
|
||||
- Cette centralisation facilite la collecte, l’analyse et la corrélation des événements pour une meilleure détection des incidents
|
||||
|
||||
---
|
||||
|
||||
## Problèmes rencontrés et solutions apportées
|
||||
|
||||
| Problème | Analyse | Solution appliquée |
|
||||
|---------------------------------|-----------------------------------------|---------------------------------------------|
|
||||
| Service `zabbix-agent` ne démarre pas | Problèmes liés au fichier PID, conflits avec agent2 | Migration vers `zabbix-agent2`, nettoyage des sockets, correction des droits |
|
||||
| Connexion à MariaDB échoue | Mauvais mot de passe, base non initialisée | Réinitialisation du mot de passe, création manuelle de la base et import du schéma |
|
||||
| Centralisation des logs non fonctionnelle | Mauvaise configuration ou absence de service `journald-remote` | Installation et configuration via scripts automatisés, activation du service socket |
|
||||
|
||||
---
|
||||
|
||||
## Résultats obtenus
|
||||
|
||||
- Interface Zabbix opérationnelle et accessible via navigateur web
|
||||
- Serveur Zabbix et agents en état actif et fonctionnel
|
||||
- Collecte fiable des métriques systèmes et réseau sur les serveurs supervisés
|
||||
- Supervision des accès SSH et HTTP fonctionnelle
|
||||
- Mise en place d’une infrastructure de logs centralisée opérationnelle avec réception régulière des journaux sur `ap3x-mon`
|
||||
|
||||
---
|
||||
|
||||
## Étapes suivantes
|
||||
|
||||
- Configuration de scénarios HTTP et vérifications spécifiques à `ap3x-test`
|
||||
- Mise en place des alertes personnalisées (email, webhook, autres moyens)
|
||||
- Ajout des équipements réseau supplémentaires à la supervision (passerelle, serveurs px, gwlab)
|
||||
- Gestion des dépendances entre hôtes et services dans Zabbix pour éviter les alertes redondantes
|
||||
|
||||
---
|
||||
|
||||
|
||||
21
configs/backup_mariadb.sh
Normal file
21
configs/backup_mariadb.sh
Normal file
@@ -0,0 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Variables
|
||||
DATE=$(date +'%Y-%m-%d_%H-%M-%S')
|
||||
BACKUP_DIR="/var/backups/mariadb"
|
||||
DB_NAME="sdis29"
|
||||
DB_USER="adminBDsdis"
|
||||
DB_PASS="u@4xKH@X"
|
||||
|
||||
|
||||
# Créer le dossier de backup s'il n'existe pas
|
||||
mkdir -p $BACKUP_DIR
|
||||
|
||||
# Exécuter la sauvegarde
|
||||
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/${DB_NAME}_backup_$DATE.sql
|
||||
|
||||
# Optionnel : compresser la sauvegarde
|
||||
gzip $BACKUP_DIR/${DB_NAME}_backup_$DATE.sql
|
||||
|
||||
# Nettoyer les anciennes sauvegardes (plus de 7 jours dans notre cas)
|
||||
find $BACKUP_DIR -type f -name "*.gz" -mtime +7 -exec rm {} \;
|
||||
32
configs/docker-compose-test.yml
Normal file
32
configs/docker-compose-test.yml
Normal file
@@ -0,0 +1,32 @@
|
||||
services:
|
||||
payara:
|
||||
image: payara/server-full:6.2025.9-jdk17
|
||||
container_name: payara
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "4848:4848"
|
||||
env_file:
|
||||
- "variables.env"
|
||||
restart: unless-stopped
|
||||
|
||||
db:
|
||||
image: mariadb:latest
|
||||
container_name: db
|
||||
ports:
|
||||
- "3336:3306"
|
||||
env_file:
|
||||
- "variables.env"
|
||||
volumes:
|
||||
- ./data/db_data:/var/lib/mysql
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin:latest
|
||||
container_name: phpmyadmin
|
||||
restart: always
|
||||
ports:
|
||||
- 2500:80
|
||||
environment:
|
||||
- PMA_ARBITRARY=1
|
||||
env_file:
|
||||
- "variables.env"
|
||||
|
||||
@@ -6,27 +6,20 @@ services:
|
||||
- "8080:8080"
|
||||
- "4848:4848"
|
||||
env_file:
|
||||
- "variables.env"
|
||||
- "variables.env"
|
||||
volumes:
|
||||
- ./mariadb-java-client-3.5.6.jar:/opt/payara/glassfish/domains/domain1/lib/mariadb-java-client-3.5.6.jar:ro
|
||||
restart: unless-stopped
|
||||
|
||||
db:
|
||||
image: mariadb:latest
|
||||
container_name: db
|
||||
ports:
|
||||
- "3336:3306"
|
||||
env_file:
|
||||
- "variables.env"
|
||||
volumes:
|
||||
- ./data/db_data:/var/lib/mysql
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin:latest
|
||||
container_name: phpmyadmin
|
||||
restart: always
|
||||
ports:
|
||||
- 2500:80
|
||||
environment:
|
||||
- PMA_ARBITRARY=1
|
||||
- "3306:3306"
|
||||
env_file:
|
||||
- "variables.env"
|
||||
volumes:
|
||||
- ./data/db_data:/var/lib/mysql
|
||||
- ./init:/docker-entrypoint-initdb.d
|
||||
restart: unless-stopped
|
||||
|
||||
|
||||
@@ -10,17 +10,17 @@ interface:
|
||||
eth0:
|
||||
exists: true
|
||||
addrs:
|
||||
- 172.16.0.101/24
|
||||
- 172.16.0.100/24
|
||||
- fe80::be24:11ff:fed2:d5ff/64
|
||||
mtu: 1500
|
||||
http:
|
||||
http://ap31-test.sio.lan:8080/:
|
||||
http://ap31-prod.sio.lan:8080/:
|
||||
status: 200
|
||||
allow-insecure: false
|
||||
no-follow-redirects: false
|
||||
timeout: 10000
|
||||
body: []
|
||||
https://ap31-test.sio.lan:4848/:
|
||||
https://ap31-prod.sio.lan:4848/:
|
||||
status: 200
|
||||
allow-insecure: true
|
||||
no-follow-redirects: false
|
||||
|
||||
2
configs/http-proxy.conf
Normal file
2
configs/http-proxy.conf
Normal file
@@ -0,0 +1,2 @@
|
||||
[Service]
|
||||
Environment="HTTP_PROXY=http://10.121.38.1:8080/" "HTTPS_PROXY=http://10.121.38.1:8080/" "NO_PROXY=localhost,127.0.0.0/8"
|
||||
19
configs/journal-upload.conf
Normal file
19
configs/journal-upload.conf
Normal file
@@ -0,0 +1,19 @@
|
||||
# This file is part of systemd.
|
||||
#
|
||||
# systemd is free software; you can redistribute it and/or modify it under the
|
||||
# terms of the GNU Lesser General Public License as published by the Free
|
||||
# Software Foundation; either version 2.1 of the License, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# Entries in this file show the compile time defaults. Local configuration
|
||||
# should be created by either modifying this file, or by creating "drop-ins" in
|
||||
# the journal-upload.conf.d/ subdirectory. The latter is generally recommended.
|
||||
# Defaults can be restored by simply deleting this file and all drop-ins.
|
||||
#
|
||||
# See journal-upload.conf(5) for details.
|
||||
|
||||
[Upload]
|
||||
URL=http://ap31-mon.sio.lan:19532
|
||||
# ServerKeyFile=/etc/ssl/private/journal-upload.pem
|
||||
# ServerCertificateFile=/etc/ssl/certs/journal-upload.pem
|
||||
# TrustedCertificateFile=/etc/ssl/ca/trusted.pem
|
||||
@@ -1,7 +1,7 @@
|
||||
MYSQL_DATABASE=bdclient
|
||||
MYSQL_DATABASE=sdis29
|
||||
MYSQL_HOST=db
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_USER=adminBDCli
|
||||
MYSQL_USER=adminBDsdis
|
||||
MYSQL_PASSWORD=u@4xKH@X
|
||||
MYSQL_ROOT_PASSWORD=2Fc#$9Fn
|
||||
|
||||
|
||||
Reference in New Issue
Block a user