Ajoute surveillance Zabbix optionnelle et migration Alpine

- Migre vers Alpine Linux avec surveillance Zabbix optionnelle
- Configure variables d'environnement pour activation conditionnelle
- Met à jour documentation avec instructions Docker complètes
This commit is contained in:
skylanix
2025-08-08 21:08:16 +02:00
parent 5a64704629
commit 3c693a7848
6 changed files with 157 additions and 28 deletions

10
.env.example Normal file
View File

@@ -0,0 +1,10 @@
# Configuration Discord Bot
TOKEN=your_discord_bot_token_here
STATUS=online
INTERVAL=3600
# Configuration Zabbix (optionnel)
ENABLE_ZABBIX=false
ZABBIX_SERVER=zabbix-server.example.com
ZABBIX_HOSTNAME=mamie-henrriette-bot
ZABBIX_PORT=10050

View File

@@ -1,11 +1,16 @@
FROM python:3.9-slim
FROM alpine:3.22.1
WORKDIR /app
RUN apk add --no-cache python3 py3-pip zabbix-agent2
COPY requirements.txt .
COPY bot.py .
COPY statuts.txt .
COPY zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf
COPY start.sh /start.sh
RUN pip install --no-cache-dir -r requirements.txt
RUN pip3 install --no-cache-dir --break-system-packages --root-user-action=ignore -r requirements.txt && \
chmod +x /start.sh
CMD ["python", "bot.py"]
CMD ["/start.sh"]

102
README.md
View File

@@ -1,4 +1,3 @@
Voici le README.md pour votre projet :
# 👵 Mamie Henrriette - Discord Status Bot 🤖
@@ -13,11 +12,13 @@ Mamie Henrriette est un bot Discord intelligent qui change automatiquement de st
- Gestion des erreurs et logging
- Support multi-statuts Discord
- Déploiement simplifié avec Docker
- 📊 Surveillance optionnelle avec Zabbix
## 🛠 Prérequis
- Docker
- Docker et Docker Compose
- Compte Discord et Token du bot
- (Optionnel) Serveur Zabbix pour la surveillance
## 📦 Installation
@@ -27,19 +28,69 @@ git clone https://git.favrep.ch/lapatatedouce/MamieHenrriette
cd MamieHenrriette
```
2. Conteneur Docker
2. Copiez le fichier de configuration
```bash
cp .env.example .env
```
3. Éditez le fichier `.env` avec vos paramètres
```bash
nano .env
```
4. Démarrez le conteneur Docker
**Mode développement (avec logs):**
```bash
docker-compose up --build
```
**Mode production (en arrière-plan):**
```bash
docker-compose up --build -d
```
**Voir les logs:**
```bash
docker-compose logs -f discord-bot
```
**Arrêter le conteneur:**
```bash
docker-compose down
```
## 🔧 Configuration
### Variables d'environnement
### Variables d'environnement principales
- `TOKEN`: Votre token Discord (obligatoire)
- `STATUS`: Statut initial (défaut: online)
- `INTERVAL`: Intervalle de changement de statut (défaut: 60 secondes)
- `INTERVAL`: Intervalle de changement de statut (défaut: 3600 secondes)
### 📊 Configuration Zabbix (optionnelle)
- `ENABLE_ZABBIX`: Activer la surveillance Zabbix (défaut: false)
- `ZABBIX_SERVER`: Adresse du serveur Zabbix
- `ZABBIX_HOSTNAME`: Nom d'hôte pour identifier le bot
- `ZABBIX_PORT`: Port d'exposition Zabbix (défaut: 10050)
#### Métriques surveillées par Zabbix
- Statut du bot Discord
- Temps de fonctionnement (uptime)
- Utilisation mémoire
- Erreurs et avertissements dans les logs
- Connectivité à Discord
#### Activation de Zabbix
Dans votre fichier `.env` :
```bash
ENABLE_ZABBIX=true
ZABBIX_SERVER=votre-serveur-zabbix.com
ZABBIX_HOSTNAME=mamie-henrriette-bot
```
### Fichier `statuts.txt`
@@ -57,33 +108,38 @@ En mode supervision
- discord.py==2.3.2
- python-dotenv==1.0.0
---
# 🖥️ Installation environnement de développement
# Installation poste de dev
## installation des dépendences systeme
~~~
sudo apt install python3 python3-pip p
~~~
## Installation des dépendances système
## creation de l'environnement python locale
Dans le projet
~~~
```bash
sudo apt install python3 python3-pip
```
## Création de l'environnement Python local
Dans le dossier du projet :
```bash
python3 -m venv .venv
~~~
```
Puis activer l'environnement :
~~~
```bash
source .venv/bin/activate
~~~
```
## installation des dépendences python
## Installation des dépendances Python
~~~
```bash
pip install -r requirements.txt
~~~
```
## execution
## Exécution
~~~
TOKEN=truc python3 bot.py
~~~
```bash
TOKEN=votre_token_discord python3 bot.py
```

View File

@@ -7,5 +7,12 @@ services:
- TOKEN=your token
- STATUS=online
- INTERVAL=3600
- ENABLE_ZABBIX=${ENABLE_ZABBIX:-false}
- ZABBIX_SERVER=${ZABBIX_SERVER:-zabbix-server.example.com}
- ZABBIX_HOSTNAME=${ZABBIX_HOSTNAME:-mamie-henrriette-bot}
volumes:
- ./statuts.txt:/app/statuts.txt
ports:
- "${ZABBIX_PORT:-10050}:10050"
profiles:
- default

21
start.sh Normal file
View File

@@ -0,0 +1,21 @@
#!/bin/sh
# Script de démarrage conditionnel pour Zabbix et le bot Discord
# Vérifier si Zabbix est activé
if [ "$ENABLE_ZABBIX" = "true" ]; then
echo "Zabbix activé - Configuration de l'agent..."
# Remplacer les variables dans la config Zabbix
sed -i "s/Server=.*/Server=$ZABBIX_SERVER/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/ServerActive=.*/ServerActive=$ZABBIX_SERVER:10051/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/Hostname=.*/Hostname=$ZABBIX_HOSTNAME/" /etc/zabbix/zabbix_agent2.conf
zabbix_agent2 -f &
echo "Zabbix Agent démarré"
else
echo "Zabbix désactivé"
fi
echo "Démarrage du bot Discord..."
exec python3 bot.py

30
zabbix_agent2.conf Normal file
View File

@@ -0,0 +1,30 @@
# Configuration Zabbix Agent 2 pour Mamie Henrriette Bot
# Serveur Zabbix
Server=zabbix-server.example.com
ServerActive=zabbix-server.example.com:10051
# Configuration de l'agent
Hostname=mamie-henrriette-bot
ListenPort=10050
ListenIP=0.0.0.0
# Logs
LogType=console
LogLevel=3
DebugLevel=3
# Timeout
Timeout=30
# Métriques personnalisées pour le bot Discord
UserParameter=discord.bot.status,python3 /app/bot_status.py
UserParameter=discord.bot.uptime,cat /proc/uptime | awk '{print $1}'
UserParameter=discord.bot.memory,ps -o pid,vsz,rss,comm -p $(pgrep -f bot.py) | tail -1 | awk '{print $3}'
# Surveillance des logs
UserParameter=discord.bot.errors,grep -c "ERROR" /var/log/discord-bot.log 2>/dev/null || echo 0
UserParameter=discord.bot.warnings,grep -c "WARNING" /var/log/discord-bot.log 2>/dev/null || echo 0
# Vérification de la connectivité Discord
UserParameter=discord.connectivity,timeout 5 curl -s https://discord.com/api/v10/gateway >/dev/null && echo 1 || echo 0