# 03 - Maintenance

## <span style="background-color: rgb(255, 255, 255); color: rgb(53, 152, 219);">**A - Sauvegarde**</span>

### <span style="color: rgb(35, 111, 161);">**1 Sauvegarde de la base de donné Grafana**</span>

<span class="_fadeIn_m1hgl_8">C’est </span><span class="_fadeIn_m1hgl_8">là </span><span class="_fadeIn_m1hgl_8">où </span><span class="_fadeIn_m1hgl_8">sont </span><span class="_fadeIn_m1hgl_8">stockés </span><span class="_fadeIn_m1hgl_8">les </span><span class="_fadeIn_m1hgl_8">dashboards, </span><span class="_fadeIn_m1hgl_8">datasources, </span><span class="_fadeIn_m1hgl_8">utilisateurs, </span><span class="_fadeIn_m1hgl_8">organisations, </span><span class="_fadeIn_m1hgl_8">etc.</span>  
<span class="_fadeIn_m1hgl_8">Par </span><span class="_fadeIn_m1hgl_8">défaut, </span><span class="_fadeIn_m1hgl_8">Grafana </span><span class="_fadeIn_m1hgl_8">utilise </span>**<span class="_fadeIn_m1hgl_8">SQLite</span>**<span class="_fadeIn_m1hgl_8">, </span><span class="_fadeIn_m1hgl_8">mais </span><span class="_fadeIn_m1hgl_8">il </span><span class="_fadeIn_m1hgl_8">peut </span><span class="_fadeIn_m1hgl_8">aussi </span><span class="_fadeIn_m1hgl_8">utiliser </span><span class="_fadeIn_m1hgl_8">MySQL </span><span class="_fadeIn_m1hgl_8">ou </span><span class="_fadeIn_m1hgl_8">PostgreSQL.</span>

```bash
sudo cp /var/lib/grafana/grafana.db /chemin/vers/ta/sauvegarde/
```


### <span style="color: rgb(35, 111, 161);">**2 Sauvegarde de la configuration**</span>

<span class="_fadeIn_m1hgl_8">Le </span><span class="_fadeIn_m1hgl_8">fichier </span><span class="_fadeIn_m1hgl_8">de </span><span class="_fadeIn_m1hgl_8">configuration </span><span class="_fadeIn_m1hgl_8">principal </span><span class="_fadeIn_m1hgl_8">contient </span><span class="_fadeIn_m1hgl_8">les </span><span class="_fadeIn_m1hgl_8">paramètres </span><span class="_fadeIn_m1hgl_8">d’accès, </span><span class="_fadeIn_m1hgl_8">de </span><span class="_fadeIn_m1hgl_8">stockage, </span><span class="_fadeIn_m1hgl_8">etc.</span>

```bash
sudo cp /etc/grafana/grafana.ini /chemin/vers/ta/sauvegarde/
```

<span class="_fadeIn_m1hgl_8">Vous pouvez </span><span class="_fadeIn_m1hgl_8">aussi </span><span class="_fadeIn_m1hgl_8">sauvegarder </span><span class="_fadeIn_m1hgl_8">tout </span><span class="_fadeIn_m1hgl_8">le </span><span class="_fadeIn_m1hgl_8">dossier </span><span class="_fadeIn_m1hgl_8">si </span><span class="_fadeIn_m1hgl_8">tu </span><span class="_fadeIn_m1hgl_8">as </span><span class="_fadeIn_m1hgl_8">plusieurs </span><span class="_fadeIn_m1hgl_8">fichiers.</span>

```bash
sudo cp -r /etc/grafana/ /chemin/vers/ta/sauvegarde/etc-grafana/
```

### <span style="color: rgb(35, 111, 161);">**3 Sauvegarde des plugins (si personnalisés)**</span>

<span class="_fadeIn_m1hgl_8">Si vous avez</span><span class="_fadeIn_m1hgl_8"> </span><span class="_fadeIn_m1hgl_8">installé </span><span class="_fadeIn_m1hgl_8">des </span><span class="_fadeIn_m1hgl_8">plugins </span><span class="_fadeIn_m1hgl_8">manuellement </span><span class="_fadeIn_m1hgl_8">ou </span><span class="_fadeIn_m1hgl_8">via </span><span class="_fadeIn_m1hgl_8">l’interface.</span>

```bash
sudo cp -r /var/lib/grafana/plugins/ /chemin/vers/ta/sauvegarde/plugins/
```

### <span style="color: rgb(35, 111, 161);">**4 Sauvegarde de la base InfluxDB**</span>

<span class="_fadeIn_m1hgl_8"><span style="color: rgb(0, 0, 0);">InfluxDB contient **les métriques**, pas les dashboards.</span></span>

```bash
#Pour connaitre sa version InfluxDB
influxd version

#InfluxDB v1.x
influxd backup -portable /chemin/vers/ta/sauvegarde/influx-backup/

#InfluxDB v2.x
influx backup /chemin/vers/ta/sauvegarde/influx-backup/
```

### <span style="color: rgb(35, 111, 161);">**5 Script**</span>

Création d’un script bash qui permet de sauvegarder la base de données de Grafana ainsi que les fichiers de configuration puis les plugins et pour finir la base de données Influxdb qu’il va transférer du docker sur la machine locale.

```bash
##############################################################
# Auteur : mkermorvant                                       #
# Date de modification : 20250515                            #
#                                                            #
# Description : Script de Sauvegarde de la config Grafana    #
# 
##############################################################
#! /bin/bash                                                 #
#                                                            #
##############################################################
# Variables :
echo ""
read -p "Entrez le chemin de Sauvegarde de la bdd Grafana: " BDDGRAFANA
read -p "Entrez le chemin de Sauvegarde des fichiers de configuration de Grafana: " CONF
read -p "Entrez le chemin de Sauvegarde des plugins: " PLUGINS
read -p "Entrez le nom de votre conteneur docker Influxdb: " NOM
read -p "Entrez le chemin de Sauvegarde de Influxdb dans votre conteneur: " CONTENEUR
read -p "Entrez le chemin de Sauvegarde de Influxdb dans votre machine: " INFLUXDB
read -p "Entrez votre token Influxdb: " TOKEN
echo ""
##############################################################
# 1 - Sauvegarde de la Base de Données de Grafana
sudo cp /var/lib/grafana/grafana.db ${BDDGRAFANA}
echo "La base de données de Grafana a été sauvegardé."

# 2 - Sauvegarde des Fichiers de configurations
read -r -p "Voulez-vous sauvegarder tout le dossier ? [y/N] " response

case "$response" in
    [yY][eE][sS]|[yY])
        echo "Sauvegarde du dossier."
        sudo cp -r /etc/grafana/ ${CONF}
        echo "Le dossier de configuration a bien été sauvegardé !"
        ;;
    *)
        sudo cp /etc/grafana/grafana.ini ${CONF}
        echo "Le fichié de configuration a bien été sauvegardé !"
        ;;
esac

# 3 - Sauvegarde des plugins
sudo cp -r /var/lib/grafana/plugins/ ${PLUGINS}
echo "Les plugins ont bien été sauvegardé !"
echo ""

# 4 - Sauvegarde de la base de données InfluxDB
influx_version=$(sudo docker exec ${NOM} influxd version)
echo "Version détecté : $influx_version"
read -r -p "Votre version est-elle en InfluxDB v2.x ? [y/N] " version

case "$version" in
    [yY][eE][sS]|[yY])
        sudo docker exec ${NOM} influx backup -t ${TOKEN} ${CONTENEUR}
        echo "La base de données Influxdb a bien été sauvegardé !"
        ;;
    *)
        sudo docker exec ${NOM} influxd backup -portable -t ${TOKEN} ${CONTENEUR}
        echo "Le fichié de configuration a bien été sauvegardé !"
        ;;
esac

sudo docker cp ${NOM}:${CONTENEUR} ${INFLUXDB}
echo "Votre base de données Influxdb à bien été copié dans vos réperoire."
echo ""
```

## <span style="color: rgb(53, 152, 219);">**B - Mise à niveau Grafana**</span>

Pour mettre à niveau Grafana installé à partir du référentiel APT Grafana Labs, procédez comme suit :

### <span style="color: rgb(35, 111, 161);">**1 Dépôt officiel**</span>


#### <span style="color: rgb(52, 73, 94);">***Mise à jour des paquet*** </span>

```bash
sudo apt update
sudo apt upgrade grafana
```



Grafana se met à jour automatiquement lorsque vous exécutez `apt-get upgrade`.

```bash
##############################################################
# Auteur : mkermorvant                                       #
# Date de modification : 20250515                            #
#                                                            #
# Description : Script de mise à jour Grafana                #
#                                                            #
##############################################################
#! /bin/bash                                                 #
#                                                            #
##############################################################
# 1 - Ajout des dépôt
curl https://packages.grafana.com/gpg.key | sudo tee /usr/share/keyrings/grafana.asc
echo "Ajout du dépôt de Grafana à la liste des sources APT."
echo "deb [signed-by=/usr/share/keyrings/grafana.asc] https://packages.grafana.com/oss/deb stable main" | sudo tee />
echo ""

# 2 - Mise à jour des sources APT
echo "Mise à jour des sources APT."
sudo apt update
echo ""

# 3 - Vérification des versions disponible
echo "Vérification des versions disponible."
sudo apt-cache show grafana | grep Version
echo ""

# 4 - Mise à jour de Grafana
echo "Mise à jour de votre Grafana"
sudo apt-get install --only-upgrade grafana
echo ""

# 5 - Redémmarage du service
echo "Votre service Grafana va se redémmarer."
sudo systemctl restart grafana-server
echo ""
echo "Votre Grafana est maintenant à jour !"
echo ""

```